<?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>22796</bug_id>
          
          <creation_ts>2008-12-10 14:00:50 -0800</creation_ts>
          <short_desc>Rewrite animations layout tests to take advantage of pauseAnimationAtTimeOnElementWithId()</short_desc>
          <delta_ts>2008-12-10 16:48:46 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pierre-Olivier Latour">pol</reporter>
          <assigned_to name="Pierre-Olivier Latour">pol</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>102144</commentid>
    <comment_count>0</comment_count>
    <who name="Pierre-Olivier Latour">pol</who>
    <bug_when>2008-12-10 14:00:50 -0800</bug_when>
    <thetext>Rewrite animations layout tests to take advantage of the new DRT API: pauseAnimationAtTimeOnElementWithId()

Currently, many the animation tests measure CSS property values after a given elapsed time and they use setTimeout() a delay of about one second or more. This slows down the tests quite a bit, has imprecision problems (since you can&apos;t guarantee you&apos;re measuring at a precise time), and is not scalable overall.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102164</commentid>
    <comment_count>1</comment_count>
      <attachid>25927</attachid>
    <who name="Pierre-Olivier Latour">pol</who>
    <bug_when>2008-12-10 15:09:21 -0800</bug_when>
    <thetext>Created attachment 25927
Patch v1

Pre-reviewed by Chris Marrin

Running animations tests now takes around 5sec instead of +15secs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102173</commentid>
    <comment_count>2</comment_count>
      <attachid>25927</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-12-10 16:35:14 -0800</bug_when>
    <thetext>Comment on attachment 25927
Patch v1

&gt; Index: LayoutTests/platform/win/Skipped
&gt; ===================================================================
&gt; --- LayoutTests/platform/win/Skipped	(revision 39183)
&gt; +++ LayoutTests/platform/win/Skipped	(working copy)
&gt; @@ -445,6 +445,8 @@ http/tests/xmlhttprequest/upload-onprogr
&gt;  # No transition / animation pause LayoutController API on Windows DRT (https://bugs.webkit.org/show_bug.cgi?id=22239)
&gt;  animations/animation-drt-api.html
&gt;  animations/animation-drt-api-multiple-keyframes.html
&gt; +animations/keyframes-from-missing.html
&gt; +animations/keyframes-to-missing.html
&gt;  transitions/transition-drt-api.html
&gt;  transitions/transition-drt-api-delay.html
&gt;  transitions/transition-shorthand-delay.html

It&apos;s always sad to lose test coverage on Windows.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102174</commentid>
    <comment_count>3</comment_count>
    <who name="Pierre-Olivier Latour">pol</who>
    <bug_when>2008-12-10 16:48:46 -0800</bug_when>
    <thetext>Fixed a couple issues noticed by bdash and simon

Sending        LayoutTests/ChangeLog
Sending        LayoutTests/animations/animation-test-helpers.js
Sending        LayoutTests/animations/big-rotation-expected.txt
Sending        LayoutTests/animations/big-rotation.html
Sending        LayoutTests/animations/change-keyframes-expected.txt
Sending        LayoutTests/animations/change-keyframes-name-expected.txt
Sending        LayoutTests/animations/change-keyframes-name.html
Sending        LayoutTests/animations/change-keyframes.html
Sending        LayoutTests/animations/change-one-anim-expected.txt
Sending        LayoutTests/animations/change-one-anim.html
Sending        LayoutTests/animations/generic-from-to-expected.txt
Sending        LayoutTests/animations/generic-from-to.html
Sending        LayoutTests/animations/import-expected.txt
Sending        LayoutTests/animations/import.html
Sending        LayoutTests/animations/keyframe-timing-functions-expected.txt
Sending        LayoutTests/animations/keyframe-timing-functions.html
Sending        LayoutTests/animations/keyframes-comma-separated-expected.txt
Sending        LayoutTests/animations/keyframes-comma-separated.html
Sending        LayoutTests/animations/keyframes-expected.txt
Sending        LayoutTests/animations/keyframes-from-missing.html
Sending        LayoutTests/animations/keyframes-out-of-order-expected.txt
Sending        LayoutTests/animations/keyframes-out-of-order.html
Sending        LayoutTests/animations/keyframes-to-missing.html
Sending        LayoutTests/animations/keyframes.html
Sending        LayoutTests/animations/lineheight-animation-expected.txt
Sending        LayoutTests/animations/lineheight-animation.html
Sending        LayoutTests/animations/matrix-anim-expected.txt
Sending        LayoutTests/animations/matrix-anim.html
Sending        LayoutTests/animations/multiple-animations-expected.txt
Sending        LayoutTests/animations/multiple-animations.html
Sending        LayoutTests/animations/multiple-keyframes-expected.txt
Sending        LayoutTests/animations/multiple-keyframes.html
Sending        LayoutTests/animations/transition-and-animation-1-expected.txt
Sending        LayoutTests/animations/transition-and-animation-1.html
Sending        LayoutTests/animations/transition-and-animation-2-expected.txt
Sending        LayoutTests/animations/transition-and-animation-2.html
Sending        LayoutTests/animations/width-using-ems-expected.txt
Sending        LayoutTests/animations/width-using-ems.html
Sending        LayoutTests/platform/win/Skipped
Transmitting file data .......................................
Committed revision 39187.

</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25927</attachid>
            <date>2008-12-10 15:09:21 -0800</date>
            <delta_ts>2008-12-10 16:35:14 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>Patch.txt</filename>
            <type>text/plain</type>
            <size>62200</size>
            <attacher name="Pierre-Olivier Latour">pol</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDM5MTg0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNTggQEAKKzIwMDgtMTItMTAgIFBpZXJyZS1PbGl2aWVyIExh
