<?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>42212</bug_id>
          
          <creation_ts>2010-07-13 16:39:34 -0700</creation_ts>
          <short_desc>Synchronize webgl-test.js from Khronos repository</short_desc>
          <delta_ts>2010-07-14 11:18:47 -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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>42185</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenneth Russell">kbr</reporter>
          <assigned_to name="Kenneth Russell">kbr</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>oliver</cc>
    
    <cc>zmo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>250815</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-07-13 16:39:34 -0700</bug_when>
    <thetext>In the Khronos WebGL conformance tests, utils3d.js was folded into webgl-test.js, and some changes were made to the functions in webgl-test.js. As part of the synchronization of the test suites between these repositories, this helper library needs to be synchronized with the Khronos version, and references to utils3d.js need to be removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250819</commentid>
    <comment_count>1</comment_count>
      <attachid>61434</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-07-13 16:51:55 -0700</bug_when>
    <thetext>Created attachment 61434
Patch

From the ChangeLog:

Incorporated latest webgl-test.js from Khronos repository. Deleted utils3d.js and removed references to it from tests. Updated those tests which were using the create3DDebugContext helper function, which has been removed. Rebaselined five tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250821</commentid>
    <comment_count>2</comment_count>
      <attachid>61434</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-07-13 16:55:04 -0700</bug_when>
    <thetext>Comment on attachment 61434
Patch