dG91ciAgPHBvbEBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmV3cm90ZSBhbmltYXRpb25zL2FuaW1hdGlvbi10ZXN0LWhlbHBlcnMu
anMgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIHBhdXNlQW5pbWF0aW9uQXRUaW1lT25FbGVtZW50
V2l0aElkKCkKKyAgICAgICAgQVBJIHdoZW4gYXZhaWxhYmxlIGluIERSVC4KKworICAgICAgICBV
cGRhdGVkIGFsbCBhbmltYXRpb25zIHRlc3RzIHRoYXQgY2hlY2sgZm9yIHZhbHVlcyBvZiBhbmlt
YXRlZCBDU1MgcHJvcGVydGllcyB0byB1c2UgdGhlc2UgbmV3IGhlbHBlciBmdW5jdGlvbnMuCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzk2CisK
KyAgICAgICAgKiBhbmltYXRpb25zL2FuaW1hdGlvbi10ZXN0LWhlbHBlcnMuanM6CisgICAgICAg
IChpc0Nsb3NlRW5vdWdoKToKKyAgICAgICAgKGNoZWNrRXhwZWN0ZWRWYWx1ZSk6CisgICAgICAg
IChlbmRUZXN0KToKKyAgICAgICAgKHN0YXJ0VGVzdCk6CisgICAgICAgIChydW5BbmltYXRpb25U
ZXN0KToKKyAgICAgICAgKiBhbmltYXRpb25zL2JpZy1yb3RhdGlvbi1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogYW5pbWF0aW9ucy9iaWctcm90YXRpb24uaHRtbDoKKyAgICAgICAgKiBhbmltYXRp
b25zL2NoYW5nZS1rZXlmcmFtZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGFuaW1hdGlvbnMv
Y2hhbmdlLWtleWZyYW1lcy1uYW1lLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBhbmltYXRpb25z
L2NoYW5nZS1rZXlmcmFtZXMtbmFtZS5odG1sOgorICAgICAgICAqIGFuaW1hdGlvbnMvY2hhbmdl
LWtleWZyYW1lcy5odG1sOgorICAgICAgICAqIGFuaW1hdGlvbnMvY2hhbmdlLW9uZS1hbmltLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBhbmltYXRpb25zL2NoYW5nZS1vbmUtYW5pbS5odG1sOgor
ICAgICAgICAqIGFuaW1hdGlvbnMvZ2VuZXJpYy1mcm9tLXRvLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBhbmltYXRpb25zL2dlbmVyaWMtZnJvbS10by5odG1sOgorICAgICAgICAqIGFuaW1hdGlv
bnMvaW1wb3J0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBhbmltYXRpb25zL2ltcG9ydC5odG1s
OgorICAgICAgICAqIGFuaW1hdGlvbnMva2V5ZnJhbWUtdGltaW5nLWZ1bmN0aW9ucy1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogYW5pbWF0aW9ucy9rZXlmcmFtZS10aW1pbmctZnVuY3Rpb25zLmh0
bWw6CisgICAgICAgICogYW5pbWF0aW9ucy9rZXlmcmFtZXMtY29tbWEtc2VwYXJhdGVkLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBhbmltYXRpb25zL2tleWZyYW1lcy1jb21tYS1zZXBhcmF0ZWQu
aHRtbDoKKyAgICAgICAgKiBhbmltYXRpb25zL2tleWZyYW1lcy1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogYW5pbWF0aW9ucy9rZXlmcmFtZXMtZnJvbS1taXNzaW5nLmh0bWw6CisgICAgICAgICog
YW5pbWF0aW9ucy9rZXlmcmFtZXMtb3V0LW9mLW9yZGVyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBhbmltYXRpb25zL2tleWZyYW1lcy1vdXQtb2Ytb3JkZXIuaHRtbDoKKyAgICAgICAgKiBhbmlt
YXRpb25zL2tleWZyYW1lcy10by1taXNzaW5nLmh0bWw6CisgICAgICAgICogYW5pbWF0aW9ucy9r
ZXlmcmFtZXMuaHRtbDoKKyAgICAgICAgKiBhbmltYXRpb25zL2xpbmVoZWlnaHQtYW5pbWF0aW9u
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBhbmltYXRpb25zL2xpbmVoZWlnaHQtYW5pbWF0aW9u
Lmh0bWw6CisgICAgICAgICogYW5pbWF0aW9ucy9tYXRyaXgtYW5pbS1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogYW5pbWF0aW9ucy9tYXRyaXgtYW5pbS5odG1sOgorICAgICAgICAqIGFuaW1hdGlv
bnMvbXVsdGlwbGUtYW5pbWF0aW9ucy1leHBlY3RlZC50eHQ6CisgICAgICAgICogYW5pbWF0aW9u
cy9tdWx0aXBsZS1hbmltYXRpb25zLmh0bWw6CisgICAgICAgICogYW5pbWF0aW9ucy9tdWx0aXBs
ZS1rZXlmcmFtZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGFuaW1hdGlvbnMvbXVsdGlwbGUt
a2V5ZnJhbWVzLmh0bWw6CisgICAgICAgICogYW5pbWF0aW9ucy90cmFuc2l0aW9uLWFuZC1hbmlt
YXRpb24tMS1leHBlY3RlZC50eHQ6CisgICAgICAgICogYW5pbWF0aW9ucy90cmFuc2l0aW9uLWFu
ZC1hbmltYXRpb24tMS5odG1sOgorICAgICAgICAqIGFuaW1hdGlvbnMvdHJhbnNpdGlvbi1hbmQt
YW5pbWF0aW9uLTItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGFuaW1hdGlvbnMvdHJhbnNpdGlv
bi1hbmQtYW5pbWF0aW9uLTIuaHRtbDoKKyAgICAgICAgKiBhbmltYXRpb25zL3dpZHRoLXVzaW5n
LWVtcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogYW5pbWF0aW9ucy93aWR0aC11c2luZy1lbXMu
aHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoKKwogMjAwOC0xMi0xMCAgR2Vv
ZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNh
bSA6KCBXZWluaWcuCkluZGV4OiBMYXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi10ZXN0
LWhlbHBlcnMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRp
b24tdGVzdC1oZWxwZXJzLmpzCShyZXZpc2lvbiAzOTE4MykKKysrIExheW91dFRlc3RzL2FuaW1h
dGlvbnMvYW5pbWF0aW9uLXRlc3QtaGVscGVycy5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw1MCAr
MSwxNTIgQEAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7Ci19Ci0KLXJlc3VsdCA9ICIiOworLy8gSW50ZXJuYWwgdmFyaWFibGVzOiBETyBO
T1QgVVNFIERJUkVDVExZCit2YXIgcmVzdWx0ID0gIiI7Cit2YXIgaGFzUGF1c2VBbmltYXRpb25B
UEkgPSB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgbGF5b3V0VGVzdENvbnRyb2xsZXIu
cGF1c2VBbmltYXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQ7CiAKKy8vIEludGVybmFsIGZ1bmN0
aW9uOiBETyBOT1QgVVNFIERJUkVDVExZCiBmdW5jdGlvbiBpc0Nsb3NlRW5vdWdoKGFjdHVhbCwg
ZGVzaXJlZCwgdG9sZXJhbmNlKQogewotICAgIGlmICh0b2xlcmFuY2UgPT0gdW5kZWZpbmVkIHx8
IHRvbGVyYW5jZSA9PSAwKQotICAgICAgICB0b2xlcmFuY2UgPSBkZWZhdWx0VG9sZXJhbmNlOwog
ICAgIHZhciBkaWZmID0gTWF0aC5hYnMoYWN0dWFsIC0gZGVzaXJlZCk7Ci0gICAgcmV0dXJuIGRp
ZmYgPCB0b2xlcmFuY2U7CisgICAgcmV0dXJuIGRpZmYgPD0gdG9sZXJhbmNlOwogfQogCi1mdW5j
dGlvbiBjaGVja0V4cGVjdGVkVmFsdWUoaW5kZXgpCisvLyBJbnRlcm5hbCBmdW5jdGlvbjogRE8g
Tk9UIFVTRSBESVJFQ1RMWQorZnVuY3Rpb24gY2hlY2tFeHBlY3RlZFZhbHVlKGV4cGVjdGVkLCBp
bmRleCkKIHsKLSAgICB2YXIgcHJvcGVydHkgPSBleHBlY3RlZFtpbmRleF1bMV07Ci0gICAgdmFy
IGlkID0gZXhwZWN0ZWRbaW5kZXhdWzJdOwotICAgIHZhciBleHBlY3RlZFZhbHVlID0gZXhwZWN0
ZWRbaW5kZXhdWzNdOwotICAKLSAgICB2YXIgY29tcHV0ZWRTdHlsZSA9IHdpbmRvdy5nZXRDb21w
dXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKSkuZ2V0UHJvcGVydHlDU1NWYWx1
ZShwcm9wZXJ0eSk7Ci0KLSAgICB2YXIgY29tcHV0ZWRWYWx1ZSA9IGNvbXB1dGVkU3R5bGUuZ2V0
RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVNQkVSKTsKLSAgICBpZiAoaXNDbG9z
ZUVub3VnaChjb21wdXRlZFZhbHVlLCBleHBlY3RlZFZhbHVlKSkKLSAgICAgICAgcmVzdWx0ICs9
ICJQQVNTIC0gIiArIGlkICsgIiBhdCAiICsgZXhwZWN0ZWRbaW5kZXhdWzBdICsgIiBzYXcgc29t
ZXRoaW5nIGNsb3NlIHRvOiAiICsgZXhwZWN0ZWRWYWx1ZSArICI8YnI+IjsKKyAgICB2YXIgYW5p
bWF0aW9uTmFtZSA9IGV4cGVjdGVkW2luZGV4XVswXTsKKyAgICB2YXIgdGltZSA9IGV4cGVjdGVk
W2luZGV4XVsxXTsKKyAgICB2YXIgZWxlbWVudElkID0gZXhwZWN0ZWRbaW5kZXhdWzJdOworICAg
IHZhciBwcm9wZXJ0eSA9IGV4cGVjdGVkW2luZGV4XVszXTsKKyAgICB2YXIgZXhwZWN0ZWRWYWx1
ZSA9IGV4cGVjdGVkW2luZGV4XVs0XTsKKyAgICB2YXIgdG9sZXJhbmNlID0gZXhwZWN0ZWRbaW5k
ZXhdWzVdOworICAgIAorICAgIGlmIChhbmltYXRpb25OYW1lICYmIGhhc1BhdXNlQW5pbWF0aW9u
QVBJICYmICFsYXlvdXRUZXN0Q29udHJvbGxlci5wYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVu
dFdpdGhJZChhbmltYXRpb25OYW1lLCB0aW1lLCBlbGVtZW50SWQpKSB7CisgICAgICAgIHJlc3Vs
dCArPSAiRkFJTCAtIGFuaW1hdGlvbiBcIiIgKyBhbmltYXRpb25OYW1lICsgIlwiIGlzIG5vdCBy
dW5uaW5nIiArICI8YnI+IjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICB2YXIg
Y29tcHV0ZWRWYWx1ZTsKKyAgICB2YXIgcGFzczsKKyAgICBpZiAoIXByb3BlcnR5LmluZGV4T2Yo
IndlYmtpdFRyYW5zZm9ybSIpKSB7CisgICAgICAgIGNvbXB1dGVkVmFsdWUgPSB3aW5kb3cuZ2V0
Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpKS53ZWJraXRU
cmFuc2Zvcm07CisgICAgICAgIAorICAgICAgICBpZiAodHlwZW9mIGV4cGVjdGVkVmFsdWUgPT0g
InN0cmluZyIpCisgICAgICAgICAgICBwYXNzID0gKGNvbXB1dGVkVmFsdWUgPT0gZXhwZWN0ZWRW
YWx1ZSk7CisgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBleHBlY3RlZFZhbHVlID09ICJudW1iZXIi
KSB7CisgICAgICAgICAgICB2YXIgbSA9IGNvbXB1dGVkVmFsdWUuc3BsaXQoIigiKTsKKyAgICAg
ICAgICAgIHZhciBtID0gbVsxXS5zcGxpdCgiLCIpOworICAgICAgICAgICAgcGFzcyA9IGlzQ2xv
c2VFbm91Z2gocGFyc2VGbG9hdChtW3BhcnNlSW50KHByb3BlcnR5LnN1YnN0cmluZygxNikpXSks
IGV4cGVjdGVkVmFsdWUsIHRvbGVyYW5jZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICB2YXIgbSA9IGNvbXB1dGVkVmFsdWUuc3BsaXQoIigiKTsKKyAgICAgICAgICAgIHZhciBtID0g
bVsxXS5zcGxpdCgiLCIpOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGV4cGVjdGVkVmFs
dWUubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICBwYXNzID0gaXNDbG9zZUVub3VnaChw
YXJzZUZsb2F0KG1baV0pLCBleHBlY3RlZFZhbHVlW2ldLCB0b2xlcmFuY2UpOworICAgICAgICAg
ICAgICAgIGlmICghcGFzcykKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKHByb3BlcnR5ID09ICJsaW5lSGVpZ2h0Iikg
eworICAgICAgICBjb21wdXRlZFZhbHVlID0gcGFyc2VJbnQod2luZG93LmdldENvbXB1dGVkU3R5
bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKSkubGluZUhlaWdodCk7CisgICAg
ICAgIHBhc3MgPSBpc0Nsb3NlRW5vdWdoKGNvbXB1dGVkVmFsdWUsIGV4cGVjdGVkVmFsdWUsIHRv
bGVyYW5jZSk7CisgICAgfSBlbHNlIHsgICAgCisgICAgICAgIHZhciBjb21wdXRlZFN0eWxlID0g
d2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElk
KSkuZ2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eSk7CisgICAgICAgIGNvbXB1dGVkVmFsdWUg
PSBjb21wdXRlZFN0eWxlLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJF
Uik7CisgICAgICAgIHBhc3MgPSBpc0Nsb3NlRW5vdWdoKGNvbXB1dGVkVmFsdWUsIGV4cGVjdGVk
VmFsdWUsIHRvbGVyYW5jZSk7CisgICAgfQorICAgIAorICAgIGlmIChwYXNzKQorICAgICAgICBy
ZXN1bHQgKz0gIlBBU1MgLSBcIiIgKyBwcm9wZXJ0eSArICJcIiBwcm9wZXJ0eSBmb3IgXCIiICsg
ZWxlbWVudElkICsgIlwiIGVsZW1lbnQgYXQgIiArIHRpbWUgKyAicyBzYXcgc29tZXRoaW5nIGNs
b3NlIHRvOiAiICsgZXhwZWN0ZWRWYWx1ZSArICI8YnI+IjsKICAgICBlbHNlCi0gICAgICAgIHJl
c3VsdCArPSAiRkFJTCAtICIgKyBpZCArICIgYXQgIiArIGV4cGVjdGVkW2luZGV4XVswXSArICIg
ZXhwZWN0ZWQ6ICIgKyBleHBlY3RlZFZhbHVlICsgIiBidXQgc2F3OiAiICsgY29tcHV0ZWRWYWx1
ZSArICI8YnI+IjsKKyAgICAgICAgcmVzdWx0ICs9ICJGQUlMIC0gXCIiICsgcHJvcGVydHkgKyAi
XCIgcHJvcGVydHkgZm9yIFwiIiArIGVsZW1lbnRJZCArICJcIiBlbGVtZW50IGF0ICIgKyB0aW1l
ICsgInMgZXhwZWN0ZWQ6ICIgKyBleHBlY3RlZFZhbHVlICsgIiBidXQgc2F3OiAiICsgY29tcHV0
ZWRWYWx1ZSArICI8YnI+IjsKK30KKworLy8gSW50ZXJuYWwgZnVuY3Rpb246IERPIE5PVCBVU0Ug
RElSRUNUTFkKK2Z1bmN0aW9uIGVuZFRlc3QoKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSByZXN1bHQ7CisgICAgCisgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOwogfQogCi1mdW5jdGlvbiBjaGVja0Z1bmN0aW9uV2l0aFBhcmFtZXRlcihpKQorLy8g
SW50ZXJuYWwgZnVuY3Rpb246IERPIE5PVCBVU0UgRElSRUNUTFkKK2Z1bmN0aW9uIGNoZWNrRXhw
ZWN0ZWRWYWx1ZUNhbGxiYWNrKGV4cGVjdGVkLCBpbmRleCkKIHsKLSAgcmV0dXJuIGZ1bmN0aW9u
KCkgewotICAgIGNoZWNrRXhwZWN0ZWRWYWx1ZShpKTsKLSAgfTsKKyAgICByZXR1cm4gZnVuY3Rp
b24oKSB7IGNoZWNrRXhwZWN0ZWRWYWx1ZShleHBlY3RlZCwgaW5kZXgpOyB9OwogfQogCi1mdW5j
dGlvbiBzZXR1cCgpCisvLyBJbnRlcm5hbCBmdW5jdGlvbjogRE8gTk9UIFVTRSBESVJFQ1RMWQor
dmFyIHRlc3RTdGFydGVkID0gZmFsc2U7CitmdW5jdGlvbiBzdGFydFRlc3QoZXhwZWN0ZWQsIGNh
bGxiYWNrKQogewotICAgIGZvciAodmFyIGk9MDsgaSA8IGV4cGVjdGVkLmxlbmd0aDsgaSsrKSB7
Ci0gICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGNoZWNrRnVuY3Rpb25XaXRoUGFyYW1ldGVyKGkp
LCBleHBlY3RlZFtpXVswXSk7CisgICAgaWYgKHRlc3RTdGFydGVkKSByZXR1cm47CisgICAgdGVz
dFN0YXJ0ZWQgPSB0cnVlOworCisgICAgaWYgKGNhbGxiYWNrKQorICAgICAgICBjYWxsYmFjaygp
OworCisgICAgdmFyIG1heFRpbWUgPSAwOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHBl
Y3RlZC5sZW5ndGg7ICsraSkgeworICAgICAgICB2YXIgYW5pbWF0aW9uTmFtZSA9IGV4cGVjdGVk
W2ldWzBdOworICAgICAgICB2YXIgdGltZSA9IGV4cGVjdGVkW2ldWzFdOworICAgICAgICAKKyAg
ICAgICAgLy8gV2UgY2FuIG9ubHkgdXNlIHRoZSBhbmltYXRpb24gZmFzdC1mb3J3YXJkIG1lY2hh
bmlzbSBpZiB0aGVyZSdzIGFuIGFuaW1hdGlvbiBuYW1lCisgICAgICAgIC8vIGFuZCBEUlQgaW1w
bGVtZW50cyBwYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZCgpCisgICAgICAgIGlm
IChhbmltYXRpb25OYW1lICYmIGhhc1BhdXNlQW5pbWF0aW9uQVBJKQorICAgICAgICAgICAgY2hl
Y2tFeHBlY3RlZFZhbHVlKGV4cGVjdGVkLCBpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBpZiAodGltZSA+IG1heFRpbWUpCisgICAgICAgICAgICAgICAgbWF4VGltZSA9IHRpbWU7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGNoZWNrRXhwZWN0ZWRW
YWx1ZUNhbGxiYWNrKGV4cGVjdGVkLCBpKSwgdGltZSAqIDEwMDApOworICAgICAgICB9CiAgICAg
fQorCisgICAgaWYgKG1heFRpbWUgPiAwKQorICAgICAgICB3aW5kb3cuc2V0VGltZW91dChlbmRU
ZXN0LCBtYXhUaW1lICogMTAwMCArIDUwKTsKKyAgICBlbHNlCisgICAgICAgIGVuZFRlc3QoKTsK
IH0KIAotZnVuY3Rpb24gY2xlYW51cCgpCisvKiBQcmltaXRpdmUgaGVscGVyIGZ1bmN0aW9uIHRv
IHJ1biBhbmltYXRpb24gdGVzdHM6CistIFRoZSBib2R5IG9mIHRoZSB0ZXN0IHBhZ2UgbXVzdCBj
b250YWluIGFuIGVtcHR5IGRpdiB3aXRoIGlkICJyZXN1bHQiCistIENhbGwgdGhpcyBmdW5jdGlv
biBmcm9tIHRoZSA8c2NyaXB0PiBpbnNpZGUgdGhlIHRlc3QgcGFnZQorCitQYXJhbWV0ZXJzOgor
ICAgIGV4cGVjdGVkIFtyZXF1aXJlZF06IGFuIGFycmF5IG9mIGFycmF5cyBkZWZpbmluZyBhIHNl
dCBvZiBDU1MgcHJvcGVydGllcyB0aGF0IG11c3QgaGF2ZSBnaXZlbiB2YWx1ZXMgYXQgc3BlY2lm
aWMgdGltZXMgKHNlZSBiZWxvdykKKyAgICBjYWxsYmFjayBbb3B0aW9uYWxdOiBhIGZ1bmN0aW9u
IHRvIGJlIGV4ZWN1dGVkIGp1c3QgYmVmb3JlIHRoZSB0ZXN0IHN0YXJ0cworICAgIGV2ZW50IFtv
cHRpb25hbF06IHdoaWNoIERPTSBldmVudCB0byB3YWl0IGZvciBiZWZvcmUgc3RhcnRpbmcgdGhl
IHRlc3QgKCJ3ZWJraXRBbmltYXRpb25TdGFydCIgYnkgZGVmYXVsdCkKKworICAgIEVhY2ggc3Vi
LWFycmF5IG11c3QgY29udGFpbiB0aGVzZSBpdGVtcyBpbiB0aGlzIG9yZGVyOgorICAgIC0gdGhl
IG5hbWUgb2YgdGhlIENTUyBhbmltYXRpb24gKG1heSBiZSBudWxsKSBbMV0KKyAgICAtIHRoZSB0
aW1lIGluIHNlY29uZHMgYXQgd2hpY2ggdG8gc25hcHNob3QgdGhlIENTUyBwcm9wZXJ0eQorICAg
IC0gdGhlIGlkIG9mIHRoZSBlbGVtZW50IG9uIHdoaWNoIHRvIGdldCB0aGUgQ1NTIHByb3BlcnR5
IHZhbHVlCisgICAgLSB0aGUgbmFtZSBvZiB0aGUgQ1NTIHByb3BlcnR5IHRvIGdldCBbMl0KKyAg
ICAtIHRoZSBleHBlY3RlZCB2YWx1ZSBmb3IgdGhlIENTUyBwcm9wZXJ0eSBbM10KKyAgICAtIHRo
ZSB0b2xlcmFuY2UgdG8gdXNlIHdoZW4gY29tcGFyaW5nIHRoZSBlZmZlY3RpdmUgQ1NTIHByb3Bl
cnR5IHZhbHVlIHdpdGggaXRzIGV4cGVjdGVkIHZhbHVlCisKKyAgICBbMV0gSWYgbnVsbCBpcyBw
YXNzZWQsIGEgcmVndWxhciBzZXRUaW1lb3V0KCkgd2lsbCBiZSB1c2VkIGluc3RlYWQgdG8gc25h
cHNob3QgdGhlIGFuaW1hdGVkIHByb3BlcnR5IGluIHRoZSBmdXR1cmUsCisgICAgaW5zdGVhZCBv
ZiBmYXN0IGZvcndhcmRpbmcgdXNpbmcgdGhlIHBhdXNlQW5pbWF0aW9uQXRUaW1lT25FbGVtZW50
V2l0aElkKCkgSlMgQVBJIGZyb20gRFJUIAorCisgICAgWzJdIElmIHRoZSBDU1MgcHJvcGVydHkg
bmFtZSBpcyAid2Via2l0VHJhbnNmb3JtIiwgZXhwZWN0ZWQgdmFsdWUgbXVzdCBiZSBhbiBhcnJh
eSBvZiAxIG9yIG1vcmUgbnVtYmVycyBjb3JyZXNwb25kaW5nIHRvIHRoZSBtYXRyaXggZWxlbWVu
dHMsCisgICAgb3IgYSBzdHJpbmcgd2hpY2ggd2lsbCBiZSBjb21wYXJlZCBkaXJlY3RseSAodXNl
ZnVsIGlmIHRoZSBleHBlY3RlZCB2YWx1ZSBpcyAibm9uZSIpCisgICAgSWYgdGhlIENTUyBwcm9w
ZXJ0eSBuYW1lIGlzICJ3ZWJraXRUcmFuc2Zvcm0uTiIsIGV4cGVjdGVkIHZhbHVlIG11c3QgYmUg
YSBudW1iZXIgY29ycmVzcG9uZGluZyB0byB0aGUgTnRoIGVsZW1lbnQgb2YgdGhlIG1hdHJpeAor
CisqLworZnVuY3Rpb24gcnVuQW5pbWF0aW9uVGVzdChleHBlY3RlZCwgY2FsbGJhY2ssIGV2ZW50
KQogewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSBy
ZXN1bHQ7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKyAgICAKKyAgICBpZiAoIWV4cGVjdGVkKQor
ICAgICAgICB0aHJvdygiRXhwZWN0ZWQgcmVzdWx0cyBhcmUgbWlzc2luZyEiKTsKKyAgICAKKyAg
ICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQ7CisgICAgaWYgKGV2ZW50ID09IHVuZGVmaW5lZCkKKyAg
ICAgICAgZXZlbnQgPSAid2Via2l0QW5pbWF0aW9uU3RhcnQiOworICAgIGVsc2UgaWYgKGV2ZW50
ID09ICJsb2FkIikKKyAgICAgICAgdGFyZ2V0ID0gd2luZG93OworICAgIHRhcmdldC5hZGRFdmVu
dExpc3RlbmVyKGV2ZW50LCBmdW5jdGlvbigpIHsgc3RhcnRUZXN0KGV4cGVjdGVkLCBjYWxsYmFj
ayk7IH0sIGZhbHNlKTsKK30KSW5kZXg6IExheW91dFRlc3RzL2FuaW1hdGlvbnMvYmlnLXJvdGF0
aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hbmltYXRpb25zL2Jp
Zy1yb3RhdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDM5MTgzKQorKysgTGF5b3V0VGVzdHMv
YW5pbWF0aW9ucy9iaWctcm90YXRpb24tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsNiBAQAogVGhpcyB0ZXN0IHNob3dzIHJvdGF0aW9uIG9mID4gMTgwIGRlZ3JlZXMuIFRo
ZSBib3ggc2hvdWxkIG1ha2Ugb25lIGFuZCBhIGhhbGYgcm90YXRpb25zLgogCi1QQVNTCitQQVNT
IC0gIndlYmtpdFRyYW5zZm9ybSIgcHJvcGVydHkgZm9yICJib3giIGVsZW1lbnQgYXQgMXMgc2F3
IHNvbWV0aGluZyBjbG9zZSB0bzogLTEsMCwwLC0xCitQQVNTIC0gIndlYmtpdFRyYW5zZm9ybSIg
cHJvcGVydHkgZm9yICJib3giIGVsZW1lbnQgYXQgMnMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzog
MSwwLDAsMQorUEFTUyAtICJ3ZWJraXRUcmFuc2Zvcm0iIHByb3BlcnR5IGZvciAiYm94IiBlbGVt
ZW50IGF0IDNzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IC0xLDAsMCwtMQorCkluZGV4OiBMYXlv
dXRUZXN0cy9hbmltYXRpb25zL2JpZy1yb3RhdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2FuaW1hdGlvbnMvYmlnLXJvdGF0aW9uLmh0bWwJKHJldmlzaW9uIDM5MTgzKQorKysg
TGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9iaWctcm90YXRpb24uaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMSw2ICsxLDQgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0
LjAxIFRyYW5zaXRpb25hbC8vRU4iCi0gICAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9v
c2UuZHRkIj4KLQorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEg
VHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+
CiA8aHRtbCBsYW5nPSJlbiI+CiA8aGVhZD4KICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1U
eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgpAQCAtMTEsNjQgKzksMjYg
QEAKICAgICAgIGhlaWdodDogMTAwcHg7CiAgICAgICB3aWR0aDogMTAwcHg7CiAgICAgICBiYWNr
Z3JvdW5kLWNvbG9yOiBibHVlOwotICAgICAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IDEu
MDNzOworICAgICAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IDNzOwogICAgICAgLXdlYmtp
dC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7CiAgICAgICAtd2Via2l0LWFuaW1h
dGlvbi1uYW1lOiAicm90YXRlIjsKICAgICB9CiAgICAgQC13ZWJraXQta2V5ZnJhbWVzICJyb3Rh
dGUiIHsKICAgICAgICAgZnJvbSB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMCk7IH0KLSAg
ICAgICAgdG8gICB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoNTU4ZGVnKTsgfQorICAgICAg
ICB0byAgIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg1NDBkZWcpOyB9CiAgICAgfQogICA8
L3N0eWxlPgorICA8c2NyaXB0IHNyYz0iYW5pbWF0aW9uLXRlc3QtaGVscGVycy5qcyIgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+PC9zY3JpcHQ+CiAgIDxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgewotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOwotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgIH0K
LSAgICAKLSAgICByZXN1bHQgPSAiUEFTUyI7Ci0gICAgY29uc3QgZGVmYXVsdFRvbGVyYW5jZSA9
IDAuMjsKLSAgICBjb25zdCBleHBlY3RlZCA9ICBbIFsgLTEsMCwwLC0xIF0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICBbIDEsMCwwLDEgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFsgLTEs
MCwwLC0xIF0gXTsKLSAgICAKLSAgICBmdW5jdGlvbiBpc0VxdWFsKGFjdHVhbCwgZGVzaXJlZCwg
dG9sZXJhbmNlKQotICAgIHsKLSAgICAgICAgaWYgKHRvbGVyYW5jZSA9PSB1bmRlZmluZWQgfHwg
dG9sZXJhbmNlID09IDApCi0gICAgICAgICAgICB0b2xlcmFuY2UgPSBkZWZhdWx0VG9sZXJhbmNl
OwotICAgICAgICB2YXIgZGlmZiA9IE1hdGguYWJzKGFjdHVhbCAtIGRlc2lyZWQpOwotICAgICAg
ICByZXR1cm4gZGlmZiA8IHRvbGVyYW5jZTsKLSAgICB9CiAgICAgCi0gICAgZnVuY3Rpb24gc25h
cHNob3Qod2hpY2gpCi0gICAgewotICAgICAgICBpZiAocmVzdWx0ICE9ICJQQVNTIikKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIAotICAgICAgICB2YXIgcyA9IHdpbmRvdy5nZXRD
b21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3gnKSkud2Via2l0VHJhbnNm
b3JtOwotICAgICAgICB2YXIgYSA9IHMuc3BsaXQoIigiKTsKLSAgICAgICAgdmFyIGEgPSBhWzFd
LnNwbGl0KCIsIik7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCA0OyArK2kpCi0gICAgICAgICAg
ICBpZiAoIWlzRXF1YWwoYVtpXSwgZXhwZWN0ZWRbd2hpY2hdW2ldKSkgewotICAgICAgICAgICAg
ICAgIHJlc3VsdCA9ICJGQUlMKHByb3BlcnR5JyIraSsiJyB3YXM6IithW2ldKyIsIGV4cGVjdGVk
OiIrZXhwZWN0ZWRbd2hpY2hdW2ldKyIpIjsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICB9Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gc3RhcnQoKQotICAgIHsKLSAgICAgICAg
c2V0VGltZW91dCgic25hcHNob3QoMCkiLCAzMzMpOwotICAgICAgICBzZXRUaW1lb3V0KCJzbmFw
c2hvdCgxKSIsIDY2Nyk7Ci0gICAgICAgIHNldFRpbWVvdXQoInNuYXBzaG90KDIpIiwgMTAwMCk7
Ci0gICAgICAgIAotICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSByZXN1
bHQ7Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKLSAgICAgICAgfSwg
MTEwMCk7Ci0gICAgfQorICAgIGNvbnN0IGV4cGVjdGVkVmFsdWVzID0gWworICAgICAgLy8gW2Fu
aW1hdGlvbi1uYW1lLCB0aW1lLCBlbGVtZW50LWlkLCBwcm9wZXJ0eSwgZXhwZWN0ZWQtdmFsdWUs
IHRvbGVyYW5jZV0KKyAgICAgIFsicm90YXRlIiwgMSwgImJveCIsICJ3ZWJraXRUcmFuc2Zvcm0i
LCBbLTEsMCwwLC0xXSwgMC4yXSwKKyAgICAgIFsicm90YXRlIiwgMiwgImJveCIsICJ3ZWJraXRU
cmFuc2Zvcm0iLCBbMSwwLDAsMV0sIDAuMl0sCisgICAgICBbInJvdGF0ZSIsIDMsICJib3giLCAi
d2Via2l0VHJhbnNmb3JtIiwgWy0xLDAsMCwtMV0sIDAuMl0sCisgICAgXTsKICAgICAKLSAgICBk
b2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd3ZWJraXRBbmltYXRpb25TdGFydCcsIHN0YXJ0LCBm
YWxzZSk7CisgICAgcnVuQW5pbWF0aW9uVGVzdChleHBlY3RlZFZhbHVlcyk7CiAgICAgCiAgIDwv
c2NyaXB0PgogPC9oZWFkPgpJbmRleDogTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9jaGFuZ2Uta2V5
ZnJhbWVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hbmltYXRpb25z
L2NoYW5nZS1rZXlmcmFtZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAzOTE4MykKKysrIExheW91
dFRlc3RzL2FuaW1hdGlvbnMvY2hhbmdlLWtleWZyYW1lcy1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMiArMSw0IEBACiBUaGlzIHRlc3QgcGVyZm9ybXMgYW4gYW5pbWF0aW9uIG9m
IHRoZSBsZWZ0IHByb3BlcnR5IGFuZCBtYWtlcyBzdXJlIGl0IGlzIGFuaW1hdGluZy4gVGhlbiBp
dCBzdG9wcyB0aGUgYW5pbWF0aW9uLCBjaGFuZ2VzIHRoZSBrZXlmcmFtZXMgdG8gYW4gYW5pbWF0
aW9uIG9mIHRoZSB0b3AgcHJvcGVydHksIHJlc3RhcnRzIHRoZSBhbmltYXRpb24gYW5kIG1ha2Vz
IHN1cmUgdG9wIGlzIGFuaW1hdGluZy4KLVBBU1MKK1BBU1MgLSAibGVmdCIgcHJvcGVydHkgZm9y
ICJib3giIGVsZW1lbnQgYXQgMC41cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAyMDAKK1BBU1Mg
LSAidG9wIiBwcm9wZXJ0eSBmb3IgImJveCIgZWxlbWVudCBhdCAxcyBzYXcgc29tZXRoaW5nIGNs
b3NlIHRvOiAxMDAKKwpJbmRleDogTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9jaGFuZ2Uta2V5ZnJh
bWVzLW5hbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FuaW1hdGlv
bnMvY2hhbmdlLWtleWZyYW1lcy1uYW1lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMzkxODMpCisr
KyBMYXlvdXRUZXN0cy9hbmltYXRpb25zL2NoYW5nZS1rZXlmcmFtZXMtbmFtZS1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMiArMSw0IEBACiBUaGlzIHRlc3Qgc3RhcnRzIGJ5IG1h
a2luZyBzdXJlIHRoZSBhbmltYXRpb24gaXMgbm90IHJ1bm5pbmcsIGJlY2F1c2UgdGhlIGFuaW1h
dGlvbi1uYW1lIGFuZCB0aGUgbmFtZSBvZiB0aGV5IEBrZXlmcmFtZXMgcnVsZSBkbyBub3QgbWF0
Y2guIFRoZW4gaXQgY2hhbmdlcyB0aGUgbmFtZSBvZiB0aGUgQGtleWZyYW1lcyBydWxlIHNvIHRo
ZXkgbWF0Y2ggYW5kIG1ha2VzIHN1cmUgdGhlIGFuaW1hdGlvbiBpcyBub3cgcnVubmluZy4KLVBB
U1MKK1BBU1M6IGFuaW1hdGlvbiBpcyBub3QgcnVubmluZworUEFTUyAtICJsZWZ0IiBwcm9wZXJ0
eSBmb3IgImJveCIgZWxlbWVudCBhdCAwLjQ1cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAyMDAK
KwpJbmRleDogTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9jaGFuZ2Uta2V5ZnJhbWVzLW5hbWUuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hbmltYXRpb25zL2NoYW5nZS1rZXlmcmFtZXMt
bmFtZS5odG1sCShyZXZpc2lvbiAzOTE4MykKKysrIExheW91dFRlc3RzL2FuaW1hdGlvbnMvY2hh
bmdlLWtleWZyYW1lcy1uYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDMzICsyNCwxNCBA
QAogICAgICAgICB0byAgIHsgbGVmdDogMzAwcHg7IH0KICAgICB9CiAgICAgPC9zdHlsZT4KKyAg
ICA8c2NyaXB0IHNyYz0iYW5pbWF0aW9uLXRlc3QtaGVscGVycy5qcyIgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
LSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgIH0KLSAg
ICAKLSAgICByZXN1bHQgPSAiUEFTUyI7Ci0gICAgY29uc3QgZGVmYXVsdFRvbGVyYW5jZSA9IDEw
OwotICAgIAotICAgIGZ1bmN0aW9uIGlzRXF1YWwoYWN0dWFsLCBkZXNpcmVkLCB0b2xlcmFuY2Up
Ci0gICAgewotICAgICAgICBpZiAodG9sZXJhbmNlID09IHVuZGVmaW5lZCB8fCB0b2xlcmFuY2Ug
PT0gMCkKLSAgICAgICAgICAgIHRvbGVyYW5jZSA9IGRlZmF1bHRUb2xlcmFuY2U7Ci0gICAgICAg
IHZhciBkaWZmID0gTWF0aC5hYnMoYWN0dWFsIC0gZGVzaXJlZCk7Ci0gICAgICAgIHJldHVybiBk
aWZmIDwgdG9sZXJhbmNlOwotICAgIH0KLSAgICAKLSAgICBmdW5jdGlvbiBzbmFwc2hvdChleHBl
Y3RlZCkKLSAgICB7Ci0gICAgICAgIGlmIChyZXN1bHQgIT0gIlBBU1MiKQotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAKLSAgICAgICAgdmFyIHByb3AgPSBwYXJzZUludCh3aW5kb3cuZ2V0
Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94JykpLmxlZnQpOwotICAg
ICAgICBpZiAoIWlzRXF1YWwocHJvcCwgZXhwZWN0ZWQpKQotICAgICAgICAgICAgcmVzdWx0ID0g
IkZBSUwoJ2xlZnQnIHByb3BlcnR5IHdhczoiK3Byb3ArIiwgZXhwZWN0ZWQ6IitleHBlY3RlZCsi
KSI7Ci0gICAgfQogICAgIAorICAgIGNvbnN0IGV4cGVjdGVkVmFsdWVzID0gWworICAgICAgLy8g
W2FuaW1hdGlvbi1uYW1lLCB0aW1lLCBlbGVtZW50LWlkLCBwcm9wZXJ0eSwgZXhwZWN0ZWQtdmFs
dWUsIHRvbGVyYW5jZV0KKyAgICAgIFtudWxsLCAwLjIgKyAwLjI1LCAiYm94IiwgImxlZnQiLCAy
MDAsIDEwXSwKKyAgICBdOworCiAgICAgZnVuY3Rpb24gZmluZEtleWZyYW1lc1J1bGUocnVsZSkK
ICAgICB7CiAgICAgICAgIHZhciBzcyA9IGRvY3VtZW50LnN0eWxlU2hlZXRzOwpAQCAtNzIsMjAg
KzUzLDE3IEBACiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3gnKS5zdHlsZS53
ZWJraXRBbmltYXRpb25OYW1lID0gImFuaW0iOwogICAgIH0KICAgICAKLSAgICBmdW5jdGlvbiBz
dGFydCgpCisgICAgZnVuY3Rpb24gc2V0dXAoKQogICAgIHsKLSAgICAgICAgZG9jdW1lbnQucmVt
b3ZlRXZlbnRMaXN0ZW5lcignd2Via2l0QW5pbWF0aW9uU3RhcnQnLCBzdGFydCwgZmFsc2UpOwot
ICAgICAgICBzZXRUaW1lb3V0KCJzbmFwc2hvdCgyMDApIiwgMjUwKTsKLSAgICAgICAgd2luZG93
LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gcmVzdWx0OwotICAgICAgICAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7Ci0gICAgICAgIH0sIDMwMCk7CisgICAgICAgIGlmIChsYXlvdXRU
ZXN0Q29udHJvbGxlci5wYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZCgiYmFyIiwg
MC41LCAiYm94IikpCisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicHJlLXJl
c3VsdCIpLmlubmVySFRNTCA9ICJGQUlMOiBhbmltYXRpb24gaXMgcnVubmluZyI7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwcmUtcmVzdWx0Iiku
aW5uZXJIVE1MID0gIlBBU1M6IGFuaW1hdGlvbiBpcyBub3QgcnVubmluZyI7CisgICAgICAgIAor
ICAgICAgICBzZXRUaW1lb3V0KCJjaGFuZ2UoKSIsIDIwMCk7CiAgICAgfQogICAgIAotICAgIGRv
Y3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3dlYmtpdEFuaW1hdGlvblN0YXJ0Jywgc3RhcnQsIGZh
bHNlKTsKLSAgICBzZXRUaW1lb3V0KCJzbmFwc2hvdCgwKSIsIDEwMCk7Ci0gICAgc2V0VGltZW91
dCgiY2hhbmdlKCkiLCAyMDApOworICAgIHJ1bkFuaW1hdGlvblRlc3QoZXhwZWN0ZWRWYWx1ZXMs
IHNldHVwLCAibG9hZCIpOwogICAgIAogICA8L3NjcmlwdD4KIDwvaGVhZD4KQEAgLTk1LDYgKzcz
LDggQEAgbmFtZSBvZiB0aGV5IEBrZXlmcmFtZXMgcnVsZSBkbyBub3QgbWF0YwogbWF0Y2ggYW5k
IG1ha2VzIHN1cmUgdGhlIGFuaW1hdGlvbiBpcyBub3cgcnVubmluZy4KIDxkaXYgaWQ9ImJveCI+
CiA8L2Rpdj4KKzxkaXYgaWQ9InByZS1yZXN1bHQiPgorPC9kaXY+CiA8ZGl2IGlkPSJyZXN1bHQi
PgogPC9kaXY+CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9hbmltYXRpb25zL2NoYW5nZS1r
ZXlmcmFtZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hbmltYXRpb25zL2NoYW5n
ZS1rZXlmcmFtZXMuaHRtbAkocmV2aXNpb24gMzkxODMpCisrKyBMYXlvdXRUZXN0cy9hbmltYXRp
b25zL2NoYW5nZS1rZXlmcmFtZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjQsMzMgKzI0LDE1
IEBACiAgICAgICAgIHRvICAgeyBsZWZ0OiAzMDBweDsgfQogICAgIH0KICAgICA8L3N0eWxlPgor
ICAgIDxzY3JpcHQgc3JjPSJhbmltYXRpb24tdGVzdC1oZWxwZXJzLmpzIiB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgfQot
ICAgIAotICAgIHJlc3VsdCA9ICJQQVNTIjsKLSAgICBjb25zdCBkZWZhdWx0VG9sZXJhbmNlID0g
MTA7Ci0gICAgCi0gICAgZnVuY3Rpb24gaXNFcXVhbChhY3R1YWwsIGRlc2lyZWQsIHRvbGVyYW5j
ZSkKLSAgICB7Ci0gICAgICAgIGlmICh0b2xlcmFuY2UgPT0gdW5kZWZpbmVkIHx8IHRvbGVyYW5j
ZSA9PSAwKQotICAgICAgICAgICAgdG9sZXJhbmNlID0gZGVmYXVsdFRvbGVyYW5jZTsKLSAgICAg
ICAgdmFyIGRpZmYgPSBNYXRoLmFicyhhY3R1YWwgLSBkZXNpcmVkKTsKLSAgICAgICAgcmV0dXJu
IGRpZmYgPCB0b2xlcmFuY2U7Ci0gICAgfQotICAgIAotICAgIGZ1bmN0aW9uIHNuYXBzaG90KHBy
b3BlcnR5LCBleHBlY3RlZCkKLSAgICB7Ci0gICAgICAgIGlmIChyZXN1bHQgIT0gIlBBU1MiKQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICAgICAgdmFyIHByb3AgPSBwYXJzZUlu
dCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94Jykp
W3Byb3BlcnR5XSk7Ci0gICAgICAgIGlmICghaXNFcXVhbChwcm9wLCBleHBlY3RlZCkpCi0gICAg
ICAgICAgICByZXN1bHQgPSAiRkFJTCgnIitwcm9wZXJ0eSsiJyBwcm9wZXJ0eSB3YXM6Iitwcm9w
KyIsIGV4cGVjdGVkOiIrZXhwZWN0ZWQrIikiOwotICAgIH0KICAgICAKKyAgICBjb25zdCBleHBl
Y3RlZFZhbHVlcyA9IFsKKyAgICAgIC8vIFthbmltYXRpb24tbmFtZSwgdGltZSwgZWxlbWVudC1p
ZCwgcHJvcGVydHksIGV4cGVjdGVkLXZhbHVlLCB0b2xlcmFuY2VdCisgICAgICBbbnVsbCwgMC41
LCAiYm94IiwgImxlZnQiLCAyMDAsIDEwXSwKKyAgICAgIFtudWxsLCAwLjUgKyAwLjUsICJib3gi
LCAidG9wIiwgMTAwLCAxMF0sCisgICAgXTsKKwogICAgIGZ1bmN0aW9uIGZpbmRLZXlmcmFtZXNS
dWxlKHJ1bGUpCiAgICAgewogICAgICAgICB2YXIgc3MgPSBkb2N1bWVudC5zdHlsZVNoZWV0czsK
QEAgLTc3LDE0ICs1OSw2IEBACiAgICAgICAgIGtleWZyYW1lcy5pbnNlcnRSdWxlKCI2MCUgeyB0
b3A6IDEwMHB4OyB9Iik7CiAgICAgICAgIGtleWZyYW1lcy5pbnNlcnRSdWxlKCIxMDAlIHsgdG9w
OiAxNTBweDsgfSIpOwogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94Jykuc3R5
bGUud2Via2l0QW5pbWF0aW9uTmFtZSA9ICJhbmltIjsKLSAgICAgICAgCi0gICAgICAgIHNldFRp
bWVvdXQoInNuYXBzaG90KCd0b3AnLCAxMDApIiwgNTAwKTsKLSAgICAgICAgCi0gICAgICAgIHdp
bmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9IHJlc3VsdDsKLSAgICAgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOwotICAgICAgICB9LCA2MDApOwogICAgIH0KICAgICAKICAg
ICBmdW5jdGlvbiBzdGFydENoYW5nZSgpCkBAIC05MiwxNSArNjYsMTMgQEAKICAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JveCcpLnN0eWxlLndlYmtpdEFuaW1hdGlvbk5hbWUgPSAi
bm9uZSI7CiAgICAgICAgIHNldFRpbWVvdXQoImNoYW5nZSgpIiwgMCk7CiAgICAgfQotCi0gICAg
ZnVuY3Rpb24gc3RhcnQoKQorICAgIAorICAgIGZ1bmN0aW9uIHNldHVwKCkKICAgICB7Ci0gICAg
ICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3dlYmtpdEFuaW1hdGlvblN0YXJ0Jywg
c3RhcnQsIGZhbHNlKTsKLSAgICAgICAgc2V0VGltZW91dCgic25hcHNob3QoJ2xlZnQnLCAyMDAp
IiwgNTAwKTsKICAgICAgICAgc2V0VGltZW91dCgic3RhcnRDaGFuZ2UoKSIsIDYwMCk7CiAgICAg
fQogICAgIAotICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3dlYmtpdEFuaW1hdGlvblN0
YXJ0Jywgc3RhcnQsIGZhbHNlKTsKKyAgICBydW5BbmltYXRpb25UZXN0KGV4cGVjdGVkVmFsdWVz
LCBzZXR1cCk7CiAgICAgCiAgIDwvc2NyaXB0PgogPC9oZWFkPgpJbmRleDogTGF5b3V0VGVzdHMv
YW5pbWF0aW9ucy9jaGFuZ2Utb25lLWFuaW0tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2FuaW1hdGlvbnMvY2hhbmdlLW9uZS1hbmltLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMzkxODMpCisrKyBMYXlvdXRUZXN0cy9hbmltYXRpb25zL2NoYW5nZS1vbmUtYW5pbS1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMiArMSw0IEBACiBUaGlzIHRlc3QgcGVyZm9y
bXMgdHdvIGFuaW1hdGlvbnMsIGxlZnQgYW5kIHRvcC4gSXQgYW5pbWF0ZXMgb3ZlciAxIHNlY29u
ZC4gQXQgMC41IHNlY29uZCBpdCByZW1vdmVzIHRoZSBsZWZ0IGFuaW1hdGlvbiBhbmQgdGhlIHRv
cCBhbmltYXRpb24gc2hvdWxkIGNvbnRpbnVlIGZyb20gd2hlcmUgaXQgbGVmdCBvZmYuCi1QQVNT
CitQQVNTIC0gImxlZnQiIHByb3BlcnR5IGZvciAiYm94IiBlbGVtZW50IGF0IDAuNzVzIHNhdyBz
b21ldGhpbmcgY2xvc2UgdG86IDE1MAorUEFTUyAtICJ0b3AiIHByb3BlcnR5IGZvciAiYm94IiBl
bGVtZW50IGF0IDAuNzVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDIyNQorCkluZGV4OiBMYXlv
dXRUZXN0cy9hbmltYXRpb25zL2NoYW5nZS1vbmUtYW5pbS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2FuaW1hdGlvbnMvY2hhbmdlLW9uZS1hbmltLmh0bWwJKHJldmlzaW9uIDM5MTgz
KQorKysgTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9jaGFuZ2Utb25lLWFuaW0uaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjcsMjQgKzI3LDE0IEBACiAgICAgICAgICAgICB0byB7IHRvcDogMzAwcHg7
IH0KICAgICAgICAgIH0KICAgICA8L3N0eWxlPgorICAgIDxzY3JpcHQgc3JjPSJhbmltYXRpb24t
dGVzdC1oZWxwZXJzLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRm
LTgiPgotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgIH0KLSAgICAKLSAgICAg
ICAgcmVzdWx0ID0gIlBBU1MiOwotICAgICAgICBjb25zdCBkZWZhdWx0VG9sZXJhbmNlID0gMTU7
Ci0gICAgCi0gICAgICAgIGNvbnN0IGV4cGVjdGVkID0gIFsgMSwgMCwgMCwgMSwgMCwgMCBdOwot
ICAgIAotICAgICAgICBmdW5jdGlvbiBpc0VxdWFsKGFjdHVhbCwgZGVzaXJlZCwgdG9sZXJhbmNl
KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodG9sZXJhbmNlID09IHVuZGVmaW5lZCB8fCB0
b2xlcmFuY2UgPT0gMCkKLSAgICAgICAgICAgICAgICB0b2xlcmFuY2UgPSBkZWZhdWx0VG9sZXJh
bmNlOwotICAgICAgICAgICAgdmFyIGRpZmYgPSBNYXRoLmFicyhhY3R1YWwgLSBkZXNpcmVkKTsK
LSAgICAgICAgICAgIHJldHVybiBkaWZmIDwgdG9sZXJhbmNlOwotICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBjb25zdCBleHBlY3RlZFZhbHVlcyA9IFsKKyAgICAgICAgICAvLyBbYW5pbWF0
aW9uLW5hbWUsIHRpbWUsIGVsZW1lbnQtaWQsIHByb3BlcnR5LCBleHBlY3RlZC12YWx1ZSwgdG9s
ZXJhbmNlXQorICAgICAgICAgIFtudWxsLCAwLjc1LCAiYm94IiwgImxlZnQiLCAxNTAsIDE1XSwK
KyAgICAgICAgICBbbnVsbCwgMC43NSwgImJveCIsICJ0b3AiLCAyMjUsIDE1XSwKKyAgICAgICAg
XTsKIAogICAgICAgICBmdW5jdGlvbiByZW1vdmVBbmltKCkKICAgICAgICAgewpAQCAtNTQsMzkg
KzQ0LDEyIEBACiAgICAgICAgICAgICB0YXJnZXQuc3R5bGUubGVmdCA9IGxlZnQ7CiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIGZ1bmN0aW9uIHNuYXBzaG90KCkKLSAgICAgICAgewotICAg
ICAgICAgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib3giKTsKLSAg
ICAgICAgICAgIHZhciBsZWZ0ID0gcGFyc2VJbnQod2luZG93LmdldENvbXB1dGVkU3R5bGUodGFy
Z2V0KS5sZWZ0KTsKLSAgICAgICAgICAgIHZhciB0b3AgPSBwYXJzZUludCh3aW5kb3cuZ2V0Q29t
cHV0ZWRTdHlsZSh0YXJnZXQpLnRvcCk7Ci0KLSAgICAgICAgICAgIGlmICghaXNFcXVhbChsZWZ0
LCAxNTApKSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gIkZBSUwoJ2xlZnQnIHdhczoiK2xl
ZnQrIiwgZXhwZWN0ZWQ6MTUwKSI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgaWYgKCFpc0VxdWFsKHRvcCwgMjI1KSkgewotICAgICAgICAgICAg
ICAgIHJlc3VsdCA9ICJGQUlMKCd0b3AnIHdhczoiK3RvcCsiLCBleHBlY3RlZDoyMjUpIjsKLSAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAg
ICBmdW5jdGlvbiBzdGFydChldmVudCkKKyAgICAgICAgZnVuY3Rpb24gc2V0dXAoKQogICAgICAg
ICB7Ci0gICAgICAgICAgICAvLyBXZSBvbmx5IHdhbnQgdG8gY29udGludWUgZm9yIG9uZSBvZiB0
aGUgdHdvIGFuaW1hdGlvbnMgcnVubmluZwotICAgICAgICAgICAgaWYgKGV2ZW50LmFuaW1hdGlv
bk5hbWUgPT0gImhvcml6IikKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KICAgICAgICAgICAg
IHNldFRpbWVvdXQoInJlbW92ZUFuaW0oKSIsIDUwMCk7Ci0gICAgICAgICAgICBzZXRUaW1lb3V0
KCJzbmFwc2hvdCgpIiwgNzUwKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgd2luZG93LnNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9IHJlc3VsdDsKLSAgICAgICAgICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci0gICAgICAgICAgICB9LCA4MDApOwogICAgICAg
ICB9CiAKLSAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignd2Via2l0QW5pbWF0aW9u
U3RhcnQnLCBzdGFydCwgZmFsc2UpOworICAgICAgICBydW5BbmltYXRpb25UZXN0KGV4cGVjdGVk
VmFsdWVzLCBzZXR1cCk7CiAgICAgPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KSW5kZXg6IExh
eW91dFRlc3RzL2FuaW1hdGlvbnMvZ2VuZXJpYy1mcm9tLXRvLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9hbmltYXRpb25zL2dlbmVyaWMtZnJvbS10by1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDM5MTgzKQorKysgTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9nZW5lcmljLWZy
b20tdG8tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogVGhpcyB0
ZXN0IHBlcmZvcm1zIGFuIGFuaW1hdGlvbiBvZiB0aGUgbGVmdCBwcm9wZXJ0eS4gSXQgYW5pbWF0
ZXMgb3ZlciAxIHNlY29uZC4gSXQgdGFrZXMgMyBzbmFwc2hvdHMgYW5kIGV4cGVjdHMgZWFjaCBy
ZXN1bHQgdG8gYmUgd2l0aGluIGEgc3BlY2lmaWVkIHJhbmdlLgotUEFTUyAtIGJveCBhdCAyNTAg
c2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMTI1Ci1QQVNTIC0gYm94IGF0IDUwMCBzYXcgc29tZXRo
aW5nIGNsb3NlIHRvOiAxNTAKLVBBU1MgLSBib3ggYXQgNzUwIHNhdyBzb21ldGhpbmcgY2xvc2Ug
dG86IDE3NQorUEFTUyAtICJsZWZ0IiBwcm9wZXJ0eSBmb3IgImJveCIgZWxlbWVudCBhdCAwLjI1
cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAxMjUKK1BBU1MgLSAibGVmdCIgcHJvcGVydHkgZm9y
ICJib3giIGVsZW1lbnQgYXQgMC41cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAxNTAKK1BBU1Mg
LSAibGVmdCIgcHJvcGVydHkgZm9yICJib3giIGVsZW1lbnQgYXQgMC43NXMgc2F3IHNvbWV0aGlu
ZyBjbG9zZSB0bzogMTc1CiAKSW5kZXg6IExheW91dFRlc3RzL2FuaW1hdGlvbnMvZ2VuZXJpYy1m
cm9tLXRvLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9nZW5lcmlj
LWZyb20tdG8uaHRtbAkocmV2aXNpb24gMzkxODMpCisrKyBMYXlvdXRUZXN0cy9hbmltYXRpb25z
L2dlbmVyaWMtZnJvbS10by5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwyNSArMjUsMTQgQEAK
ICAgPHNjcmlwdCBzcmM9ImFuaW1hdGlvbi10ZXN0LWhlbHBlcnMuanMiIHR5cGU9InRleHQvamF2
YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPjwvc2NyaXB0PgogICA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgogCi0gICAgY29uc3QgZGVmYXVsdFRvbGVyYW5j
ZSA9IDU7Ci0gICAgCi0gICAgY29uc3QgZXhwZWN0ZWQgPSBbCi0gICAgICAvLyBbdGltZSwgcHJv
cGVydHksIGVsZW1lbnQtaWQsIGV4cGVjdGVkLXZhbHVlXQotICAgICAgWzI1MCwgImxlZnQiLCAi
Ym94IiwgMTI1XSwKLSAgICAgIFs1MDAsICJsZWZ0IiwgImJveCIsIDE1MF0sCi0gICAgICBbNzUw
LCAibGVmdCIsICJib3giLCAxNzVdLAorICAgIGNvbnN0IGV4cGVjdGVkVmFsdWVzID0gWworICAg
ICAgLy8gW2FuaW1hdGlvbi1uYW1lLCB0aW1lLCBlbGVtZW50LWlkLCBwcm9wZXJ0eSwgZXhwZWN0
ZWQtdmFsdWUsIHRvbGVyYW5jZV0KKyAgICAgIFsiYW5pbSIsIDAuMjUsICJib3giLCAibGVmdCIs
IDEyNSwgNV0sCisgICAgICBbImFuaW0iLCAwLjUwLCAiYm94IiwgImxlZnQiLCAxNTAsIDVdLAor
ICAgICAgWyJhbmltIiwgMC43NSwgImJveCIsICJsZWZ0IiwgMTc1LCA1XSwKICAgICBdOwotCi0g
ICAgZnVuY3Rpb24gc3RhcnQoKQotICAgIHsKLSAgICAgICAgc2V0dXAoKTsKLSAgICAgICAgd2lu
ZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnYm94Jykuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKLSAgICAgICAgICAgIGNsZWFu
dXAoKTsKLSAgICAgICAgfSwgOTAwKTsKLSAgICB9CiAgICAgCi0gICAgZG9jdW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcignd2Via2l0QW5pbWF0aW9uU3RhcnQnLCBzdGFydCwgZmFsc2UpOworICAgIHJ1
bkFuaW1hdGlvblRlc3QoZXhwZWN0ZWRWYWx1ZXMpOwogICAgIAogICA8L3NjcmlwdD4KIDwvaGVh
ZD4KSW5kZXg6IExheW91dFRlc3RzL2FuaW1hdGlvbnMvaW1wb3J0LWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hbmltYXRpb25zL2ltcG9ydC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDM5MTgzKQorKysgTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9pbXBvcnQtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDIgKzEsNCBAQAogVGhpcyB0ZXN0IHBlcmZvcm1zIGFu
IGFuaW1hdGlvbiBvZiB0aGUgbGVmdCBwcm9wZXJ0eS4gSXQgc2hvdWxkIHN0b3AgZm9yIDEwMG1z
IGF0IDEwMHB4IGFuZCAyMDBweCBXZSB0ZXN0IGZvciB0aG9zZSB2YWx1ZXMgNTBtcyBhZnRlciBp
dCBoYXMgc3RvcHBlZCBhdCBlYWNoIHBvc2l0aW9uLiBUaGUga2V5ZnJhbWVzIGFyZSBpbXBvcnRl
ZCBzbyB0aGlzIHRlc3RzIHdoZXRoZXIgdGhleSBjb21lIGluIGNvcnJlY3RseS4KLVBBU1MKK1BB
U1MgLSAibGVmdCIgcHJvcGVydHkgZm9yICJib3giIGVsZW1lbnQgYXQgMC4zcyBzYXcgc29tZXRo
aW5nIGNsb3NlIHRvOiAxMDAKK1BBU1MgLSAibGVmdCIgcHJvcGVydHkgZm9yICJib3giIGVsZW1l
bnQgYXQgMC43cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAyMDAKKwpJbmRleDogTGF5b3V0VGVz
dHMvYW5pbWF0aW9ucy9pbXBvcnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hbmlt
YXRpb25zL2ltcG9ydC5odG1sCShyZXZpc2lvbiAzOTE4MykKKysrIExheW91dFRlc3RzL2FuaW1h
dGlvbnMvaW1wb3J0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE5LDQ3ICsxOSwxNiBAQAogICAg
ICAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiAiYW5pbSI7CiAgICAgfQogICAgIDwvc3R5bGU+
CisgICAgPHNjcmlwdCBzcmM9ImFuaW1hdGlvbi10ZXN0LWhlbHBlcnMuanMiIHR5cGU9InRleHQv
amF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICB9
Ci0gICAgCi0gICAgcmVzdWx0ID0gIlBBU1MiOwotICAgIGNvbnN0IGRlZmF1bHRUb2xlcmFuY2Ug
PSAwLjI7Ci0gICAgCi0gICAgZnVuY3Rpb24gaXNFcXVhbChhY3R1YWwsIGRlc2lyZWQsIHRvbGVy
YW5jZSkKLSAgICB7Ci0gICAgICAgIGlmICh0b2xlcmFuY2UgPT0gdW5kZWZpbmVkIHx8IHRvbGVy
YW5jZSA9PSAwKQotICAgICAgICAgICAgdG9sZXJhbmNlID0gZGVmYXVsdFRvbGVyYW5jZTsKLSAg
ICAgICAgdmFyIGRpZmYgPSBNYXRoLmFicyhhY3R1YWwgLSBkZXNpcmVkKTsKLSAgICAgICAgcmV0
dXJuIGRpZmYgPCB0b2xlcmFuY2U7Ci0gICAgfQogICAgIAotICAgIGZ1bmN0aW9uIHNuYXBzaG90
KHdoaWNoKQotICAgIHsKLSAgICAgICAgaWYgKHJlc3VsdCAhPSAiUEFTUyIpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICAKLSAgICAgICAgdmFyIGxlZnQgPSBwYXJzZUludCh3aW5k
b3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94JykpLmxlZnQp
OwotICAgICAgICB2YXIgZXhwZWN0ZWQgPSB3aGljaCA/IDIwMCA6IDEwMDsKLSAgICAgICAgaWYg
KCFpc0VxdWFsKGxlZnQsIGV4cGVjdGVkKSkKLSAgICAgICAgICAgIHJlc3VsdCA9ICJGQUlMKHdh
czoiK2xlZnQrIiwgZXhwZWN0ZWQ6IitleHBlY3RlZCsiKSI7Ci0gICAgfQotCi0gICAgZnVuY3Rp
b24gc3RhcnQoKQotICAgIHsKLSAgICAgICAgc2V0VGltZW91dCgic25hcHNob3QoMCkiLCAzMDAp
OwotICAgICAgICBzZXRUaW1lb3V0KCJzbmFwc2hvdCgxKSIsIDcwMCk7Ci0gICAgICAgIAotICAg
ICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSByZXN1bHQ7Ci0gICAgICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKLSAgICAgICAgfSwgODAwKTsKLSAgICB9Cisg
ICAgY29uc3QgZXhwZWN0ZWRWYWx1ZXMgPSBbCisgICAgICAvLyBbYW5pbWF0aW9uLW5hbWUsIHRp
bWUsIGVsZW1lbnQtaWQsIHByb3BlcnR5LCBleHBlY3RlZC12YWx1ZSwgdG9sZXJhbmNlXQorICAg
ICAgWyJhbmltIiwgMC4zLCAiYm94IiwgImxlZnQiLCAxMDAsIDFdLAorICAgICAgWyJhbmltIiwg
MC43LCAiYm94IiwgImxlZnQiLCAyMDAsIDFdLAorICAgIF07CiAgICAgCi0gICAgZG9jdW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcignd2Via2l0QW5pbWF0aW9uU3RhcnQnLCBzdGFydCwgZmFsc2UpOwor
ICAgIHJ1bkFuaW1hdGlvblRlc3QoZXhwZWN0ZWRWYWx1ZXMpOwogICAgIAogICA8L3NjcmlwdD4K
IDwvaGVhZD4KSW5kZXg6IExheW91dFRlc3RzL2FuaW1hdGlvbnMva2V5ZnJhbWUtdGltaW5nLWZ1
bmN0aW9ucy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYW5pbWF0aW9u
cy9rZXlmcmFtZS10aW1pbmctZnVuY3Rpb25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMzkxODMp
CisrKyBMYXlvdXRUZXN0cy9hbmltYXRpb25zL2tleWZyYW1lLXRpbWluZy1mdW5jdGlvbnMtZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDIgKzEsMyBAQAogVGhpcyB0ZXN0IHNob3Vs
ZCBkbyBhIGxpbmVhciBhbmltYXRpb24uIFRoZSB0aW1pbmctZnVuY3Rpb24gY29tZXMgZnJvbSB0
aGUga2V5ZnJhbWUsIHNvIHRoaXMgaXMgdGVzdGluZyB3aGV0aGVyIG9yIG5vdCB0aGUgdGltaW5n
IGZ1bmN0aW9uIGluIGtleWZyYW1lcyBpcyB1c2VkLiAKLVBBU1MKK1BBU1MgLSAibGVmdCIgcHJv
cGVydHkgZm9yICJib3giIGVsZW1lbnQgYXQgMC43NXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzog
MzAwCisKSW5kZXg6IExheW91dFRlc3RzL2FuaW1hdGlvbnMva2V5ZnJhbWUtdGltaW5nLWZ1bmN0
aW9ucy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FuaW1hdGlvbnMva2V5ZnJhbWUt
dGltaW5nLWZ1bmN0aW9ucy5odG1sCShyZXZpc2lvbiAzOTE4MykKKysrIExheW91dFRlc3RzL2Fu
aW1hdGlvbnMva2V5ZnJhbWUtdGltaW5nLWZ1bmN0aW9ucy5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0zNCw0MiArMzQsMTUgQEAKICAgICB9CiAgICAgCiAgIDwvc3R5bGU+CisgIDxzY3JpcHQgc3Jj
PSJhbmltYXRpb24tdGVzdC1oZWxwZXJzLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJz
ZXQ9InV0Zi04Ij48L3NjcmlwdD4KICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNo
YXJzZXQ9InV0Zi04Ij4KIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
LSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgfQotCi0gICAgcmVzdWx0ID0g
IlBBU1MiOwotICAgIGNvbnN0IGtEZWZhdWx0VG9sZXJhbmNlID0gMjA7Ci0KLSAgICBmdW5jdGlv
biBpc0VxdWFsKGFjdHVhbCwgZGVzaXJlZCwgdG9sZXJhbmNlKQotICAgIHsKLSAgICAgICAgaWYg
KHRvbGVyYW5jZSA9PSB1bmRlZmluZWQgfHwgdG9sZXJhbmNlID09IDApCi0gICAgICAgICAgICB0
b2xlcmFuY2UgPSBrRGVmYXVsdFRvbGVyYW5jZTsKLSAgICAgICAgdmFyIGRpZmYgPSBNYXRoLmFi
cyhhY3R1YWwgLSBkZXNpcmVkKTsKLSAgICAgICAgcmV0dXJuIGRpZmYgPCB0b2xlcmFuY2U7Ci0g
ICAgfQotICAKLSAgICBmdW5jdGlvbiBzbmFwc2hvdCgpCi0gICAgewotICAgICAgICB2YXIgbGVm
dCA9IHBhcnNlSW50KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdib3gnKSkubGVmdCk7Ci0gICAgICAgIHZhciBleHBlY3RlZCA9IDMwMDsKLSAgICAgICAg
aWYgKCFpc0VxdWFsKGxlZnQsIGV4cGVjdGVkKSkKLSAgICAgICAgICAgIHJlc3VsdCA9ICJGQUlM
ICh3YXM6ICIgKyBsZWZ0ICsgIiwgZXhwZWN0ZWQ6ICIgKyBleHBlY3RlZCArICIpIjsKLQotICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gcmVzdWx0
OwotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwotICAgIH0KLQotICAgIGZ1bmN0aW9u
IHN0YXJ0KCkKLSAgICB7Ci0gICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KHNuYXBzaG90LCA3NTAp
OwotICAgIH0KLSAgCi0gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignd2Via2l0QW5pbWF0
aW9uU3RhcnQnLCBzdGFydCwgZmFsc2UpOworICAgIGNvbnN0IGV4cGVjdGVkVmFsdWVzID0gWwor
ICAgICAgLy8gW2FuaW1hdGlvbi1uYW1lLCB0aW1lLCBlbGVtZW50LWlkLCBwcm9wZXJ0eSwgZXhw
ZWN0ZWQtdmFsdWUsIHRvbGVyYW5jZV0KKyAgICAgIFsibW92ZSIsIDAuNzUsICJib3giLCAibGVm
dCIsIDMwMCwgMjBdLAorICAgIF07CisgICAgCisgICAgcnVuQW5pbWF0aW9uVGVzdChleHBlY3Rl
ZFZhbHVlcyk7CiAgIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+CkluZGV4OiBMYXlvdXRUZXN0
cy9hbmltYXRpb25zL2tleWZyYW1lcy1jb21tYS1zZXBhcmF0ZWQtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2FuaW1hdGlvbnMva2V5ZnJhbWVzLWNvbW1hLXNlcGFyYXRl
ZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDM5MTgzKQorKysgTGF5b3V0VGVzdHMvYW5pbWF0aW9u
cy9rZXlmcmFtZXMtY29tbWEtc2VwYXJhdGVkLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMSwyICsxLDQgQEAKIFRoaXMgdGVzdCBwZXJmb3JtcyBhbiBhbmltYXRpb24gb2YgdGhlIGxl
ZnQgcHJvcGVydHkuIEl0IHNob3VsZCBzdG9wIGZvciAxMDBtcyBhdCAxMDBweCBhbmQgMjAwcHgg
V2UgdGVzdCBmb3IgdGhvc2UgdmFsdWVzIDUwbXMgYWZ0ZXIgaXQgaGFzIHN0b3BwZWQgYXQgZWFj
aCBwb3NpdGlvbi4gS2V5cyBpbiB0d28gb2YgdGhlIGtleWZyYW1lcyBhcmUgY29tbWEgc2VwYXJh
dGVkLCBzbyB0aGVzZSBzaG91bGQgYmUgY29ycmVjdGx5IGJyb2tlbiBvdXQgaW50byBzZXBhcmF0
ZSBrZXlmcmFtZXMuCi1QQVNTCitQQVNTIC0gImxlZnQiIHByb3BlcnR5IGZvciAiYm94IiBlbGVt
ZW50IGF0IDAuM3Mgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMTAwCitQQVNTIC0gImxlZnQiIHBy
b3BlcnR5IGZvciAiYm94IiBlbGVtZW50IGF0IDAuN3Mgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzog
MjAwCisKSW5kZXg6IExheW91dFRlc3RzL2FuaW1hdGlvbnMva2V5ZnJhbWVzLWNvbW1hLXNlcGFy
YXRlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FuaW1hdGlvbnMva2V5ZnJhbWVz
LWNvbW1hLXNlcGFyYXRlZC5odG1sCShyZXZpc2lvbiAzOTE4MykKKysrIExheW91dFRlc3RzL2Fu
aW1hdGlvbnMva2V5ZnJhbWVzLWNvbW1hLXNlcGFyYXRlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0yNCw0NyArMjQsMTYgQEAKICAgICAgICAgdG8gICB7IGxlZnQ6IDMwMHB4OyB9CiAgICAgfQog
ICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdCBzcmM9ImFuaW1hdGlvbi10ZXN0LWhlbHBlcnMuanMi
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKLSAgICB9Ci0gICAgCi0gICAgcmVzdWx0ID0gIlBBU1MiOwotICAgIGNvbnN0IGRlZmF1
bHRUb2xlcmFuY2UgPSAwLjI7Ci0gICAgCi0gICAgZnVuY3Rpb24gaXNFcXVhbChhY3R1YWwsIGRl
c2lyZWQsIHRvbGVyYW5jZSkKLSAgICB7Ci0gICAgICAgIGlmICh0b2xlcmFuY2UgPT0gdW5kZWZp
bmVkIHx8IHRvbGVyYW5jZSA9PSAwKQotICAgICAgICAgICAgdG9sZXJhbmNlID0gZGVmYXVsdFRv
bGVyYW5jZTsKLSAgICAgICAgdmFyIGRpZmYgPSBNYXRoLmFicyhhY3R1YWwgLSBkZXNpcmVkKTsK
LSAgICAgICAgcmV0dXJuIGRpZmYgPCB0b2xlcmFuY2U7Ci0gICAgfQogICAgIAotICAgIGZ1bmN0
aW9uIHNuYXBzaG90KHdoaWNoKQotICAgIHsKLSAgICAgICAgaWYgKHJlc3VsdCAhPSAiUEFTUyIp
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAKLSAgICAgICAgdmFyIGxlZnQgPSBw
YXJzZUludCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Ym94JykpLmxlZnQpOwotICAgICAgICB2YXIgZXhwZWN0ZWQgPSB3aGljaCA/IDIwMCA6IDEwMDsK
LSAgICAgICAgaWYgKCFpc0VxdWFsKGxlZnQsIGV4cGVjdGVkKSkKLSAgICAgICAgICAgIHJlc3Vs
dCA9ICJGQUlMKHdhczoiK2xlZnQrIiwgZXhwZWN0ZWQ6IitleHBlY3RlZCsiKSI7Ci0gICAgfQot
Ci0gICAgZnVuY3Rpb24gc3RhcnQoKQotICAgIHsKLSAgICAgICAgc2V0VGltZW91dCgic25hcHNo
b3QoMCkiLCAzMDApOwotICAgICAgICBzZXRUaW1lb3V0KCJzbmFwc2hvdCgxKSIsIDcwMCk7Ci0g
ICAgICAgIAotICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSByZXN1bHQ7
Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKLSAgICAgICAgfSwgODAw
KTsKLSAgICB9CisgICAgY29uc3QgZXhwZWN0ZWRWYWx1ZXMgPSBbCisgICAgICAvLyBbYW5pbWF0
aW9uLW5hbWUsIHRpbWUsIGVsZW1lbnQtaWQsIHByb3BlcnR5LCBleHBlY3RlZC12YWx1ZSwgdG9s
ZXJhbmNlXQorICAgICAgWyJhbmltIiwgMC4zLCAiYm94IiwgImxlZnQiLCAxMDAsIDFdLAorICAg
ICAgWyJhbmltIiwgMC43LCAiYm94IiwgImxlZnQiLCAyMDAsIDFdLAorICAgIF07CiAgICAgCi0g
ICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignd2Via2l0QW5pbWF0aW9uU3RhcnQnLCBzdGFy
dCwgZmFsc2UpOworICAgIHJ1bkFuaW1hdGlvblRlc3QoZXhwZWN0ZWRWYWx1ZXMpOwogICAgIAog
ICA8L3NjcmlwdD4KIDwvaGVhZD4KSW5kZXg6IExheW91dFRlc3RzL2FuaW1hdGlvbnMva2V5ZnJh
bWVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hbmltYXRpb25zL2tl
eWZyYW1lcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDM5MTgzKQorKysgTGF5b3V0VGVzdHMvYW5p
bWF0aW9ucy9rZXlmcmFtZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDIgKzEs
NCBAQAogVGhpcyB0ZXN0IHBlcmZvcm1zIGFuIGFuaW1hdGlvbiBvZiB0aGUgbGVmdCBwcm9wZXJ0
eS4gSXQgc2hvdWxkIHN0b3AgZm9yIDEwMG1zIGF0IDEwMHB4IGFuZCAyMDBweCBXZSB0ZXN0IGZv
ciB0aG9zZSB2YWx1ZXMgNTBtcyBhZnRlciBpdCBoYXMgc3RvcHBlZCBhdCBlYWNoIHBvc2l0aW9u
LgotUEFTUworUEFTUyAtICJsZWZ0IiBwcm9wZXJ0eSBmb3IgImJveCIgZWxlbWVudCBhdCAwLjNz
IHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDEwMAorUEFTUyAtICJsZWZ0IiBwcm9wZXJ0eSBmb3Ig
ImJveCIgZWxlbWVudCBhdCAwLjdzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDIwMAorCkluZGV4
OiBMYXlvdXRUZXN0cy9hbmltYXRpb25zL2tleWZyYW1lcy1mcm9tLW1pc3NpbmcuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hbmltYXRpb25zL2tleWZyYW1lcy1mcm9tLW1pc3Npbmcu
aHRtbAkocmV2aXNpb24gMzkxODMpCisrKyBMYXlvdXRUZXN0cy9hbmltYXRpb25zL2tleWZyYW1l
cy1mcm9tLW1pc3NpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjYsNDYgKzI2LDE5IEBACiAg
ICAgfQogICAgIDwvc3R5bGU+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNo
YXJzZXQ9InV0Zi04Ij4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgIH0KLSAgICAKLSAgICByZXN1bHQg
PSAiUEFTUyI7Ci0gICAgY29uc3QgZGVmYXVsdFRvbGVyYW5jZSA9IDAuMjsKICAgICAKLSAgICBm
dW5jdGlvbiBpc0VxdWFsKGFjdHVhbCwgZGVzaXJlZCwgdG9sZXJhbmNlKQotICAgIHsKLSAgICAg
ICAgaWYgKHRvbGVyYW5jZSA9PSB1bmRlZmluZWQgfHwgdG9sZXJhbmNlID09IDApCi0gICAgICAg
ICAgICB0b2xlcmFuY2UgPSBkZWZhdWx0VG9sZXJhbmNlOwotICAgICAgICB2YXIgZGlmZiA9IE1h
dGguYWJzKGFjdHVhbCAtIGRlc2lyZWQpOwotICAgICAgICByZXR1cm4gZGlmZiA8IHRvbGVyYW5j
ZTsKLSAgICB9Ci0gICAgCi0gICAgZnVuY3Rpb24gc25hcHNob3Qod2hpY2gpCi0gICAgewotICAg
ICAgICBpZiAocmVzdWx0ICE9ICJQQVNTIikKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIAotICAgICAgICB2YXIgbGVmdCA9IHBhcnNlSW50KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxl
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3gnKSkubGVmdCk7Ci0gICAgICAgIHZhciBleHBl
Y3RlZCA9IDA7Ci0gICAgICAgIGlmICghaXNFcXVhbChsZWZ0LCBleHBlY3RlZCkpCi0gICAgICAg
ICAgICByZXN1bHQgPSAiRkFJTCh3YXM6IitsZWZ0KyIsIGV4cGVjdGVkOiIrZXhwZWN0ZWQrIiki
OwotICAgIH0KLQogICAgIGZ1bmN0aW9uIHN0YXJ0KCkKICAgICB7Ci0gICAgICAgIHNldFRpbWVv
dXQoInNuYXBzaG90KDApIiwgMzAwKTsKLSAgICAgICAgc2V0VGltZW91dCgic25hcHNob3QoMSki
LCA3MDApOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CiAgICAg
ICAgIAotICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSByZXN1bHQ7Ci0g
ICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKLSAgICAgICAgfSwgODAwKTsK
KyAgICAgICAgaWYgKGxheW91dFRlc3RDb250cm9sbGVyLnBhdXNlQW5pbWF0aW9uQXRUaW1lT25F
bGVtZW50V2l0aElkKCJhbmltIiwgMC41LCAiYm94IikpCisgICAgICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gIkZBSUw6IGFuaW1hdGlvbiBpcyBy
dW5uaW5nIjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICJQQVNTIjsKICAgICB9CiAgICAgCi0gICAgd2luZG93
LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBzdGFydCwgZmFsc2UpOworICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCds
b2FkJywgc3RhcnQsIGZhbHNlKTsKICAgICAKICAgPC9zY3JpcHQ+CiA8L2hlYWQ+CkluZGV4OiBM
YXlvdXRUZXN0cy9hbmltYXRpb25zL2tleWZyYW1lcy1vdXQtb2Ytb3JkZXItZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FuaW1hdGlvbnMva2V5ZnJhbWVzLW91dC1vZi1v
cmRlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDM5MTgzKQorKysgTGF5b3V0VGVzdHMvYW5pbWF0
aW9ucy9rZXlmcmFtZXMtb3V0LW9mLW9yZGVyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMSwyICsxLDQgQEAKIFRoaXMgdGVzdCBwZXJmb3JtcyBhbiBhbmltYXRpb24gb2YgdGhlIGxl
ZnQgcHJvcGVydHkuIEl0IHNob3VsZCBzdG9wIGZvciAxMDBtcyBhdCAxMDBweCBhbmQgMjAwcHgg
V2UgdGVzdCBmb3IgdGhvc2UgdmFsdWVzIDUwbXMgYWZ0ZXIgaXQgaGFzIHN0b3BwZWQgYXQgZWFj
aCBwb3NpdGlvbi4gVGhlIGtleWZyYW1lcyBhcmUgb3V0IG9mIG9yZGVyIGFuZCBzaG91bGQgZ2V0
IGNvcnJlY3RseSBzb3J0ZWQuCi1QQVNTCitQQVNTIC0gImxlZnQiIHByb3BlcnR5IGZvciAiYm94
IiBlbGVtZW50IGF0IDAuM3Mgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMTAwCitQQVNTIC0gImxl
ZnQiIHByb3BlcnR5IGZvciAiYm94IiBlbGVtZW50IGF0IDAuN3Mgc2F3IHNvbWV0aGluZyBjbG9z
ZSB0bzogMjAwCisKSW5kZXg6IExheW91dFRlc3RzL2FuaW1hdGlvbnMva2V5ZnJhbWVzLW91dC1v
Zi1vcmRlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FuaW1hdGlvbnMva2V5ZnJh
bWVzLW91dC1vZi1vcmRlci5odG1sCShyZXZpc2lvbiAzOTE4MykKKysrIExheW91dFRlc3RzL2Fu
aW1hdGlvbnMva2V5ZnJhbWVzLW91dC1vZi1vcmRlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw0NyArMjYsMTYgQEAKICAgICAgICAgNjAlICB7IGxlZnQ6IDIwMHB4OyB9CiAgICAgfQogICAg
IDwvc3R5bGU+CisgICAgPHNjcmlwdCBzcmM9ImFuaW1hdGlvbi10ZXN0LWhlbHBlcnMuanMiIHR5
cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKLSAgICB9Ci0gICAgCi0gICAgcmVzdWx0ID0gIlBBU1MiOwotICAgIGNvbnN0IGRlZmF1bHRU
b2xlcmFuY2UgPSAwLjI7Ci0gICAgCi0gICAgZnVuY3Rpb24gaXNFcXVhbChhY3R1YWwsIGRlc2ly
ZWQsIHRvbGVyYW5jZSkKLSAgICB7Ci0gICAgICAgIGlmICh0b2xlcmFuY2UgPT0gdW5kZWZpbmVk
IHx8IHRvbGVyYW5jZSA9PSAwKQotICAgICAgICAgICAgdG9sZXJhbmNlID0gZGVmYXVsdFRvbGVy
YW5jZTsKLSAgICAgICAgdmFyIGRpZmYgPSBNYXRoLmFicyhhY3R1YWwgLSBkZXNpcmVkKTsKLSAg
ICAgICAgcmV0dXJuIGRpZmYgPCB0b2xlcmFuY2U7Ci0gICAgfQogICAgIAotICAgIGZ1bmN0aW9u
IHNuYXBzaG90KHdoaWNoKQotICAgIHsKLSAgICAgICAgaWYgKHJlc3VsdCAhPSAiUEFTUyIpCi0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAKLSAgICAgICAgdmFyIGxlZnQgPSBwYXJz
ZUludCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94
JykpLmxlZnQpOwotICAgICAgICB2YXIgZXhwZWN0ZWQgPSB3aGljaCA/IDIwMCA6IDEwMDsKLSAg
ICAgICAgaWYgKCFpc0VxdWFsKGxlZnQsIGV4cGVjdGVkKSkKLSAgICAgICAgICAgIHJlc3VsdCA9
ICJGQUlMKHdhczoiK2xlZnQrIiwgZXhwZWN0ZWQ6IitleHBlY3RlZCsiKSI7Ci0gICAgfQotCi0g
ICAgZnVuY3Rpb24gc3RhcnQoKQotICAgIHsKLSAgICAgICAgc2V0VGltZW91dCgic25hcHNob3Qo
MCkiLCAzMDApOwotICAgICAgICBzZXRUaW1lb3V0KCJzbmFwc2hvdCgxKSIsIDcwMCk7Ci0gICAg
ICAgIAotICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSByZXN1bHQ7Ci0g
ICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKLSAgICAgICAgfSwgODAwKTsK
LSAgICB9CisgICAgY29uc3QgZXhwZWN0ZWRWYWx1ZXMgPSBbCisgICAgICAvLyBbYW5pbWF0aW9u
LW5hbWUsIHRpbWUsIGVsZW1lbnQtaWQsIHByb3BlcnR5LCBleHBlY3RlZC12YWx1ZSwgdG9sZXJh
bmNlXQorICAgICAgWyJhbmltIiwgMC4zLCAiYm94IiwgImxlZnQiLCAxMDAsIDFdLAorICAgICAg
WyJhbmltIiwgMC43LCAiYm94IiwgImxlZnQiLCAyMDAsIDFdLAorICAgIF07CiAgICAgCi0gICAg
ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignd2Via2l0QW5pbWF0aW9uU3RhcnQnLCBzdGFydCwg
ZmFsc2UpOworICAgIHJ1bkFuaW1hdGlvblRlc3QoZXhwZWN0ZWRWYWx1ZXMpOwogICAgIAogICA8
L3NjcmlwdD4KIDwvaGVhZD4KSW5kZXg6IExheW91dFRlc3RzL2FuaW1hdGlvbnMva2V5ZnJhbWVz
LXRvLW1pc3NpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hbmltYXRpb25zL2tl
eWZyYW1lcy10by1taXNzaW5nLmh0bWwJKHJldmlzaW9uIDM5MTgzKQorKysgTGF5b3V0VGVzdHMv
YW5pbWF0aW9ucy9rZXlmcmFtZXMtdG8tbWlzc2luZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw0NiArMjYsMTkgQEAKICAgICB9CiAgICAgPC9zdHlsZT4KICAgICA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgfQot
ICAgIAotICAgIHJlc3VsdCA9ICJQQVNTIjsKLSAgICBjb25zdCBkZWZhdWx0VG9sZXJhbmNlID0g
MC4yOwogICAgIAotICAgIGZ1bmN0aW9uIGlzRXF1YWwoYWN0dWFsLCBkZXNpcmVkLCB0b2xlcmFu
Y2UpCi0gICAgewotICAgICAgICBpZiAodG9sZXJhbmNlID09IHVuZGVmaW5lZCB8fCB0b2xlcmFu
Y2UgPT0gMCkKLSAgICAgICAgICAgIHRvbGVyYW5jZSA9IGRlZmF1bHRUb2xlcmFuY2U7Ci0gICAg
ICAgIHZhciBkaWZmID0gTWF0aC5hYnMoYWN0dWFsIC0gZGVzaXJlZCk7Ci0gICAgICAgIHJldHVy
biBkaWZmIDwgdG9sZXJhbmNlOwotICAgIH0KLSAgICAKLSAgICBmdW5jdGlvbiBzbmFwc2hvdCh3
aGljaCkKLSAgICB7Ci0gICAgICAgIGlmIChyZXN1bHQgIT0gIlBBU1MiKQotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgCi0gICAgICAgIHZhciBsZWZ0ID0gcGFyc2VJbnQod2luZG93
LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JveCcpKS5sZWZ0KTsK
LSAgICAgICAgdmFyIGV4cGVjdGVkID0gMDsKLSAgICAgICAgaWYgKCFpc0VxdWFsKGxlZnQsIGV4
cGVjdGVkKSkKLSAgICAgICAgICAgIHJlc3VsdCA9ICJGQUlMKHdhczoiK2xlZnQrIiwgZXhwZWN0
ZWQ6IitleHBlY3RlZCsiKSI7Ci0gICAgfQotCiAgICAgZnVuY3Rpb24gc3RhcnQoKQogICAgIHsK
LSAgICAgICAgc2V0VGltZW91dCgic25hcHNob3QoMCkiLCAzMDApOwotICAgICAgICBzZXRUaW1l
b3V0KCJzbmFwc2hvdCgxKSIsIDcwMCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKICAgICAgICAgCi0gICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVy
SFRNTCA9IHJlc3VsdDsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwot
ICAgICAgICB9LCA4MDApOworICAgICAgICBpZiAobGF5b3V0VGVzdENvbnRyb2xsZXIucGF1c2VB
bmltYXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQoImFuaW0iLCAwLjUsICJib3giKSkKKyAgICAg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAiRkFJ
TDogYW5pbWF0aW9uIGlzIHJ1bm5pbmciOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gIlBBU1MiOwogICAgIH0K
ICAgICAKLSAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHN0YXJ0LCBmYWxzZSk7
CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgd2luZG93LmFk
ZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBzdGFydCwgZmFsc2UpOwogICAgIAogICA8L3NjcmlwdD4K
IDwvaGVhZD4KSW5kZXg6IExheW91dFRlc3RzL2FuaW1hdGlvbnMva2V5ZnJhbWVzLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9rZXlmcmFtZXMuaHRtbAkocmV2aXNp
b24gMzkxODMpCisrKyBMYXlvdXRUZXN0cy9hbmltYXRpb25zL2tleWZyYW1lcy5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw0NyArMjYsMTYgQEAKICAgICAgICAgdG8gICB7IGxlZnQ6IDMwMHB4
OyB9CiAgICAgfQogICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdCBzcmM9ImFuaW1hdGlvbi10ZXN0
LWhlbHBlcnMuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+
Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKLSAgICB9Ci0gICAgCi0gICAgcmVzdWx0ID0gIlBBU1MiOwotICAg
IGNvbnN0IGRlZmF1bHRUb2xlcmFuY2UgPSAwLjI7Ci0gICAgCi0gICAgZnVuY3Rpb24gaXNFcXVh
bChhY3R1YWwsIGRlc2lyZWQsIHRvbGVyYW5jZSkKLSAgICB7Ci0gICAgICAgIGlmICh0b2xlcmFu
Y2UgPT0gdW5kZWZpbmVkIHx8IHRvbGVyYW5jZSA9PSAwKQotICAgICAgICAgICAgdG9sZXJhbmNl
ID0gZGVmYXVsdFRvbGVyYW5jZTsKLSAgICAgICAgdmFyIGRpZmYgPSBNYXRoLmFicyhhY3R1YWwg
LSBkZXNpcmVkKTsKLSAgICAgICAgcmV0dXJuIGRpZmYgPCB0b2xlcmFuY2U7Ci0gICAgfQogICAg
IAotICAgIGZ1bmN0aW9uIHNuYXBzaG90KHdoaWNoKQotICAgIHsKLSAgICAgICAgaWYgKHJlc3Vs
dCAhPSAiUEFTUyIpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAKLSAgICAgICAg
dmFyIGxlZnQgPSBwYXJzZUludCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnYm94JykpLmxlZnQpOwotICAgICAgICB2YXIgZXhwZWN0ZWQgPSB3aGljaCA/
IDIwMCA6IDEwMDsKLSAgICAgICAgaWYgKCFpc0VxdWFsKGxlZnQsIGV4cGVjdGVkKSkKLSAgICAg
ICAgICAgIHJlc3VsdCA9ICJGQUlMKHdhczoiK2xlZnQrIiwgZXhwZWN0ZWQ6IitleHBlY3RlZCsi
KSI7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gc3RhcnQoKQotICAgIHsKLSAgICAgICAgc2V0VGlt
ZW91dCgic25hcHNob3QoMCkiLCAzMDApOwotICAgICAgICBzZXRUaW1lb3V0KCJzbmFwc2hvdCgx
KSIsIDcwMCk7Ci0gICAgICAgIAotICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigp
IHsKLSAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhU
TUwgPSByZXN1bHQ7Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKLSAg
ICAgICAgfSwgODAwKTsKLSAgICB9CisgICAgY29uc3QgZXhwZWN0ZWRWYWx1ZXMgPSBbCisgICAg
ICAvLyBbYW5pbWF0aW9uLW5hbWUsIHRpbWUsIGVsZW1lbnQtaWQsIHByb3BlcnR5LCBleHBlY3Rl
ZC12YWx1ZSwgdG9sZXJhbmNlXQorICAgICAgWyJhbmltIiwgMC4zLCAiYm94IiwgImxlZnQiLCAx
MDAsIDFdLAorICAgICAgWyJhbmltIiwgMC43LCAiYm94IiwgImxlZnQiLCAyMDAsIDFdLAorICAg
IF07CiAgICAgCi0gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignd2Via2l0QW5pbWF0aW9u
U3RhcnQnLCBzdGFydCwgZmFsc2UpOworICAgIHJ1bkFuaW1hdGlvblRlc3QoZXhwZWN0ZWRWYWx1
ZXMpOwogICAgIAogICA8L3NjcmlwdD4KIDwvaGVhZD4KSW5kZXg6IExheW91dFRlc3RzL2FuaW1h
dGlvbnMvbGluZWhlaWdodC1hbmltYXRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2FuaW1hdGlvbnMvbGluZWhlaWdodC1hbmltYXRpb24tZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAzOTE4MykKKysrIExheW91dFRlc3RzL2FuaW1hdGlvbnMvbGluZWhlaWdodC1hbmlt
YXRpb24tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDIgKzEsMyBAQAogVGhpcyB0
ZXN0IHBlcmZvcm1zIGFuIGFuaW1hdGlvbiBvZiB0aGUgbGluZS1oZWlnaHQgcHJvcGVydHkuIEl0
IHRlc3RzIHdoZXRoZXIgb3Igbm90IHdlIGFyZSBwcm9wZXJseSBnZXR0aW5nIHRoZSBmb250LXNp
emUuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRl
eHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRl
eHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRl
eHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRl
eHQuCi1QQVNTCitQQVNTIC0gImxpbmVIZWlnaHQiIHByb3BlcnR5IGZvciAiYm94IiBlbGVtZW50
IGF0IDAuMXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMTAKKwpJbmRleDogTGF5b3V0VGVzdHMv
YW5pbWF0aW9ucy9saW5laGVpZ2h0LWFuaW1hdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2FuaW1hdGlvbnMvbGluZWhlaWdodC1hbmltYXRpb24uaHRtbAkocmV2aXNpb24gMzkx
ODMpCisrKyBMYXlvdXRUZXN0cy9hbmltYXRpb25zL2xpbmVoZWlnaHQtYW5pbWF0aW9uLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTI0LDQ2ICsyNCwxNSBAQAogICAgICAgICB0byAgIHsgbGluZS1o
ZWlnaHQ6IDJlbTsgfQogICAgIH0KICAgICA8L3N0eWxlPgorICAgIDxzY3JpcHQgc3JjPSJhbmlt
YXRpb24tdGVzdC1oZWxwZXJzLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0
Zi04Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNl
dD0idXRmLTgiPgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgfQotICAgIAotICAgIHJlc3VsdCA9ICJQ
QVNTIjsKLSAgICBjb25zdCBkZWZhdWx0VG9sZXJhbmNlID0gMTsKLSAgICAKLSAgICBmdW5jdGlv
biBpc0VxdWFsKGFjdHVhbCwgZGVzaXJlZCwgdG9sZXJhbmNlKQotICAgIHsKLSAgICAgICAgaWYg
KHRvbGVyYW5jZSA9PSB1bmRlZmluZWQgfHwgdG9sZXJhbmNlID09IDApCi0gICAgICAgICAgICB0
b2xlcmFuY2UgPSBkZWZhdWx0VG9sZXJhbmNlOwotICAgICAgICB2YXIgZGlmZiA9IE1hdGguYWJz
KGFjdHVhbCAtIGRlc2lyZWQpOwotICAgICAgICByZXR1cm4gZGlmZiA8IHRvbGVyYW5jZTsKLSAg
ICB9CiAgICAgCi0gICAgZnVuY3Rpb24gc25hcHNob3QoKQotICAgIHsKLSAgICAgICAgaWYgKHJl
c3VsdCAhPSAiUEFTUyIpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAKLSAgICAg
ICAgdmFyIGxpbmVIZWlnaHQgPSBwYXJzZUludCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnYm94JykpLmxpbmVIZWlnaHQpOwotICAgICAgICB2YXIgZXhw
ZWN0ZWQgPSAxMDsKLSAgICAgICAgaWYgKCFpc0VxdWFsKGxpbmVIZWlnaHQsIGV4cGVjdGVkKSkK
LSAgICAgICAgICAgIHJlc3VsdCA9ICJGQUlMKHdhczoiK2xpbmVIZWlnaHQrIiwgZXhwZWN0ZWQ6
IitleHBlY3RlZCsiKSI7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gc3RhcnQoKQotICAgIHsKLSAg
ICAgICAgc2V0VGltZW91dCgic25hcHNob3QoKSIsIDEwMCk7Ci0gICAgICAgIAotICAgICAgICB3
aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSByZXN1bHQ7Ci0gICAgICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKLSAgICAgICAgfSwgMzAwKTsKLSAgICB9CisgICAgY29u
c3QgZXhwZWN0ZWRWYWx1ZXMgPSBbCisgICAgICAvLyBbYW5pbWF0aW9uLW5hbWUsIHRpbWUsIGVs
ZW1lbnQtaWQsIHByb3BlcnR5LCBleHBlY3RlZC12YWx1ZSwgdG9sZXJhbmNlXQorICAgICAgWyJh
bmltIiwgMC4xLCAiYm94IiwgImxpbmVIZWlnaHQiLCAxMCwgMV0sCisgICAgXTsKICAgICAKLSAg
ICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd3ZWJraXRBbmltYXRpb25TdGFydCcsIHN0YXJ0
LCBmYWxzZSk7CisgICAgcnVuQW5pbWF0aW9uVGVzdChleHBlY3RlZFZhbHVlcyk7CiAgICAgCiAg
IDwvc2NyaXB0PgogPC9oZWFkPgpJbmRleDogTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9tYXRyaXgt
YW5pbS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9t
YXRyaXgtYW5pbS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDM5MTgzKQorKysgTGF5b3V0VGVzdHMv
YW5pbWF0aW9ucy9tYXRyaXgtYW5pbS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEs
MiArMSwzIEBACiBUaGlzIHRlc3QgcGVyZm9ybXMgYW4gYW5pbWF0aW9uIG9mIHRoZSBtYXRyaXgg
b3BlcmF0b3IuIEl0IGFuaW1hdGVzIG92ZXIgMiBzZWNvbmRzLiBBdCAxIHNlY29uZCBpdCB0YWtl
cyBhIHNuYXBzaG90IGFuZCBleHBlY3RzIHRoZSByZXN1bHQgdG8gYmUgd2l0aGluIHJhbmdlLgot
UEFTUworUEFTUyAtICJ3ZWJraXRUcmFuc2Zvcm0iIHByb3BlcnR5IGZvciAiYm94IiBlbGVtZW50
IGF0IDAuNXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMSwwLDAsMQorCkluZGV4OiBMYXlvdXRU
ZXN0cy9hbmltYXRpb25zL21hdHJpeC1hbmltLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvYW5pbWF0aW9ucy9tYXRyaXgtYW5pbS5odG1sCShyZXZpc2lvbiAzOTE4MykKKysrIExheW91
dFRlc3RzL2FuaW1hdGlvbnMvbWF0cml4LWFuaW0uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTks
NTMgKzE5LDE2IEBACiAgICAgICAgIHRvICAgeyAtd2Via2l0LXRyYW5zZm9ybTogbWF0cml4KDAu
NzA3LCAwLjcwNywgLTAuNzA3LCAwLjcwNywgMCwgMCk7IH0KICAgICB9CiAgIDwvc3R5bGU+Cisg
IDxzY3JpcHQgc3JjPSJhbmltYXRpb24tdGVzdC1oZWxwZXJzLmpzIiB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij48L3NjcmlwdD4KICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7Ci0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgfQotICAgIAotICAg
IHJlc3VsdCA9ICJQQVNTIjsKLSAgICBjb25zdCBkZWZhdWx0VG9sZXJhbmNlID0gMC4xOwotICAg
IAotICAgIGNvbnN0IGV4cGVjdGVkID0gIFsgMSwgMCwgMCwgMSwgMCwgMCBdOwogICAgIAotICAg
IGZ1bmN0aW9uIGlzRXF1YWwoYWN0dWFsLCBkZXNpcmVkLCB0b2xlcmFuY2UpCi0gICAgewotICAg
ICAgICBpZiAodG9sZXJhbmNlID09IHVuZGVmaW5lZCB8fCB0b2xlcmFuY2UgPT0gMCkKLSAgICAg
ICAgICAgIHRvbGVyYW5jZSA9IGRlZmF1bHRUb2xlcmFuY2U7Ci0gICAgICAgIHZhciBkaWZmID0g
TWF0aC5hYnMoYWN0dWFsIC0gZGVzaXJlZCk7Ci0gICAgICAgIHJldHVybiBkaWZmIDwgdG9sZXJh
bmNlOwotICAgIH0KICAgICAKLSAgICBmdW5jdGlvbiBzbmFwc2hvdCh3aGljaCkKLSAgICB7Ci0g
ICAgICAgIGlmIChyZXN1bHQgIT0gIlBBU1MiKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgCi0gICAgICAgIHZhciB0ID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2JveCcpKS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKCctd2Via2l0LXRyYW5z
Zm9ybScpOwotCi0gICAgICAgIGZvciAoaSA9IDA7IGkgPCA2OyArK2kpIHsKLSAgICAgICAgICAg
IHZhciB2YWwgPSB0WzBdW2ldLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05V
TUJFUik7Ci0gICAgICAgICAgICBpZiAoIWlzRXF1YWwodmFsLCBleHBlY3RlZFtpXSkpIHsKLSAg
ICAgICAgICAgICAgICByZXN1bHQgPSAiRkFJTChtYXRyaXhbIitpKyJdIHdhczoiK3ZhbCsiLCBl
eHBlY3RlZDoiK2V4cGVjdGVkW2ldKyIpIjsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBzdGFydCgpCi0gICAg
ewotICAgICAgICBzZXRUaW1lb3V0KCJzbmFwc2hvdCgwKSIsIDUwMCk7Ci0gICAgICAgIAotICAg
ICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSByZXN1bHQ7Ci0gICAgICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKLSAgICAgICAgfSwgNjAwKTsKLSAgICB9Cisg
ICAgY29uc3QgZXhwZWN0ZWRWYWx1ZXMgPSBbCisgICAgICAvLyBbYW5pbWF0aW9uLW5hbWUsIHRp
bWUsIGVsZW1lbnQtaWQsIHByb3BlcnR5LCBleHBlY3RlZC12YWx1ZSwgdG9sZXJhbmNlXQorICAg
ICAgWyJhbmltIiwgMC41LCAiYm94IiwgIndlYmtpdFRyYW5zZm9ybSIsIFsxLDAsMCwxXSwgMC4x
XSwKKyAgICBdOwogICAgIAotICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3dlYmtpdEFu
aW1hdGlvblN0YXJ0Jywgc3RhcnQsIGZhbHNlKTsKKyAgICBydW5BbmltYXRpb25UZXN0KGV4cGVj
dGVkVmFsdWVzKTsKICAgICAKICAgPC9zY3JpcHQ+CiA8L2hlYWQ+CkluZGV4OiBMYXlvdXRUZXN0
cy9hbmltYXRpb25zL211bHRpcGxlLWFuaW1hdGlvbnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2FuaW1hdGlvbnMvbXVsdGlwbGUtYW5pbWF0aW9ucy1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDM5MTgzKQorKysgTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9tdWx0aXBsZS1h
bmltYXRpb25zLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDggQEAKIFRo
aXMgdGVzdCBwZXJmb3JtcyBhbmltYXRpb25zIG9mIHRoZSBsZWZ0IHByb3BlcnR5IG9uIHR3byBi
b3hlcyBvdmVyIDIgc2Vjb25kcy4gSXQgdGFrZXMgMyBzbmFwc2hvdHMgZWFjaCBhbmQgZXhwZWN0
cyBlYWNoIHJlc3VsdCB0byBiZSB3aXRoaW4gYSBzcGVjaWZpZWQgcmFuZ2UuCi1QQVNTIC0gYm94
MSBhdCA0MDAgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMjAKLVBBU1MgLSBib3gyIGF0IDUwMCBz
YXcgc29tZXRoaW5nIGNsb3NlIHRvOiAyMAotUEFTUyAtIGJveDIgYXQgMTAwMCBzYXcgc29tZXRo
aW5nIGNsb3NlIHRvOiAzMAotUEFTUyAtIGJveDEgYXQgMTIwMCBzYXcgc29tZXRoaW5nIGNsb3Nl
IHRvOiAxMAotUEFTUyAtIGJveDIgYXQgMTUwMCBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAyNQot
UEFTUyAtIGJveDEgYXQgMTYwMCBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAxNQorUEFTUyAtICJs
ZWZ0IiBwcm9wZXJ0eSBmb3IgImJveDEiIGVsZW1lbnQgYXQgMC40cyBzYXcgc29tZXRoaW5nIGNs
b3NlIHRvOiAyMAorUEFTUyAtICJsZWZ0IiBwcm9wZXJ0eSBmb3IgImJveDIiIGVsZW1lbnQgYXQg
MC41cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAyMAorUEFTUyAtICJsZWZ0IiBwcm9wZXJ0eSBm
b3IgImJveDIiIGVsZW1lbnQgYXQgMXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMzAKK1BBU1Mg
LSAibGVmdCIgcHJvcGVydHkgZm9yICJib3gxIiBlbGVtZW50IGF0IDEuMnMgc2F3IHNvbWV0aGlu
ZyBjbG9zZSB0bzogMTAKK1BBU1MgLSAibGVmdCIgcHJvcGVydHkgZm9yICJib3gyIiBlbGVtZW50
IGF0IDEuNXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMjUKK1BBU1MgLSAibGVmdCIgcHJvcGVy
dHkgZm9yICJib3gxIiBlbGVtZW50IGF0IDEuNnMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMTUK
IApJbmRleDogTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9tdWx0aXBsZS1hbmltYXRpb25zLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9tdWx0aXBsZS1hbmltYXRpb25z
Lmh0bWwJKHJldmlzaW9uIDM5MTgzKQorKysgTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9tdWx0aXBs
ZS1hbmltYXRpb25zLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQzLDMzICs0MywxNyBAQAogICA8
c2NyaXB0IHNyYz0iYW5pbWF0aW9uLXRlc3QtaGVscGVycy5qcyIgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBjaGFyc2V0PSJ1dGYtOCI+PC9zY3JpcHQ+CiAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+CiAKLSAgICBjb25zdCBkZWZhdWx0VG9sZXJhbmNlID0g
MjsKLSAgICAKLSAgICBjb25zdCBleHBlY3RlZCA9IFsKLSAgICAgIC8vIFt0aW1lLCBwcm9wZXJ0
eSwgZWxlbWVudC1pZCwgZXhwZWN0ZWQtdmFsdWVdCi0gICAgICBbNDAwLCAibGVmdCIsICJib3gx
IiwgMjBdLAotICAgICAgWzUwMCwgImxlZnQiLCAiYm94MiIsIDIwXSwKLSAgICAgIFsxMDAwLCAi
bGVmdCIsICJib3gyIiwgMzBdLAotICAgICAgWzEyMDAsICJsZWZ0IiwgImJveDEiLCAxMF0sCi0g
ICAgICBbMTUwMCwgImxlZnQiLCAiYm94MiIsIDI1XSwKLSAgICAgIFsxNjAwLCAibGVmdCIsICJi
b3gxIiwgMTVdLAorICAgIGNvbnN0IGV4cGVjdGVkVmFsdWVzID0gWworICAgICAgLy8gW2FuaW1h
dGlvbi1uYW1lLCB0aW1lLCBlbGVtZW50LWlkLCBwcm9wZXJ0eSwgZXhwZWN0ZWQtdmFsdWUsIHRv
bGVyYW5jZV0KKyAgICAgIFsiYW5pbTEiLCAwLjQsICJib3gxIiwgImxlZnQiLCAyMCwgMl0sCisg
ICAgICBbImFuaW0yIiwgMC41LCAiYm94MiIsICJsZWZ0IiwgMjAsIDJdLAorICAgICAgWyJhbmlt
MiIsIDEuMCwgImJveDIiLCAibGVmdCIsIDMwLCAyXSwKKyAgICAgIFsiYW5pbTEiLCAxLjIsICJi
b3gxIiwgImxlZnQiLCAxMCwgMl0sCisgICAgICBbImFuaW0yIiwgMS41LCAiYm94MiIsICJsZWZ0
IiwgMjUsIDJdLAorICAgICAgWyJhbmltMSIsIDEuNiwgImJveDEiLCAibGVmdCIsIDE1LCAyXSwK
ICAgICBdOwogCi0gICAgdmFyIHN0YXJ0ZWQgPSBmYWxzZTsKLQotICAgIGZ1bmN0aW9uIHN0YXJ0
KCkKLSAgICB7Ci0gICAgICAgIGlmIChzdGFydGVkKSByZXR1cm47Ci0gICAgICAgIHN0YXJ0ZWQg
PSB0cnVlOwotICAgICAgICBzZXR1cCgpOwotICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5j
dGlvbigpIHsKLSAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3gxJykuc3R5
bGUuZGlzcGxheSA9ICJub25lIjsKLSAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdib3gyJykuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKLSAgICAgICAgICAgIGNsZWFudXAoKTsK
LSAgICAgICAgfSwgMjEwMCk7Ci0gICAgfQotICAgIAotICAgIGRvY3VtZW50LmFkZEV2ZW50TGlz
dGVuZXIoJ3dlYmtpdEFuaW1hdGlvblN0YXJ0Jywgc3RhcnQsIGZhbHNlKTsKKyAgICBydW5Bbmlt
YXRpb25UZXN0KGV4cGVjdGVkVmFsdWVzKTsKICAgICAKICAgPC9zY3JpcHQ+CiA8L2hlYWQ+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9hbmltYXRpb25zL211bHRpcGxlLWtleWZyYW1lcy1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9tdWx0aXBsZS1rZXlmcmFt
ZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAzOTE4MykKKysrIExheW91dFRlc3RzL2FuaW1hdGlv
bnMvbXVsdGlwbGUta2V5ZnJhbWVzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIFRoaXMgdGVzdCBwZXJmb3JtcyBhIGtleWZyYW1lZCBhbmltYXRpb24gb2YgdGhl
IGxlZnQgcHJvcGVydHkuIEl0IGFuaW1hdGVzIG92ZXIgMiBzZWNvbmRzLiBJdCB0YWtlcyAzIHNu
YXBzaG90cyBhbmQgZXhwZWN0cyBlYWNoIHJlc3VsdCB0byBiZSB3aXRoaW4gYSBzcGVjaWZpZWQg
cmFuZ2UuCi1QQVNTIC0gYm94IGF0IDQwMCBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAyMAotUEFT
UyAtIGJveCBhdCAxMjAwIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDEwCi1QQVNTIC0gYm94IGF0
IDE2MDAgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMTUKK1BBU1MgLSAibGVmdCIgcHJvcGVydHkg
Zm9yICJib3giIGVsZW1lbnQgYXQgMC40cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAyMAorUEFT
UyAtICJsZWZ0IiBwcm9wZXJ0eSBmb3IgImJveCIgZWxlbWVudCBhdCAxLjJzIHNhdyBzb21ldGhp
bmcgY2xvc2UgdG86IDEwCitQQVNTIC0gImxlZnQiIHByb3BlcnR5IGZvciAiYm94IiBlbGVtZW50
IGF0IDEuNnMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMTUKIApJbmRleDogTGF5b3V0VGVzdHMv
YW5pbWF0aW9ucy9tdWx0aXBsZS1rZXlmcmFtZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9hbmltYXRpb25zL211bHRpcGxlLWtleWZyYW1lcy5odG1sCShyZXZpc2lvbiAzOTE4MykK
KysrIExheW91dFRlc3RzL2FuaW1hdGlvbnMvbXVsdGlwbGUta2V5ZnJhbWVzLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDI1ICsyNywxNCBAQAogICA8c2NyaXB0IHNyYz0iYW5pbWF0aW9uLXRl
c3QtaGVscGVycy5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+PC9z
Y3JpcHQ+CiAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+
CiAKLSAgICBjb25zdCBkZWZhdWx0VG9sZXJhbmNlID0gMjsKLSAgICAKLSAgICBjb25zdCBleHBl
Y3RlZCA9IFsKLSAgICAgIC8vIFt0aW1lLCBwcm9wZXJ0eSwgZWxlbWVudC1pZCwgZXhwZWN0ZWQt
dmFsdWVdCi0gICAgICBbNDAwLCAibGVmdCIsICJib3giLCAyMF0sCi0gICAgICBbMTIwMCwgImxl
ZnQiLCAiYm94IiwgMTBdLAotICAgICAgWzE2MDAsICJsZWZ0IiwgImJveCIsIDE1XSwKKyAgICBj
b25zdCBleHBlY3RlZFZhbHVlcyA9IFsKKyAgICAgIC8vIFthbmltYXRpb24tbmFtZSwgdGltZSwg
ZWxlbWVudC1pZCwgcHJvcGVydHksIGV4cGVjdGVkLXZhbHVlLCB0b2xlcmFuY2VdCisgICAgICBb
ImFuaW0iLCAwLjQsICJib3giLCAibGVmdCIsIDIwLCAyXSwKKyAgICAgIFsiYW5pbSIsIDEuMiwg
ImJveCIsICJsZWZ0IiwgMTAsIDJdLAorICAgICAgWyJhbmltIiwgMS42LCAiYm94IiwgImxlZnQi
LCAxNSwgMl0sCiAgICAgXTsKLQotICAgIGZ1bmN0aW9uIHN0YXJ0KCkKLSAgICB7Ci0gICAgICAg
IHNldHVwKCk7Ci0gICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JveCcpLnN0eWxlLmRpc3BsYXkgPSAibm9u
ZSI7Ci0gICAgICAgICAgICBjbGVhbnVwKCk7Ci0gICAgICAgIH0sIDIxMDApOwotICAgIH0KICAg
ICAKLSAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd3ZWJraXRBbmltYXRpb25TdGFydCcs
IHN0YXJ0LCBmYWxzZSk7CisgICAgcnVuQW5pbWF0aW9uVGVzdChleHBlY3RlZFZhbHVlcyk7CiAg
ICAgCiAgIDwvc2NyaXB0PgogPC9oZWFkPgpJbmRleDogTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy90
cmFuc2l0aW9uLWFuZC1hbmltYXRpb24tMS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvYW5pbWF0aW9ucy90cmFuc2l0aW9uLWFuZC1hbmltYXRpb24tMS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDM5MTgzKQorKysgTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy90cmFuc2l0aW9u
LWFuZC1hbmltYXRpb24tMS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMiArMSwz
IEBACiBUaGlzIHRlc3QgaGFzIGEgdHJhbnNpdGlvbiBhbmQgYW5pbWF0aW9uIG9uIHRoZSBzYW1l
IHByb3BlcnR5ICgtd2Via2l0LXRyYW5zZm9ybSkuIEJ1dCB0aGUgdHJhbnNpdGlvbiBpcyBuZXZl
ciB0cmlnZ2VyZWQsIHNvIG5vdGhpbmcgc2hvdWxkIGJlIG1vdmluZyB3aGVuIHRoZSBhbmltYXRp
b24gZmluaXNoZXMuCi1QQVNTCitQQVNTIC0gIndlYmtpdFRyYW5zZm9ybSIgcHJvcGVydHkgZm9y
ICJib3giIGVsZW1lbnQgYXQgMC41NXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogbm9uZQorCklu
ZGV4OiBMYXlvdXRUZXN0cy9hbmltYXRpb25zL3RyYW5zaXRpb24tYW5kLWFuaW1hdGlvbi0xLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy90cmFuc2l0aW9uLWFuZC1h
bmltYXRpb24tMS5odG1sCShyZXZpc2lvbiAzOTE4MykKKysrIExheW91dFRlc3RzL2FuaW1hdGlv
bnMvdHJhbnNpdGlvbi1hbmQtYW5pbWF0aW9uLTEuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjQs
NDIgKzI0LDE1IEBACiAgICAgICAgIHRvICAgeyAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRl
WCgzMDBweCk7IH0KICAgICB9CiAgICAgPC9zdHlsZT4KKyAgICA8c2NyaXB0IHNyYz0iYW5pbWF0
aW9uLXRlc3QtaGVscGVycy5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYt
OCI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9
InV0Zi04Ij4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgIH0KLSAgICAKLSAgICByZXN1bHQgPSAiUEFT
UyI7Ci0gICAgY29uc3QgZGVmYXVsdFRvbGVyYW5jZSA9IDAuMjsKLSAgICAKLSAgICBmdW5jdGlv
biBpc0VxdWFsKGFjdHVhbCwgZGVzaXJlZCwgdG9sZXJhbmNlKQotICAgIHsKLSAgICAgICAgaWYg
KHRvbGVyYW5jZSA9PSB1bmRlZmluZWQgfHwgdG9sZXJhbmNlID09IDApCi0gICAgICAgICAgICB0
b2xlcmFuY2UgPSBkZWZhdWx0VG9sZXJhbmNlOwotICAgICAgICB2YXIgZGlmZiA9IE1hdGguYWJz
KGFjdHVhbCAtIGRlc2lyZWQpOwotICAgICAgICByZXR1cm4gZGlmZiA8IHRvbGVyYW5jZTsKLSAg
ICB9CiAgICAgCi0gICAgZnVuY3Rpb24gc25hcHNob3Qod2hpY2gpCi0gICAgewotICAgICAgICB2
YXIgbSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdi
b3gnKSkud2Via2l0VHJhbnNmb3JtOwotICAgICAgICBpZiAobSAhPSAibm9uZSIpCi0gICAgICAg
ICAgICByZXN1bHQgPSAiRkFJTCh3YXM6IittKyIsIGV4cGVjdGVkOm5vbmUpIjsKLSAgICB9Ci0K
LSAgICBmdW5jdGlvbiBzdGFydCgpCi0gICAgewotICAgICAgICBzZXRUaW1lb3V0KCJzbmFwc2hv
dCgpIiwgNTUwKTsKLSAgICAgICAgCi0gICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVy
SFRNTCA9IHJlc3VsdDsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwot
ICAgICAgICB9LCA2MDApOwotICAgIH0KKyAgICBjb25zdCBleHBlY3RlZFZhbHVlcyA9IFsKKyAg
ICAgIC8vIFthbmltYXRpb24tbmFtZSwgdGltZSwgZWxlbWVudC1pZCwgcHJvcGVydHksIGV4cGVj
dGVkLXZhbHVlLCB0b2xlcmFuY2VdCisgICAgICBbbnVsbCwgMC41NSwgImJveCIsICJ3ZWJraXRU
cmFuc2Zvcm0iLCAibm9uZSIsIG51bGxdLAorICAgIF07CiAgICAgCi0gICAgZG9jdW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcignd2Via2l0QW5pbWF0aW9uU3RhcnQnLCBzdGFydCwgZmFsc2UpOworICAg
IHJ1bkFuaW1hdGlvblRlc3QoZXhwZWN0ZWRWYWx1ZXMpOwogICAgIAogICA8L3NjcmlwdD4KIDwv
aGVhZD4KSW5kZXg6IExheW91dFRlc3RzL2FuaW1hdGlvbnMvdHJhbnNpdGlvbi1hbmQtYW5pbWF0
aW9uLTItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FuaW1hdGlvbnMv
dHJhbnNpdGlvbi1hbmQtYW5pbWF0aW9uLTItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAzOTE4MykK
KysrIExheW91dFRlc3RzL2FuaW1hdGlvbnMvdHJhbnNpdGlvbi1hbmQtYW5pbWF0aW9uLTItZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDIgKzEsMyBAQAogVGhpcyB0ZXN0IGhhcyBh
IHRyYW5zaXRpb24gYW5kIGFuaW1hdGlvbiBvbiB0aGUgc2FtZSBwcm9wZXJ0eSAoLXdlYmtpdC10
cmFuc2Zvcm0pLiBUaGUgYW5pbWF0aW9uIHN0YXJ0cyBhbmQgdGhlbiB0aGUgdHJhbnNpdGlvbiBp
cyB0cmlnZ2VyZWQuIFRoZSB0cmFuc2l0aW9uIHNob3VsZCBzdGFydCBhdCB0aGUgcG9zaXRpb24g
YmVmb3JlIHRoZSBhbmltYXRpb24gc3RhcnRlZCAodGhlIHVuYW5pbWF0ZWQgcG9zaXRpb24pLCB3
aGljaCBpcyAoMCwwKS4gSWYgaXQgc3RhcnRzIGZyb20gdGhlIHN0YXJ0IHBvaW50IG9mIHRoZSBh
bmltYXRpb24gKDAsMTAwKSB0aGVuIHRoZXJlIGlzIGFuIGVycm9yCi1QQVNTCitQQVNTIC0gIndl
YmtpdFRyYW5zZm9ybS41IiBwcm9wZXJ0eSBmb3IgImJveCIgZWxlbWVudCBhdCAwLjRzIHNhdyBz
b21ldGhpbmcgY2xvc2UgdG86IDAKKwpJbmRleDogTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy90cmFu
c2l0aW9uLWFuZC1hbmltYXRpb24tMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Fu
aW1hdGlvbnMvdHJhbnNpdGlvbi1hbmQtYW5pbWF0aW9uLTIuaHRtbAkocmV2aXNpb24gMzkxODMp
CisrKyBMYXlvdXRUZXN0cy9hbmltYXRpb25zL3RyYW5zaXRpb24tYW5kLWFuaW1hdGlvbi0yLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDQ3ICsyNSwyMCBAQAogICAgICAgICB0byAgIHsgLXdl
YmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSg0MDBweCwgMTAwcHgpIH0KICAgICB9CiAgICAgPC9z
dHlsZT4KKyAgICA8c2NyaXB0IHNyYz0iYW5pbWF0aW9uLXRlc3QtaGVscGVycy5qcyIgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwot
ICAgIH0KLSAgICAKLSAgICByZXN1bHQgPSAiUEFTUyI7Ci0gICAgY29uc3QgZGVmYXVsdFRvbGVy
YW5jZSA9IDAuMTsKICAgICAKLSAgICBmdW5jdGlvbiBpc0VxdWFsKGFjdHVhbCwgZGVzaXJlZCwg
dG9sZXJhbmNlKQotICAgIHsKLSAgICAgICAgaWYgKHRvbGVyYW5jZSA9PSB1bmRlZmluZWQgfHwg
dG9sZXJhbmNlID09IDApCi0gICAgICAgICAgICB0b2xlcmFuY2UgPSBkZWZhdWx0VG9sZXJhbmNl
OwotICAgICAgICB2YXIgZGlmZiA9IE1hdGguYWJzKGFjdHVhbCAtIGRlc2lyZWQpOwotICAgICAg
ICByZXR1cm4gZGlmZiA8IHRvbGVyYW5jZTsKLSAgICB9CisgICAgY29uc3QgZXhwZWN0ZWRWYWx1
ZXMgPSBbCisgICAgICAvLyBbYW5pbWF0aW9uLW5hbWUsIHRpbWUsIGVsZW1lbnQtaWQsIHByb3Bl
cnR5LCBleHBlY3RlZC12YWx1ZSwgdG9sZXJhbmNlXQorICAgICAgW251bGwsIDAuNCwgImJveCIs
ICJ3ZWJraXRUcmFuc2Zvcm0uNSIsIDAsIDBdLAorICAgIF07CiAgICAgCi0gICAgZnVuY3Rpb24g
c25hcHNob3QoKQotICAgIHsKLSAgICAgICAgdmFyIG0gPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHls
ZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94JykpLndlYmtpdFRyYW5zZm9ybTsKLSAgICAg
ICAgdmFyIGEgPSBtLnNwbGl0KCIoIik7Ci0gICAgICAgIGEgPSBhWzFdLnNwbGl0KCIsIik7Ci0g
ICAgICAgIAotICAgICAgICBpZiAoIWlzRXF1YWwocGFyc2VGbG9hdChhWzVdKSwgMCkpCi0gICAg
ICAgICAgICByZXN1bHQgPSAiRkFJTCh3YXM6IithWzVdKyIsIGV4cGVjdGVkOjApIjsKLSAgICB9
Ci0KLSAgICBmdW5jdGlvbiBzdGFydCgpCisgICAgZnVuY3Rpb24gc2V0dXAoKQogICAgIHsKICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJveCIpLnN0eWxlLndlYmtpdFRyYW5zZm9y
bSA9ICJ0cmFuc2xhdGVYKDQwMHB4KSI7Ci0gICAgICAgIAotICAgICAgICBzZXRUaW1lb3V0KCJz
bmFwc2hvdCgpIiwgNDAwKTsKLSAgICAgICAgCi0gICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgewotICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcp
LmlubmVySFRNTCA9IHJlc3VsdDsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOwotICAgICAgICB9LCA1MDApOwogICAgIH0KICAgICAKLSAgICBkb2N1bWVudC5hZGRFdmVu
dExpc3RlbmVyKCd3ZWJraXRBbmltYXRpb25TdGFydCcsIHN0YXJ0LCBmYWxzZSk7CisgICAgcnVu
QW5pbWF0aW9uVGVzdChleHBlY3RlZFZhbHVlcywgc2V0dXApOwogICAgIAogICA8L3NjcmlwdD4K
IDwvaGVhZD4KSW5kZXg6IExheW91dFRlc3RzL2FuaW1hdGlvbnMvd2lkdGgtdXNpbmctZW1zLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hbmltYXRpb25zL3dpZHRoLXVz
aW5nLWVtcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDM5MTgzKQorKysgTGF5b3V0VGVzdHMvYW5p
bWF0aW9ucy93aWR0aC11c2luZy1lbXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
LDIgKzEsMyBAQAogVGhpcyB0ZXN0IHBlcmZvcm1zIGFuIGFuaW1hdGlvbiBvZiB0aGUgd2lkdGgg
cHJvcGVydHkgdXNpbmcgJ2VtJyB1bml0cy4gSXQgdGVzdHMgd2hldGhlciBvciBub3Qgd2UgYXJl
IHByb3Blcmx5IGdldHRpbmcgdGhlIGRlZmF1bHQgZm9udC1zaXplLiBIZXJlIGlzIHNvbWUgdGV4
dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4
dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LgotUEFTUworUEFTUyAtICJ3
aWR0aCIgcHJvcGVydHkgZm9yICJib3giIGVsZW1lbnQgYXQgMC4zMzNzIHNhdyBzb21ldGhpbmcg
Y2xvc2UgdG86IDEzMworCkluZGV4OiBMYXlvdXRUZXN0cy9hbmltYXRpb25zL3dpZHRoLXVzaW5n
LWVtcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FuaW1hdGlvbnMvd2lkdGgtdXNp
bmctZW1zLmh0bWwJKHJldmlzaW9uIDM5MTgzKQorKysgTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy93
aWR0aC11c2luZy1lbXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjcsNDYgKzI3LDE1IEBACiAg
ICAgICAgIHRvICAgeyB3aWR0aDogMjBlbTsgfQogICAgIH0KICAgICA8L3N0eWxlPgorICAgIDxz
Y3JpcHQgc3JjPSJhbmltYXRpb24tdGVzdC1oZWxwZXJzLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIGNoYXJzZXQ9InV0Zi04Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgfQotICAgIAot
ICAgIHJlc3VsdCA9ICJQQVNTIjsKLSAgICBjb25zdCBkZWZhdWx0VG9sZXJhbmNlID0gMTA7Ci0g
ICAgCi0gICAgZnVuY3Rpb24gaXNFcXVhbChhY3R1YWwsIGRlc2lyZWQsIHRvbGVyYW5jZSkKLSAg
ICB7Ci0gICAgICAgIGlmICh0b2xlcmFuY2UgPT0gdW5kZWZpbmVkIHx8IHRvbGVyYW5jZSA9PSAw
KQotICAgICAgICAgICAgdG9sZXJhbmNlID0gZGVmYXVsdFRvbGVyYW5jZTsKLSAgICAgICAgdmFy
IGRpZmYgPSBNYXRoLmFicyhhY3R1YWwgLSBkZXNpcmVkKTsKLSAgICAgICAgcmV0dXJuIGRpZmYg
PCB0b2xlcmFuY2U7Ci0gICAgfQogICAgIAotICAgIGZ1bmN0aW9uIHNuYXBzaG90KGV4cGVjdGVk
KQotICAgIHsKLSAgICAgICAgaWYgKHJlc3VsdCAhPSAiUEFTUyIpCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICAKLSAgICAgICAgdmFyIHdpZHRoID0gcGFyc2VJbnQod2luZG93Lmdl
dENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JveCcpKS53aWR0aCk7Ci0g
ICAgICAgIGlmICghaXNFcXVhbCh3aWR0aCwgZXhwZWN0ZWQpKSB7Ci0gICAgICAgICAgICByZXN1
bHQgPSAiRkFJTCh3YXM6Iit3aWR0aCsiLCBleHBlY3RlZDoiK2V4cGVjdGVkKyIpIjsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIGZ1bmN0aW9uIHN0YXJ0KCkKLSAgICB7Ci0gICAgICAgIHNldFRp
bWVvdXQoInNuYXBzaG90KDEzMykiLCAzMzMpOwotICAgICAgICAKLSAgICAgICAgd2luZG93LnNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgncmVzdWx0JykuaW5uZXJIVE1MID0gcmVzdWx0OwotICAgICAgICAgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7Ci0gICAgICAgIH0sIDQwMCk7Ci0gICAgfQorICAgIGNvbnN0IGV4cGVj
dGVkVmFsdWVzID0gWworICAgICAgLy8gW2FuaW1hdGlvbi1uYW1lLCB0aW1lLCBlbGVtZW50LWlk
LCBwcm9wZXJ0eSwgZXhwZWN0ZWQtdmFsdWUsIHRvbGVyYW5jZV0KKyAgICAgIFsiYW5pbSIsIDAu
MzMzLCAiYm94IiwgIndpZHRoIiwgMTMzLCAxMF0sCisgICAgXTsKICAgICAKLSAgICBkb2N1bWVu
dC5hZGRFdmVudExpc3RlbmVyKCd3ZWJraXRBbmltYXRpb25TdGFydCcsIHN0YXJ0LCBmYWxzZSk7
CisgICAgcnVuQW5pbWF0aW9uVGVzdChleHBlY3RlZFZhbHVlcyk7CiAgICAgCiAgIDwvc2NyaXB0
PgogPC9oZWFkPgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQJKHJldmlzaW9uIDM5MTgz
KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAg
LTQ0NSw2ICs0NDUsOCBAQCBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3VwbG9hZC1vbnByb2dy
CiAjIE5vIHRyYW5zaXRpb24gLyBhbmltYXRpb24gcGF1c2UgTGF5b3V0Q29udHJvbGxlciBBUEkg
b24gV2luZG93cyBEUlQgKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjIzOSkKIGFuaW1hdGlvbnMvYW5pbWF0aW9uLWRydC1hcGkuaHRtbAogYW5pbWF0aW9ucy9hbmlt
YXRpb24tZHJ0LWFwaS1tdWx0aXBsZS1rZXlmcmFtZXMuaHRtbAorYW5pbWF0aW9ucy9rZXlmcmFt
ZXMtZnJvbS1taXNzaW5nLmh0bWwKK2FuaW1hdGlvbnMva2V5ZnJhbWVzLXRvLW1pc3NpbmcuaHRt
bAogdHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1kcnQtYXBpLmh0bWwKIHRyYW5zaXRpb25zL3RyYW5z
aXRpb24tZHJ0LWFwaS1kZWxheS5odG1sCiB0cmFuc2l0aW9ucy90cmFuc2l0aW9uLXNob3J0aGFu
ZC1kZWxheS5odG1sCg==
</data>
<flag name="review"
          id="12174"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>