LayoutTests/fast/canvas/webgl/resources/webgl-test.js:9
 +       } else {
indentation is off by 1


R=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251299</commentid>
    <comment_count>3</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-07-14 11:18:47 -0700</bug_when>
    <thetext>Committed r63333: &lt;http://trac.webkit.org/changeset/63333&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61434</attachid>
            <date>2010-07-13 16:51:55 -0700</date>
            <delta_ts>2010-07-13 16:55:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>webgl-test.patch</filename>
            <type>text/plain</type>
            <size>79526</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDYzMjYwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNjMgQEAKKzIwMTAtMDctMTMgIEtlbm5ldGggUnVzc2VsbCAg
PGtickBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFN5bmNocm9uaXplIHdlYmdsLXRlc3QuanMgZnJvbSBLaHJvbm9zIHJlcG9zaXRv
cnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyMjEy
CisKKyAgICAgICAgSW5jb3Jwb3JhdGVkIGxhdGVzdCB3ZWJnbC10ZXN0LmpzIGZyb20gS2hyb25v
cyByZXBvc2l0b3J5LiBEZWxldGVkCisgICAgICAgIHV0aWxzM2QuanMgYW5kIHJlbW92ZWQgcmVm
ZXJlbmNlcyB0byBpdCBmcm9tIHRlc3RzLiBVcGRhdGVkIHRob3NlCisgICAgICAgIHRlc3RzIHdo
aWNoIHdlcmUgdXNpbmcgdGhlIGNyZWF0ZTNERGVidWdDb250ZXh0IGhlbHBlciBmdW5jdGlvbiwK
KyAgICAgICAgd2hpY2ggaGFzIGJlZW4gcmVtb3ZlZC4gUmViYXNlbGluZWQgZml2ZSB0ZXN0cy4K
KworICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvY29udGV4dC1hdHRyaWJ1dGVzLmh0
bWw6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvaW5kZXgtdmFsaWRhdGlvbi1jb3BpZXMt
aW5kaWNlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvaW5kZXgt
dmFsaWRhdGlvbi1jb3BpZXMtaW5kaWNlcy5odG1sOgorICAgICAgICAqIGZhc3QvY2FudmFzL3dl
YmdsL2luZGV4LXZhbGlkYXRpb24tdmVyaWZpZXMtdG9vLW1hbnktaW5kaWNlcy1leHBlY3RlZC50
eHQ6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvaW5kZXgtdmFsaWRhdGlvbi12ZXJpZmll
cy10b28tbWFueS1pbmRpY2VzLmh0bWw6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvaW5k
ZXgtdmFsaWRhdGlvbi13aXRoLXJlc2l6ZWQtYnVmZmVyLmh0bWw6CisgICAgICAgICogZmFzdC9j
YW52YXMvd2ViZ2wvbnVsbC1vYmplY3QtYmVoYXZpb3VyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBmYXN0L2NhbnZhcy93ZWJnbC9udWxsLW9iamVjdC1iZWhhdmlvdXIuaHRtbDoKKyAgICAgICAg
KiBmYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvdXRpbHMzZC5qczogUmVtb3ZlZC4KKyAgICAg
ICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2wtdGVzdC5qczoKKyAgICAgICAg
KGFzc2VydE1zZyk6CisgICAgICAgICh3ZWJnbFRlc3RMb2cpOgorICAgICAgICAoY3JlYXRlM0RD
b250ZXh0KToKKyAgICAgICAgKGNyZWF0ZTNEQ29udGV4dFdpdGhXcmFwcGVyVGhhdFRocm93c09u
R0xFcnJvci53cmFwLmdldEVycm9yKToKKyAgICAgICAgKGNyZWF0ZTNEQ29udGV4dFdpdGhXcmFw
cGVyVGhhdFRocm93c09uR0xFcnJvcik6CisgICAgICAgIChnZXRHTEVycm9yQXNTdHJpbmcpOgor
ICAgICAgICAoc2hvdWxkR2VuZXJhdGVHTEVycm9yKToKKyAgICAgICAgKGdsRXJyb3JTaG91bGRC
ZSk6CisgICAgICAgIChjcmVhdGVQcm9ncmFtKToKKyAgICAgICAgKGluaXRXZWJHTCk6CisgICAg
ICAgIChnZXRTaGFkZXJTb3VyY2UpOgorICAgICAgICAobG9hZFNoYWRlcik6CisgICAgICAgIChs
b2FkU2hhZGVyRnJvbUZpbGUpOgorICAgICAgICAobG9hZFNoYWRlckZyb21TY3JpcHQpOgorICAg
ICAgICAobG9hZFByb2dyYW0pOgorICAgICAgICAobG9hZFN0YW5kYXJkVmVydGV4U2hhZGVyKToK
KyAgICAgICAgKGxvYWRTdGFuZGFyZEZyYWdtZW50U2hhZGVyKToKKyAgICAgICAgKG1ha2VCb3gp
OgorICAgICAgICAobWFrZVNwaGVyZSk6CisgICAgICAgIChsb2FkT2JqLnJlcS5vbnJlYWR5c3Rh
dGVjaGFuZ2UpOgorICAgICAgICAobG9hZE9iaik6CisgICAgICAgIChwcm9jZXNzTG9hZE9iaik6
CisgICAgICAgIChkb0xvYWRPYmopOgorICAgICAgICAobG9hZEltYWdlVGV4dHVyZS50ZXh0dXJl
LmltYWdlLm9ubG9hZCk6CisgICAgICAgIChsb2FkSW1hZ2VUZXh0dXJlKToKKyAgICAgICAgKGRv
TG9hZEltYWdlVGV4dHVyZSk6CisgICAgICAgIChGcmFtZXJhdGUuZnIpOgorICAgICAgICAoRnJh
bWVyYXRlKToKKyAgICAgICAgKEZyYW1lcmF0ZS5wcm90b3R5cGUudXBkYXRlRnJhbWVyYXRlKToK
KyAgICAgICAgKEZyYW1lcmF0ZS5wcm90b3R5cGUuc25hcHNob3QpOgorICAgICAgICAqIGZhc3Qv
Y2FudmFzL3dlYmdsL3RleEltYWdlMkRJbWFnZURhdGFUZXN0Lmh0bWw6CisgICAgICAgICogZmFz
dC9jYW52YXMvd2ViZ2wvdGV4dHVyZS1hY3RpdmUtYmluZC5odG1sOgorICAgICAgICAqIGZhc3Qv
Y2FudmFzL3dlYmdsL3RyaWFuZ2xlLmh0bWw6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wv
dW5pZm9ybS1sb2NhdGlvbi1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9jYW52YXMvd2Vi
Z2wvdW5pZm9ybS1sb2NhdGlvbi5odG1sOgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3Zp
ZXdwb3J0LXVuY2hhbmdlZC11cG9uLXJlc2l6ZS5odG1sOgorCiAyMDEwLTA3LTEzICBCcmlhbiBX
ZWluc3RlaW4gIDxid2VpbnN0ZWluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBT
dGV2ZSBGYWxrZW5idXJnLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvY29u
dGV4dC1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biA2MzI2MCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmli
dXRlcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMsNyArMyw3IEBAIFRlc3QgcGFz
c2luZyBkb3duIGFuZCBmZXRjaGluZyBvZiBXZWJHTEMKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KIAogVGVzdCBkZWZhdWx0IHZhbHVlcwotUEFTUyBjb250ZXh0ID0gY3JlYXRlM0RDb250ZXh0
KCkgaXMgbm9uLW51bGwuCitQQVNTIGNvbnRleHQgPSBjcmVhdGUzRENvbnRleHQobnVsbCkgaXMg
bm9uLW51bGwuCiBQQVNTIGF0dHJpYnMgPSBjb250ZXh0LmdldENvbnRleHRBdHRyaWJ1dGVzKCkg
aXMgbm9uLW51bGwuCiBQQVNTIGF0dHJpYnMuZGVwdGggaXMgdHJ1ZQogUEFTUyBhdHRyaWJzLmFs
cGhhIGlzIHRydWUKQEAgLTExLDcgKzExLDcgQEAgUEFTUyBhdHRyaWJzLnN0ZW5jaWwgaXMgZmFs
c2UKIFBBU1MgYXR0cmlicy5hbnRpYWxpYXMgPT0gdHJ1ZSB8fCBhdHRyaWJzLmFudGlhbGlhcyA9
PSBmYWxzZSBpcyB0cnVlCiBQQVNTIGF0dHJpYnMucHJlbXVsdGlwbGllZEFscGhhIGlzIHRydWUK
IFRlc3QgY3VzdG9taXplZCB2YWx1ZXMKLVBBU1MgY29udGV4dCA9IGNyZWF0ZTNEQ29udGV4dCh7
IHN0ZW5jaWw6IGZhbHNlLCBhbnRpYWxpYXM6IGZhbHNlIH0pIGlzIG5vbi1udWxsLgorUEFTUyBj
b250ZXh0ID0gY3JlYXRlM0RDb250ZXh0KG51bGwsIHsgc3RlbmNpbDogZmFsc2UsIGFudGlhbGlh
czogZmFsc2UgfSkgaXMgbm9uLW51bGwuCiBQQVNTIGF0dHJpYnMgPSBjb250ZXh0LmdldENvbnRl
eHRBdHRyaWJ1dGVzKCkgaXMgbm9uLW51bGwuCiBQQVNTIGF0dHJpYnMuZGVwdGggaXMgdHJ1ZQog
UEFTUyBhdHRyaWJzLmFscGhhIGlzIHRydWUKQEAgLTE5LDE0ICsxOSwxNCBAQCBQQVNTIGF0dHJp
YnMuc3RlbmNpbCBpcyBmYWxzZQogUEFTUyBhdHRyaWJzLmFudGlhbGlhcyBpcyBmYWxzZQogUEFT
UyBhdHRyaWJzLnByZW11bHRpcGxpZWRBbHBoYSBpcyB0cnVlCiBUZXN0IGN1c3RvbWl6ZWQgdmFs
dWVzCi1QQVNTIGNvbnRleHQgPSBjcmVhdGUzRENvbnRleHQoeyBkZXB0aDogZmFsc2UsIHN0ZW5j
aWw6IHRydWUsIGFudGlhbGlhczogZmFsc2UgfSkgaXMgbm9uLW51bGwuCitQQVNTIGNvbnRleHQg
PSBjcmVhdGUzRENvbnRleHQobnVsbCwgeyBkZXB0aDogZmFsc2UsIHN0ZW5jaWw6IHRydWUsIGFu
dGlhbGlhczogZmFsc2UgfSkgaXMgbm9uLW51bGwuCiBQQVNTIGF0dHJpYnMgPSBjb250ZXh0Lmdl
dENvbnRleHRBdHRyaWJ1dGVzKCkgaXMgbm9uLW51bGwuCiBQQVNTIGF0dHJpYnMuZGVwdGggPT0g
YXR0cmlicy5zdGVuY2lsIGlzIHRydWUKIFBBU1MgYXR0cmlicy5hbHBoYSBpcyB0cnVlCiBQQVNT
IGF0dHJpYnMuYW50aWFsaWFzIGlzIGZhbHNlCiBQQVNTIGF0dHJpYnMucHJlbXVsdGlwbGllZEFs
cGhhIGlzIHRydWUKIFRlc3QgY3VzdG9taXplZCB2YWx1ZXMKLVBBU1MgY29udGV4dCA9IGNyZWF0
ZTNEQ29udGV4dCh7IHByZW11bHRpcGxpZWRBbHBoYTogZmFsc2UsIGFudGlhbGlhczogZmFsc2Ug
fSkgaXMgbm9uLW51bGwuCitQQVNTIGNvbnRleHQgPSBjcmVhdGUzRENvbnRleHQobnVsbCwgeyBw
cmVtdWx0aXBsaWVkQWxwaGE6IGZhbHNlLCBhbnRpYWxpYXM6IGZhbHNlIH0pIGlzIG5vbi1udWxs
LgogUEFTUyBhdHRyaWJzID0gY29udGV4dC5nZXRDb250ZXh0QXR0cmlidXRlcygpIGlzIG5vbi1u
dWxsLgogUEFTUyBhdHRyaWJzLmRlcHRoIGlzIHRydWUKIFBBU1MgYXR0cmlicy5hbHBoYSBpcyB0
cnVlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJpYnV0
ZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9jb250
ZXh0LWF0dHJpYnV0ZXMuaHRtbAkocmV2aXNpb24gNjMyNjApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJpYnV0ZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MTQsNyArMTQsNyBAQCBkZXNjcmlwdGlvbigiVGVzdCBwYXNzaW5nIGRvd24gYW5kIGZldGNoCiBk
ZWJ1ZygiVGVzdCBkZWZhdWx0IHZhbHVlcyIpOwogdmFyIGNvbnRleHQ7CiB2YXIgYXR0cmliczsK
LXNob3VsZEJlTm9uTnVsbCgiY29udGV4dCA9IGNyZWF0ZTNEQ29udGV4dCgpIik7CitzaG91bGRC
ZU5vbk51bGwoImNvbnRleHQgPSBjcmVhdGUzRENvbnRleHQobnVsbCkiKTsKIHNob3VsZEJlTm9u
TnVsbCgiYXR0cmlicyA9IGNvbnRleHQuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKSIpOwogc2hvdWxk
QmUoImF0dHJpYnMuZGVwdGgiLCAidHJ1ZSIpOwogc2hvdWxkQmUoImF0dHJpYnMuYWxwaGEiLCAi
dHJ1ZSIpOwpAQCAtMjQsNyArMjQsNyBAQCBzaG91bGRCZSgiYXR0cmlicy5hbnRpYWxpYXMgPT0g
dHJ1ZSB8fCBhCiBzaG91bGRCZSgiYXR0cmlicy5wcmVtdWx0aXBsaWVkQWxwaGEiLCAidHJ1ZSIp
OwogCiBkZWJ1ZyAoIlRlc3QgY3VzdG9taXplZCB2YWx1ZXMiKTsKLXNob3VsZEJlTm9uTnVsbCgi
Y29udGV4dCA9IGNyZWF0ZTNEQ29udGV4dCh7IHN0ZW5jaWw6IGZhbHNlLCBhbnRpYWxpYXM6IGZh
bHNlIH0pIik7CitzaG91bGRCZU5vbk51bGwoImNvbnRleHQgPSBjcmVhdGUzRENvbnRleHQobnVs
bCwgeyBzdGVuY2lsOiBmYWxzZSwgYW50aWFsaWFzOiBmYWxzZSB9KSIpOwogc2hvdWxkQmVOb25O
dWxsKCJhdHRyaWJzID0gY29udGV4dC5nZXRDb250ZXh0QXR0cmlidXRlcygpIik7CiBzaG91bGRC
ZSgiYXR0cmlicy5kZXB0aCIsICJ0cnVlIik7CiBzaG91bGRCZSgiYXR0cmlicy5hbHBoYSIsICJ0
cnVlIik7CkBAIC0zNiw3ICszNiw3IEBAIGRlYnVnKCJUZXN0IGN1c3RvbWl6ZWQgdmFsdWVzIik7
CiAvLyAoc3RlbmNpbCA9PSB0cnVlICYmIGRlcHRoID09IGZhbHNlKSBpcyBub3Qgc3VwcG9ydGVk
LgogLy8gRGVmYXVsdCBkZXB0aCB0byB0cnVlIGlmIEVYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCBp
cyBzdXBwb3J0ZWQuCiAvLyBPdGhlcndpc2UsIGJvdGggZGVwdGggYW5kIHN0ZW5jaWwgc2hvdWxk
IGJlIGZhbHNlLgotc2hvdWxkQmVOb25OdWxsKCJjb250ZXh0ID0gY3JlYXRlM0RDb250ZXh0KHsg
ZGVwdGg6IGZhbHNlLCBzdGVuY2lsOiB0cnVlLCBhbnRpYWxpYXM6IGZhbHNlIH0pIik7CitzaG91
bGRCZU5vbk51bGwoImNvbnRleHQgPSBjcmVhdGUzRENvbnRleHQobnVsbCwgeyBkZXB0aDogZmFs
c2UsIHN0ZW5jaWw6IHRydWUsIGFudGlhbGlhczogZmFsc2UgfSkiKTsKIHNob3VsZEJlTm9uTnVs
bCgiYXR0cmlicyA9IGNvbnRleHQuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKSIpOwogc2hvdWxkQmUo
ImF0dHJpYnMuZGVwdGggPT0gYXR0cmlicy5zdGVuY2lsIiwgInRydWUiKTsKIHNob3VsZEJlKCJh
dHRyaWJzLmFscGhhIiwgInRydWUiKTsKQEAgLTQ1LDcgKzQ1LDcgQEAgc2hvdWxkQmUoImF0dHJp
YnMucHJlbXVsdGlwbGllZEFscGhhIiwgIgogCiBkZWJ1ZygiVGVzdCBjdXN0b21pemVkIHZhbHVl
cyIpOwogLy8gKHByZW11bHRpcGxpZWRBbHBoYSA9PSBmYWxzZSkgaXMgbm90IHN1cHBvcnRlZCwg
ZGVmYXVsdCB0byB0cnVlCi1zaG91bGRCZU5vbk51bGwoImNvbnRleHQgPSBjcmVhdGUzRENvbnRl
eHQoeyBwcmVtdWx0aXBsaWVkQWxwaGE6IGZhbHNlLCBhbnRpYWxpYXM6IGZhbHNlIH0pIik7Citz
aG91bGRCZU5vbk51bGwoImNvbnRleHQgPSBjcmVhdGUzRENvbnRleHQobnVsbCwgeyBwcmVtdWx0
aXBsaWVkQWxwaGE6IGZhbHNlLCBhbnRpYWxpYXM6IGZhbHNlIH0pIik7CiBzaG91bGRCZU5vbk51
bGwoImF0dHJpYnMgPSBjb250ZXh0LmdldENvbnRleHRBdHRyaWJ1dGVzKCkiKTsKIHNob3VsZEJl
KCJhdHRyaWJzLmRlcHRoIiwgInRydWUiKTsKIHNob3VsZEJlKCJhdHRyaWJzLmFscGhhIiwgInRy
dWUiKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2luZGV4LXZhbGlkYXRp
b24tY29waWVzLWluZGljZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL2luZGV4LXZhbGlkYXRpb24tY29waWVzLWluZGljZXMtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiA2MzI2MCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L2luZGV4LXZhbGlkYXRpb24tY29waWVzLWluZGljZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC00LDEzICs0LDEzIEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEEKIAogUmVncmVzc2lvbiB0ZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzI3NDggOiBJbmRleCB2YWxpZGF0aW9uIGNvZGUgbXVzdCBhbHdheXMgY29w
eSBjbGllbnQgZGF0YQogUEFTUyBjb250ZXh0LmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoY29udGV4
dC5GUkFNRUJVRkZFUikgaXMgY29udGV4dC5GUkFNRUJVRkZFUl9DT01QTEVURQotUEFTUyBjb250
ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFX1NUUklQLCA0LCBjb250ZXh0LlVOU0lH
TkVEX1NIT1JULCAyKSBpcyB1bmRlZmluZWQuCi1QQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRzKGNv
bnRleHQuVFJJQU5HTEVfU1RSSVAsIDQsIGNvbnRleHQuVU5TSUdORURfU0hPUlQsIDApIHRocmV3
IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGRyYXdFbGVtZW50cy4KLVBBU1MgY29udGV4dC5k
cmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRV9TVFJJUCwgNCwgY29udGV4dC5VTlNJR05FRF9T
SE9SVCwgNCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODIgaW4gZHJhd0VsZW1lbnRzLgor
UEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFX1NUUklQLCA0LCBjb250
ZXh0LlVOU0lHTkVEX1NIT1JULCAyKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IE5PX0VS
Uk9SLgorUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFX1NUUklQLCA0
LCBjb250ZXh0LlVOU0lHTkVEX1NIT1JULCAwKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6
IElOVkFMSURfT1BFUkFUSU9OLgorUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRS
SUFOR0xFX1NUUklQLCA0LCBjb250ZXh0LlVOU0lHTkVEX1NIT1JULCA0KSBnZW5lcmF0ZWQgZXhw
ZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfT1BFUkFUSU9OLgogUEFTUyBjb250ZXh0LmNoZWNrRnJh
bWVidWZmZXJTdGF0dXMoY29udGV4dC5GUkFNRUJVRkZFUikgaXMgY29udGV4dC5GUkFNRUJVRkZF
Ul9DT01QTEVURQotUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFX1NU
UklQLCA0LCBjb250ZXh0LlVOU0lHTkVEX1NIT1JULCAyKSBpcyB1bmRlZmluZWQuCi1QQVNTIGNv
bnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVfU1RSSVAsIDQsIGNvbnRleHQuVU5T
SUdORURfU0hPUlQsIDApIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGRyYXdFbGVt
ZW50cy4KLVBBU1MgY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRV9TVFJJUCwg
NCwgY29udGV4dC5VTlNJR05FRF9TSE9SVCwgNCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEy
ODIgaW4gZHJhd0VsZW1lbnRzLgorUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRS
SUFOR0xFX1NUUklQLCA0LCBjb250ZXh0LlVOU0lHTkVEX1NIT1JULCAyKSBnZW5lcmF0ZWQgZXhw
ZWN0ZWQgR0wgZXJyb3I6IE5PX0VSUk9SLgorUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250
ZXh0LlRSSUFOR0xFX1NUUklQLCA0LCBjb250ZXh0LlVOU0lHTkVEX1NIT1JULCAwKSBnZW5lcmF0
ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfT1BFUkFUSU9OLgorUEFTUyBjb250ZXh0LmRy
YXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFX1NUUklQLCA0LCBjb250ZXh0LlVOU0lHTkVEX1NI
T1JULCA0KSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfT1BFUkFUSU9OLgog
CiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3dlYmdsL2luZGV4LXZhbGlkYXRpb24tY29waWVzLWluZGljZXMuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9pbmRleC12YWxpZGF0aW9u
LWNvcGllcy1pbmRpY2VzLmh0bWwJKHJldmlzaW9uIDYzMjYwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvd2ViZ2wvaW5kZXgtdmFsaWRhdGlvbi1jb3BpZXMtaW5kaWNlcy5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMyw3ICsxMyw3IEBAIGRlc2NyaXB0aW9uKCdUZXN0IHRoYXQgY2xpZW50
IGRhdGEgaXMgYWwKIAogZGVidWcoJ1JlZ3Jlc3Npb24gdGVzdCBmb3IgPGEgaHJlZj0iaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyNzQ4Ij5odHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI3NDg8L2E+IDogPGNvZGU+SW5kZXggdmFsaWRhdGlv
biBjb2RlIG11c3QgYWx3YXlzIGNvcHkgY2xpZW50IGRhdGE8L2NvZGU+Jyk7CiAKLXZhciBjb250
ZXh0ID0gY3JlYXRlM0REZWJ1Z0NvbnRleHQoKTsKK3ZhciBjb250ZXh0ID0gY3JlYXRlM0RDb250
ZXh0KCk7CiB2YXIgcHJvZ3JhbSA9IGxvYWRTdGFuZGFyZFByb2dyYW0oY29udGV4dCk7CiAKIGNv
bnRleHQudXNlUHJvZ3JhbShwcm9ncmFtKTsKQEAgLTMwLDE1ICszMCwxNSBAQCBjb250ZXh0LmJp
bmRCdWZmZXIoY29udGV4dC5FTEVNRU5UX0FSUkFZCiB2YXIgaW5kaWNlcyA9IG5ldyBXZWJHTFVu
c2lnbmVkU2hvcnRBcnJheShbIDEwMDAwLCAwLCAxLCAyLCAzLCAxMDAwMCBdKTsKIGNvbnRleHQu
YnVmZmVyRGF0YShjb250ZXh0LkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBpbmRpY2VzLCBjb250ZXh0
LlNUQVRJQ19EUkFXKTsKIHNob3VsZEJlKCdjb250ZXh0LmNoZWNrRnJhbWVidWZmZXJTdGF0dXMo
Y29udGV4dC5GUkFNRUJVRkZFUiknLCAnY29udGV4dC5GUkFNRUJVRkZFUl9DT01QTEVURScpOwot
c2hvdWxkQmVVbmRlZmluZWQoImNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVf
U1RSSVAsIDQsIGNvbnRleHQuVU5TSUdORURfU0hPUlQsIDIpIik7Ci1zaG91bGRUaHJvdygiY29u
dGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRV9TVFJJUCwgNCwgY29udGV4dC5VTlNJ
R05FRF9TSE9SVCwgMCkiKTsKLXNob3VsZFRocm93KCJjb250ZXh0LmRyYXdFbGVtZW50cyhjb250
ZXh0LlRSSUFOR0xFX1NUUklQLCA0LCBjb250ZXh0LlVOU0lHTkVEX1NIT1JULCA0KSIpOworc2hv
dWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIGNvbnRleHQuTk9fRVJST1IsICJjb250ZXh0LmRy
YXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFX1NUUklQLCA0LCBjb250ZXh0LlVOU0lHTkVEX1NI
T1JULCAyKSIpOworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIGNvbnRleHQuSU5WQUxJ
RF9PUEVSQVRJT04sICJjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFX1NUUklQ
LCA0LCBjb250ZXh0LlVOU0lHTkVEX1NIT1JULCAwKSIpOworc2hvdWxkR2VuZXJhdGVHTEVycm9y
KGNvbnRleHQsIGNvbnRleHQuSU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0LmRyYXdFbGVtZW50
cyhjb250ZXh0LlRSSUFOR0xFX1NUUklQLCA0LCBjb250ZXh0LlVOU0lHTkVEX1NIT1JULCA0KSIp
OwogaW5kaWNlc1swXSA9IDI7CiBpbmRpY2VzWzVdID0gMTsKIHNob3VsZEJlKCJjb250ZXh0LmNo
ZWNrRnJhbWVidWZmZXJTdGF0dXMoY29udGV4dC5GUkFNRUJVRkZFUikiLCAiY29udGV4dC5GUkFN
RUJVRkZFUl9DT01QTEVURSIpOwotc2hvdWxkQmVVbmRlZmluZWQoImNvbnRleHQuZHJhd0VsZW1l
bnRzKGNvbnRleHQuVFJJQU5HTEVfU1RSSVAsIDQsIGNvbnRleHQuVU5TSUdORURfU0hPUlQsIDIp
Iik7Ci1zaG91bGRUaHJvdygiY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRV9T
VFJJUCwgNCwgY29udGV4dC5VTlNJR05FRF9TSE9SVCwgMCkiKTsKLXNob3VsZFRocm93KCJjb250
ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFX1NUUklQLCA0LCBjb250ZXh0LlVOU0lH
TkVEX1NIT1JULCA0KSIpOworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIGNvbnRleHQu
Tk9fRVJST1IsICJjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFX1NUUklQLCA0
LCBjb250ZXh0LlVOU0lHTkVEX1NIT1JULCAyKSIpOworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNv
bnRleHQsIGNvbnRleHQuSU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0LmRyYXdFbGVtZW50cyhj
b250ZXh0LlRSSUFOR0xFX1NUUklQLCA0LCBjb250ZXh0LlVOU0lHTkVEX1NIT1JULCAwKSIpOwor
c2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIGNvbnRleHQuSU5WQUxJRF9PUEVSQVRJT04s
ICJjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFX1NUUklQLCA0LCBjb250ZXh0
LlVOU0lHTkVEX1NIT1JULCA0KSIpOwogCiBkZWJ1ZygiIikKIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9pbmRleC12YWxpZGF0
aW9uLXZlcmlmaWVzLXRvby1tYW55LWluZGljZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2luZGV4LXZhbGlkYXRpb24tdmVyaWZpZXMt
dG9vLW1hbnktaW5kaWNlcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYzMjYwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvaW5kZXgtdmFsaWRhdGlvbi12ZXJpZmllcy10b28tbWFu
eS1pbmRpY2VzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMyw5ICszLDkgQEAgUmVn
cmVzc2lvbiB0ZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0LgogT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgogCiBUZXN0IG91dCBvZiByYW5nZSBpbmRpY2VzCi1QQVNTIGNvbnRleHQuZHJhd0Vs
ZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVfU1RSSVAsIDQsIGNvbnRleHQuVU5TSUdORURfU0hPUlQs
IDIpIGlzIHVuZGVmaW5lZC4KLVBBU1MgY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklB
TkdMRV9TVFJJUCwgNCwgY29udGV4dC5VTlNJR05FRF9TSE9SVCwgMCkgdGhyZXcgZXhjZXB0aW9u
IEdMIGVycm9yIDEyODIgaW4gZHJhd0VsZW1lbnRzLgotUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50
cyhjb250ZXh0LlRSSUFOR0xFX1NUUklQLCA0LCBjb250ZXh0LlVOU0lHTkVEX1NIT1JULCA0KSB0
aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBkcmF3RWxlbWVudHMuCitQQVNTIGNvbnRl
eHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVfU1RSSVAsIDQsIGNvbnRleHQuVU5TSUdO
RURfU0hPUlQsIDIpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogTk9fRVJST1IuCitQQVNT
IGNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVfU1RSSVAsIDQsIGNvbnRleHQu
VU5TSUdORURfU0hPUlQsIDApIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9P
UEVSQVRJT04uCitQQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVfU1RS
SVAsIDQsIGNvbnRleHQuVU5TSUdORURfU0hPUlQsIDQpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBl
cnJvcjogSU5WQUxJRF9PUEVSQVRJT04uCiAKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvaW5kZXgtdmFsaWRhdGlv
bi12ZXJpZmllcy10b28tbWFueS1pbmRpY2VzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvd2ViZ2wvaW5kZXgtdmFsaWRhdGlvbi12ZXJpZmllcy10b28tbWFueS1p
bmRpY2VzLmh0bWwJKHJldmlzaW9uIDYzMjYwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
d2ViZ2wvaW5kZXgtdmFsaWRhdGlvbi12ZXJpZmllcy10b28tbWFueS1pbmRpY2VzLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTExLDcgKzExLDcgQEAKIDxzY3JpcHQ+CiBkZXNjcmlwdGlvbignUmVn
cmVzc2lvbiB0ZXN0IGZvciA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzI2OTIiPmh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
MjY5MjwvYT4gOiA8Y29kZT5JbmRleCB2YWxpZGF0aW9uIGZvciBkcmF3RWxlbWVudHMgZXhhbWlu
ZXMgdG9vIG1hbnkgaW5kaWNlczwvY29kZT4nKTsKIAotdmFyIGNvbnRleHQgPSBjcmVhdGUzRERl
YnVnQ29udGV4dCgpOwordmFyIGNvbnRleHQgPSBjcmVhdGUzRENvbnRleHQoKTsKIHZhciBwcm9n
cmFtID0gbG9hZFN0YW5kYXJkUHJvZ3JhbShjb250ZXh0KTsKIAogY29udGV4dC51c2VQcm9ncmFt
KHByb2dyYW0pOwpAQCAtMjcsOSArMjcsOSBAQCB2YXIgaW5kZXhPYmplY3QgPSBjb250ZXh0LmNy
ZWF0ZUJ1ZmZlcigpCiBkZWJ1ZygiVGVzdCBvdXQgb2YgcmFuZ2UgaW5kaWNlcyIpCiBjb250ZXh0
LmJpbmRCdWZmZXIoY29udGV4dC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgaW5kZXhPYmplY3QpOwog
Y29udGV4dC5idWZmZXJEYXRhKGNvbnRleHQuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIG5ldyBXZWJH
TFVuc2lnbmVkU2hvcnRBcnJheShbIDEwMDAwLCAwLCAxLCAyLCAzLCAxMDAwMCBdKSwgY29udGV4
dC5TVEFUSUNfRFJBVyk7Ci1zaG91bGRCZVVuZGVmaW5lZCgiY29udGV4dC5kcmF3RWxlbWVudHMo
Y29udGV4dC5UUklBTkdMRV9TVFJJUCwgNCwgY29udGV4dC5VTlNJR05FRF9TSE9SVCwgMikiKTsK
LXNob3VsZFRocm93KCJjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFX1NUUklQ
LCA0LCBjb250ZXh0LlVOU0lHTkVEX1NIT1JULCAwKSIpOwotc2hvdWxkVGhyb3coImNvbnRleHQu
ZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVfU1RSSVAsIDQsIGNvbnRleHQuVU5TSUdORURf
U0hPUlQsIDQpIik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5OT19F
UlJPUiwgImNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVfU1RSSVAsIDQsIGNv
bnRleHQuVU5TSUdORURfU0hPUlQsIDIpIik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4
dCwgY29udGV4dC5JTlZBTElEX09QRVJBVElPTiwgImNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRl
eHQuVFJJQU5HTEVfU1RSSVAsIDQsIGNvbnRleHQuVU5TSUdORURfU0hPUlQsIDApIik7CitzaG91
bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX09QRVJBVElPTiwgImNv
bnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVfU1RSSVAsIDQsIGNvbnRleHQuVU5T
SUdORURfU0hPUlQsIDQpIik7CiAKIGRlYnVnKCIiKQogc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2luZGV4LXZhbGlkYXRpb24t
d2l0aC1yZXNpemVkLWJ1ZmZlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL2luZGV4LXZhbGlkYXRpb24td2l0aC1yZXNpemVkLWJ1ZmZlci5odG1sCShy
ZXZpc2lvbiA2MzI2MCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2luZGV4LXZh
bGlkYXRpb24td2l0aC1yZXNpemVkLWJ1ZmZlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDcg
KzMsNiBAQAogPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJnbC10ZXN0
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbHMzZC5qcyI+PC9zY3Jp
cHQ+CiA8L2hlYWQ+CiA8Ym9keT4KIDxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIxcHgiIGhl
aWdodD0iMXB4Ij48L2NhbnZhcz4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L251bGwtb2JqZWN0LWJlaGF2aW91ci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvbnVsbC1vYmplY3QtYmVoYXZpb3VyLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gNjMyNjApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9udWxs
LW9iamVjdC1iZWhhdmlvdXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yLDI5ICsy
LDI5IEBAIFRlc3RzIGNhbGxpbmcgV2ViR0wgQVBJcyB3aXRob3V0IHByb3ZpZGkKIAogT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgogCi1QQVNTIGNvbnRleHQuY29tcGlsZVNoYWRlcigpIHRocmV3
IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgxIGluIGNvbXBpbGVTaGFkZXIuCi1QQVNTIGNvbnRleHQu
bGlua1Byb2dyYW0oKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBsaW5rUHJvZ3Jh
bS4KLVBBU1MgY29udGV4dC5hdHRhY2hTaGFkZXIoKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3Ig
MTI4MSBpbiBhdHRhY2hTaGFkZXIuCi1QQVNTIGNvbnRleHQuYXR0YWNoU2hhZGVyKHByb2dyYW0s
IHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODEgaW4gYXR0YWNoU2hhZGVy
LgotUEFTUyBjb250ZXh0LmF0dGFjaFNoYWRlcih1bmRlZmluZWQsIHNoYWRlcikgdGhyZXcgZXhj
ZXB0aW9uIEdMIGVycm9yIDEyODEgaW4gYXR0YWNoU2hhZGVyLgotUEFTUyBjb250ZXh0LmRldGFj
aFNoYWRlcihwcm9ncmFtLCB1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgx
IGluIGRldGFjaFNoYWRlci4KLVBBU1MgY29udGV4dC5kZXRhY2hTaGFkZXIodW5kZWZpbmVkLCBz
aGFkZXIpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgxIGluIGRldGFjaFNoYWRlci4KLVBB
U1MgY29udGV4dC5zaGFkZXJTb3VyY2UoKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBp
biBzaGFkZXJTb3VyY2UuCi1QQVNTIGNvbnRleHQuc2hhZGVyU291cmNlKHVuZGVmaW5lZCwgJ2Zv
bycpIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgxIGluIHNoYWRlclNvdXJjZS4KLVBBU1Mg
Y29udGV4dC5iaW5kQXR0cmliTG9jYXRpb24odW5kZWZpbmVkLCAwLCAnZm9vJykgdGhyZXcgZXhj
ZXB0aW9uIEdMIGVycm9yIDEyODEgaW4gYmluZEF0dHJpYkxvY2F0aW9uLgotUEFTUyBjb250ZXh0
LmJpbmRCdWZmZXIoY29udGV4dC5BUlJBWV9CVUZGRVIsIDApIGlzIHVuZGVmaW5lZC4KLVBBU1Mg
Y29udGV4dC5iaW5kRnJhbWVidWZmZXIoY29udGV4dC5GUkFNRUJVRkZFUiwgMCkgaXMgdW5kZWZp
bmVkLgotUEFTUyBjb250ZXh0LmJpbmRSZW5kZXJidWZmZXIoY29udGV4dC5SRU5ERVJCVUZGRVIs
IDApIGlzIHVuZGVmaW5lZC4KLVBBU1MgY29udGV4dC5iaW5kVGV4dHVyZShjb250ZXh0LlRFWFRV
UkVfMkQsIDApIGlzIHVuZGVmaW5lZC4KLVBBU1MgY29udGV4dC5mcmFtZWJ1ZmZlclJlbmRlcmJ1
ZmZlcihjb250ZXh0LkZSQU1FQlVGRkVSLCBjb250ZXh0LkRFUFRIX0FUVEFDSE1FTlQsIGNvbnRl
eHQuUkVOREVSQlVGRkVSLCAwKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiBmcmFt
ZWJ1ZmZlclJlbmRlcmJ1ZmZlci4KLVBBU1MgY29udGV4dC5mcmFtZWJ1ZmZlclRleHR1cmUyRChj
b250ZXh0LkZSQU1FQlVGRkVSLCBjb250ZXh0LkNPTE9SX0FUVEFDSE1FTlQwLCBjb250ZXh0LlRF
WFRVUkVfMkQsIDAsIDApIHRocmV3IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgyIGluIGZyYW1lYnVm
ZmVyVGV4dHVyZTJELgotUEFTUyBjb250ZXh0LmdldFByb2dyYW1QYXJhbWV0ZXIodW5kZWZpbmVk
LCAwKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBnZXRQcm9ncmFtUGFyYW1ldGVy
LgotUEFTUyBjb250ZXh0LmdldFByb2dyYW1JbmZvTG9nKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhj
ZXB0aW9uIEdMIGVycm9yIDEyODEgaW4gZ2V0UHJvZ3JhbUluZm9Mb2cuCi1QQVNTIGNvbnRleHQu
Z2V0U2hhZGVyUGFyYW1ldGVyKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9y
IDEyODEgaW4gZ2V0U2hhZGVyUGFyYW1ldGVyLgotUEFTUyBjb250ZXh0LmdldFNoYWRlckluZm9M
b2codW5kZWZpbmVkLCAwKSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MSBpbiBnZXRTaGFk
ZXJJbmZvTG9nLgotUEFTUyBjb250ZXh0LmdldFNoYWRlclNvdXJjZSh1bmRlZmluZWQpIHRocmV3
IGV4Y2VwdGlvbiBHTCBlcnJvciAxMjgxIGluIGdldFNoYWRlclNvdXJjZS4KLVBBU1MgY29udGV4
dC5nZXRVbmlmb3JtKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODEg
aW4gZ2V0VW5pZm9ybS4KLVBBU1MgY29udGV4dC5nZXRVbmlmb3JtTG9jYXRpb24odW5kZWZpbmVk
LCAnZm9vJykgdGhyZXcgZXhjZXB0aW9uIEdMIGVycm9yIDEyODEgaW4gZ2V0VW5pZm9ybUxvY2F0
aW9uLgorUEFTUyBjb250ZXh0LmNvbXBpbGVTaGFkZXIoKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wg
ZXJyb3I6IElOVkFMSURfVkFMVUUuCitQQVNTIGNvbnRleHQubGlua1Byb2dyYW0oKSBnZW5lcmF0
ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfVkFMVUUuCitQQVNTIGNvbnRleHQuYXR0YWNo
U2hhZGVyKCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX1ZBTFVFLgorUEFT
UyBjb250ZXh0LmF0dGFjaFNoYWRlcihwcm9ncmFtLCB1bmRlZmluZWQpIGdlbmVyYXRlZCBleHBl
Y3RlZCBHTCBlcnJvcjogSU5WQUxJRF9WQUxVRS4KK1BBU1MgY29udGV4dC5hdHRhY2hTaGFkZXIo
dW5kZWZpbmVkLCBzaGFkZXIpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9W
QUxVRS4KK1BBU1MgY29udGV4dC5kZXRhY2hTaGFkZXIocHJvZ3JhbSwgdW5kZWZpbmVkKSBnZW5l
cmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfVkFMVUUuCitQQVNTIGNvbnRleHQuZGV0
YWNoU2hhZGVyKHVuZGVmaW5lZCwgc2hhZGVyKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6
IElOVkFMSURfVkFMVUUuCitQQVNTIGNvbnRleHQuc2hhZGVyU291cmNlKCkgZ2VuZXJhdGVkIGV4
cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX1ZBTFVFLgorUEFTUyBjb250ZXh0LnNoYWRlclNvdXJj
ZSh1bmRlZmluZWQsICdmb28nKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURf
VkFMVUUuCitQQVNTIGNvbnRleHQuYmluZEF0dHJpYkxvY2F0aW9uKHVuZGVmaW5lZCwgMCwgJ2Zv
bycpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9WQUxVRS4KK1BBU1MgY29u
dGV4dC5iaW5kQnVmZmVyKGNvbnRleHQuQVJSQVlfQlVGRkVSLCAwKSBnZW5lcmF0ZWQgZXhwZWN0
ZWQgR0wgZXJyb3I6IE5PX0VSUk9SLgorUEFTUyBjb250ZXh0LmJpbmRGcmFtZWJ1ZmZlcihjb250
ZXh0LkZSQU1FQlVGRkVSLCAwKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IE5PX0VSUk9S
LgorUEFTUyBjb250ZXh0LmJpbmRSZW5kZXJidWZmZXIoY29udGV4dC5SRU5ERVJCVUZGRVIsIDAp
IGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogTk9fRVJST1IuCitQQVNTIGNvbnRleHQuYmlu
ZFRleHR1cmUoY29udGV4dC5URVhUVVJFXzJELCAwKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJy
b3I6IE5PX0VSUk9SLgorUEFTUyBjb250ZXh0LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGNvbnRl
eHQuRlJBTUVCVUZGRVIsIGNvbnRleHQuREVQVEhfQVRUQUNITUVOVCwgY29udGV4dC5SRU5ERVJC
VUZGRVIsIDApIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04u
CitQQVNTIGNvbnRleHQuZnJhbWVidWZmZXJUZXh0dXJlMkQoY29udGV4dC5GUkFNRUJVRkZFUiwg
Y29udGV4dC5DT0xPUl9BVFRBQ0hNRU5UMCwgY29udGV4dC5URVhUVVJFXzJELCAwLCAwKSBnZW5l
cmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfT1BFUkFUSU9OLgorUEFTUyBjb250ZXh0
LmdldFByb2dyYW1QYXJhbWV0ZXIodW5kZWZpbmVkLCAwKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wg
ZXJyb3I6IElOVkFMSURfVkFMVUUuCitQQVNTIGNvbnRleHQuZ2V0UHJvZ3JhbUluZm9Mb2codW5k
ZWZpbmVkLCAwKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfVkFMVUUuCitQ
QVNTIGNvbnRleHQuZ2V0U2hhZGVyUGFyYW1ldGVyKHVuZGVmaW5lZCwgMCkgZ2VuZXJhdGVkIGV4
cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX1ZBTFVFLgorUEFTUyBjb250ZXh0LmdldFNoYWRlcklu
Zm9Mb2codW5kZWZpbmVkLCAwKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURf
VkFMVUUuCitQQVNTIGNvbnRleHQuZ2V0U2hhZGVyU291cmNlKHVuZGVmaW5lZCkgZ2VuZXJhdGVk
IGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX1ZBTFVFLgorUEFTUyBjb250ZXh0LmdldFVuaWZv
cm0odW5kZWZpbmVkLCAwKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfVkFM
VUUuCitQQVNTIGNvbnRleHQuZ2V0VW5pZm9ybUxvY2F0aW9uKHVuZGVmaW5lZCwgJ2ZvbycpIGdl
bmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9WQUxVRS4KIFBBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvd2ViZ2wvbnVsbC1vYmplY3QtYmVoYXZpb3VyLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvbnVsbC1vYmplY3QtYmVoYXZpb3VyLmh0bWwJ
KHJldmlzaW9uIDYzMjYwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvbnVsbC1v
YmplY3QtYmVoYXZpb3VyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTExLDM3ICsxMSwzMyBAQAog
PHNjcmlwdD4KIGRlc2NyaXB0aW9uKCJUZXN0cyBjYWxsaW5nIFdlYkdMIEFQSXMgd2l0aG91dCBw
cm92aWRpbmcgdGhlIG5lY2Vzc2FyeSBvYmplY3RzIik7CiAKLXZhciBjb250ZXh0ID0gY3JlYXRl
M0REZWJ1Z0NvbnRleHQoKTsKK3ZhciBjb250ZXh0ID0gY3JlYXRlM0RDb250ZXh0KCk7CiB2YXIg
cHJvZ3JhbSA9IGxvYWRTdGFuZGFyZFByb2dyYW0oY29udGV4dCk7CiB2YXIgc2hhZGVyID0gbG9h
ZFN0YW5kYXJkVmVydGV4U2hhZGVyKGNvbnRleHQpOwogCi1zaG91bGRUaHJvdygiY29udGV4dC5j
b21waWxlU2hhZGVyKCkiKTsKLXNob3VsZFRocm93KCJjb250ZXh0LmxpbmtQcm9ncmFtKCkiKTsK
LXNob3VsZFRocm93KCJjb250ZXh0LmF0dGFjaFNoYWRlcigpIik7Ci1zaG91bGRUaHJvdygiY29u
dGV4dC5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgdW5kZWZpbmVkKSIpOwotc2hvdWxkVGhyb3coImNv
bnRleHQuYXR0YWNoU2hhZGVyKHVuZGVmaW5lZCwgc2hhZGVyKSIpOwotc2hvdWxkVGhyb3coImNv
bnRleHQuZGV0YWNoU2hhZGVyKHByb2dyYW0sIHVuZGVmaW5lZCkiKTsKLXNob3VsZFRocm93KCJj
b250ZXh0LmRldGFjaFNoYWRlcih1bmRlZmluZWQsIHNoYWRlcikiKTsKLXNob3VsZFRocm93KCJj
b250ZXh0LnNoYWRlclNvdXJjZSgpIik7Ci1zaG91bGRUaHJvdygiY29udGV4dC5zaGFkZXJTb3Vy
Y2UodW5kZWZpbmVkLCAnZm9vJykiKTsKLXNob3VsZFRocm93KCJjb250ZXh0LmJpbmRBdHRyaWJM
b2NhdGlvbih1bmRlZmluZWQsIDAsICdmb28nKSIpOwotc2hvdWxkQmVVbmRlZmluZWQoImNvbnRl
eHQuYmluZEJ1ZmZlcihjb250ZXh0LkFSUkFZX0JVRkZFUiwgMCkiKTsKLXNob3VsZEJlVW5kZWZp
bmVkKCJjb250ZXh0LmJpbmRGcmFtZWJ1ZmZlcihjb250ZXh0LkZSQU1FQlVGRkVSLCAwKSIpOwot
c2hvdWxkQmVVbmRlZmluZWQoImNvbnRleHQuYmluZFJlbmRlcmJ1ZmZlcihjb250ZXh0LlJFTkRF
UkJVRkZFUiwgMCkiKTsKLXNob3VsZEJlVW5kZWZpbmVkKCJjb250ZXh0LmJpbmRUZXh0dXJlKGNv
bnRleHQuVEVYVFVSRV8yRCwgMCkiKTsKLS8vIFRoZSBmb2xsb3dpbmcgdHdvIHRocm93IGV4Y2Vw
dGlvbnMgYmVjYXVzZSBjb25jZXB0dWFsbHkgbm8KLS8vIGZyYW1lYnVmZmVyIGlzIGJvdW5kIGF0
IHRoaXMgcG9pbnQuIEluIHJlYWxpdHkgdGhlIFdlYkdMCi0vLyBpbXBsZW1lbnRhdGlvbidzIGlu
dGVybmFsIGZyYW1lYnVmZmVyIGlzIGJvdW5kLCBidXQgd2UgY2FuJ3QgYWxsb3cKLS8vIHVzZXIg
Y29kZSB0byBtYW5pcHVsYXRlIGl0Lgotc2hvdWxkVGhyb3coImNvbnRleHQuZnJhbWVidWZmZXJS
ZW5kZXJidWZmZXIoY29udGV4dC5GUkFNRUJVRkZFUiwgY29udGV4dC5ERVBUSF9BVFRBQ0hNRU5U
LCBjb250ZXh0LlJFTkRFUkJVRkZFUiwgMCkiKTsKLXNob3VsZFRocm93KCJjb250ZXh0LmZyYW1l
YnVmZmVyVGV4dHVyZTJEKGNvbnRleHQuRlJBTUVCVUZGRVIsIGNvbnRleHQuQ09MT1JfQVRUQUNI
TUVOVDAsIGNvbnRleHQuVEVYVFVSRV8yRCwgMCwgMCkiKTsKLXNob3VsZFRocm93KCJjb250ZXh0
LmdldFByb2dyYW1QYXJhbWV0ZXIodW5kZWZpbmVkLCAwKSIpOwotc2hvdWxkVGhyb3coImNvbnRl
eHQuZ2V0UHJvZ3JhbUluZm9Mb2codW5kZWZpbmVkLCAwKSIpOwotc2hvdWxkVGhyb3coImNvbnRl
eHQuZ2V0U2hhZGVyUGFyYW1ldGVyKHVuZGVmaW5lZCwgMCkiKTsKLXNob3VsZFRocm93KCJjb250
ZXh0LmdldFNoYWRlckluZm9Mb2codW5kZWZpbmVkLCAwKSIpOwotc2hvdWxkVGhyb3coImNvbnRl
eHQuZ2V0U2hhZGVyU291cmNlKHVuZGVmaW5lZCkiKTsKLXNob3VsZFRocm93KCJjb250ZXh0Lmdl
dFVuaWZvcm0odW5kZWZpbmVkLCAwKSIpOwotc2hvdWxkVGhyb3coImNvbnRleHQuZ2V0VW5pZm9y
bUxvY2F0aW9uKHVuZGVmaW5lZCwgJ2ZvbycpIik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29u
dGV4dCwgY29udGV4dC5JTlZBTElEX1ZBTFVFLCAiY29udGV4dC5jb21waWxlU2hhZGVyKCkiKTsK
K3Nob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0LklOVkFMSURfVkFMVUUsICJj
b250ZXh0LmxpbmtQcm9ncmFtKCkiKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBj
b250ZXh0LklOVkFMSURfVkFMVUUsICJjb250ZXh0LmF0dGFjaFNoYWRlcigpIik7CitzaG91bGRH
ZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX1ZBTFVFLCAiY29udGV4dC5h
dHRhY2hTaGFkZXIocHJvZ3JhbSwgdW5kZWZpbmVkKSIpOworc2hvdWxkR2VuZXJhdGVHTEVycm9y
KGNvbnRleHQsIGNvbnRleHQuSU5WQUxJRF9WQUxVRSwgImNvbnRleHQuYXR0YWNoU2hhZGVyKHVu
ZGVmaW5lZCwgc2hhZGVyKSIpOworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIGNvbnRl
eHQuSU5WQUxJRF9WQUxVRSwgImNvbnRleHQuZGV0YWNoU2hhZGVyKHByb2dyYW0sIHVuZGVmaW5l
ZCkiKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0LklOVkFMSURfVkFM
VUUsICJjb250ZXh0LmRldGFjaFNoYWRlcih1bmRlZmluZWQsIHNoYWRlcikiKTsKK3Nob3VsZEdl
bmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0LklOVkFMSURfVkFMVUUsICJjb250ZXh0LnNo
YWRlclNvdXJjZSgpIik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5J
TlZBTElEX1ZBTFVFLCAiY29udGV4dC5zaGFkZXJTb3VyY2UodW5kZWZpbmVkLCAnZm9vJykiKTsK
K3Nob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0LklOVkFMSURfVkFMVUUsICJj
b250ZXh0LmJpbmRBdHRyaWJMb2NhdGlvbih1bmRlZmluZWQsIDAsICdmb28nKSIpOworc2hvdWxk
R2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIGNvbnRleHQuTk9fRVJST1IsICJjb250ZXh0LmJpbmRC
dWZmZXIoY29udGV4dC5BUlJBWV9CVUZGRVIsIDApIik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3Io
Y29udGV4dCwgY29udGV4dC5OT19FUlJPUiwgImNvbnRleHQuYmluZEZyYW1lYnVmZmVyKGNvbnRl
eHQuRlJBTUVCVUZGRVIsIDApIik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29u
dGV4dC5OT19FUlJPUiwgImNvbnRleHQuYmluZFJlbmRlcmJ1ZmZlcihjb250ZXh0LlJFTkRFUkJV
RkZFUiwgMCkiKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0Lk5PX0VS
Uk9SLCAiY29udGV4dC5iaW5kVGV4dHVyZShjb250ZXh0LlRFWFRVUkVfMkQsIDApIik7CitzaG91
bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX09QRVJBVElPTiwgImNv
bnRleHQuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoY29udGV4dC5GUkFNRUJVRkZFUiwgY29udGV4
dC5ERVBUSF9BVFRBQ0hNRU5ULCBjb250ZXh0LlJFTkRFUkJVRkZFUiwgMCkiKTsKK3Nob3VsZEdl
bmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0LklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4
dC5mcmFtZWJ1ZmZlclRleHR1cmUyRChjb250ZXh0LkZSQU1FQlVGRkVSLCBjb250ZXh0LkNPTE9S
X0FUVEFDSE1FTlQwLCBjb250ZXh0LlRFWFRVUkVfMkQsIDAsIDApIik7CitzaG91bGRHZW5lcmF0
ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX1ZBTFVFLCAiY29udGV4dC5nZXRQcm9n
cmFtUGFyYW1ldGVyKHVuZGVmaW5lZCwgMCkiKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihjb250
ZXh0LCBjb250ZXh0LklOVkFMSURfVkFMVUUsICJjb250ZXh0LmdldFByb2dyYW1JbmZvTG9nKHVu
ZGVmaW5lZCwgMCkiKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0LklO
VkFMSURfVkFMVUUsICJjb250ZXh0LmdldFNoYWRlclBhcmFtZXRlcih1bmRlZmluZWQsIDApIik7
CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX1ZBTFVFLCAi
Y29udGV4dC5nZXRTaGFkZXJJbmZvTG9nKHVuZGVmaW5lZCwgMCkiKTsKK3Nob3VsZEdlbmVyYXRl
R0xFcnJvcihjb250ZXh0LCBjb250ZXh0LklOVkFMSURfVkFMVUUsICJjb250ZXh0LmdldFNoYWRl
clNvdXJjZSh1bmRlZmluZWQpIik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29u
dGV4dC5JTlZBTElEX1ZBTFVFLCAiY29udGV4dC5nZXRVbmlmb3JtKHVuZGVmaW5lZCwgMCkiKTsK
K3Nob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0LklOVkFMSURfVkFMVUUsICJj
b250ZXh0LmdldFVuaWZvcm1Mb2NhdGlvbih1bmRlZmluZWQsICdmb28nKSIpOwogCiBzdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy93ZWJnbC90ZXhJbWFnZTJESW1hZ2VEYXRhVGVzdC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3RleEltYWdlMkRJbWFnZURhdGFUZXN0Lmh0bWwJ
KHJldmlzaW9uIDYzMjYwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdGV4SW1h
Z2UyREltYWdlRGF0YVRlc3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw3ICsyLDcgQEAKIDxo
dG1sPgogICA8aGVhZD4KICAgICA8dGl0bGU+dGV4SW1hZ2UyRCBJbWFnZURhdGEgVGVzdDwvdGl0
bGU+Ci0gICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsczNkLmpzIj4gPC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJnbC10ZXN0LmpzIj4gPC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBpZD0idnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgogICAgICAgICBh
dHRyaWJ1dGUgdmVjMyB2UG9zaXRpb247CiAgICAgICAgIGF0dHJpYnV0ZSB2ZWMyIHZUZXhDb29y
ZDA7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90ZXh0dXJlLWFjdGl2ZS1i
aW5kLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdGV4
dHVyZS1hY3RpdmUtYmluZC5odG1sCShyZXZpc2lvbiA2MzI2MCkKKysrIExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3dlYmdsL3RleHR1cmUtYWN0aXZlLWJpbmQuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtNSw3ICs1LDcgQEAKIDx0aXRsZT5XZWJHTCBBY3RpdmVUZXh0dXJlIEJpbmRUZXh0dXJlIGNv
bmZvcm1hbmNlIHRlc3QuPC90aXRsZT4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+CiA8c2NyaXB0IHNyYz0iLi4vLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvdXRpbHMzZC5qcyI+IDwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJn
bC10ZXN0LmpzIj4gPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KIDxjYW52YXMgaWQ9ImV4YW1w
bGUiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIHN0eWxlPSJ3aWR0aDogNDBweDsgaGVpZ2h0OiA0MHB4
OyI+PC9jYW52YXM+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90cmlhbmds
ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3RyaWFu
Z2xlLmh0bWwJKHJldmlzaW9uIDYzMjYwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2Vi
Z2wvdHJpYW5nbGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw3ICsyLDcgQEAKIDxodG1sPgog
ICA8aGVhZD4KICAgICA8dGl0bGU+U3Bpbm5pbmcgQm94PC90aXRsZT4KLSAgICA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3V0aWxzM2QuanMiPiA8L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3dlYmdsLXRlc3QuanMiPiA8L3NjcmlwdD4KICAgICA8c2NyaXB0IGlkPSJ2c2hhZGVy
IiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+CiAgICAgICAgIGF0dHJpYnV0ZSB2ZWM0IHZQb3Np
dGlvbjsKICAgICAgICAgdm9pZCBtYWluKCkKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3dlYmdsL3VuaWZvcm0tbG9jYXRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3VuaWZvcm0tbG9jYXRpb24tZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiA2MzI2MCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3VuaWZvcm0t
bG9jYXRpb24tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yLDE4ICsyLDE4IEBAIFRl
c3RzIFdlYkdMIEFQSXMgcmVsYXRlZCB0byBzaGFkZXIgdW5pZm8KIAogT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgogCi1QQVNTIGNvbnRleHRBLnVzZVByb2dyYW0ocHJvZ3JhbUEyKSBpcyB1bmRl
ZmluZWQuCi1QQVNTIGNvbnRleHRBLnVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb25BLCBmYWxzZSwg
bWF0KSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4MiBpbiB1bmlmb3JtTWF0cml4NGZ2Lgot
UEFTUyBjb250ZXh0QS51c2VQcm9ncmFtKHByb2dyYW1BMSkgaXMgdW5kZWZpbmVkLgotUEFTUyBj
b250ZXh0QS51bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uQSwgZmFsc2UsIG1hdCkgaXMgdW5kZWZp
bmVkLgotUEFTUyBjb250ZXh0QS51bmlmb3JtTWF0cml4NGZ2KG51bGwsIGZhbHNlLCBtYXQpIGlz
IHVuZGVmaW5lZC4KLVBBU1MgY29udGV4dEEudXNlUHJvZ3JhbShwcm9ncmFtUykgaXMgdW5kZWZp
bmVkLgotUEFTUyBjb250ZXh0QS51bmlmb3JtMWkobG9jYXRpb25TeCwgMykgaXMgdW5kZWZpbmVk
LgotUEFTUyBjb250ZXh0QS51bmlmb3JtMWYobG9jYXRpb25BcnJheTAsIDQuMCkgaXMgdW5kZWZp
bmVkLgorUEFTUyBjb250ZXh0QS51c2VQcm9ncmFtKHByb2dyYW1BMikgZ2VuZXJhdGVkIGV4cGVj
dGVkIEdMIGVycm9yOiBOT19FUlJPUi4KK1BBU1MgY29udGV4dEEudW5pZm9ybU1hdHJpeDRmdihs
b2NhdGlvbkEsIGZhbHNlLCBtYXQpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJ
RF9PUEVSQVRJT04uCitQQVNTIGNvbnRleHRBLnVzZVByb2dyYW0ocHJvZ3JhbUExKSBnZW5lcmF0
ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IE5PX0VSUk9SLgorUEFTUyBjb250ZXh0QS51bmlmb3JtTWF0
cml4NGZ2KGxvY2F0aW9uQSwgZmFsc2UsIG1hdCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9y
OiBOT19FUlJPUi4KK1BBU1MgY29udGV4dEEudW5pZm9ybU1hdHJpeDRmdihudWxsLCBmYWxzZSwg
bWF0KSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IE5PX0VSUk9SLgorUEFTUyBjb250ZXh0
QS51c2VQcm9ncmFtKHByb2dyYW1TKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IE5PX0VS
Uk9SLgorUEFTUyBjb250ZXh0QS51bmlmb3JtMWkobG9jYXRpb25TeCwgMykgZ2VuZXJhdGVkIGV4
cGVjdGVkIEdMIGVycm9yOiBOT19FUlJPUi4KK1BBU1MgY29udGV4dEEudW5pZm9ybTFmKGxvY2F0
aW9uQXJyYXkwLCA0LjApIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogTk9fRVJST1IuCiBQ
QVNTIGNvbnRleHRBLmdldFVuaWZvcm0ocHJvZ3JhbVMsIGxvY2F0aW9uU3gpIGlzIDMKIFBBU1Mg
Y29udGV4dEEuZ2V0VW5pZm9ybShwcm9ncmFtUywgbG9jYXRpb25BcnJheTApIGlzIDQuMAotUEFT
UyBjb250ZXh0QS51c2VQcm9ncmFtKHByb2dyYW1WKSBpcyB1bmRlZmluZWQuCi1QQVNTIGNvbnRl
eHRBLnVuaWZvcm00ZnYobG9jYXRpb25WZWM0LCB2ZWMpIGlzIHVuZGVmaW5lZC4KK1BBU1MgY29u
dGV4dEEudXNlUHJvZ3JhbShwcm9ncmFtVikgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBO
T19FUlJPUi4KK1BBU1MgY29udGV4dEEudW5pZm9ybTRmdihsb2NhdGlvblZlYzQsIHZlYykgZ2Vu
ZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBOT19FUlJPUi4KIFBBU1MgY29udGV4dEEuZ2V0VW5p
Zm9ybShwcm9ncmFtViwgbG9jYXRpb25WZWM0KSBpcyB2ZWMKIFBBU1MgY29udGV4dEEuZ2V0VW5p
Zm9ybUxvY2F0aW9uKHByb2dyYW1WLCAiSURvbnRFeGlzdCIpIGlzIG51bGwKIFBBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L3VuaWZvcm0tbG9jYXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy93ZWJnbC91bmlmb3JtLWxvY2F0aW9uLmh0bWwJKHJldmlzaW9uIDYzMjYwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdW5pZm9ybS1sb2NhdGlvbi5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0xMSw4ICsxMSw4IEBACiA8c2NyaXB0PgogZGVzY3JpcHRpb24oIlRlc3RzIFdl
YkdMIEFQSXMgcmVsYXRlZCB0byBzaGFkZXIgdW5pZm9ybXMiKTsKIAotdmFyIGNvbnRleHRBID0g
Y3JlYXRlM0REZWJ1Z0NvbnRleHQoKTsKLXZhciBjb250ZXh0QiA9IGNyZWF0ZTNERGVidWdDb250
ZXh0KCk7Cit2YXIgY29udGV4dEEgPSBjcmVhdGUzRENvbnRleHQoKTsKK3ZhciBjb250ZXh0QiA9
IGNyZWF0ZTNEQ29udGV4dCgpOwogdmFyIHByb2dyYW1BMSA9IGxvYWRTdGFuZGFyZFByb2dyYW0o
Y29udGV4dEEpOwogdmFyIHByb2dyYW1BMiA9IGxvYWRTdGFuZGFyZFByb2dyYW0oY29udGV4dEEp
OwogdmFyIHByb2dyYW1CID0gbG9hZFN0YW5kYXJkUHJvZ3JhbShjb250ZXh0Qik7CkBAIC0yNywy
MSArMjcsMjEgQEAgdmFyIGxvY2F0aW9uVmVjNCA9IGNvbnRleHRBLmdldFVuaWZvcm1MbwogdmFy
IHZlYyA9IFsxLCAyLCAzLCA0XTsKIHZhciBtYXQgPSBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwg
OSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTZdOwogCi1zaG91bGRCZVVuZGVmaW5lZCgiY29u
dGV4dEEudXNlUHJvZ3JhbShwcm9ncmFtQTIpIik7Ci1zaG91bGRUaHJvdygiY29udGV4dEEudW5p
Zm9ybU1hdHJpeDRmdihsb2NhdGlvbkEsIGZhbHNlLCBtYXQpIik7Ci1zaG91bGRCZVVuZGVmaW5l
ZCgiY29udGV4dEEudXNlUHJvZ3JhbShwcm9ncmFtQTEpIik7Ci1zaG91bGRCZVVuZGVmaW5lZCgi
Y29udGV4dEEudW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbkEsIGZhbHNlLCBtYXQpIik7Ci1zaG91
bGRCZVVuZGVmaW5lZCgiY29udGV4dEEudW5pZm9ybU1hdHJpeDRmdihudWxsLCBmYWxzZSwgbWF0
KSIpOwotCi1zaG91bGRCZVVuZGVmaW5lZCgiY29udGV4dEEudXNlUHJvZ3JhbShwcm9ncmFtUyki
KTsKLXNob3VsZEJlVW5kZWZpbmVkKCJjb250ZXh0QS51bmlmb3JtMWkobG9jYXRpb25TeCwgMyki
KTsKLXNob3VsZEJlVW5kZWZpbmVkKCJjb250ZXh0QS51bmlmb3JtMWYobG9jYXRpb25BcnJheTAs
IDQuMCkiKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuTk9fRVJS
T1IsICJjb250ZXh0QS51c2VQcm9ncmFtKHByb2dyYW1BMikiKTsKK3Nob3VsZEdlbmVyYXRlR0xF
cnJvcihjb250ZXh0QSwgY29udGV4dEEuSU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0QS51bmlm
b3JtTWF0cml4NGZ2KGxvY2F0aW9uQSwgZmFsc2UsIG1hdCkiKTsKK3Nob3VsZEdlbmVyYXRlR0xF
cnJvcihjb250ZXh0QSwgY29udGV4dEEuTk9fRVJST1IsICJjb250ZXh0QS51c2VQcm9ncmFtKHBy
b2dyYW1BMSkiKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuTk9f
RVJST1IsICJjb250ZXh0QS51bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uQSwgZmFsc2UsIG1hdCki
KTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuTk9fRVJST1IsICJj
b250ZXh0QS51bmlmb3JtTWF0cml4NGZ2KG51bGwsIGZhbHNlLCBtYXQpIik7CisKK3Nob3VsZEdl
bmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuTk9fRVJST1IsICJjb250ZXh0QS51c2VQ
cm9ncmFtKHByb2dyYW1TKSIpOworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250
ZXh0QS5OT19FUlJPUiwgImNvbnRleHRBLnVuaWZvcm0xaShsb2NhdGlvblN4LCAzKSIpOworc2hv
dWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250ZXh0QS5OT19FUlJPUiwgImNvbnRleHRB
LnVuaWZvcm0xZihsb2NhdGlvbkFycmF5MCwgNC4wKSIpOwogCiBzaG91bGRCZSgiY29udGV4dEEu
Z2V0VW5pZm9ybShwcm9ncmFtUywgbG9jYXRpb25TeCkiLCAiMyIpOwogc2hvdWxkQmUoImNvbnRl
eHRBLmdldFVuaWZvcm0ocHJvZ3JhbVMsIGxvY2F0aW9uQXJyYXkwKSIsICI0LjAiKTsKIAotc2hv
dWxkQmVVbmRlZmluZWQoImNvbnRleHRBLnVzZVByb2dyYW0ocHJvZ3JhbVYpIik7Ci1zaG91bGRC
ZVVuZGVmaW5lZCgiY29udGV4dEEudW5pZm9ybTRmdihsb2NhdGlvblZlYzQsIHZlYykiKTsKK3No
b3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuTk9fRVJST1IsICJjb250ZXh0
QS51c2VQcm9ncmFtKHByb2dyYW1WKSIpOworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRB
LCBjb250ZXh0QS5OT19FUlJPUiwgImNvbnRleHRBLnVuaWZvcm00ZnYobG9jYXRpb25WZWM0LCB2
ZWMpIik7CiBzaG91bGRCZSgiY29udGV4dEEuZ2V0VW5pZm9ybShwcm9ncmFtViwgbG9jYXRpb25W
ZWM0KSIsICJ2ZWMiKTsKIAogc2hvdWxkQmVOdWxsKCJjb250ZXh0QS5nZXRVbmlmb3JtTG9jYXRp
b24ocHJvZ3JhbVYsIFwiSURvbnRFeGlzdFwiKSIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvd2ViZ2wvdmlld3BvcnQtdW5jaGFuZ2VkLXVwb24tcmVzaXplLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdmlld3BvcnQtdW5jaGFuZ2VkLXVw
b24tcmVzaXplLmh0bWwJKHJldmlzaW9uIDYzMjYwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvd2ViZ2wvdmlld3BvcnQtdW5jaGFuZ2VkLXVwb24tcmVzaXplLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTMsNyArMyw2IEBACiA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3dlYmdsLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsczNk
LmpzIj4gPC9zY3JpcHQ+CiA8c2NyaXB0IGlkPSJ2c2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZl
cnRleCI+CiBhdHRyaWJ1dGUgdmVjMyBnX1Bvc2l0aW9uOwogCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvdXRpbHMzZC5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvdXRpbHMzZC5qcwkocmV2aXNpb24g
NjMyNjApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvdXRpbHMz
ZC5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw1NDAgKzAsMCBAQAotLy8KLS8vIGluaXRXZWJHTAot
Ly8KLS8vIEluaXRpYWxpemUgdGhlIENhbnZhcyBlbGVtZW50IHdpdGggdGhlIHBhc3NlZCBuYW1l
IGFzIGEgV2ViR0wgb2JqZWN0IGFuZCByZXR1cm4gdGhlCi0vLyBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQuIAotLy8KLS8vIExvYWQgc2hhZGVycyB3aXRoIHRoZSBwYXNzZWQgbmFtZXMgYW5kIGNyZWF0
ZSBhIHByb2dyYW0gd2l0aCB0aGVtLiBSZXR1cm4gdGhpcyBwcm9ncmFtIAotLy8gaW4gdGhlICdw
cm9ncmFtJyBwcm9wZXJ0eSBvZiB0aGUgcmV0dXJuZWQgY29udGV4dC4KLS8vCi0vLyBGb3IgZWFj
aCBzdHJpbmcgaW4gdGhlIHBhc3NlZCBhdHRyaWJzIGFycmF5LCBiaW5kIGFuIGF0dHJpYiB3aXRo
IHRoYXQgbmFtZSBhdCB0aGF0IGluZGV4LgotLy8gT25jZSB0aGUgYXR0cmlicyBhcmUgYm91bmQs
IGxpbmsgdGhlIHByb2dyYW0gYW5kIHRoZW4gdXNlIGl0LgotLy8KLS8vIFNldCB0aGUgY2xlYXIg
Y29sb3IgdG8gdGhlIHBhc3NlZCBhcnJheSAoNCB2YWx1ZXMpIGFuZCBzZXQgdGhlIGNsZWFyIGRl
cHRoIHRvIHRoZSBwYXNzZWQgdmFsdWUuCi0vLyBFbmFibGUgZGVwdGggdGVzdGluZyBhbmQgYmxl
bmRpbmcgd2l0aCBhIGJsZW5kIGZ1bmMgb2YgKFNSQ19BTFBIQSwgT05FX01JTlVTX1NSQ19BTFBI
QSkKLS8vCi0vLyBBIGNvbnNvbGUgZnVuY3Rpb24gaXMgYWRkZWQgdG8gdGhlIGNvbnRleHQ6IGNv
bnNvbGUoc3RyaW5nKS4gVGhpcyBjYW4gYmUgcmVwbGFjZWQKLS8vIGJ5IHRoZSBjYWxsZXIuIEJ5
IGRlZmF1bHQsIGl0IG1hcHMgdG8gdGhlIHdpbmRvdy5jb25zb2xlKCkgZnVuY3Rpb24gb24gV2Vi
S2l0IGFuZCB0bwotLy8gYW4gZW1wdHkgZnVuY3Rpb24gb24gb3RoZXIgYnJvd3NlcnMuCi0vLwot
ZnVuY3Rpb24gaW5pdFdlYkdMKGNhbnZhc05hbWUsIHZzaGFkZXIsIGZzaGFkZXIsIGF0dHJpYnMs
IGNsZWFyQ29sb3IsIGNsZWFyRGVwdGgsIGNvbnRleHRBdHRyaWJzKQotewotICAgIHZhciBjYW52
YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChjYW52YXNOYW1lKTsKLSAgICB2YXIgZ2wgPSBj
YW52YXMuZ2V0Q29udGV4dCgiZXhwZXJpbWVudGFsLXdlYmdsIiwgY29udGV4dEF0dHJpYnMpOwot
ICAgIGlmICghZ2wpIHsKLSAgICAgICAgYWxlcnQoIk5vIFdlYkdMIGNvbnRleHQgZm91bmQiKTsK
LSAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfQotICAgIAotICAgIC8vIEFkZCBhIGNvbnNvbGUK
LSAgICBnbC5jb25zb2xlID0gKCJjb25zb2xlIiBpbiB3aW5kb3cpID8gd2luZG93LmNvbnNvbGUg
OiB7IGxvZzogZnVuY3Rpb24oKSB7IH0gfTsKLQotICAgIC8vIGNyZWF0ZSBvdXIgc2hhZGVycwot
ICAgIHZhciB2ZXJ0ZXhTaGFkZXIgPSBsb2FkU2hhZGVyKGdsLCB2c2hhZGVyKTsKLSAgICB2YXIg
ZnJhZ21lbnRTaGFkZXIgPSBsb2FkU2hhZGVyKGdsLCBmc2hhZGVyKTsKLQotICAgIGlmICghdmVy
dGV4U2hhZGVyIHx8ICFmcmFnbWVudFNoYWRlcikKLSAgICAgICAgcmV0dXJuIG51bGw7Ci0KLSAg
ICAvLyBDcmVhdGUgdGhlIHByb2dyYW0gb2JqZWN0Ci0gICAgZ2wucHJvZ3JhbSA9IGdsLmNyZWF0
ZVByb2dyYW0oKTsKLQotICAgIGlmICghZ2wucHJvZ3JhbSkKLSAgICAgICAgcmV0dXJuIG51bGw7
Ci0KLSAgICAvLyBBdHRhY2ggb3VyIHR3byBzaGFkZXJzIHRvIHRoZSBwcm9ncmFtCi0gICAgZ2wu
YXR0YWNoU2hhZGVyIChnbC5wcm9ncmFtLCB2ZXJ0ZXhTaGFkZXIpOwotICAgIGdsLmF0dGFjaFNo
YWRlciAoZ2wucHJvZ3JhbSwgZnJhZ21lbnRTaGFkZXIpOwotCi0gICAgLy8gQmluZCBhdHRyaWJ1
dGVzCi0gICAgZm9yICh2YXIgaSBpbiBhdHRyaWJzKQotICAgICAgICBnbC5iaW5kQXR0cmliTG9j
YXRpb24gKGdsLnByb2dyYW0sIGksIGF0dHJpYnNbaV0pOwotCi0gICAgLy8gTGluayB0aGUgcHJv
Z3JhbQotICAgIGdsLmxpbmtQcm9ncmFtKGdsLnByb2dyYW0pOwotCi0gICAgLy8gQ2hlY2sgdGhl
IGxpbmsgc3RhdHVzCi0gICAgdmFyIGxpbmtlZCA9IGdsLmdldFByb2dyYW1QYXJhbWV0ZXIoZ2wu
cHJvZ3JhbSwgZ2wuTElOS19TVEFUVVMpOwotICAgIGlmICghbGlua2VkKSB7Ci0gICAgICAgIC8v
IHNvbWV0aGluZyB3ZW50IHdyb25nIHdpdGggdGhlIGxpbmsKLSAgICAgICAgdmFyIGVycm9yID0g
Z2wuZ2V0UHJvZ3JhbUluZm9Mb2cgKGdsLnByb2dyYW0pOwotICAgICAgICBnbC5jb25zb2xlLmxv
ZygiRXJyb3IgaW4gcHJvZ3JhbSBsaW5raW5nOiIrZXJyb3IpOwotCi0gICAgICAgIGdsLmRlbGV0
ZVByb2dyYW0oZ2wucHJvZ3JhbSk7Ci0gICAgICAgIGdsLmRlbGV0ZVByb2dyYW0oZnJhZ21lbnRT
aGFkZXIpOwotICAgICAgICBnbC5kZWxldGVQcm9ncmFtKHZlcnRleFNoYWRlcik7Ci0KLSAgICAg
ICAgcmV0dXJuIG51bGw7Ci0gICAgfQotCi0gICAgZ2wudXNlUHJvZ3JhbShnbC5wcm9ncmFtKTsK
LQotICAgIGdsLmNsZWFyQ29sb3IoY2xlYXJDb2xvclswXSwgY2xlYXJDb2xvclsxXSwgY2xlYXJD
b2xvclsyXSwgY2xlYXJDb2xvclszXSk7Ci0gICAgZ2wuY2xlYXJEZXB0aChjbGVhckRlcHRoKTsK
LQotICAgIGdsLmVuYWJsZShnbC5ERVBUSF9URVNUKTsKLSAgICBnbC5lbmFibGUoZ2wuQkxFTkQp
OwotICAgIGdsLmJsZW5kRnVuYyhnbC5TUkNfQUxQSEEsIGdsLk9ORV9NSU5VU19TUkNfQUxQSEEp
OwotCi0gICAgcmV0dXJuIGdsOwotfQotCi0vLwotLy8gbG9hZFNoYWRlcgotLy8KLS8vICdzaGFk
ZXJJZCcgaXMgdGhlIGlkIG9mIGEgPHNjcmlwdD4gZWxlbWVudCBjb250YWluaW5nIHRoZSBzaGFk
ZXIgc291cmNlIHN0cmluZy4KLS8vIExvYWQgdGhpcyBzaGFkZXIgYW5kIHJldHVybiB0aGUgV2Vi
R0xTaGFkZXIgb2JqZWN0IGNvcnJlc3BvbmRpbmcgdG8gaXQuCi0vLwotZnVuY3Rpb24gbG9hZFNo
YWRlcihjdHgsIHNoYWRlcklkKQotewotICAgIHZhciBzaGFkZXJTY3JpcHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZChzaGFkZXJJZCk7Ci0gICAgaWYgKCFzaGFkZXJTY3JpcHQpIHsKLSAgICAg
ICAgY3R4LmNvbnNvbGUubG9nKCIqKiogRXJyb3I6IHNoYWRlciBzY3JpcHQgJyIrc2hhZGVySWQr
Iicgbm90IGZvdW5kIik7Ci0gICAgICAgIHJldHVybiBudWxsOwotICAgIH0KLSAgICAgICAgCi0g
ICAgaWYgKHNoYWRlclNjcmlwdC50eXBlID09ICJ4LXNoYWRlci94LXZlcnRleCIpCi0gICAgICAg
IHZhciBzaGFkZXJUeXBlID0gY3R4LlZFUlRFWF9TSEFERVI7Ci0gICAgZWxzZSBpZiAoc2hhZGVy
U2NyaXB0LnR5cGUgPT0gIngtc2hhZGVyL3gtZnJhZ21lbnQiKQotICAgICAgICB2YXIgc2hhZGVy
VHlwZSA9IGN0eC5GUkFHTUVOVF9TSEFERVI7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGN0eC5jb25z
b2xlLmxvZygiKioqIEVycm9yOiBzaGFkZXIgc2NyaXB0ICciK3NoYWRlcklkKyInIG9mIHVuZGVm
aW5lZCB0eXBlICciK3NoYWRlclNjcmlwdC50eXBlKyInIik7ICAgICAgIAotICAgICAgICByZXR1
cm4gbnVsbDsKLSAgICB9Ci0KLSAgICAvLyBDcmVhdGUgdGhlIHNoYWRlciBvYmplY3QKLSAgICB2
YXIgc2hhZGVyID0gY3R4LmNyZWF0ZVNoYWRlcihzaGFkZXJUeXBlKTsKLSAgICBpZiAoc2hhZGVy
ID09IG51bGwpIHsKLSAgICAgICAgY3R4LmNvbnNvbGUubG9nKCIqKiogRXJyb3I6IHVuYWJsZSB0
byBjcmVhdGUgc2hhZGVyICciK3NoYWRlcklkKyInIik7ICAgICAgIAotICAgICAgICByZXR1cm4g
bnVsbDsKLSAgICB9Ci0KLSAgICAvLyBMb2FkIHRoZSBzaGFkZXIgc291cmNlCi0gICAgY3R4LnNo
YWRlclNvdXJjZShzaGFkZXIsIHNoYWRlclNjcmlwdC50ZXh0KTsKLQotICAgIC8vIENvbXBpbGUg
dGhlIHNoYWRlcgotICAgIGN0eC5jb21waWxlU2hhZGVyKHNoYWRlcik7Ci0KLSAgICAvLyBDaGVj
ayB0aGUgY29tcGlsZSBzdGF0dXMKLSAgICB2YXIgY29tcGlsZWQgPSBjdHguZ2V0U2hhZGVyUGFy
YW1ldGVyKHNoYWRlciwgY3R4LkNPTVBJTEVfU1RBVFVTKTsKLSAgICBpZiAoIWNvbXBpbGVkKSB7
Ci0gICAgICAgIC8vIFNvbWV0aGluZyB3ZW50IHdyb25nIGR1cmluZyBjb21waWxhdGlvbjsgZ2V0
IHRoZSBlcnJvcgotICAgICAgICB2YXIgZXJyb3IgPSBjdHguZ2V0U2hhZGVySW5mb0xvZyhzaGFk
ZXIpOwotICAgICAgICBjdHguY29uc29sZS5sb2coIioqKiBFcnJvciBjb21waWxpbmcgc2hhZGVy
ICciK3NoYWRlcklkKyInOiIrZXJyb3IpOwotICAgICAgICBjdHguZGVsZXRlU2hhZGVyKHNoYWRl
cik7Ci0gICAgICAgIHJldHVybiBudWxsOwotICAgIH0KLQotICAgIHJldHVybiBzaGFkZXI7Ci19
Ci0KLS8vIAotLy8gbWFrZUJveAotLy8KLS8vIENyZWF0ZSBhIGJveCB3aXRoIHZlcnRpY2VzLCBu
b3JtYWxzIGFuZCB0ZXhDb29yZHMuIENyZWF0ZSBWQk9zIGZvciBlYWNoIGFzIHdlbGwgYXMgdGhl
IGluZGV4IGFycmF5LgotLy8gUmV0dXJuIGFuIG9iamVjdCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJv
cGVydGllczoKLS8vCi0vLyAgbm9ybWFsT2JqZWN0ICAgICAgICBXZWJHTEJ1ZmZlciBvYmplY3Qg
Zm9yIG5vcm1hbHMKLS8vICB0ZXhDb29yZE9iamVjdCAgICAgIFdlYkdMQnVmZmVyIG9iamVjdCBm
b3IgdGV4Q29vcmRzCi0vLyAgdmVydGV4T2JqZWN0ICAgICAgICBXZWJHTEJ1ZmZlciBvYmplY3Qg
Zm9yIHZlcnRpY2VzCi0vLyAgaW5kZXhPYmplY3QgICAgICAgICBXZWJHTEJ1ZmZlciBvYmplY3Qg
Zm9yIGluZGljZXMKLS8vICBudW1JbmRpY2VzICAgICAgICAgIFRoZSBudW1iZXIgb2YgaW5kaWNl
cyBpbiB0aGUgaW5kZXhPYmplY3QKLS8vIAotZnVuY3Rpb24gbWFrZUJveChjdHgpCi17Ci0gICAg
Ly8gYm94Ci0gICAgLy8gICAgdjYtLS0tLSB2NQotICAgIC8vICAgL3wgICAgICAvfAotICAgIC8v
ICB2MS0tLS0tLXYwfAotICAgIC8vICB8IHwgICAgIHwgfAotICAgIC8vICB8IHx2Ny0tLXwtfHY0
Ci0gICAgLy8gIHwvICAgICAgfC8KLSAgICAvLyAgdjItLS0tLS12MwotICAgIC8vCi0gICAgLy8g
dmVydGV4IGNvb3JkcyBhcnJheQotICAgIHZhciB2ZXJ0aWNlcyA9IG5ldyBXZWJHTEZsb2F0QXJy
YXkoCi0gICAgICAgIFsgIDEsIDEsIDEsICAtMSwgMSwgMSwgIC0xLC0xLCAxLCAgIDEsLTEsIDEs
ICAgIC8vIHYwLXYxLXYyLXYzIGZyb250Ci0gICAgICAgICAgIDEsIDEsIDEsICAgMSwtMSwgMSwg
ICAxLC0xLC0xLCAgIDEsIDEsLTEsICAgIC8vIHYwLXYzLXY0LXY1IHJpZ2h0Ci0gICAgICAgICAg
IDEsIDEsIDEsICAgMSwgMSwtMSwgIC0xLCAxLC0xLCAgLTEsIDEsIDEsICAgIC8vIHYwLXY1LXY2
LXYxIHRvcAotICAgICAgICAgIC0xLCAxLCAxLCAgLTEsIDEsLTEsICAtMSwtMSwtMSwgIC0xLC0x
LCAxLCAgICAvLyB2MS12Ni12Ny12MiBsZWZ0Ci0gICAgICAgICAgLTEsLTEsLTEsICAgMSwtMSwt
MSwgICAxLC0xLCAxLCAgLTEsLTEsIDEsICAgIC8vIHY3LXY0LXYzLXYyIGJvdHRvbQotICAgICAg
ICAgICAxLC0xLC0xLCAgLTEsLTEsLTEsICAtMSwgMSwtMSwgICAxLCAxLC0xIF0gICAvLyB2NC12
Ny12Ni12NSBiYWNrCi0gICAgKTsKLQotICAgIC8vIG5vcm1hbCBhcnJheQotICAgIHZhciBub3Jt
YWxzID0gbmV3IFdlYkdMRmxvYXRBcnJheSgKLSAgICAgICAgWyAgMCwgMCwgMSwgICAwLCAwLCAx
LCAgIDAsIDAsIDEsICAgMCwgMCwgMSwgICAgIC8vIHYwLXYxLXYyLXYzIGZyb250Ci0gICAgICAg
ICAgIDEsIDAsIDAsICAgMSwgMCwgMCwgICAxLCAwLCAwLCAgIDEsIDAsIDAsICAgICAvLyB2MC12
My12NC12NSByaWdodAotICAgICAgICAgICAwLCAxLCAwLCAgIDAsIDEsIDAsICAgMCwgMSwgMCwg
ICAwLCAxLCAwLCAgICAgLy8gdjAtdjUtdjYtdjEgdG9wCi0gICAgICAgICAgLTEsIDAsIDAsICAt
MSwgMCwgMCwgIC0xLCAwLCAwLCAgLTEsIDAsIDAsICAgICAvLyB2MS12Ni12Ny12MiBsZWZ0Ci0g
ICAgICAgICAgIDAsLTEsIDAsICAgMCwtMSwgMCwgICAwLC0xLCAwLCAgIDAsLTEsIDAsICAgICAv
LyB2Ny12NC12My12MiBib3R0b20KLSAgICAgICAgICAgMCwgMCwtMSwgICAwLCAwLC0xLCAgIDAs
IDAsLTEsICAgMCwgMCwtMSBdICAgIC8vIHY0LXY3LXY2LXY1IGJhY2sKLSAgICAgICApOwotCi0K
LSAgICAvLyB0ZXhDb29yZCBhcnJheQotICAgIHZhciB0ZXhDb29yZHMgPSBuZXcgV2ViR0xGbG9h
dEFycmF5KAotICAgICAgICBbICAxLCAxLCAgIDAsIDEsICAgMCwgMCwgICAxLCAwLCAgICAvLyB2
MC12MS12Mi12MyBmcm9udAotICAgICAgICAgICAwLCAxLCAgIDAsIDAsICAgMSwgMCwgICAxLCAx
LCAgICAvLyB2MC12My12NC12NSByaWdodAotICAgICAgICAgICAxLCAwLCAgIDEsIDEsICAgMCwg
MSwgICAwLCAwLCAgICAvLyB2MC12NS12Ni12MSB0b3AKLSAgICAgICAgICAgMSwgMSwgICAwLCAx
LCAgIDAsIDAsICAgMSwgMCwgICAgLy8gdjEtdjYtdjctdjIgbGVmdAotICAgICAgICAgICAwLCAw
LCAgIDEsIDAsICAgMSwgMSwgICAwLCAxLCAgICAvLyB2Ny12NC12My12MiBib3R0b20KLSAgICAg
ICAgICAgMCwgMCwgICAxLCAwLCAgIDEsIDEsICAgMCwgMSBdICAgLy8gdjQtdjctdjYtdjUgYmFj
awotICAgICAgICk7Ci0KLSAgICAvLyBpbmRleCBhcnJheQotICAgIHZhciBpbmRpY2VzID0gbmV3
IFdlYkdMVW5zaWduZWRCeXRlQXJyYXkoCi0gICAgICAgIFsgIDAsIDEsIDIsICAgMCwgMiwgMywg
ICAgLy8gZnJvbnQKLSAgICAgICAgICAgNCwgNSwgNiwgICA0LCA2LCA3LCAgICAvLyByaWdodAot
ICAgICAgICAgICA4LCA5LDEwLCAgIDgsMTAsMTEsICAgIC8vIHRvcAotICAgICAgICAgIDEyLDEz
LDE0LCAgMTIsMTQsMTUsICAgIC8vIGxlZnQKLSAgICAgICAgICAxNiwxNywxOCwgIDE2LDE4LDE5
LCAgICAvLyBib3R0b20KLSAgICAgICAgICAyMCwyMSwyMiwgIDIwLDIyLDIzIF0gICAvLyBiYWNr
Ci0gICAgICApOwotCi0gICAgdmFyIHJldHZhbCA9IHsgfTsKLSAgICAKLSAgICByZXR2YWwubm9y
bWFsT2JqZWN0ID0gY3R4LmNyZWF0ZUJ1ZmZlcigpOwotICAgIGN0eC5iaW5kQnVmZmVyKGN0eC5B
UlJBWV9CVUZGRVIsIHJldHZhbC5ub3JtYWxPYmplY3QpOwotICAgIGN0eC5idWZmZXJEYXRhKGN0
eC5BUlJBWV9CVUZGRVIsIG5vcm1hbHMsIGN0eC5TVEFUSUNfRFJBVyk7Ci0gICAgCi0gICAgcmV0
dmFsLnRleENvb3JkT2JqZWN0ID0gY3R4LmNyZWF0ZUJ1ZmZlcigpOwotICAgIGN0eC5iaW5kQnVm
ZmVyKGN0eC5BUlJBWV9CVUZGRVIsIHJldHZhbC50ZXhDb29yZE9iamVjdCk7Ci0gICAgY3R4LmJ1
ZmZlckRhdGEoY3R4LkFSUkFZX0JVRkZFUiwgdGV4Q29vcmRzLCBjdHguU1RBVElDX0RSQVcpOwot
Ci0gICAgcmV0dmFsLnZlcnRleE9iamVjdCA9IGN0eC5jcmVhdGVCdWZmZXIoKTsKLSAgICBjdHgu
YmluZEJ1ZmZlcihjdHguQVJSQVlfQlVGRkVSLCByZXR2YWwudmVydGV4T2JqZWN0KTsKLSAgICBj
dHguYnVmZmVyRGF0YShjdHguQVJSQVlfQlVGRkVSLCB2ZXJ0aWNlcywgY3R4LlNUQVRJQ19EUkFX
KTsKLSAgICAKLSAgICBjdHguYmluZEJ1ZmZlcihjdHguQVJSQVlfQlVGRkVSLCBudWxsKTsKLQot
ICAgIHJldHZhbC5pbmRleE9iamVjdCA9IGN0eC5jcmVhdGVCdWZmZXIoKTsKLSAgICBjdHguYmlu
ZEJ1ZmZlcihjdHguRUxFTUVOVF9BUlJBWV9CVUZGRVIsIHJldHZhbC5pbmRleE9iamVjdCk7Ci0g
ICAgY3R4LmJ1ZmZlckRhdGEoY3R4LkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBpbmRpY2VzLCBjdHgu
U1RBVElDX0RSQVcpOwotICAgIGN0eC5iaW5kQnVmZmVyKGN0eC5FTEVNRU5UX0FSUkFZX0JVRkZF
UiwgbnVsbCk7Ci0gICAgCi0gICAgcmV0dmFsLm51bUluZGljZXMgPSBpbmRpY2VzLmxlbmd0aDsK
LQotICAgIHJldHVybiByZXR2YWw7Ci19Ci0KLS8vIAotLy8gbWFrZVNwaGVyZQotLy8KLS8vIENy
ZWF0ZSBhIHNwaGVyZSB3aXRoIHRoZSBwYXNzZWQgbnVtYmVyIG9mIGxhdGl0dWRlIGFuZCBsb25n
aXR1ZGUgYmFuZHMgYW5kIHRoZSBwYXNzZWQgcmFkaXVzLiAKLS8vIFNwaGVyZSBoYXMgdmVydGlj
ZXMsIG5vcm1hbHMgYW5kIHRleENvb3Jkcy4gQ3JlYXRlIFZCT3MgZm9yIGVhY2ggYXMgd2VsbCBh
cyB0aGUgaW5kZXggYXJyYXkuCi0vLyBSZXR1cm4gYW4gb2JqZWN0IHdpdGggdGhlIGZvbGxvd2lu
ZyBwcm9wZXJ0aWVzOgotLy8KLS8vICBub3JtYWxPYmplY3QgICAgICAgIFdlYkdMQnVmZmVyIG9i
amVjdCBmb3Igbm9ybWFscwotLy8gIHRleENvb3JkT2JqZWN0ICAgICAgV2ViR0xCdWZmZXIgb2Jq
ZWN0IGZvciB0ZXhDb29yZHMKLS8vICB2ZXJ0ZXhPYmplY3QgICAgICAgIFdlYkdMQnVmZmVyIG9i
amVjdCBmb3IgdmVydGljZXMKLS8vICBpbmRleE9iamVjdCAgICAgICAgIFdlYkdMQnVmZmVyIG9i
amVjdCBmb3IgaW5kaWNlcwotLy8gIG51bUluZGljZXMgICAgICAgICAgVGhlIG51bWJlciBvZiBp
bmRpY2VzIGluIHRoZSBpbmRleE9iamVjdAotLy8gCi1mdW5jdGlvbiBtYWtlU3BoZXJlKGN0eCwg
cmFkaXVzLCBsYXRzLCBsb25ncykKLXsKLSAgICB2YXIgZ2VvbWV0cnlEYXRhID0gWyBdOwotICAg
IHZhciBub3JtYWxEYXRhID0gWyBdOwotICAgIHZhciB0ZXhDb29yZERhdGEgPSBbIF07Ci0gICAg
dmFyIGluZGV4RGF0YSA9IFsgXTsKLSAgICAKLSAgICBmb3IgKHZhciBsYXROdW1iZXIgPSAwOyBs
YXROdW1iZXIgPD0gbGF0czsgKytsYXROdW1iZXIpIHsKLSAgICAgICAgZm9yICh2YXIgbG9uZ051
bWJlciA9IDA7IGxvbmdOdW1iZXIgPD0gbG9uZ3M7ICsrbG9uZ051bWJlcikgewotICAgICAgICAg
ICAgdmFyIHRoZXRhID0gbGF0TnVtYmVyICogTWF0aC5QSSAvIGxhdHM7Ci0gICAgICAgICAgICB2
YXIgcGhpID0gbG9uZ051bWJlciAqIDIgKiBNYXRoLlBJIC8gbG9uZ3M7Ci0gICAgICAgICAgICB2
YXIgc2luVGhldGEgPSBNYXRoLnNpbih0aGV0YSk7Ci0gICAgICAgICAgICB2YXIgc2luUGhpID0g
TWF0aC5zaW4ocGhpKTsKLSAgICAgICAgICAgIHZhciBjb3NUaGV0YSA9IE1hdGguY29zKHRoZXRh
KTsKLSAgICAgICAgICAgIHZhciBjb3NQaGkgPSBNYXRoLmNvcyhwaGkpOwotICAgICAgICAgICAg
Ci0gICAgICAgICAgICB2YXIgeCA9IGNvc1BoaSAqIHNpblRoZXRhOwotICAgICAgICAgICAgdmFy
IHkgPSBjb3NUaGV0YTsKLSAgICAgICAgICAgIHZhciB6ID0gc2luUGhpICogc2luVGhldGE7Ci0g
ICAgICAgICAgICB2YXIgdSA9IDEtKGxvbmdOdW1iZXIvbG9uZ3MpOwotICAgICAgICAgICAgdmFy
IHYgPSBsYXROdW1iZXIvbGF0czsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgbm9ybWFsRGF0
YS5wdXNoKHgpOwotICAgICAgICAgICAgbm9ybWFsRGF0YS5wdXNoKHkpOwotICAgICAgICAgICAg
bm9ybWFsRGF0YS5wdXNoKHopOwotICAgICAgICAgICAgdGV4Q29vcmREYXRhLnB1c2godSk7Ci0g
ICAgICAgICAgICB0ZXhDb29yZERhdGEucHVzaCh2KTsKLSAgICAgICAgICAgIGdlb21ldHJ5RGF0
YS5wdXNoKHJhZGl1cyAqIHgpOwotICAgICAgICAgICAgZ2VvbWV0cnlEYXRhLnB1c2gocmFkaXVz
ICogeSk7Ci0gICAgICAgICAgICBnZW9tZXRyeURhdGEucHVzaChyYWRpdXMgKiB6KTsKLSAgICAg
ICAgfQotICAgIH0KLSAgICAKLSAgICBmb3IgKHZhciBsYXROdW1iZXIgPSAwOyBsYXROdW1iZXIg
PCBsYXRzOyArK2xhdE51bWJlcikgewotICAgICAgICBmb3IgKHZhciBsb25nTnVtYmVyID0gMDsg
bG9uZ051bWJlciA8IGxvbmdzOyArK2xvbmdOdW1iZXIpIHsKLSAgICAgICAgICAgIHZhciBmaXJz
dCA9IChsYXROdW1iZXIgKiAobG9uZ3MrMSkpICsgbG9uZ051bWJlcjsKLSAgICAgICAgICAgIHZh
ciBzZWNvbmQgPSBmaXJzdCArIGxvbmdzICsgMTsKLSAgICAgICAgICAgIGluZGV4RGF0YS5wdXNo
KGZpcnN0KTsKLSAgICAgICAgICAgIGluZGV4RGF0YS5wdXNoKHNlY29uZCk7Ci0gICAgICAgICAg
ICBpbmRleERhdGEucHVzaChmaXJzdCsxKTsKLQotICAgICAgICAgICAgaW5kZXhEYXRhLnB1c2go
c2Vjb25kKTsKLSAgICAgICAgICAgIGluZGV4RGF0YS5wdXNoKHNlY29uZCsxKTsKLSAgICAgICAg
ICAgIGluZGV4RGF0YS5wdXNoKGZpcnN0KzEpOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAg
IHZhciByZXR2YWwgPSB7IH07Ci0gICAgCi0gICAgcmV0dmFsLm5vcm1hbE9iamVjdCA9IGN0eC5j
cmVhdGVCdWZmZXIoKTsKLSAgICBjdHguYmluZEJ1ZmZlcihjdHguQVJSQVlfQlVGRkVSLCByZXR2
YWwubm9ybWFsT2JqZWN0KTsKLSAgICBjdHguYnVmZmVyRGF0YShjdHguQVJSQVlfQlVGRkVSLCBu
ZXcgV2ViR0xGbG9hdEFycmF5KG5vcm1hbERhdGEpLCBjdHguU1RBVElDX0RSQVcpOwotCi0gICAg
cmV0dmFsLnRleENvb3JkT2JqZWN0ID0gY3R4LmNyZWF0ZUJ1ZmZlcigpOwotICAgIGN0eC5iaW5k
QnVmZmVyKGN0eC5BUlJBWV9CVUZGRVIsIHJldHZhbC50ZXhDb29yZE9iamVjdCk7Ci0gICAgY3R4
LmJ1ZmZlckRhdGEoY3R4LkFSUkFZX0JVRkZFUiwgbmV3IFdlYkdMRmxvYXRBcnJheSh0ZXhDb29y
ZERhdGEpLCBjdHguU1RBVElDX0RSQVcpOwotCi0gICAgcmV0dmFsLnZlcnRleE9iamVjdCA9IGN0
eC5jcmVhdGVCdWZmZXIoKTsKLSAgICBjdHguYmluZEJ1ZmZlcihjdHguQVJSQVlfQlVGRkVSLCBy
ZXR2YWwudmVydGV4T2JqZWN0KTsKLSAgICBjdHguYnVmZmVyRGF0YShjdHguQVJSQVlfQlVGRkVS
LCBuZXcgV2ViR0xGbG9hdEFycmF5KGdlb21ldHJ5RGF0YSksIGN0eC5TVEFUSUNfRFJBVyk7Ci0g
ICAgCi0gICAgcmV0dmFsLm51bUluZGljZXMgPSBpbmRleERhdGEubGVuZ3RoOwotICAgIHJldHZh
bC5pbmRleE9iamVjdCA9IGN0eC5jcmVhdGVCdWZmZXIoKTsKLSAgICBjdHguYmluZEJ1ZmZlcihj
dHguRUxFTUVOVF9BUlJBWV9CVUZGRVIsIHJldHZhbC5pbmRleE9iamVjdCk7Ci0gICAgY3R4LmJ1
ZmZlckRhdGEoY3R4LkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBuZXcgV2ViR0xVbnNpZ25lZFNob3J0
QXJyYXkoaW5kZXhEYXRhKSwgY3R4LlNUUkVBTV9EUkFXKTsKLSAgICAKLSAgICByZXR1cm4gcmV0
dmFsOwotfQotCi0vLwotLy8gbG9hZE9iagotLy8KLS8vIExvYWQgYSAub2JqIGZpbGUgZnJvbSB0
aGUgcGFzc2VkIFVSTC4gUmV0dXJuIGFuIG9iamVjdCB3aXRoIGEgJ2xvYWRlZCcgcHJvcGVydHkg
c2V0IHRvIGZhbHNlLgotLy8gV2hlbiB0aGUgb2JqZWN0IGxvYWQgaXMgY29tcGxldGUsIHRoZSAn
bG9hZGVkJyBwcm9wZXJ0eSBiZWNvbWVzIHRydWUgYW5kIHRoZSBmb2xsb3dpbmcgCi0vLyBwcm9w
ZXJ0aWVzIGFyZSBzZXQ6Ci0vLwotLy8gIG5vcm1hbE9iamVjdCAgICAgICAgV2ViR0xCdWZmZXIg
b2JqZWN0IGZvciBub3JtYWxzCi0vLyAgdGV4Q29vcmRPYmplY3QgICAgICBXZWJHTEJ1ZmZlciBv
YmplY3QgZm9yIHRleENvb3JkcwotLy8gIHZlcnRleE9iamVjdCAgICAgICAgV2ViR0xCdWZmZXIg
b2JqZWN0IGZvciB2ZXJ0aWNlcwotLy8gIGluZGV4T2JqZWN0ICAgICAgICAgV2ViR0xCdWZmZXIg
b2JqZWN0IGZvciBpbmRpY2VzCi0vLyAgbnVtSW5kaWNlcyAgICAgICAgICBUaGUgbnVtYmVyIG9m
IGluZGljZXMgaW4gdGhlIGluZGV4T2JqZWN0Ci0vLyAgCi1mdW5jdGlvbiBsb2FkT2JqKGN0eCwg
dXJsKQotewotICAgIHZhciBvYmogPSB7IGxvYWRlZCA6IGZhbHNlIH07Ci0gICAgb2JqLmN0eCA9
IGN0eDsKLSAgICB2YXIgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Ci0gICAgcmVxLm9iaiA9
IG9iajsKLSAgICByZXEub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkgeyBwcm9jZXNz
TG9hZE9iaihyZXEpIH07Ci0gICAgcmVxLm9wZW4oIkdFVCIsIHVybCwgdHJ1ZSk7Ci0gICAgcmVx
LnNlbmQobnVsbCk7Ci0gICAgcmV0dXJuIG9iajsKLX0KLQotZnVuY3Rpb24gcHJvY2Vzc0xvYWRP
YmoocmVxKSAKLXsKLSAgICByZXEub2JqLmN0eC5jb25zb2xlLmxvZygicmVxPSIrcmVxKQotICAg
IC8vIG9ubHkgaWYgcmVxIHNob3dzICJjb21wbGV0ZSIKLSAgICBpZiAocmVxLnJlYWR5U3RhdGUg
PT0gNCkgewotICAgICAgICBkb0xvYWRPYmoocmVxLm9iaiwgcmVxLnJlc3BvbnNlVGV4dCk7Ci0g
ICAgfQotfQotCi1mdW5jdGlvbiBkb0xvYWRPYmoob2JqLCB0ZXh0KQotewotICAgIHZlcnRleEFy
cmF5ID0gWyBdOwotICAgIG5vcm1hbEFycmF5ID0gWyBdOwotICAgIHRleHR1cmVBcnJheSA9IFsg
XTsKLSAgICBpbmRleEFycmF5ID0gWyBdOwotICAgIAotICAgIHZhciB2ZXJ0ZXggPSBbIF07Ci0g
ICAgdmFyIG5vcm1hbCA9IFsgXTsKLSAgICB2YXIgdGV4dHVyZSA9IFsgXTsKLSAgICB2YXIgZmFj
ZW1hcCA9IHsgfTsKLSAgICB2YXIgaW5kZXggPSAwOwotICAgICAgICAKLSAgICB2YXIgbGluZXMg
PSB0ZXh0LnNwbGl0KCJcbiIpOwotICAgIGZvciAodmFyIGxpbmVJbmRleCBpbiBsaW5lcykgewot
ICAgICAgICB2YXIgbGluZSA9IGxpbmVzW2xpbmVJbmRleF0ucmVwbGFjZSgvWyBcdF0rL2csICIg
IikucmVwbGFjZSgvXHNccyokLywgIiIpOwotICAgICAgICAKLSAgICAgICAgLy8gaWdub3JlIGNv
bW1lbnRzCi0gICAgICAgIGlmIChsaW5lWzBdID09ICIjIikKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgCi0gICAgICAgIHZhciBhcnJheSA9IGxpbmUuc3BsaXQoIiAiKTsKLSAg
ICAgICAgaWYgKGFycmF5WzBdID09ICJ2IikgewotICAgICAgICAgICAgLy8gdmVydGV4Ci0gICAg
ICAgICAgICB2ZXJ0ZXgucHVzaChwYXJzZUZsb2F0KGFycmF5WzFdKSk7Ci0gICAgICAgICAgICB2
ZXJ0ZXgucHVzaChwYXJzZUZsb2F0KGFycmF5WzJdKSk7Ci0gICAgICAgICAgICB2ZXJ0ZXgucHVz
aChwYXJzZUZsb2F0KGFycmF5WzNdKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoYXJy
YXlbMF0gPT0gInZ0IikgewotICAgICAgICAgICAgLy8gbm9ybWFsCi0gICAgICAgICAgICB0ZXh0
dXJlLnB1c2gocGFyc2VGbG9hdChhcnJheVsxXSkpOwotICAgICAgICAgICAgdGV4dHVyZS5wdXNo
KHBhcnNlRmxvYXQoYXJyYXlbMl0pKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChhcnJh
eVswXSA9PSAidm4iKSB7Ci0gICAgICAgICAgICAvLyBub3JtYWwKLSAgICAgICAgICAgIG5vcm1h
bC5wdXNoKHBhcnNlRmxvYXQoYXJyYXlbMV0pKTsKLSAgICAgICAgICAgIG5vcm1hbC5wdXNoKHBh
cnNlRmxvYXQoYXJyYXlbMl0pKTsKLSAgICAgICAgICAgIG5vcm1hbC5wdXNoKHBhcnNlRmxvYXQo
YXJyYXlbM10pKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChhcnJheVswXSA9PSAiZiIp
IHsKLSAgICAgICAgICAgIC8vIGZhY2UKLSAgICAgICAgICAgIGlmIChhcnJheS5sZW5ndGggIT0g
NCkgewotICAgICAgICAgICAgICAgIG9iai5jdHguY29uc29sZS5sb2coIioqKiBFcnJvcjogZmFj
ZSAnIitsaW5lKyInIG5vdCBoYW5kbGVkIik7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAxOyBp
IDwgNDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCEoYXJyYXlbaV0gaW4gZmFjZW1hcCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgLy8gYWRkIGEgbmV3IGVudHJ5IHRvIHRoZSBtYXAgYW5k
IGFycmF5cwotICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IGFycmF5W2ldLnNwbGl0KCIvIik7
Ci0gICAgICAgICAgICAgICAgICAgIHZhciB2dHgsIG5vciwgdGV4OwotICAgICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICAgICAgaWYgKGYubGVuZ3RoID09IDEpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHZ0eCA9IHBhcnNlSW50KGZbMF0pIC0gMTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG5vciA9IHZ0eDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRleCA9IHZ0eDsK
LSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChmLmxl
bmd0aCA9IDMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZ0eCA9IHBhcnNlSW50KGZbMF0p
IC0gMTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRleCA9IHBhcnNlSW50KGZbMV0pIC0gMTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIG5vciA9IHBhcnNlSW50KGZbMl0pIC0gMTsKLSAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG9iai5jdHguY29uc29sZS5sb2coIioqKiBFcnJvcjogZGlkIG5vdCB1bmRl
cnN0YW5kIGZhY2UgJyIrYXJyYXlbaV0rIiciKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBudWxsOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgICAgICAvLyBkbyB0aGUgdmVydGljZXMKLSAgICAgICAgICAgICAgICAg
ICAgdmFyIHggPSAwOwotICAgICAgICAgICAgICAgICAgICB2YXIgeSA9IDA7Ci0gICAgICAgICAg
ICAgICAgICAgIHZhciB6ID0gMDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZ0eCAqIDMgKyAy
IDwgdmVydGV4Lmxlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICAgICAgeCA9IHZlcnRleFt2
dHgqM107Ci0gICAgICAgICAgICAgICAgICAgICAgICB5ID0gdmVydGV4W3Z0eCozKzFdOwotICAg
ICAgICAgICAgICAgICAgICAgICAgeiA9IHZlcnRleFt2dHgqMysyXTsKLSAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICB2ZXJ0ZXhBcnJheS5wdXNoKHgpOwotICAgICAg
ICAgICAgICAgICAgICB2ZXJ0ZXhBcnJheS5wdXNoKHkpOwotICAgICAgICAgICAgICAgICAgICB2
ZXJ0ZXhBcnJheS5wdXNoKHopOwotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICAgICAgLy8gZG8gdGhlIHRleHR1cmVzCi0gICAgICAgICAgICAgICAgICAgIHggPSAwOwotICAg
ICAgICAgICAgICAgICAgICB5ID0gMDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRleCAqIDIg
KyAxIDwgdGV4dHVyZS5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHggPSB0ZXh0
dXJlW3RleCoyXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHkgPSB0ZXh0dXJlW3RleCoyKzFd
OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHRleHR1cmVBcnJh
eS5wdXNoKHgpOwotICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlQXJyYXkucHVzaCh5KTsKLSAg
ICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIC8vIGRvIHRoZSBub3JtYWxz
Ci0gICAgICAgICAgICAgICAgICAgIHggPSAwOwotICAgICAgICAgICAgICAgICAgICB5ID0gMDsK
LSAgICAgICAgICAgICAgICAgICAgeiA9IDE7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChub3Ig
KiAzICsgMiA8IG5vcm1hbC5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHggPSBu
b3JtYWxbbm9yKjNdOwotICAgICAgICAgICAgICAgICAgICAgICAgeSA9IG5vcm1hbFtub3IqMysx
XTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHogPSBub3JtYWxbbm9yKjMrMl07Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgbm9ybWFsQXJyYXkucHVzaCh4KTsK
LSAgICAgICAgICAgICAgICAgICAgbm9ybWFsQXJyYXkucHVzaCh5KTsKLSAgICAgICAgICAgICAg
ICAgICAgbm9ybWFsQXJyYXkucHVzaCh6KTsKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgICAgIGZhY2VtYXBbYXJyYXlbaV1dID0gaW5kZXgrKzsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaW5kZXhBcnJheS5wdXNoKGZh
Y2VtYXBbYXJyYXlbaV1dKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAg
IC8vIHNldCB0aGUgVkJPcwotICAgIG9iai5ub3JtYWxPYmplY3QgPSBvYmouY3R4LmNyZWF0ZUJ1
ZmZlcigpOwotICAgIG9iai5jdHguYmluZEJ1ZmZlcihvYmouY3R4LkFSUkFZX0JVRkZFUiwgb2Jq
Lm5vcm1hbE9iamVjdCk7Ci0gICAgb2JqLmN0eC5idWZmZXJEYXRhKG9iai5jdHguQVJSQVlfQlVG
RkVSLCBuZXcgV2ViR0xGbG9hdEFycmF5KG5vcm1hbEFycmF5KSwgb2JqLmN0eC5TVEFUSUNfRFJB
Vyk7Ci0KLSAgICBvYmoudGV4Q29vcmRPYmplY3QgPSBvYmouY3R4LmNyZWF0ZUJ1ZmZlcigpOwot
ICAgIG9iai5jdHguYmluZEJ1ZmZlcihvYmouY3R4LkFSUkFZX0JVRkZFUiwgb2JqLnRleENvb3Jk
T2JqZWN0KTsKLSAgICBvYmouY3R4LmJ1ZmZlckRhdGEob2JqLmN0eC5BUlJBWV9CVUZGRVIsIG5l
dyBXZWJHTEZsb2F0QXJyYXkodGV4dHVyZUFycmF5KSwgb2JqLmN0eC5TVEFUSUNfRFJBVyk7Ci0K
LSAgICBvYmoudmVydGV4T2JqZWN0ID0gb2JqLmN0eC5jcmVhdGVCdWZmZXIoKTsKLSAgICBvYmou
Y3R4LmJpbmRCdWZmZXIob2JqLmN0eC5BUlJBWV9CVUZGRVIsIG9iai52ZXJ0ZXhPYmplY3QpOwot
ICAgIG9iai5jdHguYnVmZmVyRGF0YShvYmouY3R4LkFSUkFZX0JVRkZFUiwgbmV3IFdlYkdMRmxv
YXRBcnJheSh2ZXJ0ZXhBcnJheSksIG9iai5jdHguU1RBVElDX0RSQVcpOwotICAgIAotICAgIG9i
ai5udW1JbmRpY2VzID0gaW5kZXhBcnJheS5sZW5ndGg7Ci0gICAgb2JqLmluZGV4T2JqZWN0ID0g
b2JqLmN0eC5jcmVhdGVCdWZmZXIoKTsKLSAgICBvYmouY3R4LmJpbmRCdWZmZXIob2JqLmN0eC5F
TEVNRU5UX0FSUkFZX0JVRkZFUiwgb2JqLmluZGV4T2JqZWN0KTsKLSAgICBvYmouY3R4LmJ1ZmZl
ckRhdGEob2JqLmN0eC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgbmV3IFdlYkdMVW5zaWduZWRTaG9y
dEFycmF5KGluZGV4QXJyYXkpLCBvYmouY3R4LlNUUkVBTV9EUkFXKTsKLSAgICAKLSAgICBvYmou
bG9hZGVkID0gdHJ1ZTsKLX0KLQotLy8KLS8vIGxvYWRJbWFnZVRleHR1cmUKLS8vCi0vLyBMb2Fk
IHRoZSBpbWFnZSBhdCB0aGUgcGFzc2VkIHVybCwgcGxhY2UgaXQgaW4gYSBuZXcgV2ViR0xUZXh0
dXJlIG9iamVjdCBhbmQgcmV0dXJuIHRoZSBXZWJHTFRleHR1cmUuCi0vLwotZnVuY3Rpb24gbG9h
ZEltYWdlVGV4dHVyZShjdHgsIHVybCkKLXsKLSAgICB2YXIgdGV4dHVyZSA9IGN0eC5jcmVhdGVU
ZXh0dXJlKCk7Ci0gICAgdGV4dHVyZS5pbWFnZSA9IG5ldyBJbWFnZSgpOwotICAgIHRleHR1cmUu
aW1hZ2Uub25sb2FkID0gZnVuY3Rpb24oKSB7IGRvTG9hZEltYWdlVGV4dHVyZShjdHgsIHRleHR1
cmUuaW1hZ2UsIHRleHR1cmUpIH0KLSAgICB0ZXh0dXJlLmltYWdlLnNyYyA9IHVybDsKLSAgICBy
ZXR1cm4gdGV4dHVyZTsKLX0KLQotZnVuY3Rpb24gZG9Mb2FkSW1hZ2VUZXh0dXJlKGN0eCwgaW1h
Z2UsIHRleHR1cmUpCi17Ci0gICAgY3R4LmVuYWJsZShjdHguVEVYVFVSRV8yRCk7Ci0gICAgY3R4
LmJpbmRUZXh0dXJlKGN0eC5URVhUVVJFXzJELCB0ZXh0dXJlKTsKLSAgICBjdHgudGV4SW1hZ2Uy
RChjdHguVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwg
aW1hZ2UpOwotICAgIGN0eC50ZXhQYXJhbWV0ZXJpKGN0eC5URVhUVVJFXzJELCBjdHguVEVYVFVS
RV9NQUdfRklMVEVSLCBjdHguTElORUFSKTsKLSAgICBjdHgudGV4UGFyYW1ldGVyaShjdHguVEVY
VFVSRV8yRCwgY3R4LlRFWFRVUkVfTUlOX0ZJTFRFUiwgY3R4LkxJTkVBUl9NSVBNQVBfTElORUFS
KTsKLSAgICBjdHgudGV4UGFyYW1ldGVyaShjdHguVEVYVFVSRV8yRCwgY3R4LlRFWFRVUkVfV1JB
UF9TLCBjdHguQ0xBTVBfVE9fRURHRSk7Ci0gICAgY3R4LnRleFBhcmFtZXRlcmkoY3R4LlRFWFRV
UkVfMkQsIGN0eC5URVhUVVJFX1dSQVBfVCwgY3R4LkNMQU1QX1RPX0VER0UpOwotICAgIGN0eC5n
ZW5lcmF0ZU1pcG1hcChjdHguVEVYVFVSRV8yRCkKLSAgICBjdHguYmluZFRleHR1cmUoY3R4LlRF
WFRVUkVfMkQsIG51bGwpOwotfQotCi0vLwotLy8gRnJhbWVyYXRlIG9iamVjdAotLy8KLS8vIFRo
aXMgb2JqZWN0IGtlZXBzIHRyYWNrIG9mIGZyYW1lcmF0ZSBhbmQgZGlzcGxheXMgaXQgYXMgdGhl
IGlubmVySFRNTCB0ZXh0IG9mIHRoZSAKLS8vIEhUTUwgZWxlbWVudCB3aXRoIHRoZSBwYXNzZWQg
aWQuIE9uY2UgY3JlYXRlZCB5b3UgY2FsbCBzbmFwc2hvdCBhdCB0aGUgZW5kCi0vLyBvZiBldmVy
eSByZW5kZXJpbmcgY3ljbGUuIEV2ZXJ5IDUwMG1zIHRoZSBmcmFtZXJhdGUgaXMgdXBkYXRlZCBp
biB0aGUgSFRNTCBlbGVtZW50LgotLy8KLUZyYW1lcmF0ZSA9IGZ1bmN0aW9uKGlkKQotewotICAg
IHRoaXMubnVtRnJhbWVyYXRlcyA9IDEwOwotICAgIHRoaXMuZnJhbWVyYXRlVXBkYXRlSW50ZXJ2
YWwgPSA1MDA7Ci0gICAgdGhpcy5pZCA9IGlkOwotCi0gICAgdGhpcy5yZW5kZXJUaW1lID0gLTE7
Ci0gICAgdGhpcy5mcmFtZXJhdGVzID0gWyBdOwotICAgIHNlbGYgPSB0aGlzOwotICAgIHZhciBm
ciA9IGZ1bmN0aW9uKCkgeyBzZWxmLnVwZGF0ZUZyYW1lcmF0ZSgpIH0KLSAgICBzZXRJbnRlcnZh
bChmciwgdGhpcy5mcmFtZXJhdGVVcGRhdGVJbnRlcnZhbCk7Ci19Ci0KLUZyYW1lcmF0ZS5wcm90
b3R5cGUudXBkYXRlRnJhbWVyYXRlID0gZnVuY3Rpb24oKQotewotICAgIHZhciB0b3QgPSAwOwot
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5mcmFtZXJhdGVzLmxlbmd0aDsgKytpKQotICAg
ICAgICB0b3QgKz0gdGhpcy5mcmFtZXJhdGVzW2ldOwotICAgICAgICAKLSAgICB2YXIgZnJhbWVy
YXRlID0gdG90IC8gdGhpcy5mcmFtZXJhdGVzLmxlbmd0aDsKLSAgICBmcmFtZXJhdGUgPSBNYXRo
LnJvdW5kKGZyYW1lcmF0ZSk7Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5pZCku
aW5uZXJIVE1MID0gIkZyYW1lcmF0ZToiK2ZyYW1lcmF0ZSsiZnBzIjsKLX0KLQotRnJhbWVyYXRl
LnByb3RvdHlwZS5zbmFwc2hvdCA9IGZ1bmN0aW9uKCkKLXsKLSAgICBpZiAodGhpcy5yZW5kZXJU
aW1lIDwgMCkKLSAgICAgICAgdGhpcy5yZW5kZXJUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7
Ci0gICAgZWxzZSB7Ci0gICAgICAgIHZhciBuZXdUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7
Ci0gICAgICAgIHZhciB0ID0gbmV3VGltZSAtIHRoaXMucmVuZGVyVGltZTsKLSAgICAgICAgdmFy
IGZyYW1lcmF0ZSA9IDEwMDAvdDsKLSAgICAgICAgdGhpcy5mcmFtZXJhdGVzLnB1c2goZnJhbWVy
YXRlKTsKLSAgICAgICAgd2hpbGUgKHRoaXMuZnJhbWVyYXRlcy5sZW5ndGggPiB0aGlzLm51bUZy
YW1lcmF0ZXMpCi0gICAgICAgICAgICB0aGlzLmZyYW1lcmF0ZXMuc2hpZnQoKTsKLSAgICAgICAg
dGhpcy5yZW5kZXJUaW1lID0gbmV3VGltZTsKLSAgICB9Ci19CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2wtdGVzdC5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2wtdGVzdC5qcwkocmV2
aXNpb24gNjMyNjApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2wtdGVzdC5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwxOSArMSw1NiBAQAorLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisvLyBEaWZmZXJlbmNlcyB3aXRoIHJlc3BlY3QgdG8gS2hyb25vcyB2ZXJzaW9uIG9m
IHdlYmdsLXRlc3QuanMKIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCiAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRXZWJHTEVuYWJsZWQi
LCAiMSIpOwogCi1mdW5jdGlvbiBnZXRTaGFkZXJTb3VyY2UoZmlsZSkgewotICAgIHZhciB4aHIg
PSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLSAgICB4aHIub3BlbigiR0VUIiwgZmlsZSwgZmFsc2Up
OwotICAgIHhoci5zZW5kKCk7Ci0gICAgcmV0dXJuIHhoci5yZXNwb25zZVRleHQ7CitmdW5jdGlv
biBhc3NlcnRNc2coYXNzZXJ0aW9uLCBtc2cpIHsKKyAgICBpZiAoYXNzZXJ0aW9uKSB7CisgICAg
ICAgIHRlc3RQYXNzZWQobXNnKTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZCht
c2cpOworICAgICB9CiB9CiAKLWZ1bmN0aW9uIGNyZWF0ZTNEQ29udGV4dChhdHRycykgewotICAg
IHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKKy8vCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworZnVuY3Rpb24gd2ViZ2xUZXN0TG9nKG1zZykgeworICBpZiAod2luZG93
LmNvbnNvbGUgJiYgd2luZG93LmNvbnNvbGUubG9nKSB7CisgICAgd2luZG93LmNvbnNvbGUubG9n
KG1zZyk7CisgIH0KKyAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikpIHsK
KyAgICB2YXIgbG9nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKKyAgICBs
b2cuaW5uZXJIVE1MICs9IG1zZyArICI8YnI+IjsKKyAgfQorfQorCisvLworLy8gY3JlYXRlM0RD
b250ZXh0CisvLworLy8gUmV0dXJucyB0aGUgV2ViR0xSZW5kZXJpbmdDb250ZXh0IGZvciBhbnkg
a25vd24gaW1wbGVtZW50YXRpb24uCisvLworZnVuY3Rpb24gY3JlYXRlM0RDb250ZXh0KGNhbnZh
cywgYXR0cmlidXRlcykKK3sKKyAgICBpZiAoIWNhbnZhcykKKyAgICAgICAgY2FudmFzID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CisgICAgdmFyIGNvbnRleHQgPSBudWxsOwog
ICAgIHRyeSB7Ci0gICAgICAgIHJldHVybiBjYW52YXMuZ2V0Q29udGV4dCgiZXhwZXJpbWVudGFs
LXdlYmdsIiwgYXR0cnMpOworICAgICAgICBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoImV4
cGVyaW1lbnRhbC13ZWJnbCIsIGF0dHJpYnV0ZXMpOwogICAgIH0gY2F0Y2goZSkge30KLSAgICBy
ZXR1cm4gY2FudmFzLmdldENvbnRleHQoIm1vei13ZWJnbCIsIGF0dHJzKTsKKyAgICBpZiAoIWNv
bnRleHQpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNvbnRleHQgPSBjYW52YXMuZ2V0
Q29udGV4dCgid2Via2l0LTNkIiwgYXR0cmlidXRlcyk7CisgICAgICAgIH0gY2F0Y2goZSkge30K
KyAgICB9CisgICAgaWYgKCFjb250ZXh0KSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBj
b250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoIm1vei13ZWJnbCIsIGF0dHJpYnV0ZXMpOworICAg
ICAgICB9IGNhdGNoKGUpIHt9CisgICAgfQorICAgIGlmICghY29udGV4dCkgeworICAgICAgICB0
aHJvdyAiVW5hYmxlIHRvIGZldGNoIFdlYkdMIHJlbmRlcmluZyBjb250ZXh0IGZvciBDYW52YXMi
OworICAgIH0KKyAgICByZXR1cm4gY29udGV4dDsKIH0KIAogZnVuY3Rpb24gY3JlYXRlR0xFcnJv
cldyYXBwZXIoY29udGV4dCwgZm5hbWUpIHsKQEAgLTI2LDI1ICs2MywyNTcgQEAgZnVuY3Rpb24g
Y3JlYXRlR0xFcnJvcldyYXBwZXIoY29udGV4dCwgZgogICAgIH07CiB9CiAKLWZ1bmN0aW9uIGNy
ZWF0ZTNERGVidWdDb250ZXh0KGF0dHJzKSB7Ci0gICAgdmFyIGNvbnRleHQgPSBjcmVhdGUzRENv
bnRleHQoYXR0cnMpOwotICAgIC8vIFRoYW5rcyB0byBJbG1hcmkgSGVpa2tpbmVuIGZvciB0aGUg
aWRlYSBvbiBob3cgdG8gaW1wbGVtZW50IHRoaXMgc28gZWxlZ2FudGx5LgotICAgIHZhciB3cmFw
ID0ge307Ci0gICAgZm9yICh2YXIgaSBpbiBjb250ZXh0KSB7Ci0gICAgICAgIHRyeSB7Ci0gICAg
ICAgICAgICBpZiAodHlwZW9mIGNvbnRleHRbaV0gPT0gJ2Z1bmN0aW9uJykgewotICAgICAgICAg
ICAgICAgIHdyYXBbaV0gPSBjcmVhdGVHTEVycm9yV3JhcHBlcihjb250ZXh0LCBpKTsKLSAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgd3JhcFtpXSA9IGNvbnRleHRbaV07Citm
dW5jdGlvbiBjcmVhdGUzRENvbnRleHRXaXRoV3JhcHBlclRoYXRUaHJvd3NPbkdMRXJyb3IoY2Fu
dmFzLCBhdHRyaWJ1dGVzKSB7CisgIHZhciBjb250ZXh0ID0gY3JlYXRlM0RDb250ZXh0KGNhbnZh
cywgYXR0cmlidXRlcyk7CisgIC8vIFRoYW5rcyB0byBJbG1hcmkgSGVpa2tpbmVuIGZvciB0aGUg
aWRlYSBvbiBob3cgdG8gaW1wbGVtZW50IHRoaXMgc28gZWxlZ2FudGx5LgorICB2YXIgd3JhcCA9
IHt9OworICBmb3IgKHZhciBpIGluIGNvbnRleHQpIHsKKyAgICB0cnkgeworICAgICAgaWYgKHR5
cGVvZiBjb250ZXh0W2ldID09ICdmdW5jdGlvbicpIHsKKyAgICAgICAgd3JhcFtpXSA9IGNyZWF0
ZUdMRXJyb3JXcmFwcGVyKGNvbnRleHQsIGkpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgd3Jh
cFtpXSA9IGNvbnRleHRbaV07CisgICAgICB9CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgd2Vi
Z2xUZXN0TG9nKCJjcmVhdGVDb250ZXh0V3JhcHBlclRoYXRUaHJvd3NPbkdMRXJyb3I6IEVycm9y
IGFjY2Vzc2luZyAiICsgaSk7CisgICAgfQorICB9CisgIHdyYXAuZ2V0RXJyb3IgPSBmdW5jdGlv
bigpIHsKKyAgICAgIHJldHVybiBjb250ZXh0LmdldEVycm9yKCk7CisgIH07CisgIHJldHVybiB3
cmFwOworfQorCitmdW5jdGlvbiBnZXRHTEVycm9yQXNTdHJpbmcoY3R4LCBlcnIpIHsKKyAgaWYg
KGVyciA9PT0gY3R4Lk5PX0VSUk9SKSB7CisgICAgcmV0dXJuICJOT19FUlJPUiI7CisgIH0KKyAg
Zm9yICh2YXIgbmFtZSBpbiBjdHgpIHsKKyAgICBpZiAoY3R4W25hbWVdID09PSBlcnIpIHsKKyAg
ICAgIHJldHVybiBuYW1lOworICAgIH0KKyAgfQorICByZXR1cm4gZXJyLnRvU3RyaW5nKCk7Cit9
CisKK2Z1bmN0aW9uIHNob3VsZEdlbmVyYXRlR0xFcnJvcihjdHgsIGdsRXJyb3IsIGV2YWxTdHIp
IHsKKyAgdmFyIGV4Y2VwdGlvbjsKKyAgdHJ5IHsKKyAgICBldmFsKGV2YWxTdHIpOworICB9IGNh
dGNoIChlKSB7CisgICAgZXhjZXB0aW9uID0gZTsKKyAgfQorICBpZiAoZXhjZXB0aW9uKSB7Cisg
ICAgdGVzdEZhaWxlZChldmFsU3RyICsgIiB0aHJldyBleGNlcHRpb24gIiArIGV4Y2VwdGlvbik7
CisgIH0gZWxzZSB7CisgICAgdmFyIGVyciA9IGN0eC5nZXRFcnJvcigpOworICAgIGlmIChlcnIg
IT0gZ2xFcnJvcikgeworICAgICAgdGVzdEZhaWxlZChldmFsU3RyICsgIiBleHBlY3RlZDogIiAr
IGdldEdMRXJyb3JBc1N0cmluZyhjdHgsIGdsRXJyb3IpICsgIi4gV2FzICIgKyBnZXRHTEVycm9y
QXNTdHJpbmcoY3R4LCBlcnIpICsgIi4iKTsKKyAgICB9IGVsc2UgeworICAgICAgdGVzdFBhc3Nl
ZChldmFsU3RyICsgIiBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6ICIgKyBnZXRHTEVycm9y
QXNTdHJpbmcoY3R4LCBnbEVycm9yKSArICIuIik7CisgICAgfQorICB9Cit9CisKKy8qKgorICog
VGVzdHMgdGhhdCB0aGUgZmlyc3QgZXJyb3IgR0wgcmV0dXJucyBpcyB0aGUgc3BlY2lmaWVkIGVy
cm9yLgorICogQHBhcmFtIHshV2ViR0xDb250ZXh0fSBnbCBUaGUgV2ViR0xDb250ZXh0IHRvIHVz
ZS4KKyAqIEBwYXJhbSB7bnVtYmVyfSBnbEVycm9yIFRoZSBleHBlY3RlZCBnbCBlcnJvci4KKyAq
IEBwYXJhbSB7c3RyaW5nfSBvcHRfbXNnIE9wdGlvbmFsIGFkZGl0aW9uYWwgbWVzc2FnZS4KKyAq
LworZnVuY3Rpb24gZ2xFcnJvclNob3VsZEJlKGdsLCBnbEVycm9yLCBvcHRfbXNnKSB7CisgIG9w
dF9tc2cgPSBvcHRfbXNnIHx8ICIiOworICB2YXIgZXJyID0gZ2wuZ2V0RXJyb3IoKTsKKyAgaWYg
KGVyciAhPSBnbEVycm9yKSB7CisgICAgdGVzdEZhaWxlZCgiZ2V0RXJyb3IgZXhwZWN0ZWQ6ICIg
KyBnZXRHTEVycm9yQXNTdHJpbmcoZ2wsIGdsRXJyb3IpICsKKyAgICAgICAgICAgICAgICIuIFdh
cyAiICsgZ2V0R0xFcnJvckFzU3RyaW5nKGdsLCBlcnIpICsgIiA6ICIgKyBvcHRfbXNnKTsKKyAg
fSBlbHNlIHsKKyAgICB0ZXN0UGFzc2VkKCJnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6ICIg
KworICAgICAgICAgICAgICAgIGdldEdMRXJyb3JBc1N0cmluZyhnbCwgZ2xFcnJvcikgKyAiIDog
IiArIG9wdF9tc2cpOworICB9Cit9OworCisvLworLy8gY3JlYXRlUHJvZ3JhbQorLy8KKy8vIENy
ZWF0ZSBhbmQgcmV0dXJuIGEgcHJvZ3JhbSBvYmplY3QsIGF0dGFjaGluZyBlYWNoIG9mIHRoZSBn
aXZlbiBzaGFkZXJzLgorLy8KKy8vIElmIGF0dHJpYnMgYXJlIGdpdmVuLCBiaW5kIGFuIGF0dHJp
YiB3aXRoIHRoYXQgbmFtZSBhdCB0aGF0IGluZGV4LgorLy8KK2Z1bmN0aW9uIGNyZWF0ZVByb2dy
YW0oZ2wsIHZzaGFkZXJzLCBmc2hhZGVycywgYXR0cmlicykKK3sKKyAgICBpZiAodHlwZW9mKHZz
aGFkZXJzKSA9PSAic3RyaW5nIikKKyAgdnNoYWRlcnMgPSBbdnNoYWRlcnNdOworICAgIGlmICh0
eXBlb2YoZnNoYWRlcnMpID09ICJzdHJpbmciKQorICBmc2hhZGVycyA9IFtmc2hhZGVyc107CisK
KyAgICB2YXIgc2hhZGVycyA9IFtdOworICAgIHZhciBpOworCisgICAgZm9yIChpID0gMDsgaSA8
IHZzaGFkZXJzLmxlbmd0aDsgKytpKSB7CisgIHZhciBzaGFkZXIgPSBsb2FkU2hhZGVyKGdsLCB2
c2hhZGVyc1tpXSwgZ2wuVkVSVEVYX1NIQURFUik7CisgIGlmICghc2hhZGVyKQorICAgICAgcmV0
dXJuIG51bGw7CisgIHNoYWRlcnMucHVzaChzaGFkZXIpOworICAgIH0KKworICAgIGZvciAoaSA9
IDA7IGkgPCBmc2hhZGVycy5sZW5ndGg7ICsraSkgeworICB2YXIgc2hhZGVyID0gbG9hZFNoYWRl
cihnbCwgZnNoYWRlcnNbaV0sIGdsLkZSQUdNRU5UX1NIQURFUik7CisgIGlmICghc2hhZGVyKQor
ICAgICAgcmV0dXJuIG51bGw7CisgIHNoYWRlcnMucHVzaChzaGFkZXIpOworICAgIH0KKworICAg
IHZhciBwcm9nID0gZ2wuY3JlYXRlUHJvZ3JhbSgpOworICAgIGZvciAoaSA9IDA7IGkgPCBzaGFk
ZXJzLmxlbmd0aDsgKytpKSB7CisgIGdsLmF0dGFjaFNoYWRlcihwcm9nLCBzaGFkZXJzW2ldKTsK
KyAgICB9CisKKyAgICBpZiAoYXR0cmlicykgeworICAgICAgICBmb3IgKHZhciBpIGluIGF0dHJp
YnMpIHsKKyAgICAgICAgICAgIGdsLmJpbmRBdHRyaWJMb2NhdGlvbiAocHJvZywgaSwgYXR0cmli
c1tpXSk7CisgIH0KKyAgICB9CisKKyAgICBnbC5saW5rUHJvZ3JhbShwcm9nKTsKKworICAgIC8v
IENoZWNrIHRoZSBsaW5rIHN0YXR1cworICAgIHZhciBsaW5rZWQgPSBnbC5nZXRQcm9ncmFtUGFy
YW1ldGVyKHByb2csIGdsLkxJTktfU1RBVFVTKTsKKyAgICBpZiAoIWxpbmtlZCkgeworICAgICAg
ICAvLyBzb21ldGhpbmcgd2VudCB3cm9uZyB3aXRoIHRoZSBsaW5rCisgICAgICAgIHZhciBlcnJv
ciA9IGdsLmdldFByb2dyYW1JbmZvTG9nKHByb2cpOworICAgICAgICB3ZWJnbFRlc3RMb2coIkVy
cm9yIGluIHByb2dyYW0gbGlua2luZzoiICsgZXJyb3IpOworCisgICAgICAgIGdsLmRlbGV0ZVBy
b2dyYW0ocHJvZyk7CisgIGZvciAoaSA9IDA7IGkgPCBzaGFkZXJzLmxlbmd0aDsgKytpKQorICAg
ICAgZ2wuZGVsZXRlU2hhZGVyKHNoYWRlcnNbaV0pOworICAgICAgICByZXR1cm4gbnVsbDsKKyAg
ICB9CisKKyAgICByZXR1cm4gcHJvZzsKK30KKworLy8KKy8vIGluaXRXZWJHTAorLy8KKy8vIElu
aXRpYWxpemUgdGhlIENhbnZhcyBlbGVtZW50IHdpdGggdGhlIHBhc3NlZCBuYW1lIGFzIGEgV2Vi
R0wgb2JqZWN0IGFuZCByZXR1cm4gdGhlCisvLyBXZWJHTFJlbmRlcmluZ0NvbnRleHQuCisvLwor
Ly8gTG9hZCBzaGFkZXJzIHdpdGggdGhlIHBhc3NlZCBuYW1lcyBhbmQgY3JlYXRlIGEgcHJvZ3Jh
bSB3aXRoIHRoZW0uIFJldHVybiB0aGlzIHByb2dyYW0KKy8vIGluIHRoZSAncHJvZ3JhbScgcHJv
cGVydHkgb2YgdGhlIHJldHVybmVkIGNvbnRleHQuCisvLworLy8gRm9yIGVhY2ggc3RyaW5nIGlu
IHRoZSBwYXNzZWQgYXR0cmlicyBhcnJheSwgYmluZCBhbiBhdHRyaWIgd2l0aCB0aGF0IG5hbWUg
YXQgdGhhdCBpbmRleC4KKy8vIE9uY2UgdGhlIGF0dHJpYnMgYXJlIGJvdW5kLCBsaW5rIHRoZSBw
cm9ncmFtIGFuZCB0aGVuIHVzZSBpdC4KKy8vCisvLyBTZXQgdGhlIGNsZWFyIGNvbG9yIHRvIHRo
ZSBwYXNzZWQgYXJyYXkgKDQgdmFsdWVzKSBhbmQgc2V0IHRoZSBjbGVhciBkZXB0aCB0byB0aGUg
cGFzc2VkIHZhbHVlLgorLy8gRW5hYmxlIGRlcHRoIHRlc3RpbmcgYW5kIGJsZW5kaW5nIHdpdGgg
YSBibGVuZCBmdW5jIG9mIChTUkNfQUxQSEEsIE9ORV9NSU5VU19TUkNfQUxQSEEpCisvLworZnVu
Y3Rpb24gaW5pdFdlYkdMKGNhbnZhc05hbWUsIHZzaGFkZXIsIGZzaGFkZXIsIGF0dHJpYnMsIGNs
ZWFyQ29sb3IsIGNsZWFyRGVwdGgsIGNvbnRleHRBdHRyaWJzKQoreworICAgIHZhciBjYW52YXMg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChjYW52YXNOYW1lKTsKKyAgICB2YXIgZ2wgPSBjcmVh
dGUzRENvbnRleHQoY2FudmFzLCBjb250ZXh0QXR0cmlicyk7CisgICAgaWYgKCFnbCkgeworICAg
ICAgICBhbGVydCgiTm8gV2ViR0wgY29udGV4dCBmb3VuZCIpOworICAgICAgICByZXR1cm4gbnVs
bDsKKyAgICB9CisKKyAgICAvLyBDcmVhdGUgdGhlIHByb2dyYW0gb2JqZWN0CisgICAgZ2wucHJv
Z3JhbSA9IGNyZWF0ZVByb2dyYW0oZ2wsIHZzaGFkZXIsIGZzaGFkZXIsIGF0dHJpYnMpOworICAg
IGlmICghZ2wucHJvZ3JhbSkKKyAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICBnbC51c2VQcm9n
cmFtKGdsLnByb2dyYW0pOworCisgICAgZ2wuY2xlYXJDb2xvcihjbGVhckNvbG9yWzBdLCBjbGVh
ckNvbG9yWzFdLCBjbGVhckNvbG9yWzJdLCBjbGVhckNvbG9yWzNdKTsKKyAgICBnbC5jbGVhckRl
cHRoKGNsZWFyRGVwdGgpOworCisgICAgZ2wuZW5hYmxlKGdsLkRFUFRIX1RFU1QpOworICAgIGds
LmVuYWJsZShnbC5CTEVORCk7CisgICAgZ2wuYmxlbmRGdW5jKGdsLlNSQ19BTFBIQSwgZ2wuT05F
X01JTlVTX1NSQ19BTFBIQSk7CisKKyAgICByZXR1cm4gZ2w7Cit9CisKKy8vCisvLyBnZXRTaGFk
ZXJTb3VyY2UKKy8vCisvLyBMb2FkIHRoZSBzb3VyY2UgZnJvbSB0aGUgcGFzc2VkIHNoYWRlciBm
aWxlLgorLy8KK2Z1bmN0aW9uIGdldFNoYWRlclNvdXJjZShmaWxlKQoreworICAgIHZhciB4aHIg
PSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAgICB4aHIub3BlbigiR0VUIiwgZmlsZSwgZmFsc2Up
OworICAgIHhoci5zZW5kKCk7CisgICAgcmV0dXJuIHhoci5yZXNwb25zZVRleHQ7Cit9CisKKwor
Ly8KKy8vIGxvYWRTaGFkZXIKKy8vCisvLyAnc2hhZGVyJyBpcyBlaXRoZXIgdGhlIGlkIG9mIGEg
PHNjcmlwdD4gZWxlbWVudCBjb250YWluaW5nIHRoZSBzaGFkZXIgc291cmNlCisvLyBzdHJpbmcs
IHRoZSBzaGFkZXIgc3RyaW5nIGl0c2VsZiwgIG9yIHRoZSBVUkwgb2YgYSBmaWxlIGNvbnRhaW5p
bmcgdGhlIHNoYWRlcgorLy8gc291cmNlLiBMb2FkIHRoaXMgc2hhZGVyIGFuZCByZXR1cm4gdGhl
IFdlYkdMU2hhZGVyIG9iamVjdCBjb3JyZXNwb25kaW5nIHRvCisvLyBpdC4KKy8vCitmdW5jdGlv
biBsb2FkU2hhZGVyKGN0eCwgc2hhZGVySWQsIHNoYWRlclR5cGUsIGlzRmlsZSkKK3sKKyAgICB2
YXIgc2hhZGVyU291cmNlID0gIiI7CisKKyAgICBpZiAoaXNGaWxlKQorICAgICAgICBzaGFkZXJT
b3VyY2UgPSBnZXRTaGFkZXJTb3VyY2Uoc2hhZGVySWQpOworICAgIGVsc2UgeworICAgICAgICB2
YXIgc2hhZGVyU2NyaXB0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc2hhZGVySWQpOworICAg
ICAgICBpZiAoIXNoYWRlclNjcmlwdCkgeworICAgICAgICAgICAgc2hhZGVyU291cmNlID0gc2hh
ZGVySWQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoc2hhZGVyU2NyaXB0LnR5
cGUgPT0gIngtc2hhZGVyL3gtdmVydGV4IikgeworICAgICAgICAgICAgICAgIHNoYWRlclR5cGUg
PSBjdHguVkVSVEVYX1NIQURFUjsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoc2hhZGVyU2NyaXB0
LnR5cGUgPT0gIngtc2hhZGVyL3gtZnJhZ21lbnQiKSB7CisgICAgICAgICAgICAgICAgc2hhZGVy
VHlwZSA9IGN0eC5GUkFHTUVOVF9TSEFERVI7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHNoYWRl
clR5cGUgIT0gY3R4LlZFUlRFWF9TSEFERVIgJiYgc2hhZGVyVHlwZSAhPSBjdHguRlJBR01FTlRf
U0hBREVSKSB7CisgICAgICAgICAgICAgICAgd2ViZ2xUZXN0TG9nKCIqKiogRXJyb3I6IHVua25v
d24gc2hhZGVyIHR5cGUiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgLy8gY29uc29sZS5sb2co
ImNyZWF0ZTNERGVidWdDb250ZXh0OiBFcnJvciBhY2Nlc3NpbmcgIiArIGkpOworCisgICAgICAg
ICAgICBzaGFkZXJTb3VyY2UgPSBzaGFkZXJTY3JpcHQudGV4dDsKICAgICAgICAgfQogICAgIH0K
LSAgICB3cmFwLmdldEVycm9yID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIHJldHVybiBjb250ZXh0
LmdldEVycm9yKCk7Ci0gICAgfTsKLSAgICByZXR1cm4gd3JhcDsKKworICAgIC8vIENyZWF0ZSB0
aGUgc2hhZGVyIG9iamVjdAorICAgIHZhciBzaGFkZXIgPSBjdHguY3JlYXRlU2hhZGVyKHNoYWRl
clR5cGUpOworICAgIGlmIChzaGFkZXIgPT0gbnVsbCkgeworICAgICAgICB3ZWJnbFRlc3RMb2co
IioqKiBFcnJvcjogdW5hYmxlIHRvIGNyZWF0ZSBzaGFkZXIgJyIrc2hhZGVySWQrIiciKTsKKyAg
ICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgLy8gTG9hZCB0aGUgc2hhZGVyIHNvdXJj
ZQorICAgIGN0eC5zaGFkZXJTb3VyY2Uoc2hhZGVyLCBzaGFkZXJTb3VyY2UpOworCisgICAgLy8g
Q29tcGlsZSB0aGUgc2hhZGVyCisgICAgY3R4LmNvbXBpbGVTaGFkZXIoc2hhZGVyKTsKKworICAg
IC8vIENoZWNrIHRoZSBjb21waWxlIHN0YXR1cworICAgIHZhciBjb21waWxlZCA9IGN0eC5nZXRT
aGFkZXJQYXJhbWV0ZXIoc2hhZGVyLCBjdHguQ09NUElMRV9TVEFUVVMpOworICAgIGlmICghY29t
cGlsZWQpIHsKKyAgICAgICAgLy8gU29tZXRoaW5nIHdlbnQgd3JvbmcgZHVyaW5nIGNvbXBpbGF0
aW9uOyBnZXQgdGhlIGVycm9yCisgICAgICAgIHZhciBlcnJvciA9IGN0eC5nZXRTaGFkZXJJbmZv
TG9nKHNoYWRlcik7CisgICAgICAgIHdlYmdsVGVzdExvZygiKioqIEVycm9yIGNvbXBpbGluZyBz
aGFkZXIgJyIrc2hhZGVyKyInOiIrZXJyb3IpOworICAgICAgICBjdHguZGVsZXRlU2hhZGVyKHNo
YWRlcik7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIHJldHVybiBzaGFkZXI7
Cit9CisKK2Z1bmN0aW9uIGxvYWRTaGFkZXJGcm9tRmlsZShjdHgsIGZpbGUsIHR5cGUpCit7Cisg
ICAgcmV0dXJuIGxvYWRTaGFkZXIoY3R4LCBmaWxlLCB0eXBlLCB0cnVlKTsKK30KKworZnVuY3Rp
b24gbG9hZFNoYWRlckZyb21TY3JpcHQoY3R4LCBzY3JpcHQpCit7CisgICAgcmV0dXJuIGxvYWRT
aGFkZXIoY3R4LCBzY3JpcHQsIDAsIGZhbHNlKTsKIH0KIAogZnVuY3Rpb24gbG9hZFN0YW5kYXJk
UHJvZ3JhbShjb250ZXh0KSB7CkBAIC01NSw4NiArMzI0LDQzMSBAQCBmdW5jdGlvbiBsb2FkU3Rh
bmRhcmRQcm9ncmFtKGNvbnRleHQpIHsKICAgICByZXR1cm4gcHJvZ3JhbTsKIH0KIAotZnVuY3Rp
b24gbG9hZFByb2dyYW0oY29udGV4dCwgdmVydGV4U2hhZGVyUGF0aCwgZnJhZ21lbnRTaGFkZXJQ
YXRoKSB7CitmdW5jdGlvbiBsb2FkUHJvZ3JhbShjb250ZXh0LCB2ZXJ0ZXhTaGFkZXJQYXRoLCBm
cmFnbWVudFNoYWRlclBhdGgsIGlzRmlsZSkgeworICAgIGlzRmlsZSA9IChpc0ZpbGUgPT09IHVu
ZGVmaW5lZCkgPyB0cnVlIDogaXNGaWxlOwogICAgIHZhciBwcm9ncmFtID0gY29udGV4dC5jcmVh
dGVQcm9ncmFtKCk7Ci0gICAgY29udGV4dC5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgbG9hZFZlcnRl
eFNoYWRlcihjb250ZXh0LCB2ZXJ0ZXhTaGFkZXJQYXRoKSk7Ci0gICAgY29udGV4dC5hdHRhY2hT
aGFkZXIocHJvZ3JhbSwgbG9hZEZyYWdtZW50U2hhZGVyKGNvbnRleHQsIGZyYWdtZW50U2hhZGVy
UGF0aCkpOworICAgIGNvbnRleHQuYXR0YWNoU2hhZGVyKHByb2dyYW0sIGxvYWRTaGFkZXIoY29u
dGV4dCwgdmVydGV4U2hhZGVyUGF0aCwgY29udGV4dC5WRVJURVhfU0hBREVSLCBpc0ZpbGUpKTsK
KyAgICBjb250ZXh0LmF0dGFjaFNoYWRlcihwcm9ncmFtLCBsb2FkU2hhZGVyKGNvbnRleHQsIGZy
YWdtZW50U2hhZGVyUGF0aCwgY29udGV4dC5GUkFHTUVOVF9TSEFERVIsIGlzRmlsZSkpOwogICAg
IGNvbnRleHQubGlua1Byb2dyYW0ocHJvZ3JhbSk7CiAgICAgcmV0dXJuIHByb2dyYW07CiB9CiAK
IGZ1bmN0aW9uIGxvYWRTdGFuZGFyZFZlcnRleFNoYWRlcihjb250ZXh0KSB7Ci0gICAgcmV0dXJu
IGxvYWRWZXJ0ZXhTaGFkZXIoY29udGV4dCwgInJlc291cmNlcy92ZXJ0ZXhTaGFkZXIudmVydCIp
OwotfQotCi1mdW5jdGlvbiBsb2FkVmVydGV4U2hhZGVyKGNvbnRleHQsIHBhdGgpIHsKLSAgICB2
YXIgdmVydGV4U2hhZGVyID0gY29udGV4dC5jcmVhdGVTaGFkZXIoY29udGV4dC5WRVJURVhfU0hB
REVSKTsKLSAgICBjb250ZXh0LnNoYWRlclNvdXJjZSh2ZXJ0ZXhTaGFkZXIsIGdldFNoYWRlclNv
dXJjZShwYXRoKSk7Ci0gICAgY29udGV4dC5jb21waWxlU2hhZGVyKHZlcnRleFNoYWRlcik7Ci0g
ICAgcmV0dXJuIHZlcnRleFNoYWRlcjsKKyAgICByZXR1cm4gbG9hZFNoYWRlcihjb250ZXh0LCAi
cmVzb3VyY2VzL3ZlcnRleFNoYWRlci52ZXJ0IiwgY29udGV4dC5WRVJURVhfU0hBREVSLCB0cnVl
KTsKIH0KIAogZnVuY3Rpb24gbG9hZFN0YW5kYXJkRnJhZ21lbnRTaGFkZXIoY29udGV4dCkgewot
ICAgIHJldHVybiBsb2FkRnJhZ21lbnRTaGFkZXIoY29udGV4dCwgInJlc291cmNlcy9mcmFnbWVu
dFNoYWRlci5mcmFnIik7Ci19Ci0KLWZ1bmN0aW9uIGxvYWRGcmFnbWVudFNoYWRlcihjb250ZXh0
LCBwYXRoKSB7Ci0gICAgdmFyIGZyYWdtZW50U2hhZGVyID0gY29udGV4dC5jcmVhdGVTaGFkZXIo
Y29udGV4dC5GUkFHTUVOVF9TSEFERVIpOwotICAgIGNvbnRleHQuc2hhZGVyU291cmNlKGZyYWdt
ZW50U2hhZGVyLCBnZXRTaGFkZXJTb3VyY2UocGF0aCkpOwotICAgIGNvbnRleHQuY29tcGlsZVNo
YWRlcihmcmFnbWVudFNoYWRlcik7Ci0gICAgcmV0dXJuIGZyYWdtZW50U2hhZGVyOworICAgIHJl
dHVybiBsb2FkU2hhZGVyKGNvbnRleHQsICJyZXNvdXJjZXMvZnJhZ21lbnRTaGFkZXIuZnJhZyIs
IGNvbnRleHQuRlJBR01FTlRfU0hBREVSLCB0cnVlKTsKIH0KIAotZnVuY3Rpb24gZ2V0R0xFcnJv
ckFzU3RyaW5nKGN0eCwgZXJyKSB7Ci0gICAgaWYgKGVyciA9PT0gY3R4Lk5PX0VSUk9SKQotICAg
ICAgICByZXR1cm4gIk5PX0VSUk9SIjsKLSAgICBmb3IgKHZhciBuYW1lIGluIGN0eCkgewotICAg
ICAgICBpZiAoY3R4W25hbWVdID09PSBlcnIpCi0gICAgICAgICAgICByZXR1cm4gbmFtZTsKKy8v
CisvLyBtYWtlQm94CisvLworLy8gQ3JlYXRlIGEgYm94IHdpdGggdmVydGljZXMsIG5vcm1hbHMg
YW5kIHRleENvb3Jkcy4gQ3JlYXRlIFZCT3MgZm9yIGVhY2ggYXMgd2VsbCBhcyB0aGUgaW5kZXgg
YXJyYXkuCisvLyBSZXR1cm4gYW4gb2JqZWN0IHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVz
OgorLy8KKy8vICBub3JtYWxPYmplY3QgICAgICAgIFdlYkdMQnVmZmVyIG9iamVjdCBmb3Igbm9y
bWFscworLy8gIHRleENvb3JkT2JqZWN0ICAgICAgV2ViR0xCdWZmZXIgb2JqZWN0IGZvciB0ZXhD
b29yZHMKKy8vICB2ZXJ0ZXhPYmplY3QgICAgICAgIFdlYkdMQnVmZmVyIG9iamVjdCBmb3IgdmVy
dGljZXMKKy8vICBpbmRleE9iamVjdCAgICAgICAgIFdlYkdMQnVmZmVyIG9iamVjdCBmb3IgaW5k
aWNlcworLy8gIG51bUluZGljZXMgICAgICAgICAgVGhlIG51bWJlciBvZiBpbmRpY2VzIGluIHRo
ZSBpbmRleE9iamVjdAorLy8KK2Z1bmN0aW9uIG1ha2VCb3goY3R4KQoreworICAgIC8vIGJveAor
ICAgIC8vICAgIHY2LS0tLS0gdjUKKyAgICAvLyAgIC98ICAgICAgL3wKKyAgICAvLyAgdjEtLS0t
LS12MHwKKyAgICAvLyAgfCB8ICAgICB8IHwKKyAgICAvLyAgfCB8djctLS18LXx2NAorICAgIC8v
ICB8LyAgICAgIHwvCisgICAgLy8gIHYyLS0tLS0tdjMKKyAgICAvLworICAgIC8vIHZlcnRleCBj
b29yZHMgYXJyYXkKKyAgICB2YXIgdmVydGljZXMgPSBuZXcgRmxvYXQzMkFycmF5KAorICAgICAg
ICBbICAxLCAxLCAxLCAgLTEsIDEsIDEsICAtMSwtMSwgMSwgICAxLC0xLCAxLCAgICAvLyB2MC12
MS12Mi12MyBmcm9udAorICAgICAgICAgICAxLCAxLCAxLCAgIDEsLTEsIDEsICAgMSwtMSwtMSwg
ICAxLCAxLC0xLCAgICAvLyB2MC12My12NC12NSByaWdodAorICAgICAgICAgICAxLCAxLCAxLCAg
IDEsIDEsLTEsICAtMSwgMSwtMSwgIC0xLCAxLCAxLCAgICAvLyB2MC12NS12Ni12MSB0b3AKKyAg
ICAgICAgICAtMSwgMSwgMSwgIC0xLCAxLC0xLCAgLTEsLTEsLTEsICAtMSwtMSwgMSwgICAgLy8g
djEtdjYtdjctdjIgbGVmdAorICAgICAgICAgIC0xLC0xLC0xLCAgIDEsLTEsLTEsICAgMSwtMSwg
MSwgIC0xLC0xLCAxLCAgICAvLyB2Ny12NC12My12MiBib3R0b20KKyAgICAgICAgICAgMSwtMSwt
MSwgIC0xLC0xLC0xLCAgLTEsIDEsLTEsICAgMSwgMSwtMSBdICAgLy8gdjQtdjctdjYtdjUgYmFj
aworICAgICk7CisKKyAgICAvLyBub3JtYWwgYXJyYXkKKyAgICB2YXIgbm9ybWFscyA9IG5ldyBG
bG9hdDMyQXJyYXkoCisgICAgICAgIFsgIDAsIDAsIDEsICAgMCwgMCwgMSwgICAwLCAwLCAxLCAg
IDAsIDAsIDEsICAgICAvLyB2MC12MS12Mi12MyBmcm9udAorICAgICAgICAgICAxLCAwLCAwLCAg
IDEsIDAsIDAsICAgMSwgMCwgMCwgICAxLCAwLCAwLCAgICAgLy8gdjAtdjMtdjQtdjUgcmlnaHQK
KyAgICAgICAgICAgMCwgMSwgMCwgICAwLCAxLCAwLCAgIDAsIDEsIDAsICAgMCwgMSwgMCwgICAg
IC8vIHYwLXY1LXY2LXYxIHRvcAorICAgICAgICAgIC0xLCAwLCAwLCAgLTEsIDAsIDAsICAtMSwg
MCwgMCwgIC0xLCAwLCAwLCAgICAgLy8gdjEtdjYtdjctdjIgbGVmdAorICAgICAgICAgICAwLC0x
LCAwLCAgIDAsLTEsIDAsICAgMCwtMSwgMCwgICAwLC0xLCAwLCAgICAgLy8gdjctdjQtdjMtdjIg
Ym90dG9tCisgICAgICAgICAgIDAsIDAsLTEsICAgMCwgMCwtMSwgICAwLCAwLC0xLCAgIDAsIDAs
LTEgXSAgICAvLyB2NC12Ny12Ni12NSBiYWNrCisgICAgICAgKTsKKworCisgICAgLy8gdGV4Q29v
cmQgYXJyYXkKKyAgICB2YXIgdGV4Q29vcmRzID0gbmV3IEZsb2F0MzJBcnJheSgKKyAgICAgICAg
WyAgMSwgMSwgICAwLCAxLCAgIDAsIDAsICAgMSwgMCwgICAgLy8gdjAtdjEtdjItdjMgZnJvbnQK
KyAgICAgICAgICAgMCwgMSwgICAwLCAwLCAgIDEsIDAsICAgMSwgMSwgICAgLy8gdjAtdjMtdjQt
djUgcmlnaHQKKyAgICAgICAgICAgMSwgMCwgICAxLCAxLCAgIDAsIDEsICAgMCwgMCwgICAgLy8g
djAtdjUtdjYtdjEgdG9wCisgICAgICAgICAgIDEsIDEsICAgMCwgMSwgICAwLCAwLCAgIDEsIDAs
ICAgIC8vIHYxLXY2LXY3LXYyIGxlZnQKKyAgICAgICAgICAgMCwgMCwgICAxLCAwLCAgIDEsIDEs
ICAgMCwgMSwgICAgLy8gdjctdjQtdjMtdjIgYm90dG9tCisgICAgICAgICAgIDAsIDAsICAgMSwg
MCwgICAxLCAxLCAgIDAsIDEgXSAgIC8vIHY0LXY3LXY2LXY1IGJhY2sKKyAgICAgICApOworCisg
ICAgLy8gaW5kZXggYXJyYXkKKyAgICB2YXIgaW5kaWNlcyA9IG5ldyBVaW50OEFycmF5KAorICAg
ICAgICBbICAwLCAxLCAyLCAgIDAsIDIsIDMsICAgIC8vIGZyb250CisgICAgICAgICAgIDQsIDUs
IDYsICAgNCwgNiwgNywgICAgLy8gcmlnaHQKKyAgICAgICAgICAgOCwgOSwxMCwgICA4LDEwLDEx
LCAgICAvLyB0b3AKKyAgICAgICAgICAxMiwxMywxNCwgIDEyLDE0LDE1LCAgICAvLyBsZWZ0Cisg
ICAgICAgICAgMTYsMTcsMTgsICAxNiwxOCwxOSwgICAgLy8gYm90dG9tCisgICAgICAgICAgMjAs
MjEsMjIsICAyMCwyMiwyMyBdICAgLy8gYmFjaworICAgICAgKTsKKworICAgIHZhciByZXR2YWwg
PSB7IH07CisKKyAgICByZXR2YWwubm9ybWFsT2JqZWN0ID0gY3R4LmNyZWF0ZUJ1ZmZlcigpOwor
ICAgIGN0eC5iaW5kQnVmZmVyKGN0eC5BUlJBWV9CVUZGRVIsIHJldHZhbC5ub3JtYWxPYmplY3Qp
OworICAgIGN0eC5idWZmZXJEYXRhKGN0eC5BUlJBWV9CVUZGRVIsIG5vcm1hbHMsIGN0eC5TVEFU
SUNfRFJBVyk7CisKKyAgICByZXR2YWwudGV4Q29vcmRPYmplY3QgPSBjdHguY3JlYXRlQnVmZmVy
KCk7CisgICAgY3R4LmJpbmRCdWZmZXIoY3R4LkFSUkFZX0JVRkZFUiwgcmV0dmFsLnRleENvb3Jk
T2JqZWN0KTsKKyAgICBjdHguYnVmZmVyRGF0YShjdHguQVJSQVlfQlVGRkVSLCB0ZXhDb29yZHMs
IGN0eC5TVEFUSUNfRFJBVyk7CisKKyAgICByZXR2YWwudmVydGV4T2JqZWN0ID0gY3R4LmNyZWF0
ZUJ1ZmZlcigpOworICAgIGN0eC5iaW5kQnVmZmVyKGN0eC5BUlJBWV9CVUZGRVIsIHJldHZhbC52
ZXJ0ZXhPYmplY3QpOworICAgIGN0eC5idWZmZXJEYXRhKGN0eC5BUlJBWV9CVUZGRVIsIHZlcnRp
Y2VzLCBjdHguU1RBVElDX0RSQVcpOworCisgICAgY3R4LmJpbmRCdWZmZXIoY3R4LkFSUkFZX0JV
RkZFUiwgMCk7CisKKyAgICByZXR2YWwuaW5kZXhPYmplY3QgPSBjdHguY3JlYXRlQnVmZmVyKCk7
CisgICAgY3R4LmJpbmRCdWZmZXIoY3R4LkVMRU1FTlRfQVJSQVlfQlVGRkVSLCByZXR2YWwuaW5k
ZXhPYmplY3QpOworICAgIGN0eC5idWZmZXJEYXRhKGN0eC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwg
aW5kaWNlcywgY3R4LlNUQVRJQ19EUkFXKTsKKyAgICBjdHguYmluZEJ1ZmZlcihjdHguRUxFTUVO
VF9BUlJBWV9CVUZGRVIsIDApOworCisgICAgcmV0dmFsLm51bUluZGljZXMgPSBpbmRpY2VzLmxl
bmd0aDsKKworICAgIHJldHVybiByZXR2YWw7Cit9CisKKy8vCisvLyBtYWtlU3BoZXJlCisvLwor
Ly8gQ3JlYXRlIGEgc3BoZXJlIHdpdGggdGhlIHBhc3NlZCBudW1iZXIgb2YgbGF0aXR1ZGUgYW5k
IGxvbmdpdHVkZSBiYW5kcyBhbmQgdGhlIHBhc3NlZCByYWRpdXMuCisvLyBTcGhlcmUgaGFzIHZl
cnRpY2VzLCBub3JtYWxzIGFuZCB0ZXhDb29yZHMuIENyZWF0ZSBWQk9zIGZvciBlYWNoIGFzIHdl
bGwgYXMgdGhlIGluZGV4IGFycmF5LgorLy8gUmV0dXJuIGFuIG9iamVjdCB3aXRoIHRoZSBmb2xs
b3dpbmcgcHJvcGVydGllczoKKy8vCisvLyAgbm9ybWFsT2JqZWN0ICAgICAgICBXZWJHTEJ1ZmZl
ciBvYmplY3QgZm9yIG5vcm1hbHMKKy8vICB0ZXhDb29yZE9iamVjdCAgICAgIFdlYkdMQnVmZmVy
IG9iamVjdCBmb3IgdGV4Q29vcmRzCisvLyAgdmVydGV4T2JqZWN0ICAgICAgICBXZWJHTEJ1ZmZl
ciBvYmplY3QgZm9yIHZlcnRpY2VzCisvLyAgaW5kZXhPYmplY3QgICAgICAgICBXZWJHTEJ1ZmZl
ciBvYmplY3QgZm9yIGluZGljZXMKKy8vICBudW1JbmRpY2VzICAgICAgICAgIFRoZSBudW1iZXIg
b2YgaW5kaWNlcyBpbiB0aGUgaW5kZXhPYmplY3QKKy8vCitmdW5jdGlvbiBtYWtlU3BoZXJlKGN0
eCwgcmFkaXVzLCBsYXRzLCBsb25ncykKK3sKKyAgICB2YXIgZ2VvbWV0cnlEYXRhID0gWyBdOwor
ICAgIHZhciBub3JtYWxEYXRhID0gWyBdOworICAgIHZhciB0ZXhDb29yZERhdGEgPSBbIF07Cisg
ICAgdmFyIGluZGV4RGF0YSA9IFsgXTsKKworICAgIGZvciAodmFyIGxhdE51bWJlciA9IDA7IGxh
dE51bWJlciA8PSBsYXRzOyArK2xhdE51bWJlcikgeworICAgICAgICBmb3IgKHZhciBsb25nTnVt
YmVyID0gMDsgbG9uZ051bWJlciA8PSBsb25nczsgKytsb25nTnVtYmVyKSB7CisgICAgICAgICAg
ICB2YXIgdGhldGEgPSBsYXROdW1iZXIgKiBNYXRoLlBJIC8gbGF0czsKKyAgICAgICAgICAgIHZh
ciBwaGkgPSBsb25nTnVtYmVyICogMiAqIE1hdGguUEkgLyBsb25nczsKKyAgICAgICAgICAgIHZh
ciBzaW5UaGV0YSA9IE1hdGguc2luKHRoZXRhKTsKKyAgICAgICAgICAgIHZhciBzaW5QaGkgPSBN
YXRoLnNpbihwaGkpOworICAgICAgICAgICAgdmFyIGNvc1RoZXRhID0gTWF0aC5jb3ModGhldGEp
OworICAgICAgICAgICAgdmFyIGNvc1BoaSA9IE1hdGguY29zKHBoaSk7CisKKyAgICAgICAgICAg
IHZhciB4ID0gY29zUGhpICogc2luVGhldGE7CisgICAgICAgICAgICB2YXIgeSA9IGNvc1RoZXRh
OworICAgICAgICAgICAgdmFyIHogPSBzaW5QaGkgKiBzaW5UaGV0YTsKKyAgICAgICAgICAgIHZh
ciB1ID0gMS0obG9uZ051bWJlci9sb25ncyk7CisgICAgICAgICAgICB2YXIgdiA9IGxhdE51bWJl
ci9sYXRzOworCisgICAgICAgICAgICBub3JtYWxEYXRhLnB1c2goeCk7CisgICAgICAgICAgICBu
b3JtYWxEYXRhLnB1c2goeSk7CisgICAgICAgICAgICBub3JtYWxEYXRhLnB1c2goeik7CisgICAg
ICAgICAgICB0ZXhDb29yZERhdGEucHVzaCh1KTsKKyAgICAgICAgICAgIHRleENvb3JkRGF0YS5w
dXNoKHYpOworICAgICAgICAgICAgZ2VvbWV0cnlEYXRhLnB1c2gocmFkaXVzICogeCk7CisgICAg
ICAgICAgICBnZW9tZXRyeURhdGEucHVzaChyYWRpdXMgKiB5KTsKKyAgICAgICAgICAgIGdlb21l
dHJ5RGF0YS5wdXNoKHJhZGl1cyAqIHopOworICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBl
cnIudG9TdHJpbmcoKTsKLX0KIAotZnVuY3Rpb24gc2hvdWxkR2VuZXJhdGVHTEVycm9yKGN0eCwg
Z2xFcnJvciwgZXZhbFN0cikgewotICAgIHZhciBleGNlcHRpb247Ci0gICAgdHJ5IHsKLSAgICAg
ICAgZXZhbChldmFsU3RyKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGV4Y2VwdGlvbiA9
IGU7CisgICAgbG9uZ3MgKz0gMTsKKyAgICBmb3IgKHZhciBsYXROdW1iZXIgPSAwOyBsYXROdW1i
ZXIgPCBsYXRzOyArK2xhdE51bWJlcikgeworICAgICAgICBmb3IgKHZhciBsb25nTnVtYmVyID0g
MDsgbG9uZ051bWJlciA8IGxvbmdzOyArK2xvbmdOdW1iZXIpIHsKKyAgICAgICAgICAgIHZhciBm
aXJzdCA9IChsYXROdW1iZXIgKiBsb25ncykgKyAobG9uZ051bWJlciAlIGxvbmdzKTsKKyAgICAg
ICAgICAgIHZhciBzZWNvbmQgPSBmaXJzdCArIGxvbmdzOworICAgICAgICAgICAgaW5kZXhEYXRh
LnB1c2goZmlyc3QpOworICAgICAgICAgICAgaW5kZXhEYXRhLnB1c2goc2Vjb25kKTsKKyAgICAg
ICAgICAgIGluZGV4RGF0YS5wdXNoKGZpcnN0KzEpOworCisgICAgICAgICAgICBpbmRleERhdGEu
cHVzaChzZWNvbmQpOworICAgICAgICAgICAgaW5kZXhEYXRhLnB1c2goc2Vjb25kKzEpOworICAg
ICAgICAgICAgaW5kZXhEYXRhLnB1c2goZmlyc3QrMSk7CisgICAgICAgIH0KICAgICB9Ci0gICAg
aWYgKGV4Y2VwdGlvbikgewotICAgICAgICB0ZXN0RmFpbGVkKGV2YWxTdHIgKyAiIHRocmV3IGV4
Y2VwdGlvbiAiICsgZXhjZXB0aW9uKTsKLSAgICB9IGVsc2UgewotICAgICAgICB2YXIgZXJyID0g
Y3R4LmdldEVycm9yKCk7Ci0gICAgICAgIGlmIChlcnIgIT0gZ2xFcnJvcikKLSAgICAgICAgICAg
IHRlc3RGYWlsZWQoZXZhbFN0ciArICIgZXhwZWN0ZWQgR0wgZXJyb3I6ICIgKyBnZXRHTEVycm9y
QXNTdHJpbmcoY3R4LCBnbEVycm9yKSArICIuIEdlbmVyYXRlZDogIiArIGdldEdMRXJyb3JBc1N0
cmluZyhjdHgsIGVycikgKyAiLiIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0ZXN0UGFz
c2VkKGV2YWxTdHIgKyAiIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogIiArIGdldEdMRXJy
b3JBc1N0cmluZyhjdHgsIGdsRXJyb3IpICsgIi4iKTsKKworICAgIHZhciByZXR2YWwgPSB7IH07
CisKKyAgICByZXR2YWwubm9ybWFsT2JqZWN0ID0gY3R4LmNyZWF0ZUJ1ZmZlcigpOworICAgIGN0
eC5iaW5kQnVmZmVyKGN0eC5BUlJBWV9CVUZGRVIsIHJldHZhbC5ub3JtYWxPYmplY3QpOworICAg
IGN0eC5idWZmZXJEYXRhKGN0eC5BUlJBWV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkobm9ybWFs
RGF0YSksIGN0eC5TVEFUSUNfRFJBVyk7CisKKyAgICByZXR2YWwudGV4Q29vcmRPYmplY3QgPSBj
dHguY3JlYXRlQnVmZmVyKCk7CisgICAgY3R4LmJpbmRCdWZmZXIoY3R4LkFSUkFZX0JVRkZFUiwg
cmV0dmFsLnRleENvb3JkT2JqZWN0KTsKKyAgICBjdHguYnVmZmVyRGF0YShjdHguQVJSQVlfQlVG
RkVSLCBuZXcgRmxvYXQzMkFycmF5KHRleENvb3JkRGF0YSksIGN0eC5TVEFUSUNfRFJBVyk7CisK
KyAgICByZXR2YWwudmVydGV4T2JqZWN0ID0gY3R4LmNyZWF0ZUJ1ZmZlcigpOworICAgIGN0eC5i
aW5kQnVmZmVyKGN0eC5BUlJBWV9CVUZGRVIsIHJldHZhbC52ZXJ0ZXhPYmplY3QpOworICAgIGN0
eC5idWZmZXJEYXRhKGN0eC5BUlJBWV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkoZ2VvbWV0cnlE
YXRhKSwgY3R4LlNUQVRJQ19EUkFXKTsKKworICAgIHJldHZhbC5udW1JbmRpY2VzID0gaW5kZXhE
YXRhLmxlbmd0aDsKKyAgICByZXR2YWwuaW5kZXhPYmplY3QgPSBjdHguY3JlYXRlQnVmZmVyKCk7
CisgICAgY3R4LmJpbmRCdWZmZXIoY3R4LkVMRU1FTlRfQVJSQVlfQlVGRkVSLCByZXR2YWwuaW5k
ZXhPYmplY3QpOworICAgIGN0eC5idWZmZXJEYXRhKGN0eC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwg
bmV3IFVpbnQxNkFycmF5KGluZGV4RGF0YSksIGN0eC5TVFJFQU1fRFJBVyk7CisKKyAgICByZXR1
cm4gcmV0dmFsOworfQorCisvLworLy8gbG9hZE9iagorLy8KKy8vIExvYWQgYSAub2JqIGZpbGUg
ZnJvbSB0aGUgcGFzc2VkIFVSTC4gUmV0dXJuIGFuIG9iamVjdCB3aXRoIGEgJ2xvYWRlZCcgcHJv
cGVydHkgc2V0IHRvIGZhbHNlLgorLy8gV2hlbiB0aGUgb2JqZWN0IGxvYWQgaXMgY29tcGxldGUs
IHRoZSAnbG9hZGVkJyBwcm9wZXJ0eSBiZWNvbWVzIHRydWUgYW5kIHRoZSBmb2xsb3dpbmcKKy8v
IHByb3BlcnRpZXMgYXJlIHNldDoKKy8vCisvLyAgbm9ybWFsT2JqZWN0ICAgICAgICBXZWJHTEJ1
ZmZlciBvYmplY3QgZm9yIG5vcm1hbHMKKy8vICB0ZXhDb29yZE9iamVjdCAgICAgIFdlYkdMQnVm
ZmVyIG9iamVjdCBmb3IgdGV4Q29vcmRzCisvLyAgdmVydGV4T2JqZWN0ICAgICAgICBXZWJHTEJ1
ZmZlciBvYmplY3QgZm9yIHZlcnRpY2VzCisvLyAgaW5kZXhPYmplY3QgICAgICAgICBXZWJHTEJ1
ZmZlciBvYmplY3QgZm9yIGluZGljZXMKKy8vICBudW1JbmRpY2VzICAgICAgICAgIFRoZSBudW1i
ZXIgb2YgaW5kaWNlcyBpbiB0aGUgaW5kZXhPYmplY3QKKy8vCitmdW5jdGlvbiBsb2FkT2JqKGN0
eCwgdXJsKQoreworICAgIHZhciBvYmogPSB7IGxvYWRlZCA6IGZhbHNlIH07CisgICAgb2JqLmN0
eCA9IGN0eDsKKyAgICB2YXIgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAgcmVxLm9i
aiA9IG9iajsKKyAgICByZXEub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkgeyBwcm9j
ZXNzTG9hZE9iaihyZXEpIH07CisgICAgcmVxLm9wZW4oIkdFVCIsIHVybCwgdHJ1ZSk7CisgICAg
cmVxLnNlbmQobnVsbCk7CisgICAgcmV0dXJuIG9iajsKK30KKworZnVuY3Rpb24gcHJvY2Vzc0xv
YWRPYmoocmVxKQoreworICAgIHdlYmdsVGVzdExvZygicmVxPSIrcmVxKQorICAgIC8vIG9ubHkg
aWYgcmVxIHNob3dzICJjb21wbGV0ZSIKKyAgICBpZiAocmVxLnJlYWR5U3RhdGUgPT0gNCkgewor
ICAgICAgICBkb0xvYWRPYmoocmVxLm9iaiwgcmVxLnJlc3BvbnNlVGV4dCk7CiAgICAgfQogfQog
Ci1mdW5jdGlvbiBhc3NlcnRNc2coYXNzZXJ0aW9uLCBtc2cpIHsKLSAgICBpZiAoYXNzZXJ0aW9u
KSB7Ci0gICAgICAgIHRlc3RQYXNzZWQobXNnKTsKLSAgICAgfSBlbHNlIHsKLSAgICAgICAgdGVz
dEZhaWxlZChtc2cpOwotICAgICB9Ci19CitmdW5jdGlvbiBkb0xvYWRPYmoob2JqLCB0ZXh0KQor
eworICAgIHZlcnRleEFycmF5ID0gWyBdOworICAgIG5vcm1hbEFycmF5ID0gWyBdOworICAgIHRl
eHR1cmVBcnJheSA9IFsgXTsKKyAgICBpbmRleEFycmF5ID0gWyBdOworCisgICAgdmFyIHZlcnRl
eCA9IFsgXTsKKyAgICB2YXIgbm9ybWFsID0gWyBdOworICAgIHZhciB0ZXh0dXJlID0gWyBdOwor
ICAgIHZhciBmYWNlbWFwID0geyB9OworICAgIHZhciBpbmRleCA9IDA7CisKKyAgICB2YXIgbGlu
ZXMgPSB0ZXh0LnNwbGl0KCJcbiIpOworICAgIGZvciAodmFyIGxpbmVJbmRleCBpbiBsaW5lcykg
eworICAgICAgICB2YXIgbGluZSA9IGxpbmVzW2xpbmVJbmRleF0ucmVwbGFjZSgvWyBcdF0rL2cs
ICIgIikucmVwbGFjZSgvXHNccyokLywgIiIpOworCisgICAgICAgIC8vIGlnbm9yZSBjb21tZW50
cworICAgICAgICBpZiAobGluZVswXSA9PSAiIyIpCisgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICB2YXIgYXJyYXkgPSBsaW5lLnNwbGl0KCIgIik7CisgICAgICAgIGlmIChhcnJheVsw
XSA9PSAidiIpIHsKKyAgICAgICAgICAgIC8vIHZlcnRleAorICAgICAgICAgICAgdmVydGV4LnB1
c2gocGFyc2VGbG9hdChhcnJheVsxXSkpOworICAgICAgICAgICAgdmVydGV4LnB1c2gocGFyc2VG
bG9hdChhcnJheVsyXSkpOworICAgICAgICAgICAgdmVydGV4LnB1c2gocGFyc2VGbG9hdChhcnJh
eVszXSkpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGFycmF5WzBdID09ICJ2dCIpIHsK
KyAgICAgICAgICAgIC8vIG5vcm1hbAorICAgICAgICAgICAgdGV4dHVyZS5wdXNoKHBhcnNlRmxv
YXQoYXJyYXlbMV0pKTsKKyAgICAgICAgICAgIHRleHR1cmUucHVzaChwYXJzZUZsb2F0KGFycmF5
WzJdKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoYXJyYXlbMF0gPT0gInZuIikgewor
ICAgICAgICAgICAgLy8gbm9ybWFsCisgICAgICAgICAgICBub3JtYWwucHVzaChwYXJzZUZsb2F0
KGFycmF5WzFdKSk7CisgICAgICAgICAgICBub3JtYWwucHVzaChwYXJzZUZsb2F0KGFycmF5WzJd
KSk7CisgICAgICAgICAgICBub3JtYWwucHVzaChwYXJzZUZsb2F0KGFycmF5WzNdKSk7CisgICAg
ICAgIH0KKyAgICAgICAgZWxzZSBpZiAoYXJyYXlbMF0gPT0gImYiKSB7CisgICAgICAgICAgICAv
LyBmYWNlCisgICAgICAgICAgICBpZiAoYXJyYXkubGVuZ3RoICE9IDQpIHsKKyAgICAgICAgICAg
ICAgICB3ZWJnbFRlc3RMb2coIioqKiBFcnJvcjogZmFjZSAnIitsaW5lKyInIG5vdCBoYW5kbGVk
Iik7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAKLS8qKgotICog
VGVzdHMgdGhhdCB0aGUgZmlyc3QgZXJyb3IgR0wgcmV0dXJucyBpcyB0aGUgc3BlY2lmaWVkIGVy
cm9yLgotICogQHBhcmFtIHshV2ViR0xDb250ZXh0fSBnbCBUaGUgV2ViR0xDb250ZXh0IHRvIHVz
ZS4KLSAqIEBwYXJhbSB7bnVtYmVyfSBnbEVycm9yIFRoZSBleHBlY3RlZCBnbCBlcnJvci4KLSAq
IEBwYXJhbSB7c3RyaW5nfSBvcHRfbXNnCi0gKi8KLWZ1bmN0aW9uIGdsRXJyb3JTaG91bGRCZShn
bCwgZ2xFcnJvciwgb3B0X21zZykgewotICBvcHRfbXNnID0gb3B0X21zZyB8fCAiIjsKLSAgdmFy
IGVyciA9IGdsLmdldEVycm9yKCk7Ci0gIGlmIChlcnIgIT0gZ2xFcnJvcikgewotICAgIHRlc3RG
YWlsZWQoImdldEVycm9yIGV4cGVjdGVkOiAiICsgZ2V0R0xFcnJvckFzU3RyaW5nKGdsLCBnbEVy
cm9yKSArCi0gICAgICAgICAgICAgICAiLiBXYXMgIiArIGdldEdMRXJyb3JBc1N0cmluZyhnbCwg
ZXJyKSArICIgOiAiICsgb3B0X21zZyk7Ci0gIH0gZWxzZSB7Ci0gICAgdGVzdFBhc3NlZCgiZ2V0
RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiAiICsKLSAgICAgICAgICAgICAgICBnZXRHTEVycm9y
QXNTdHJpbmcoZ2wsIGdsRXJyb3IpICsgIiA6ICIgKyBvcHRfbXNnKTsKLSAgfQotfTsKKyAgICAg
ICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgNDsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYg
KCEoYXJyYXlbaV0gaW4gZmFjZW1hcCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gYWRkIGEg
bmV3IGVudHJ5IHRvIHRoZSBtYXAgYW5kIGFycmF5cworICAgICAgICAgICAgICAgICAgICB2YXIg
ZiA9IGFycmF5W2ldLnNwbGl0KCIvIik7CisgICAgICAgICAgICAgICAgICAgIHZhciB2dHgsIG5v
ciwgdGV4OworCisgICAgICAgICAgICAgICAgICAgIGlmIChmLmxlbmd0aCA9PSAxKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICB2dHggPSBwYXJzZUludChmWzBdKSAtIDE7CisgICAgICAgICAg
ICAgICAgICAgICAgICBub3IgPSB2dHg7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXggPSB2
dHg7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAo
Zi5sZW5ndGggPSAzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2dHggPSBwYXJzZUludChm
WzBdKSAtIDE7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXggPSBwYXJzZUludChmWzFdKSAt
IDE7CisgICAgICAgICAgICAgICAgICAgICAgICBub3IgPSBwYXJzZUludChmWzJdKSAtIDE7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICB3ZWJnbFRlc3RMb2coIioqKiBFcnJvcjogZGlkIG5vdCB1bmRlcnN0
YW5kIGZhY2UgJyIrYXJyYXlbaV0rIiciKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBudWxsOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgLy8g
ZG8gdGhlIHZlcnRpY2VzCisgICAgICAgICAgICAgICAgICAgIHZhciB4ID0gMDsKKyAgICAgICAg
ICAgICAgICAgICAgdmFyIHkgPSAwOworICAgICAgICAgICAgICAgICAgICB2YXIgeiA9IDA7Cisg
ICAgICAgICAgICAgICAgICAgIGlmICh2dHggKiAzICsgMiA8IHZlcnRleC5sZW5ndGgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHggPSB2ZXJ0ZXhbdnR4KjNdOworICAgICAgICAgICAgICAg
ICAgICAgICAgeSA9IHZlcnRleFt2dHgqMysxXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHog
PSB2ZXJ0ZXhbdnR4KjMrMl07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgdmVydGV4QXJyYXkucHVzaCh4KTsKKyAgICAgICAgICAgICAgICAgICAgdmVydGV4QXJy
YXkucHVzaCh5KTsKKyAgICAgICAgICAgICAgICAgICAgdmVydGV4QXJyYXkucHVzaCh6KTsKKwor
ICAgICAgICAgICAgICAgICAgICAvLyBkbyB0aGUgdGV4dHVyZXMKKyAgICAgICAgICAgICAgICAg
ICAgeCA9IDA7CisgICAgICAgICAgICAgICAgICAgIHkgPSAwOworICAgICAgICAgICAgICAgICAg
ICBpZiAodGV4ICogMiArIDEgPCB0ZXh0dXJlLmxlbmd0aCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgeCA9IHRleHR1cmVbdGV4KjJdOworICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHRl
eHR1cmVbdGV4KjIrMV07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgdGV4dHVyZUFycmF5LnB1c2goeCk7CisgICAgICAgICAgICAgICAgICAgIHRleHR1cmVBcnJh
eS5wdXNoKHkpOworCisgICAgICAgICAgICAgICAgICAgIC8vIGRvIHRoZSBub3JtYWxzCisgICAg
ICAgICAgICAgICAgICAgIHggPSAwOworICAgICAgICAgICAgICAgICAgICB5ID0gMDsKKyAgICAg
ICAgICAgICAgICAgICAgeiA9IDE7CisgICAgICAgICAgICAgICAgICAgIGlmIChub3IgKiAzICsg
MiA8IG5vcm1hbC5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHggPSBub3JtYWxb
bm9yKjNdOworICAgICAgICAgICAgICAgICAgICAgICAgeSA9IG5vcm1hbFtub3IqMysxXTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHogPSBub3JtYWxbbm9yKjMrMl07CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbm9ybWFsQXJyYXkucHVzaCh4KTsKKyAgICAg
ICAgICAgICAgICAgICAgbm9ybWFsQXJyYXkucHVzaCh5KTsKKyAgICAgICAgICAgICAgICAgICAg
bm9ybWFsQXJyYXkucHVzaCh6KTsKKworICAgICAgICAgICAgICAgICAgICBmYWNlbWFwW2FycmF5
W2ldXSA9IGluZGV4Kys7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaW5k
ZXhBcnJheS5wdXNoKGZhY2VtYXBbYXJyYXlbaV1dKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKworICAgIC8vIHNldCB0aGUgVkJPcworICAgIG9iai5ub3JtYWxPYmplY3QgPSBv
YmouY3R4LmNyZWF0ZUJ1ZmZlcigpOworICAgIG9iai5jdHguYmluZEJ1ZmZlcihvYmouY3R4LkFS
UkFZX0JVRkZFUiwgb2JqLm5vcm1hbE9iamVjdCk7CisgICAgb2JqLmN0eC5idWZmZXJEYXRhKG9i
ai5jdHguQVJSQVlfQlVGRkVSLCBuZXcgRmxvYXQzMkFycmF5KG5vcm1hbEFycmF5KSwgb2JqLmN0
eC5TVEFUSUNfRFJBVyk7CisKKyAgICBvYmoudGV4Q29vcmRPYmplY3QgPSBvYmouY3R4LmNyZWF0
ZUJ1ZmZlcigpOworICAgIG9iai5jdHguYmluZEJ1ZmZlcihvYmouY3R4LkFSUkFZX0JVRkZFUiwg
b2JqLnRleENvb3JkT2JqZWN0KTsKKyAgICBvYmouY3R4LmJ1ZmZlckRhdGEob2JqLmN0eC5BUlJB
WV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkodGV4dHVyZUFycmF5KSwgb2JqLmN0eC5TVEFUSUNf
RFJBVyk7CisKKyAgICBvYmoudmVydGV4T2JqZWN0ID0gb2JqLmN0eC5jcmVhdGVCdWZmZXIoKTsK
KyAgICBvYmouY3R4LmJpbmRCdWZmZXIob2JqLmN0eC5BUlJBWV9CVUZGRVIsIG9iai52ZXJ0ZXhP
YmplY3QpOworICAgIG9iai5jdHguYnVmZmVyRGF0YShvYmouY3R4LkFSUkFZX0JVRkZFUiwgbmV3
IEZsb2F0MzJBcnJheSh2ZXJ0ZXhBcnJheSksIG9iai5jdHguU1RBVElDX0RSQVcpOworCisgICAg
b2JqLm51bUluZGljZXMgPSBpbmRleEFycmF5Lmxlbmd0aDsKKyAgICBvYmouaW5kZXhPYmplY3Qg
PSBvYmouY3R4LmNyZWF0ZUJ1ZmZlcigpOworICAgIG9iai5jdHguYmluZEJ1ZmZlcihvYmouY3R4
LkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBvYmouaW5kZXhPYmplY3QpOworICAgIG9iai5jdHguYnVm
ZmVyRGF0YShvYmouY3R4LkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBuZXcgVWludDE2QXJyYXkoaW5k
ZXhBcnJheSksIG9iai5jdHguU1RSRUFNX0RSQVcpOworCisgICAgb2JqLmxvYWRlZCA9IHRydWU7
Cit9CisKKy8vCisvLyBsb2FkSW1hZ2VUZXh0dXJlCisvLworLy8gTG9hZCB0aGUgaW1hZ2UgYXQg
dGhlIHBhc3NlZCB1cmwsIHBsYWNlIGl0IGluIGEgbmV3IFdlYkdMVGV4dHVyZSBvYmplY3QgYW5k
IHJldHVybiB0aGUgV2ViR0xUZXh0dXJlLgorLy8KK2Z1bmN0aW9uIGxvYWRJbWFnZVRleHR1cmUo
Y3R4LCB1cmwpCit7CisgICAgdmFyIHRleHR1cmUgPSBjdHguY3JlYXRlVGV4dHVyZSgpOworICAg
IHRleHR1cmUuaW1hZ2UgPSBuZXcgSW1hZ2UoKTsKKyAgICB0ZXh0dXJlLmltYWdlLm9ubG9hZCA9
IGZ1bmN0aW9uKCkgeyBkb0xvYWRJbWFnZVRleHR1cmUoY3R4LCB0ZXh0dXJlLmltYWdlLCB0ZXh0
dXJlKSB9CisgICAgdGV4dHVyZS5pbWFnZS5zcmMgPSB1cmw7CisgICAgcmV0dXJuIHRleHR1cmU7
Cit9CisKK2Z1bmN0aW9uIGRvTG9hZEltYWdlVGV4dHVyZShjdHgsIGltYWdlLCB0ZXh0dXJlKQor
eworICAgIGN0eC5lbmFibGUoY3R4LlRFWFRVUkVfMkQpOworICAgIGN0eC5iaW5kVGV4dHVyZShj
dHguVEVYVFVSRV8yRCwgdGV4dHVyZSk7CisgICAgY3R4LnRleEltYWdlMkQoY3R4LlRFWFRVUkVf
MkQsIDAsIGdsLlJHQkEsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGltYWdlKTsKKyAgICBj
dHgudGV4UGFyYW1ldGVyaShjdHguVEVYVFVSRV8yRCwgY3R4LlRFWFRVUkVfTUFHX0ZJTFRFUiwg
Y3R4LkxJTkVBUik7CisgICAgY3R4LnRleFBhcmFtZXRlcmkoY3R4LlRFWFRVUkVfMkQsIGN0eC5U
RVhUVVJFX01JTl9GSUxURVIsIGN0eC5MSU5FQVJfTUlQTUFQX0xJTkVBUik7CisgICAgY3R4LnRl
eFBhcmFtZXRlcmkoY3R4LlRFWFRVUkVfMkQsIGN0eC5URVhUVVJFX1dSQVBfUywgY3R4LkNMQU1Q
X1RPX0VER0UpOworICAgIGN0eC50ZXhQYXJhbWV0ZXJpKGN0eC5URVhUVVJFXzJELCBjdHguVEVY
VFVSRV9XUkFQX1QsIGN0eC5DTEFNUF9UT19FREdFKTsKKyAgICBjdHguZ2VuZXJhdGVNaXBtYXAo
Y3R4LlRFWFRVUkVfMkQpCisgICAgY3R4LmJpbmRUZXh0dXJlKGN0eC5URVhUVVJFXzJELCAwKTsK
K30KKworLy8KKy8vIEZyYW1lcmF0ZSBvYmplY3QKKy8vCisvLyBUaGlzIG9iamVjdCBrZWVwcyB0
cmFjayBvZiBmcmFtZXJhdGUgYW5kIGRpc3BsYXlzIGl0IGFzIHRoZSBpbm5lckhUTUwgdGV4dCBv
ZiB0aGUKKy8vIEhUTUwgZWxlbWVudCB3aXRoIHRoZSBwYXNzZWQgaWQuIE9uY2UgY3JlYXRlZCB5
b3UgY2FsbCBzbmFwc2hvdCBhdCB0aGUgZW5kCisvLyBvZiBldmVyeSByZW5kZXJpbmcgY3ljbGUu
IEV2ZXJ5IDUwMG1zIHRoZSBmcmFtZXJhdGUgaXMgdXBkYXRlZCBpbiB0aGUgSFRNTCBlbGVtZW50
LgorLy8KK0ZyYW1lcmF0ZSA9IGZ1bmN0aW9uKGlkKQoreworICAgIHRoaXMubnVtRnJhbWVyYXRl
cyA9IDEwOworICAgIHRoaXMuZnJhbWVyYXRlVXBkYXRlSW50ZXJ2YWwgPSA1MDA7CisgICAgdGhp
cy5pZCA9IGlkOworCisgICAgdGhpcy5yZW5kZXJUaW1lID0gLTE7CisgICAgdGhpcy5mcmFtZXJh
dGVzID0gWyBdOworICAgIHNlbGYgPSB0aGlzOworICAgIHZhciBmciA9IGZ1bmN0aW9uKCkgeyBz
ZWxmLnVwZGF0ZUZyYW1lcmF0ZSgpIH0KKyAgICBzZXRJbnRlcnZhbChmciwgdGhpcy5mcmFtZXJh
dGVVcGRhdGVJbnRlcnZhbCk7Cit9CisKK0ZyYW1lcmF0ZS5wcm90b3R5cGUudXBkYXRlRnJhbWVy
YXRlID0gZnVuY3Rpb24oKQoreworICAgIHZhciB0b3QgPSAwOworICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgdGhpcy5mcmFtZXJhdGVzLmxlbmd0aDsgKytpKQorICAgICAgICB0b3QgKz0gdGhpcy5m
cmFtZXJhdGVzW2ldOworCisgICAgdmFyIGZyYW1lcmF0ZSA9IHRvdCAvIHRoaXMuZnJhbWVyYXRl
cy5sZW5ndGg7CisgICAgZnJhbWVyYXRlID0gTWF0aC5yb3VuZChmcmFtZXJhdGUpOworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuaWQpLmlubmVySFRNTCA9ICJGcmFtZXJhdGU6Iitm
cmFtZXJhdGUrImZwcyI7Cit9CisKK0ZyYW1lcmF0ZS5wcm90b3R5cGUuc25hcHNob3QgPSBmdW5j
dGlvbigpCit7CisgICAgaWYgKHRoaXMucmVuZGVyVGltZSA8IDApCisgICAgICAgIHRoaXMucmVu
ZGVyVGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpOworICAgIGVsc2UgeworICAgICAgICB2YXIg
bmV3VGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpOworICAgICAgICB2YXIgdCA9IG5ld1RpbWUg
LSB0aGlzLnJlbmRlclRpbWU7CisgICAgICAgIHZhciBmcmFtZXJhdGUgPSAxMDAwL3Q7CisgICAg
ICAgIHRoaXMuZnJhbWVyYXRlcy5wdXNoKGZyYW1lcmF0ZSk7CisgICAgICAgIHdoaWxlICh0aGlz
LmZyYW1lcmF0ZXMubGVuZ3RoID4gdGhpcy5udW1GcmFtZXJhdGVzKQorICAgICAgICAgICAgdGhp
cy5mcmFtZXJhdGVzLnNoaWZ0KCk7CisgICAgICAgIHRoaXMucmVuZGVyVGltZSA9IG5ld1RpbWU7
CisgICAgfQorfQo=
</data>
<flag name="review"
          id="49466"
          type_id="1"
          status="+"
          setter="fishd"
    />
    <flag name="commit-queue"
          id="49467"
          type_id="3"
          status="-"
          setter="kbr"
    />
          </attachment>
      

    </bug>

</bugzilla>