<?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>232693</bug_id>
          
          <creation_ts>2021-11-03 20:37:59 -0700</creation_ts>
          <short_desc>Ignore BroadcastChannel::postMessage from detached iframe / closing worker contexts</short_desc>
          <delta_ts>2021-11-10 09:19:28 -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>New Bugs</component>
          <version>Safari Technology Preview</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=232946</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>232855</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrew Williams">awillia</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>clopez</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>kangil.han</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1811746</commentid>
    <comment_count>0</comment_count>
    <who name="Andrew Williams">awillia</who>
    <bug_when>2021-11-03 20:37:59 -0700</bug_when>
    <thetext>Pending an update to the spec [1], calling postMessage on BroadcastChannel objects associated with detached iframes or closing workers should have no effect.

See new tests in [2] for more details.

Per [3] it sounds like postMessage might throw an exception (as if the BroadcastChannel was closed) instead of the postMessage having no effect in at least certain detached iframe cases.

[1] https://github.com/whatwg/html/issues/7219
[2] https://github.com/web-platform-tests/wpt/pull/31290
[3] https://github.com/whatwg/html/issues/7219#issuecomment-943480682</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812884</commentid>
    <comment_count>1</comment_count>
      <attachid>443618</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-11-08 15:30:41 -0800</bug_when>
    <thetext>Created attachment 443618
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812894</commentid>
    <comment_count>2</comment_count>
      <attachid>443623</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-11-08 15:45:23 -0800</bug_when>
    <thetext>Created attachment 443623
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812898</commentid>
    <comment_count>3</comment_count>
      <attachid>443623</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-11-08 15:47:31 -0800</bug_when>
    <thetext>Comment on attachment 443623
Patch

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

&gt; LayoutTests/imported/w3c/web-platform-tests/webmessaging/broadcastchannel/service-worker.https-expected.txt:2
&gt; +FAIL BroadcastChannel works in service workers promise_test: Unhandled rejection with value: object &quot;TypeError: ReferenceError: Can&apos;t find variable: BroadcastChannel&quot;

Will address this failure via https://bugs.webkit.org/show_bug.cgi?id=232855.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812939</commentid>
    <comment_count>4</comment_count>
      <attachid>443635</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-11-08 17:20:53 -0800</bug_when>
    <thetext>Created attachment 443635
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813186</commentid>
    <comment_count>5</comment_count>
      <attachid>443635</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-11-09 09:34:29 -0800</bug_when>
    <thetext>Comment on attachment 443635
Patch

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

&gt; Source/WebCore/dom/BroadcastChannel.cpp:187
&gt; +    if (!isEligibleForMessaging())
&gt; +        return { };
&gt; +
&gt;      if (m_isClosed)
&gt;          return Exception { InvalidStateError, &quot;This BroadcastChannel is closed&quot; };

So while closing we silently do nothing, and once closed we throw an exception. To me this seems like a peculiar design.

&gt; Source/WebCore/dom/BroadcastChannel.cpp:235
&gt; +    if (!isEligibleForMessaging())
&gt; +        return;
&gt; +
&gt;      if (m_isClosed)
&gt;          return;

If it wasn’t for the unusual case above, I would suggest we merge the m_closed check into isEligibleForMessaging.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813187</commentid>
    <comment_count>6</comment_count>
      <attachid>443635</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-11-09 09:36:35 -0800</bug_when>
    <thetext>Comment on attachment 443635
Patch

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

&gt;&gt; Source/WebCore/dom/BroadcastChannel.cpp:187
&gt;&gt;          return Exception { InvalidStateError, &quot;This BroadcastChannel is closed&quot; };
&gt; 
&gt; So while closing we silently do nothing, and once closed we throw an exception. To me this seems like a peculiar design.

A little peculiar but definitely what was just added to the spec:
- https://html.spec.whatwg.org/#dom-broadcastchannel-postmessage

Maybe they were worried about breakage when throwing since this check is new?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813194</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-09 09:49:45 -0800</bug_when>
    <thetext>Committed r285503 (244027@main): &lt;https://commits.webkit.org/244027@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 443635.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813195</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-09 09:50:22 -0800</bug_when>
    <thetext>&lt;rdar://problem/85207221&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443618</attachid>
            <date>2021-11-08 15:30:41 -0800</date>
            <delta_ts>2021-11-08 15:45:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232693-20211108153040.patch</filename>
            <type>text/plain</type>
            <size>46016</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTUyM2IyYzMwZmU5Njlm
MmM1NzZhNWE5ODc2MjkzOTMxNzJjZWVlMC4uOTBlYjc0MTdhZDRkMjMyMGI5MWQ5MDRiMjJkM2Qx
NDdhYzY0MDc0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTExLTA4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSWdub3JlIEJyb2FkY2FzdENo
YW5uZWw6OnBvc3RNZXNzYWdlIGZyb20gZGV0YWNoZWQgaWZyYW1lIC8gY2xvc2luZyB3b3JrZXIg
Y29udGV4dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMjY5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IElnbm9yZSBCcm9hZGNhc3RDaGFubmVsOjpwb3N0TWVzc2FnZSBmcm9tIGRldGFjaGVkIGlmcmFt
ZSAvIGNsb3Npbmcgd29ya2VyIGNvbnRleHRzOgorICAgICAgICAtIGh0dHBzOi8vaHRtbC5zcGVj
LndoYXR3Zy5vcmcvI2VsaWdpYmxlLWZvci1tZXNzYWdpbmcKKworICAgICAgICBUZXN0czogaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5l
bC9iYXNpY3MuYW55LnNlcnZpY2V3b3JrZXIuaHRtbAorICAgICAgICAgICAgICAgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9jcm9z
cy1vcmlnaW4uaHRtbAorICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9kZXRhY2hlZC1pZnJhbWUuaHRtbAor
ICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdp
bmcvYnJvYWRjYXN0Y2hhbm5lbC9vcmRlcmluZy5odG1sCisgICAgICAgICAgICAgICBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL3Nl
cnZpY2Utd29ya2VyLmh0dHBzLmh0bWwKKworICAgICAgICAqIGRvbS9Ccm9hZGNhc3RDaGFubmVs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWw6OnBvc3RNZXNzYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWw6OmRpc3BhdGNoTWVzc2FnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsOjppc0VsaWdpYmxlRm9yTWVzc2FnaW5n
IGNvbnN0KToKKyAgICAgICAgKiBkb20vQnJvYWRjYXN0Q2hhbm5lbC5oOgorCiAyMDIxLTExLTA4
ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dl
YkdQVV0gQ29ubmVjdCBKUyBiaW5kaW5ncyBjb2RlIHRvIGludGVybmFsIFdlYkdQVSBpbnRlcmZh
Y2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ccm9hZGNhc3RDaGFubmVsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ccm9hZGNhc3RDaGFubmVsLmNwcAppbmRleCA3MzllOTIxY2Ux
ZGRiMjcyZWFiMGM1MTMxMmQ0ZjBmZmY0OTg3N2YyLi42MWFlMDRjOGY3NGIyMjllM2VjMTk3MThi
Y2U2NTUwMTRmMjZkY2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQnJvYWRjYXN0
Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Jyb2FkY2FzdENoYW5uZWwuY3Bw
CkBAIC0xODAsNiArMTgwLDkgQEAgU3RyaW5nIEJyb2FkY2FzdENoYW5uZWw6Om5hbWUoKSBjb25z
dAogCiBFeGNlcHRpb25Pcjx2b2lkPiBCcm9hZGNhc3RDaGFubmVsOjpwb3N0TWVzc2FnZShKU0M6
OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBtZXNzYWdlKQogewor
ICAgIGlmICghaXNFbGlnaWJsZUZvck1lc3NhZ2luZygpKQorICAgICAgICByZXR1cm4geyB9Owor
CiAgICAgaWYgKG1faXNDbG9zZWQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlk
U3RhdGVFcnJvciwgIlRoaXMgQnJvYWRjYXN0Q2hhbm5lbCBpcyBjbG9zZWQiIH07CiAKQEAgLTIy
NSw2ICsyMjgsOSBAQCB2b2lkIEJyb2FkY2FzdENoYW5uZWw6OmRpc3BhdGNoTWVzc2FnZVRvKEJy
b2FkY2FzdENoYW5uZWxJZGVudGlmaWVyIGNoYW5uZWxJZGVudAogCiB2b2lkIEJyb2FkY2FzdENo
YW5uZWw6OmRpc3BhdGNoTWVzc2FnZShSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3Nh
Z2UpCiB7CisgICAgaWYgKCFpc0VsaWdpYmxlRm9yTWVzc2FnaW5nKCkpCisgICAgICAgIHJldHVy
bjsKKwogICAgIGlmIChtX2lzQ2xvc2VkKQogICAgICAgICByZXR1cm47CiAKQEAgLTI0OSw0ICsy
NTUsMTcgQEAgYm9vbCBCcm9hZGNhc3RDaGFubmVsOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5
KCkgY29uc3QKICAgICByZXR1cm4gIW1faXNDbG9zZWQgJiYgbV9oYXNSZWxldmFudEV2ZW50TGlz
dGVuZXI7CiB9CiAKKy8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI2VsaWdpYmxlLWZv
ci1tZXNzYWdpbmcKK2Jvb2wgQnJvYWRjYXN0Q2hhbm5lbDo6aXNFbGlnaWJsZUZvck1lc3NhZ2lu
ZygpIGNvbnN0Cit7CisgICAgYXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChp
czxEb2N1bWVudD4oKmNvbnRleHQpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8RG9jdW1lbnQ+
KCpjb250ZXh0KS5pc0Z1bGx5QWN0aXZlKCk7CisKKyAgICByZXR1cm4gIWRvd25jYXN0PFdvcmtl
ckdsb2JhbFNjb3BlPigqY29udGV4dCkuaXNDbG9zaW5nKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ccm9hZGNhc3RDaGFubmVs
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQnJvYWRjYXN0Q2hhbm5lbC5oCmluZGV4IDlkMDkwMTVj
N2VmYmVmYzkzNDIyNzE3NmUyM2ZlYzIzNzc4YmZjMGYuLmYxNzZhMTAyYTVkYWQ5MDQ0NDQ4MDI5
Y2JiODA2NzFmMjg4M2NjNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ccm9hZGNh
c3RDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Jyb2FkY2FzdENoYW5uZWwuaApA
QCAtNzAsNiArNzAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlKFJlZjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYpOwogICAgIHZvaWQgZW5zdXJlT25NYWluVGhyZWFkKEZ1
bmN0aW9uPHZvaWQoRG9jdW1lbnQmKT4mJik7CiAKKyAgICBib29sIGlzRWxpZ2libGVGb3JNZXNz
YWdpbmcoKSBjb25zdDsKKwogICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgRXZlbnRUYXJnZXRJbnRl
cmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBCcm9hZGNh
c3RDaGFubmVsRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CiAgICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEFj
dGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZwppbmRleCA2ZjNiN2EyYThiZWRmOGNkZDgzZTRjYTI2NGNmN2I0MTgwZmEx
Yzk3Li5iNTMyNjI5ZTBhMzFmMDdiNzM5M2RjMDMxMjMxMWM1M2IzY2RlYjZkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMS0xMS0wOCAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIElnbm9yZSBCcm9hZGNhc3RDaGFu
bmVsOjpwb3N0TWVzc2FnZSBmcm9tIGRldGFjaGVkIGlmcmFtZSAvIGNsb3Npbmcgd29ya2VyIGNv
bnRleHRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzI2OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZXN5bmMgQnJvYWRjYXN0Q2hhbm5lbCBXUFQgdGVzdHMgZnJvbSB1cHN0cmVhbSB0byBnYWluIHRl
c3QgY292ZXJhZ2UuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5n
L2Jyb2FkY2FzdGNoYW5uZWwvYmFzaWNzLmFueS5zZXJ2aWNld29ya2VyLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5l
bC9jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvY3Jvc3Mtb3JpZ2luLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRj
YXN0Y2hhbm5lbC9kZXRhY2hlZC1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvZGV0YWNo
ZWQtaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJt
ZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9vcmRlcmluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5l
bC9vcmRlcmluZy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
bWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvcmVzb3VyY2VzL2Nyb3NzLW9yaWdpbi5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2Fz
dGNoYW5uZWwvcmVzb3VyY2VzL29yZGVyaW5nLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9yZXNvdXJjZXMvc2Vy
dmljZS13b3JrZXIuanM6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJt
ZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9yZXNvdXJjZXMvdzNjLWltcG9ydC5sb2c6CisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL3Jl
c291cmNlcy93b3JrZXIuanM6CisgICAgICAgIChoYW5kbGVyKToKKyAgICAgICAgKiB3ZWItcGxh
dGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvc2VydmljZS13b3JrZXIu
aHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
d2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvc2VydmljZS13b3JrZXIuaHR0cHMuaHRtbDog
QWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNh
c3RjaGFubmVsL3czYy1pbXBvcnQubG9nOgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC93b3JrZXJzLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvd29y
a2Vycy5odG1sOgorCiAyMDIxLTExLTA4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CiAKICAgICAgICAgQWRkIGFib3J0IHJlYXNvbiB0byBBYm9ydFNpZ25hbApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcv
YnJvYWRjYXN0Y2hhbm5lbC9iYXNpY3MuYW55LnNlcnZpY2V3b3JrZXIuaHRtbCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2Fz
dGNoYW5uZWwvYmFzaWNzLmFueS5zZXJ2aWNld29ya2VyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4Mjkx
MzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jy
b2FkY2FzdGNoYW5uZWwvYmFzaWNzLmFueS5zZXJ2aWNld29ya2VyLmh0bWwKQEAgLTAsMCArMSBA
QAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0
dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9jcm9zcy1vcmlnaW4tZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNz
YWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZkZmMyNjI5MzFmMjJkYjM4NmIwNTgxZTZjZDdmNzVkZjU5MzdmYjUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1l
c3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL2Nyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw0IEBACisKKworUEFTUyBNZXNzYWdlcyBhcmVuJ3QgZGVsaXZlcmVkIGFjcm9zcyBvcmln
aW5zCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvY3Jvc3Mtb3JpZ2luLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9i
cm9hZGNhc3RjaGFubmVsL2Nyb3NzLW9yaWdpbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlNGIyZjIxYzhl
M2ZlYzQ4OGNiMjhkNzJlNDVhN2U5MTgyMTA4MDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNh
c3RjaGFubmVsL2Nyb3NzLW9yaWdpbi5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhRE9DVFlQRSBo
dG1sPgorPG1ldGEgY2hhcnNldD11dGYtOD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvY29tbW9uL2dldC1ob3N0LWluZm8u
c3ViLmpzIj48L3NjcmlwdD4KKzwhLS0gUHVsbCBpbiB0aGUgd2l0aF9pZnJhbWUgaGVscGVyIGZ1
bmN0aW9uIGZyb20gdGhlIHNlcnZpY2Ugd29ya2VyIHRlc3RzIC0tPgorPHNjcmlwdCBzcmM9Ii9z
ZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5zdWIu
anMiPjwvc2NyaXB0PgorPGJvZHk+Cis8c2NyaXB0PgorCitjb25zdCBldmVudHMgPSBbXTsKKwor
ZnVuY3Rpb24gdGVzdENvbXBsZXRpb24odCkgeworICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29s
dmUpID0+IHsKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHQuc3RlcF9m
dW5jKGUgPT4geworICAgICAgaWYgKGUuZGF0YSA9PSAnZG9uZScpIHsKKyAgICAgICAgYXNzZXJ0
X2VxdWFscyhldmVudHMubGVuZ3RoLCAwKTsKKyAgICAgICAgcmVzb2x2ZSgpOworICAgICAgfQor
ICAgIH0pKTsKKyAgfSk7Cit9CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKworICBjb25z
dCBiYzAgPSBuZXcgQnJvYWRjYXN0Q2hhbm5lbCgnbm8tY3Jvc3Mtb3JpZ2luLW1lc3NhZ2VzJyk7
CisgIGJjMC5vbm1lc3NhZ2UgPSBlID0+IHt3aW5kb3cuZXZlbnRzLnB1c2goZSk7fTsKKworICBj
b25zdCB0ZXN0UmVzdWx0cyA9IHRlc3RDb21wbGV0aW9uKHQpOworICBjb25zdCB1cmwgPSBnZXRf
aG9zdF9pbmZvKCkuSFRUUFNfTk9UU0FNRVNJVEVfT1JJR0lOICsKKyAgICAnL3dlYm1lc3NhZ2lu
Zy9icm9hZGNhc3RjaGFubmVsL3Jlc291cmNlcy9jcm9zcy1vcmlnaW4uaHRtbCc7CisgIGF3YWl0
IHdpdGhfaWZyYW1lKHVybCk7CisKKyAgcmV0dXJuIHRlc3RSZXN1bHRzOworfSwgIk1lc3NhZ2Vz
IGFyZW4ndCBkZWxpdmVyZWQgYWNyb3NzIG9yaWdpbnMiKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL2RldGFjaGVkLWlmcmFtZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3Nh
Z2luZy9icm9hZGNhc3RjaGFubmVsL2RldGFjaGVkLWlmcmFtZS1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNjc5MDMxNzdmNmZlNjMyNmQ0OTU4ZDY4ZDM0ZWJlYmYzNWU3MzViNgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
bWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvZGV0YWNoZWQtaWZyYW1lLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDggQEAKKworUEFTUyBCcm9hZGNhc3RDaGFubmVsIG1lc3NhZ2VzIGZyb20gZGV0
YWNoZWQgaWZyYW1lIHRvIHBhcmVudCBzaG91bGQgYmUgaWdub3JlZCAoQkMgY3JlYXRlZCBiZWZv
cmUgZGV0YWNoaW5nKQorUEFTUyBCcm9hZGNhc3RDaGFubmVsIG1lc3NhZ2VzIGZyb20gZGV0YWNo
ZWQgaWZyYW1lIHRvIHBhcmVudCBzaG91bGQgYmUgaWdub3JlZCAoQkMgY3JlYXRlZCBhZnRlciBk
ZXRhY2hpbmcpCitQQVNTIEJyb2FkY2FzdENoYW5uZWwgbWVzc2FnZXMgZnJvbSBwYXJlbnQgdG8g
ZGV0YWNoZWQgaWZyYW1lIHNob3VsZCBiZSBpZ25vcmVkIChCQyBjcmVhdGVkIGJlZm9yZSBkZXRh
Y2hpbmcpCitQQVNTIEJyb2FkY2FzdENoYW5uZWwgbWVzc2FnZXMgZnJvbSBwYXJlbnQgdG8gZGV0
YWNoZWQgaWZyYW1lIHNob3VsZCBiZSBpZ25vcmVkIChCQyBjcmVhdGVkIGFmdGVyIGRldGFjaGlu
ZykKK1BBU1MgQnJvYWRjYXN0Q2hhbm5lbCBtZXNzYWdlcyB3aXRoaW4gZGV0YWNoZWQgaWZyYW1l
IHNob3VsZCBiZSBpZ25vcmVkIChCQ3MgY3JlYXRlZCBiZWZvcmUgZGV0YWNoaW5nKQorUEFTUyBC
cm9hZGNhc3RDaGFubmVsIG1lc3NhZ2VzIHdpdGhpbiBkZXRhY2hlZCBpZnJhbWUgc2hvdWxkIGJl
IGlnbm9yZWQgKEJDcyBjcmVhdGVkIGFmdGVyIGRldGFjaGluZykKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJv
YWRjYXN0Y2hhbm5lbC9kZXRhY2hlZC1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvZGV0
YWNoZWQtaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjliMDZjM2E0NjQ2M2JmNTBhODhlYmM1NDVm
MWFkOWVkNmFjNDk2YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvZGV0YWNo
ZWQtaWZyYW1lLmh0bWwKQEAgLTAsMCArMSwxNzQgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEg
Y2hhcnNldD11dGYtOD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvY29tbW9uL2dldC1ob3N0LWluZm8uc3ViLmpzIj48L3Nj
cmlwdD4KKzwhLS0gUHVsbCBpbiB0aGUgd2l0aF9pZnJhbWUgaGVscGVyIGZ1bmN0aW9uIGZyb20g
dGhlIHNlcnZpY2Ugd29ya2VyIHRlc3RzIC0tPgorPHNjcmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtl
cnMvc2VydmljZS13b3JrZXIvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5zdWIuanMiPjwvc2NyaXB0
PgorPGJvZHk+Cis8c2NyaXB0PgorY29uc3QgVEVTVF9JRlJBTUVfQ0xBU1NfTkFNRSA9ICd0ZXN0
LWlmcmFtZSc7Citjb25zdCBldmVudHMgPSBbXTsKK3ZhciBiYzE7Citjb25zdCBET05FX01TRyA9
ICdkb25lJzsKKworZnVuY3Rpb24gRGV0YWNoZWRJZnJhbWVUZXN0Q2hlY2tGb3JPbmVNZXNzYWdl
KHQpIHsKKyAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisgICAgYmMxLm9ubWVz
c2FnZSA9IHQuc3RlcF9mdW5jKGUgPT4geworICAgICAgZXZlbnRzLnB1c2goZSk7CisgICAgICBp
ZiAoZS5kYXRhID09IERPTkVfTVNHKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnRzLmxl
bmd0aCwgMSk7CisgICAgICAgIHJlc29sdmUoKTsKKyAgICAgIH0KKyAgICB9KTsKKyAgfSk7Cit9
CisKK2NvbnN0IElmcmFtZUFjdGlvbiA9IHsKKyAgUkVNT1ZFX0JFRk9SRV9DUkVBVElPTjogJ3Jl
bW92ZS1iZWZvcmUtY3JlYXRpb24nLAorICBSRU1PVkVfQUZURVJfQ1JFQVRJT046ICdyZW1vdmUt
YWZ0ZXItY3JlYXRpb24nLAorfTsKKworYXN5bmMgZnVuY3Rpb24gZG9NZXNzYWdlU2VudFRlc3Qo
dCwgY2hhbm5lbE5hbWUsIGFjdGlvbikgeworICBhd2FpdCB3aXRoX2lmcmFtZSgnYWJvdXQ6Ymxh
bmsnKTsKKyAgY29uc3QgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShU
RVNUX0lGUkFNRV9DTEFTU19OQU1FKVswXTsKKyAgY29uc3QgaWZyYW1lX0Jyb2FkY2FzdENoYW5u
ZWwgPSBpZnJhbWUuY29udGVudFdpbmRvdy5Ccm9hZGNhc3RDaGFubmVsOworCisgIGlmIChhY3Rp
b24gPT09IElmcmFtZUFjdGlvbi5SRU1PVkVfQkVGT1JFX0NSRUFUSU9OKSB7CisgICAgaWZyYW1l
LnJlbW92ZSgpOworICB9CisKKyAgZXZlbnRzLmxlbmd0aCA9IDA7CisKKyAgYmMxID0gbmV3IEJy
b2FkY2FzdENoYW5uZWwoY2hhbm5lbE5hbWUpOworICBjb25zdCBiYzIgPSBuZXcgQnJvYWRjYXN0
Q2hhbm5lbChjaGFubmVsTmFtZSk7CisgIGNvbnN0IGlmcmFtZV9iYyA9IG5ldyBpZnJhbWVfQnJv
YWRjYXN0Q2hhbm5lbChjaGFubmVsTmFtZSk7CisKKyAgaWYgKGFjdGlvbiA9PT0gSWZyYW1lQWN0
aW9uLlJFTU9WRV9BRlRFUl9DUkVBVElPTikgeworICAgIGlmcmFtZS5yZW1vdmUoKTsKKyAgfQor
CisgIGNvbnN0IHRlc3RSZXN1bHRzUHJvbWlzZSA9IERldGFjaGVkSWZyYW1lVGVzdENoZWNrRm9y
T25lTWVzc2FnZSh0KTsKKworICBpZnJhbWVfYmMucG9zdE1lc3NhZ2UoJ3Rlc3QnKTsKKyAgYmMy
LnBvc3RNZXNzYWdlKERPTkVfTVNHKTsKKworICBiYzIuY2xvc2UoKTsKKyAgaWZyYW1lX2JjLmNs
b3NlKCk7CisgIHQuYWRkX2NsZWFudXAoKCkgPT4gYmMxLmNsb3NlKCkpOworCisgIHJldHVybiB0
ZXN0UmVzdWx0c1Byb21pc2U7Cit9CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgcmV0
dXJuIGRvTWVzc2FnZVNlbnRUZXN0KAorICAgICAgdCwgJ3Bvc3RNZXNzYWdlLWZyb20tZGV0YWNo
ZWQtaWZyYW1lLXByZScsCisgICAgICBJZnJhbWVBY3Rpb24uUkVNT1ZFX0FGVEVSX0NSRUFUSU9O
KTsKK30sICdCcm9hZGNhc3RDaGFubmVsIG1lc3NhZ2VzIGZyb20gZGV0YWNoZWQgaWZyYW1lIHRv
IHBhcmVudCBzaG91bGQgYmUgaWdub3JlZCAoQkMgY3JlYXRlZCBiZWZvcmUgZGV0YWNoaW5nKScp
OworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgIHJldHVybiBkb01lc3NhZ2VTZW50VGVz
dCgKKyAgICAgIHQsICdwb3N0TWVzc2FnZS1mcm9tLWRldGFjaGVkLWlmcmFtZS1wb3N0JywKKyAg
ICAgIElmcmFtZUFjdGlvbi5SRU1PVkVfQkVGT1JFX0NSRUFUSU9OKTsKK30sICdCcm9hZGNhc3RD
aGFubmVsIG1lc3NhZ2VzIGZyb20gZGV0YWNoZWQgaWZyYW1lIHRvIHBhcmVudCBzaG91bGQgYmUg
aWdub3JlZCAoQkMgY3JlYXRlZCBhZnRlciBkZXRhY2hpbmcpJyk7CisKKworYXN5bmMgZnVuY3Rp
b24gZG9NZXNzYWdlUmVjZWl2ZWRUZXN0KHQsIGNoYW5uZWxOYW1lLCBhY3Rpb24pIHsKKyAgYXdh
aXQgd2l0aF9pZnJhbWUoJ2Fib3V0OmJsYW5rJyk7CisgIGNvbnN0IGlmcmFtZSA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoVEVTVF9JRlJBTUVfQ0xBU1NfTkFNRSlbMF07CisgIGNv
bnN0IGlmcmFtZV9Ccm9hZGNhc3RDaGFubmVsID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuQnJvYWRj
YXN0Q2hhbm5lbDsKKworICBpZiAoYWN0aW9uID09PSBJZnJhbWVBY3Rpb24uUkVNT1ZFX0JFRk9S
RV9DUkVBVElPTikgeworICAgIGlmcmFtZS5yZW1vdmUoKTsKKyAgfQorCisgIGV2ZW50cy5sZW5n
dGggPSAwOworCisgIC8vIGBpZnJhbWVfYmNgIG11c3QgYmUgY3JlYXRlZCBmaXJzdCBzbyB0aGF0
IGl0IHJlY2VpdmVzIG1lc3NhZ2VzIGJlZm9yZQorICAvLyBgYmMxYC4gVGhhdCB3YXkgd2UgY2Fu
IHRlbGwgd2hldGhlciBgaWZyYW1lX2JjYCByZWNlaXZlZCBhIG1lc3NhZ2UgYnkKKyAgLy8gaW5z
cGVjdGluZyBgZXZlbnRzYCBpbiB0aGUgYGJjMWAgbWVzc2FnZSBoYW5kbGVyLgorICBjb25zdCBp
ZnJhbWVfYmMgPSBuZXcgaWZyYW1lX0Jyb2FkY2FzdENoYW5uZWwoY2hhbm5lbE5hbWUpOworICBp
ZnJhbWVfYmMub25tZXNzYWdlID0gZSA9PiB7CisgICAgZXZlbnRzLnB1c2goZSkKKyAgfTsKKyAg
YmMxID0gbmV3IEJyb2FkY2FzdENoYW5uZWwoY2hhbm5lbE5hbWUpOworICBjb25zdCBiYzIgPSBu
ZXcgQnJvYWRjYXN0Q2hhbm5lbChjaGFubmVsTmFtZSk7CisKKyAgaWYgKGFjdGlvbiA9PT0gSWZy
YW1lQWN0aW9uLlJFTU9WRV9BRlRFUl9DUkVBVElPTikgeworICAgIGlmcmFtZS5yZW1vdmUoKTsK
KyAgfQorCisgIGNvbnN0IHRlc3RSZXN1bHRzUHJvbWlzZSA9IERldGFjaGVkSWZyYW1lVGVzdENo
ZWNrRm9yT25lTWVzc2FnZSh0KTsKKyAgYmMyLnBvc3RNZXNzYWdlKERPTkVfTVNHKTsKKworICBi
YzIuY2xvc2UoKTsKKyAgaWZyYW1lX2JjLmNsb3NlKCk7CisgIHQuYWRkX2NsZWFudXAoKCkgPT4g
YmMxLmNsb3NlKCkpOworfQorCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgIHJldHVybiBk
b01lc3NhZ2VSZWNlaXZlZFRlc3QoCisgICAgICB0LCAncG9zdE1lc3NhZ2UtdG8tZGV0YWNoZWQt
aWZyYW1lLXByZScsCisgICAgICBJZnJhbWVBY3Rpb24uUkVNT1ZFX0FGVEVSX0NSRUFUSU9OKTsK
K30sICdCcm9hZGNhc3RDaGFubmVsIG1lc3NhZ2VzIGZyb20gcGFyZW50IHRvIGRldGFjaGVkIGlm
cmFtZSBzaG91bGQgYmUgaWdub3JlZCAoQkMgY3JlYXRlZCBiZWZvcmUgZGV0YWNoaW5nKScpOwor
Citwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgIHJldHVybiBkb01lc3NhZ2VSZWNlaXZlZFRl
c3QoCisgICAgICB0LCAncG9zdE1lc3NhZ2UtdG8tZGV0YWNoZWQtaWZyYW1lLXBvc3QnLAorICAg
ICAgSWZyYW1lQWN0aW9uLlJFTU9WRV9CRUZPUkVfQ1JFQVRJT04pOworfSwgJ0Jyb2FkY2FzdENo
YW5uZWwgbWVzc2FnZXMgZnJvbSBwYXJlbnQgdG8gZGV0YWNoZWQgaWZyYW1lIHNob3VsZCBiZSBp
Z25vcmVkIChCQyBjcmVhdGVkIGFmdGVyIGRldGFjaGluZyknKTsKKworCithc3luYyBmdW5jdGlv
biBkb01lc3NhZ2VTZW5kUmVjZWl2ZVRlc3QodCwgY2hhbm5lbE5hbWUsIGFjdGlvbikgeworICBh
d2FpdCB3aXRoX2lmcmFtZSgnYWJvdXQ6YmxhbmsnKTsKKyAgY29uc3QgaWZyYW1lID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShURVNUX0lGUkFNRV9DTEFTU19OQU1FKVswXTsKKyAg
Y29uc3QgaWZyYW1lX0Jyb2FkY2FzdENoYW5uZWwgPSBpZnJhbWUuY29udGVudFdpbmRvdy5Ccm9h
ZGNhc3RDaGFubmVsOworCisgIGlmIChhY3Rpb24gPT09IElmcmFtZUFjdGlvbi5SRU1PVkVfQkVG
T1JFX0NSRUFUSU9OKSB7CisgICAgaWZyYW1lLnJlbW92ZSgpOworICB9CisKKyAgY29uc3QgaWZy
YW1lX2JjMSA9IG5ldyBpZnJhbWVfQnJvYWRjYXN0Q2hhbm5lbChjaGFubmVsTmFtZSk7CisgIGNv
bnN0IGlmcmFtZV9iYzIgPSBuZXcgaWZyYW1lX0Jyb2FkY2FzdENoYW5uZWwoY2hhbm5lbE5hbWUp
OworICBpZnJhbWVfYmMxLm9ubWVzc2FnZSA9IHQudW5yZWFjaGVkX2Z1bmMoCisgICAgICAnRGV0
YWNoZWQgaWZyYW1lIEJyb2FkY2FzdENoYW5uZWwgaW5zdGFuY2UgcmVjZWl2ZWQgbWVzc2FnZSB1
bmV4cGVjdGVkbHknKTsKKworICBpZiAoYWN0aW9uID09PSBJZnJhbWVBY3Rpb24uUkVNT1ZFX0FG
VEVSX0NSRUFUSU9OKSB7CisgICAgaWZyYW1lLnJlbW92ZSgpOworICB9CisKKyAgaWZyYW1lX2Jj
Mi5wb3N0TWVzc2FnZShET05FX01TRyk7CisKKyAgaWZyYW1lX2JjMi5jbG9zZSgpOworICB0LmFk
ZF9jbGVhbnVwKCgpID0+IGlmcmFtZV9iYzEuY2xvc2UoKSk7CisKKyAgLy8gVG8gYXZvaWQgY2Fs
bGluZyB0LnN0ZXBfdGltZW91dCBoZXJlLCBpbnN0ZWFkIGp1c3QgY3JlYXRlIHR3byBuZXcKKyAg
Ly8gQnJvYWRjYXN0Q2hhbm5lbCBpbnN0YW5jZXMgYW5kIGNvbXBsZXRlIHRoZSB0ZXN0IHdoZW4g
YSBtZXNzYWdlIGlzIHBhc3NlZAorICAvLyBiZXR3ZWVuIHRoZW0uICBQZXIgdGhlIHNwZWMsIGFs
bCAiQnJvYWRjYXN0Q2hhbm5lbCBvYmplY3RzIHdob3NlIHJlbGV2YW50CisgIC8vIGFnZW50cyBh
cmUgdGhlIHNhbWUiIG11c3QgaGF2ZSBtZXNzYWdlcyBkZWxpdmVyZWQgdG8gdGhlbSBpbiBjcmVh
dGlvbgorICAvLyBvcmRlciwgc28gaWYgd2UgZ2V0IHRoaXMgbWVzc2FnZSB0aGVuIGl0J3Mgc2Fm
ZSB0byBhc3N1bWUgdGhlIGVhcmxpZXIKKyAgLy8gbWVzc2FnZSB3b3VsZCBoYXZlIGJlZW4gZGVs
aXZlcmVkIGlmIGl0IHdhcyBnb2luZyB0byBiZS4KKyAgY29uc3QgYmMxID0gbmV3IEJyb2FkY2Fz
dENoYW5uZWwoY2hhbm5lbE5hbWUpOworICBjb25zdCBiYzIgPSBuZXcgQnJvYWRjYXN0Q2hhbm5l
bChjaGFubmVsTmFtZSk7CisgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geworICAg
IGJjMS5vbm1lc3NhZ2UgPSB0LnN0ZXBfZnVuYyhlID0+IHsKKyAgICAgIHJlc29sdmUoKTsKKyAg
ICB9KTsKKyAgICBiYzIucG9zdE1lc3NhZ2UoRE9ORV9NU0cpOworICB9KTsKK30KKworcHJvbWlz
ZV90ZXN0KGFzeW5jIHQgPT4geworICByZXR1cm4gZG9NZXNzYWdlU2VuZFJlY2VpdmVUZXN0KAor
ICAgICAgdCwgJ3Bvc3RNZXNzYWdlLXdpdGhpbi1kZXRhY2hlZC1pZnJhbWUtcHJlJywKKyAgICAg
IElmcmFtZUFjdGlvbi5SRU1PVkVfQUZURVJfQ1JFQVRJT04pOworfSwgJ0Jyb2FkY2FzdENoYW5u
ZWwgbWVzc2FnZXMgd2l0aGluIGRldGFjaGVkIGlmcmFtZSBzaG91bGQgYmUgaWdub3JlZCAoQkNz
IGNyZWF0ZWQgYmVmb3JlIGRldGFjaGluZyknKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4g
eworICByZXR1cm4gZG9NZXNzYWdlU2VuZFJlY2VpdmVUZXN0KAorICAgICAgdCwgJ3Bvc3RNZXNz
YWdlLXdpdGhpbi1kZXRhY2hlZC1pZnJhbWUtcG9zdCcsCisgICAgICBJZnJhbWVBY3Rpb24uUkVN
T1ZFX0JFRk9SRV9DUkVBVElPTik7Cit9LCAnQnJvYWRjYXN0Q2hhbm5lbCBtZXNzYWdlcyB3aXRo
aW4gZGV0YWNoZWQgaWZyYW1lIHNob3VsZCBiZSBpZ25vcmVkIChCQ3MgY3JlYXRlZCBhZnRlciBk
ZXRhY2hpbmcpJyk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0
Y2hhbm5lbC9vcmRlcmluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL29yZGVyaW5n
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNWU1MWNkMGJhOTc0N2U4YWJmYTU0OWIxZTNjMDc4
MDhmYzI3NGY1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9vcmRlcmluZy1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKKworUEFTUyBNZXNzYWdlcyBhcmUgZGVsaXZl
cmVkIGluIHBvcnQgY3JlYXRpb24gb3JkZXIgYWNyb3NzIG11bHRpcGxlIGZyYW1lcworCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1l
c3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL29yZGVyaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVs
L29yZGVyaW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmQ1MjFiOWUwY2NmOTRmZWI0MmZhOWFjYzA5MzQz
MzE0ZjYyNWE4NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvb3JkZXJpbmcu
aHRtbApAQCAtMCwwICsxLDExNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PXV0
Zi04PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0Pgor
PCEtLSBQdWxsIGluIHRoZSB3aXRoX2lmcmFtZSBoZWxwZXIgZnVuY3Rpb24gZnJvbSB0aGUgc2Vy
dmljZSB3b3JrZXIgdGVzdHMgLS0+Cis8c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vycy9zZXJ2
aWNlLXdvcmtlci9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLnN1Yi5qcyI+PC9zY3JpcHQ+Cis8Ym9k
eT4KKzxzY3JpcHQ+CisKK2NvbnN0IEJDMF9GSVJTVF9NU0cgPSAnZnJvbSBCQzAgLSBmaXJzdCc7
Citjb25zdCBCQzFfRklSU1RfTVNHID0gJ2Zyb20gQkMxIC0gZmlyc3QnOworY29uc3QgQkMyX0ZJ
UlNUX01TRyA9ICdmcm9tIEJDMiAtIGZpcnN0JzsKK2NvbnN0IEJDM19GSVJTVF9NU0cgPSAnZnJv
bSBCQzMgLSBmaXJzdCc7Citjb25zdCBCQzBfU0VDT05EX01TRyA9ICdmcm9tIEJDMCAtIHNlY29u
ZCc7Citjb25zdCBCQzFfU0VDT05EX01TRyA9ICdmcm9tIEJDMSAtIHNlY29uZCc7Citjb25zdCBC
QzJfU0VDT05EX01TRyA9ICdmcm9tIEJDMiAtIHNlY29uZCc7Citjb25zdCBCQzNfU0VDT05EX01T
RyA9ICdkb25lJzsKK2NvbnN0IEJDMF9UQVJHRVRfTkFNRSA9ICdCQzEnOworY29uc3QgQkMxX1RB
UkdFVF9OQU1FID0gJ0JDMSc7Citjb25zdCBCQzJfVEFSR0VUX05BTUUgPSAnQkMyJzsKK2NvbnN0
IEJDM19UQVJHRVRfTkFNRSA9ICdCQzMnOworY29uc3QgTVVMVElfRlJBTUVfT1JERVJJTkdfVEVT
VF9DSEFOTkVMX05BTUUgPSAnbXVsdGktZnJhbWUtb3JkZXInOworCitjb25zdCBiYzAgPSBuZXcg
QnJvYWRjYXN0Q2hhbm5lbChNVUxUSV9GUkFNRV9PUkRFUklOR19URVNUX0NIQU5ORUxfTkFNRSk7
Citjb25zdCBtZXNzYWdlcyA9IFtdOworCitmdW5jdGlvbiBsb2dSZWNlaXZlZE1lc3NhZ2UodGFy
Z2V0bmFtZSwgZSkgeworICBtZXNzYWdlcy5wdXNoKHsndGFyZ2V0JzogdGFyZ2V0bmFtZSwgJ2Rh
dGEnOiBlLmRhdGF9KTsKK30KKworZnVuY3Rpb24gcG9zdE1lc3NhZ2VzVG9DaGFubmVsKCkgewor
ICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKKyAgICBiYzAucG9zdE1lc3NhZ2Uo
QkMwX0ZJUlNUX01TRyk7CisgICAgYmMwLnBvc3RNZXNzYWdlKEJDMF9TRUNPTkRfTVNHKTsKKyAg
ICByZXNvbHZlKCk7CisgIH0pOworfQorCisvLyBFeHBlY3RlZCBmbG93IG9mIG1lc3NhZ2VzIGJl
dHdlZW4gdGhlIEJyb2FkY2FzdENoYW5uZWwgb2JqZWN0cyAoYmFzZWQgb24KKy8vIHRoZSByZXF1
aXJlbWVudCB0aGF0IG1lc3NhZ2VzIGdldCBkZWxpdmVyZWQgdG8gQnJvYWRjYXN0Q2hhbm5lbCBv
YmplY3RzCisvLyAiaW4gY3JlYXRpb24gb3JkZXIsIG9sZGVzdCBmaXJzdCIpIGFuZCBjb21tZW50
cyBkZXNjcmliaW5nIHRoZSBhY3Rpb25zCisvLyB0YWtlbiBpbiByZXNwb25zZSB0byBlYWNoIGV2
ZW50Citjb25zdCBFWFBFQ1RFRF9SRVNVTFRTID0gWworICAvLyAtPiBCQzAgc2VuZHMgdHdvIG1l
c3NhZ2VzLCBCQzEgYW5kIEJDMiBhcmUgY29ubmVjdGVkIHRvIHRoZSBjaGFubmVsCisKKyAgeydk
YXRhJzogQkMwX0ZJUlNUX01TRywgJ3RhcmdldCc6IEJDMV9UQVJHRVRfTkFNRX0sCisgIC8vIC0+
IEJDMSBDcmVhdGVzIEJDMyBhbmQgc2VuZHMgZmlyc3QgbWVzc2FnZQorCisgIHsnZGF0YSc6IEJD
MF9GSVJTVF9NU0csICd0YXJnZXQnOiBCQzJfVEFSR0VUX05BTUV9LAorICAvLyAtPiBCQzIgc2Vu
ZHMgdHdvIG1lc3NhZ2VzCisKKyAgLy8gQkMzIGlzbid0IGV4cGVjdGVkIHRvIHJlY2VpdmUgdGhl
IG1lc3NhZ2VzIHNlbnQgYmVmb3JlIGl0IHdhcyBjcmVhdGVkLCBzbworICAvLyBubyBjb3JyZXNw
b25kaW5nIGVudHJpZXMgaGVyZSBmb3IgbWVzc2FnZXMgZnJvbSBCQzAuCisKKyAgeydkYXRhJzog
QkMwX1NFQ09ORF9NU0csICd0YXJnZXQnOiBCQzFfVEFSR0VUX05BTUV9LAorICAvLyAtPiBCQzEg
c2VuZHMgc2Vjb25kIG1lc3NhZ2UKKworICB7J2RhdGEnOiBCQzBfU0VDT05EX01TRywgJ3Rhcmdl
dCc6IEJDMl9UQVJHRVRfTkFNRX0sCisgIC8vIC0+IEJDMiBjbG9zZXMKKworICB7J2RhdGEnOiBC
QzFfRklSU1RfTVNHLCAndGFyZ2V0JzogQkMwX1RBUkdFVF9OQU1FfSwKKworICB7J2RhdGEnOiBC
QzFfRklSU1RfTVNHLCAndGFyZ2V0JzogQkMzX1RBUkdFVF9OQU1FfSwKKyAgLy8gLT4gQkMzIHNl
bmRzIGZpcnN0IG1lc3NhZ2UKKworICB7J2RhdGEnOiBCQzJfRklSU1RfTVNHLCAndGFyZ2V0Jzog
QkMwX1RBUkdFVF9OQU1FfSwKKworICB7J2RhdGEnOiBCQzJfRklSU1RfTVNHLCAndGFyZ2V0Jzog
QkMxX1RBUkdFVF9OQU1FfSwKKyAgLy8gLT4gQkMxIGNsb3NlcworCisgIHsnZGF0YSc6IEJDMl9G
SVJTVF9NU0csICd0YXJnZXQnOiBCQzNfVEFSR0VUX05BTUV9LAorICAvLyAtPiBCQzMgc2VuZHMg
c2Vjb25kIG1lc3NhZ2UKKworICB7J2RhdGEnOiBCQzJfU0VDT05EX01TRywgJ3RhcmdldCc6IEJD
MF9UQVJHRVRfTkFNRX0sCisKKyAgeydkYXRhJzogQkMyX1NFQ09ORF9NU0csICd0YXJnZXQnOiBC
QzNfVEFSR0VUX05BTUV9LAorICAvLyAtPiBCQzMgY2xvc2VzCisKKyAgeydkYXRhJzogQkMxX1NF
Q09ORF9NU0csICd0YXJnZXQnOiBCQzBfVEFSR0VUX05BTUV9LAorCisgIHsnZGF0YSc6IEJDM19G
SVJTVF9NU0csICd0YXJnZXQnOiBCQzBfVEFSR0VUX05BTUV9LAorCisgIHsnZGF0YSc6IEJDM19T
RUNPTkRfTVNHLCAndGFyZ2V0JzogQkMwX1RBUkdFVF9OQU1FfSwKK107CisKK2Z1bmN0aW9uIHRl
c3RDb21wbGV0aW9uKHQpIHsKKyAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7Cisg
ICAgYmMwLm9ubWVzc2FnZSA9IHQuc3RlcF9mdW5jKGUgPT4geworICAgICAgbG9nUmVjZWl2ZWRN
ZXNzYWdlKEJDMF9UQVJHRVRfTkFNRSwgZSk7CisgICAgICBpZiAoZS5kYXRhID09IEJDM19TRUNP
TkRfTVNHKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMobWVzc2FnZXMubGVuZ3RoLCBFWFBFQ1RF
RF9SRVNVTFRTLmxlbmd0aCk7CisgICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBtZXNzYWdlcy5s
ZW5ndGg7IGkrKykgeworICAgICAgICAgIGFzc2VydF9lcXVhbHMobWVzc2FnZXNbaV0udGFyZ2V0
LCBFWFBFQ1RFRF9SRVNVTFRTW2ldLnRhcmdldCwgYE1lc3NhZ2UgJHtpKzF9IGhhcyB1bmV4cGVj
dGVkIHRhcmdldGApOworICAgICAgICAgIGFzc2VydF9lcXVhbHMobWVzc2FnZXNbaV0uZGF0YSwg
RVhQRUNURURfUkVTVUxUU1tpXS5kYXRhLCBgTWVzc2FnZSAke2krMX0gaGFzIHVuZXhwZWN0ZWQg
bWVzc2FnZSBjb250ZW50c2ApOworICAgICAgICB9CisgICAgICAgIHJlc29sdmUoKTsKKyAgICAg
IH0KKyAgICB9KTsKKyAgfSk7Cit9CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKworICBj
b25zdCB0ZXN0UmVzdWx0cyA9IHRlc3RDb21wbGV0aW9uKHQpOworICAvLyBBd2FpdCB0aGVtIHNl
cXVlbnRpYWxseSBiZWNhdXNlIHdlIG5lZWQgdGhlIEJyb2FkY2FzdENoYW5uZWwgb2JqZWN0IGlu
CisgIC8vIGlmcmFtZTEgdG8gYmUgY3JlYXRlZCBmaXJzdCwgd2UgbmVlZCB0aGUgQnJvYWRjYXN0
Q2hhbm5lbCBvYmplY3QgaW4KKyAgLy8gaWZyYW1lMiB0byBiZSBjcmVhdGVkIHNlY29uZCwgYW5k
IHRoZW4gd2Ugb25seSB3YW50IHRvIGNhbGwKKyAgLy8gcG9zdE1lc3NhZ2VzVG9DaGFubmVsIG9u
Y2UgYm90aCBCcm9hZGNhc3RDaGFubmVscyBoYXZlIGJlZW4gY3JlYXRlZC4KKyAgYXdhaXQgd2l0
aF9pZnJhbWUoJ3Jlc291cmNlcy9vcmRlcmluZy5odG1sP2lkPWlmcmFtZTEnKTsKKyAgYXdhaXQg
d2l0aF9pZnJhbWUoJ3Jlc291cmNlcy9vcmRlcmluZy5odG1sP2lkPWlmcmFtZTInKTsKKyAgYXdh
aXQgcG9zdE1lc3NhZ2VzVG9DaGFubmVsKCk7CisgIHJldHVybiB0ZXN0UmVzdWx0czsKK30sICJN
ZXNzYWdlcyBhcmUgZGVsaXZlcmVkIGluIHBvcnQgY3JlYXRpb24gb3JkZXIgYWNyb3NzIG11bHRp
cGxlIGZyYW1lcyIpOworCis8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2Fz
dGNoYW5uZWwvcmVzb3VyY2VzL2Nyb3NzLW9yaWdpbi5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9y
ZXNvdXJjZXMvY3Jvc3Mtb3JpZ2luLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTA3OGI2ZmM4ZTQ2ZjU1NmZl
MWI4NmM3ZTFhYTVhMTQxYzEzMmJlMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5u
ZWwvcmVzb3VyY2VzL2Nyb3NzLW9yaWdpbi5odG1sCkBAIC0wLDAgKzEsMTUgQEAKKzxib2R5Pjwv
Ym9keT4KKzxzY3JpcHQ+CisgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICBiYzEg
PSBuZXcgQnJvYWRjYXN0Q2hhbm5lbCgnbm8tY3Jvc3Mtb3JpZ2luLW1lc3NhZ2VzJyk7CisgICAg
YmMyID0gbmV3IEJyb2FkY2FzdENoYW5uZWwoJ25vLWNyb3NzLW9yaWdpbi1tZXNzYWdlcycpOwor
ICAgIGJjMi5vbm1lc3NhZ2UgPSBlID0+IHsKKyAgICAgIHBhcmVudC5wb3N0TWVzc2FnZSgnZG9u
ZScsICIqIik7CisgICAgfTsKKyAgICAvLyBQb3N0IGEgbWVzc2FnZSBvbiBiYzEgYW5kIG9uY2Ug
d2UgcmVjZWl2ZSBpdCBpbiBiYzIsIHdlIGtub3cgdGhhdCB0aGUKKyAgICAvLyBtZXNzYWdlIHNo
b3VsZCBoYXZlIGJlZW4gc2VudCB0byBiYzAgaWYgbWVzc2FnZXMgd2VyZSBiZWluZyBwYXNzZWQK
KyAgICAvLyBhY3Jvc3Mgb3JpZ2luIChhc3N1bWluZyBjb21wbGlhbmNlIHdpdGggdGhlIHNwZWMg
cmVnYXJkaW5nIG1lc3NhZ2UKKyAgICAvLyBkZWxpdmVyeSBpbiBwb3J0IGNyZWF0aW9uIG9yZGVy
KS4KKyAgICBiYzEucG9zdE1lc3NhZ2UoJ2lnbml0aW9uJyk7CisgIH0KKzwvc2NyaXB0PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJt
ZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9yZXNvdXJjZXMvb3JkZXJpbmcuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2Fk
Y2FzdGNoYW5uZWwvcmVzb3VyY2VzL29yZGVyaW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjdmMTJkODY1
YWQyYmY2NDI3ODc5MWU2MGVmOTI1NTM5ZGU0MDY3MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2Fk
Y2FzdGNoYW5uZWwvcmVzb3VyY2VzL29yZGVyaW5nLmh0bWwKQEAgLTAsMCArMSw3OCBAQAorPGJv
ZHk+PC9ib2R5PgorPHNjcmlwdD4KKyAgY29uc3QgQkMwX0ZJUlNUX01TRyA9ICdmcm9tIEJDMCAt
IGZpcnN0JzsKKyAgY29uc3QgQkMxX0ZJUlNUX01TRyA9ICdmcm9tIEJDMSAtIGZpcnN0JzsKKyAg
Y29uc3QgQkMyX0ZJUlNUX01TRyA9ICdmcm9tIEJDMiAtIGZpcnN0JzsKKyAgY29uc3QgQkMzX0ZJ
UlNUX01TRyA9ICdmcm9tIEJDMyAtIGZpcnN0JzsKKyAgY29uc3QgQkMwX1NFQ09ORF9NU0cgPSAn
ZnJvbSBCQzAgLSBzZWNvbmQnOworICBjb25zdCBCQzFfU0VDT05EX01TRyA9ICdmcm9tIEJDMSAt
IHNlY29uZCc7CisgIGNvbnN0IEJDMl9TRUNPTkRfTVNHID0gJ2Zyb20gQkMyIC0gc2Vjb25kJzsK
KyAgY29uc3QgQkMzX1NFQ09ORF9NU0cgPSAnZG9uZSc7CisgIGNvbnN0IEJDMF9UQVJHRVRfTkFN
RSA9ICdCQzEnOworICBjb25zdCBCQzFfVEFSR0VUX05BTUUgPSAnQkMxJzsKKyAgY29uc3QgQkMy
X1RBUkdFVF9OQU1FID0gJ0JDMic7CisgIGNvbnN0IEJDM19UQVJHRVRfTkFNRSA9ICdCQzMnOwor
ICBjb25zdCBNVUxUSV9GUkFNRV9PUkRFUklOR19URVNUX0NIQU5ORUxfTkFNRSA9ICdtdWx0aS1m
cmFtZS1vcmRlcic7CisKKyAgdmFyIGJjMSwgYmMyLCBiYzM7CisgIHZhciBzZW50TWVzc2FnZUNv
dW50Rm9yQmMxID0gMDsKKyAgdmFyIHNlbnRNZXNzYWdlQ291bnRGb3JCYzIgPSAwOworICB2YXIg
c2VudE1lc3NhZ2VDb3VudEZvckJjMyA9IDA7CisKKyAgdmFyIGJjMV9oYW5kbGVyID0gZSA9PiB7
CisgICAgd2luZG93LnRvcC5sb2dSZWNlaXZlZE1lc3NhZ2UoQkMxX1RBUkdFVF9OQU1FLCBlKTsK
KyAgICBzd2l0Y2goc2VudE1lc3NhZ2VDb3VudEZvckJjMSkgeworICAgICAgY2FzZSAwOgorICAg
ICAgICBiYzMgPSBuZXcgQnJvYWRjYXN0Q2hhbm5lbChNVUxUSV9GUkFNRV9PUkRFUklOR19URVNU
X0NIQU5ORUxfTkFNRSk7CisgICAgICAgIGJjMy5vbm1lc3NhZ2UgPSBiYzNfaGFuZGxlcjsKKyAg
ICAgICAgYmMxLnBvc3RNZXNzYWdlKEJDMV9GSVJTVF9NU0cpOworICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgMToKKyAgICAgICAgYmMxLnBvc3RNZXNzYWdlKEJDMV9TRUNPTkRfTVNHKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgICBjYXNlIDI6CisgICAgICAgIGJjMS5jbG9zZSgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIHNlbnRNZXNzYWdlQ291bnRGb3JCYzEgKz0gMTsKKyAgfQor
ICB2YXIgYmMyX2hhbmRsZXIgPSBlID0+IHsKKyAgICB3aW5kb3cudG9wLmxvZ1JlY2VpdmVkTWVz
c2FnZShCQzJfVEFSR0VUX05BTUUsIGUpOworICAgIHN3aXRjaChzZW50TWVzc2FnZUNvdW50Rm9y
QmMyKSB7CisgICAgICBjYXNlIDA6CisgICAgICAgIGJjMi5wb3N0TWVzc2FnZShCQzJfRklSU1Rf
TVNHKTsKKyAgICAgICAgYmMyLnBvc3RNZXNzYWdlKEJDMl9TRUNPTkRfTVNHKTsKKyAgICAgICAg
c2VudE1lc3NhZ2VDb3VudEZvckJjMiArPSAyOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
MjoKKyAgICAgICAgYmMyLmNsb3NlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgIH07Cisg
IHZhciBiYzNfaGFuZGxlciA9IGUgPT4geworICAgIHdpbmRvdy50b3AubG9nUmVjZWl2ZWRNZXNz
YWdlKEJDM19UQVJHRVRfTkFNRSwgZSk7CisgICAgc3dpdGNoKHNlbnRNZXNzYWdlQ291bnRGb3JC
YzMpIHsKKyAgICAgIGNhc2UgMDoKKyAgICAgICAgYmMzLnBvc3RNZXNzYWdlKEJDM19GSVJTVF9N
U0cpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMToKKyAgICAgICAgYmMzLnBvc3RNZXNz
YWdlKEJDM19TRUNPTkRfTVNHKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDI6CisgICAg
ICAgIGJjMy5jbG9zZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHNlbnRNZXNzYWdl
Q291bnRGb3JCYzMgKz0gMTsKKyAgfTsKKworICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7
CisgICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24u
c2VhcmNoKTsKKyAgICBpZiAocGFyYW1zLmdldCgnaWQnKSA9PT0gJ2lmcmFtZTEnKSB7CisgICAg
ICBiYzEgPSBuZXcgQnJvYWRjYXN0Q2hhbm5lbChNVUxUSV9GUkFNRV9PUkRFUklOR19URVNUX0NI
QU5ORUxfTkFNRSk7CisgICAgICBiYzEub25tZXNzYWdlID0gYmMxX2hhbmRsZXI7CisgICAgfSBl
bHNlIGlmIChwYXJhbXMuZ2V0KCdpZCcpICA9PT0gJ2lmcmFtZTInKSB7CisgICAgICBiYzIgPSBu
ZXcgQnJvYWRjYXN0Q2hhbm5lbChNVUxUSV9GUkFNRV9PUkRFUklOR19URVNUX0NIQU5ORUxfTkFN
RSk7CisgICAgICBiYzIub25tZXNzYWdlID0gYmMyX2hhbmRsZXI7CisgICAgfQorICB9Cis8L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvcmVzb3VyY2VzL3NlcnZpY2Utd29y
a2VyLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJt
ZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9yZXNvdXJjZXMvc2VydmljZS13b3JrZXIuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYTNkMTdiOWM2NTBhZGI1Zjg4OWE1MWYxZTczYTQ1MzdhMjgyMTYxZgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvcmVzb3VyY2VzL3NlcnZpY2Utd29ya2VyLmpz
CkBAIC0wLDAgKzEsMTUgQEAKK2xldCBwcm9taXNlX2Z1bmMgPSBudWxsOworbGV0IHByb21pc2Ug
PSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHByb21pc2VfZnVuYyA9IHJlc29sdmUpOworCitjb25z
dCBTRVJWSUNFX1dPUktFUl9URVNUX0NIQU5ORUxfTkFNRSA9ICdzZXJ2aWNlIHdvcmtlcic7Citj
b25zdCBiYzMgPSBuZXcgQnJvYWRjYXN0Q2hhbm5lbChTRVJWSUNFX1dPUktFUl9URVNUX0NIQU5O
RUxfTkFNRSk7CitiYzMub25tZXNzYWdlID0gZSA9PiB7CisgIGJjMy5wb3N0TWVzc2FnZSgnZG9u
ZScpOworICBwcm9taXNlX2Z1bmMoKTsKK307CitiYzMucG9zdE1lc3NhZ2UoJ2Zyb20gd29ya2Vy
Jyk7CisKKy8vIEVuc3VyZSB0aGF0IHRoZSB3b3JrZXIgc3RheXMgYWxpdmUgZm9yIHRoZSBkdXJh
dGlvbiBvZiB0aGUgdGVzdAorc2VsZi5hZGRFdmVudExpc3RlbmVyKCdpbnN0YWxsJywgZXZ0ID0+
IHsKKyAgZXZ0LndhaXRVbnRpbChwcm9taXNlKTsKK30pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0
Y2hhbm5lbC9yZXNvdXJjZXMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL3Jlc291
cmNlcy93M2MtaW1wb3J0LmxvZwppbmRleCAwYjk4MjZiMWE0NmVkMTFkZDExNjE5NWVhZDI5ZDA4
N2QxNGZjYzY0Li4xMjExYTlmYWQwMmNkN2I4N2Q1ZDY5NTBmOTQ4YjI5MmU4YzEwNDBjIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1l
c3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL3Jlc291cmNlcy93M2MtaW1wb3J0LmxvZworKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9i
cm9hZGNhc3RjaGFubmVsL3Jlc291cmNlcy93M2MtaW1wb3J0LmxvZwpAQCAtMTQsNiArMTQsOSBA
QCBQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKIE5vbmUKIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogTGlzdCBvZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL3Jlc291cmNlcy9j
cm9zcy1vcmlnaW4uaHRtbAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvcmVzb3VyY2VzL29yZGVyaW5nLmh0
bWwKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3Nh
Z2luZy9icm9hZGNhc3RjaGFubmVsL3Jlc291cmNlcy9vcmlnaW4uaHRtbAogL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNo
YW5uZWwvcmVzb3VyY2VzL3NhbmRib3hlZC5odG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9yZXNvdXJj
ZXMvc2VydmljZS13b3JrZXIuanMKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL3Jlc291cmNlcy93b3JrZXIu
anMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvcmVzb3VyY2VzL3dvcmtlci5qcyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jy
b2FkY2FzdGNoYW5uZWwvcmVzb3VyY2VzL3dvcmtlci5qcwppbmRleCA5MzY0YzYwMjc1NjM4NWNk
NGUwZjhlY2UyNjdiNDQ3NjIwNTkxYzk0Li5kZjIzMDcyYmM5OWY5NWQwOWY3Y2QxYTY1NTA1OTVl
NDMwMzllN2I4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL3Jlc291cmNlcy93b3JrZXIu
anMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJt
ZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9yZXNvdXJjZXMvd29ya2VyLmpzCkBAIC0xNiw2ICsx
NiwxMiBAQCBmdW5jdGlvbiBoYW5kbGVyKGUsIHJlcGx5KSB7CiAgIGMgPSBuZXcgQnJvYWRjYXN0
Q2hhbm5lbChlLmRhdGEuY2hhbm5lbCk7CiAgIGxldCBtZXNzYWdlcyA9IFtdOwogICBjLm9ubWVz
c2FnZSA9IGUgPT4geworICAgICAgaWYgKGUuZGF0YSA9PT0gJ3JlYWR5JykgeworICAgICAgICAv
LyBJZ25vcmUgYW55ICdyZWFkeScgbWVzc2FnZXMgZnJvbSB0aGUgb3RoZXIgdGhyZWFkIHNpbmNl
IHRoZXJlIGNvdWxkCisgICAgICAgIC8vIGJlIHNvbWUgcmFjZSBjb25kaXRpb25zIGJldHdlZW4g
dGhpcyBCcm9hZGNhc3RDaGFubmVsIGluc3RhbmNlCisgICAgICAgIC8vIGJlaW5nIGNyZWF0ZWQg
LyByZWFkeSB0byByZWNlaXZlIG1lc3NhZ2VzIGFuZCB0aGUgbWVzc2FnZSBiZWluZyBzZW50Lgor
ICAgICAgICByZXR1cm47CisgICAgICB9CiAgICAgICBtZXNzYWdlcy5wdXNoKGUuZGF0YSk7CiAg
ICAgICBpZiAoZS5kYXRhID09ICdkb25lJykKICAgICAgICAgcmVwbHkobWVzc2FnZXMpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJt
ZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9zZXJ2aWNlLXdvcmtlci5odHRwcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3Nh
Z2luZy9icm9hZGNhc3RjaGFubmVsL3NlcnZpY2Utd29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45NDJmZWI5MmMyNzBlMWYzYTcyN2FkNDY4OWRjNDQ4OTk2NDI4NjMyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9zZXJ2aWNlLXdvcmtlci5odHRwcy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK0ZBSUwgQnJvYWRjYXN0Q2hhbm5lbCB3b3JrcyBp
biBzZXJ2aWNlIHdvcmtlcnMgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGgg
dmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJp
YWJsZTogQnJvYWRjYXN0Q2hhbm5lbCIKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9z
ZXJ2aWNlLXdvcmtlci5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9zZXJ2aWNlLXdvcmtl
ci5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2MDU0MzRhZTFjY2IwMjcyNGE5MDFjYWY1ZjIzMjVi
MTcxOWQ4NzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL3NlcnZpY2Utd29y
a2VyLmh0dHBzLmh0bWwKQEAgLTAsMCArMSw0NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8bWV0YSBj
aGFyc2V0PXV0Zi04PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD4KKworY29uc3QgU0VSVklDRV9XT1JLRVJfVEVTVF9DSEFOTkVMX05B
TUUgPSAnc2VydmljZSB3b3JrZXInOworY29uc3QgZXZlbnRzID0gW107Citjb25zdCBjMSA9IG5l
dyBCcm9hZGNhc3RDaGFubmVsKFNFUlZJQ0VfV09SS0VSX1RFU1RfQ0hBTk5FTF9OQU1FKTsKK2Nv
bnN0IGMyID0gbmV3IEJyb2FkY2FzdENoYW5uZWwoU0VSVklDRV9XT1JLRVJfVEVTVF9DSEFOTkVM
X05BTUUpOworYzEub25tZXNzYWdlID0gZSA9PiBldmVudHMucHVzaChlKTsKK2MyLm9ubWVzc2Fn
ZSA9IGUgPT4gZXZlbnRzLnB1c2goZSk7CisKK2Z1bmN0aW9uIHRlc3RDb21wbGV0aW9uKHQpIHsK
KyAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisgICAgYzIuYWRkRXZlbnRMaXN0
ZW5lcigibWVzc2FnZSIsIHQuc3RlcF9mdW5jKGUgPT4geworICAgICAgaWYgKGUuZGF0YSA9PSAn
ZnJvbSB3b3JrZXInKSB7CisgICAgICAgIGMyLnBvc3RNZXNzYWdlKCdmcm9tIGMyJyk7CisgICAg
ICB9IGVsc2UgaWYgKGUuZGF0YSA9PSAnZG9uZScpIHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhl
dmVudHMubGVuZ3RoLCA1KTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhldmVudHNbMF0uZGF0YSwg
J2Zyb20gd29ya2VyJyk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnRzWzBdLnRhcmdldCwg
YzEpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50c1sxXS5kYXRhLCAnZnJvbSB3b3JrZXIn
KTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhldmVudHNbMV0udGFyZ2V0LCBjMik7CisgICAgICAg
IGFzc2VydF9lcXVhbHMoZXZlbnRzWzJdLmRhdGEsICdmcm9tIGMyJyk7CisgICAgICAgIGFzc2Vy
dF9lcXVhbHMoZXZlbnRzWzNdLmRhdGEsICdkb25lJyk7CisgICAgICAgIGFzc2VydF9lcXVhbHMo
ZXZlbnRzWzNdLnRhcmdldCwgYzEpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50c1s0XS5k
YXRhLCAnZG9uZScpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50c1s0XS50YXJnZXQsIGMy
KTsKKyAgICAgICAgcmVzb2x2ZSgpOworICAgICAgfQorICAgIH0pKTsKKyAgfSk7Cit9CisKK3By
b21pc2VfdGVzdChhc3luYyB0ID0+IHsKKworICAgIGNvbnN0IHRlc3RSZXN1bHRzID0gdGVzdENv
bXBsZXRpb24odCk7CisgICAgY29uc3QgU0NSSVBUID0gInJlc291cmNlcy9zZXJ2aWNlLXdvcmtl
ci5qcyI7CisgICAgY29uc3QgU0NPUEUgPSAiL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVs
L3Jlc291cmNlcy9ub3QtdXNlZC8iOworCisgICAgY29uc3QgcmVnID0gYXdhaXQgbmF2aWdhdG9y
LnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoU0NSSVBULCB7J3Njb3BlJzogU0NPUEV9KTsKKyAgICB0
LmFkZF9jbGVhbnVwKCgpID0+IHJlZy51bnJlZ2lzdGVyKCkpOworCisgICAgcmV0dXJuIHRlc3RS
ZXN1bHRzOworICB9LCAnQnJvYWRjYXN0Q2hhbm5lbCB3b3JrcyBpbiBzZXJ2aWNlIHdvcmtlcnMn
KTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC93M2MtaW1wb3J0Lmxv
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2Fn
aW5nL2Jyb2FkY2FzdGNoYW5uZWwvdzNjLWltcG9ydC5sb2cKaW5kZXggMTRlOWRkOTRkNzg2Yzli
MTRlNWRjMDkyYTA1MmQ2NDI1ZDdkNjcwMC4uODU5MmYwMWRkMzYzOTcwMWFjOGIwNDY4MTU3Zjg2
YzQ3YjZlN2UxYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC93M2MtaW1wb3J0LmxvZwor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3Nh
Z2luZy9icm9hZGNhc3RjaGFubmVsL3czYy1pbXBvcnQubG9nCkBAIC0xNiw3ICsxNiwxMSBAQCBO
b25lCiBMaXN0IG9mIGZpbGVzOgogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvYmFzaWNzLmFueS5qcwogL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jy
b2FkY2FzdGNoYW5uZWwvYmxvYnMuaHRtbAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvY3Jvc3Mtb3JpZ2lu
Lmh0bWwKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1l
c3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL2RldGFjaGVkLWlmcmFtZS5odG1sCiAvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0
Y2hhbm5lbC9pbnRlcmZhY2UuYW55LmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9vcmRlcmluZy5odG1s
CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdp
bmcvYnJvYWRjYXN0Y2hhbm5lbC9vcmlnaW4ud2luZG93LmpzCiAvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9z
YW5kYm94Lmh0bWwKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL3NlcnZpY2Utd29ya2VyLmh0dHBzLmh0bWwK
IC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2lu
Zy9icm9hZGNhc3RjaGFubmVsL3dvcmtlcnMuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hh
bm5lbC93b3JrZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvd29ya2Vycy1leHBl
Y3RlZC50eHQKaW5kZXggMDZlMDU1NjU3NjgyM2E4M2I0ZjFhNjRiMGViYmMzNDYwY2I3Y2MxMi4u
MDNiMzlkNmEyN2M4MWVlNjE0OWY2OTg2MzA4MzA1MmExNzJjZGRjYSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJv
YWRjYXN0Y2hhbm5lbC93b3JrZXJzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVs
L3dvcmtlcnMtZXhwZWN0ZWQudHh0CkBAIC0zLDUgKzMsMTAgQEAgUEFTUyBCcm9hZGNhc3RDaGFu
bmVsIHdvcmtzIGluIHdvcmtlcnMKIEZBSUwgQnJvYWRjYXN0Q2hhbm5lbCB3b3JrcyBpbiBzaGFy
ZWQgd29ya2VycyBudWxsIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ3dvcmtlci5wb3J0
JykKIFBBU1MgQ2xvc2luZyBhbmQgcmUtb3BlbmluZyBhIGNoYW5uZWwgd29ya3MuCiBQQVNTIEJy
b2FkY2FzdENoYW5uZWwgY3JlYXRlZCBhZnRlciBhIHdvcmtlciBzZWxmLmNsb3NlKCkKLVBBU1Mg
QnJvYWRjYXN0Q2hhbm5lbCB1c2VkIGFmdGVyIGEgd29ya2VyIHNlbGYuY2xvc2UoKQorUEFTUyBC
cm9hZGNhc3RDaGFubmVsIG1lc3NhZ2VzIGZyb20gY2xvc2VkIHdvcmtlciB0byBwYXJlbnQgc2hv
dWxkIGJlIGlnbm9yZWQgKEJDIGNyZWF0ZWQgYmVmb3JlIGNsb3NpbmcpCitQQVNTIEJyb2FkY2Fz
dENoYW5uZWwgbWVzc2FnZXMgZnJvbSBjbG9zZWQgd29ya2VyIHRvIHBhcmVudCBzaG91bGQgYmUg
aWdub3JlZCAoQkMgY3JlYXRlZCBhZnRlciBjbG9zaW5nKQorUEFTUyBCcm9hZGNhc3RDaGFubmVs
IG1lc3NhZ2VzIGZyb20gcGFyZW50IHRvIGNsb3NlZCB3b3JrZXIgc2hvdWxkIGJlIGlnbm9yZWQg
KEJDIGNyZWF0ZWQgYmVmb3JlIGNsb3NpbmcpCitQQVNTIEJyb2FkY2FzdENoYW5uZWwgbWVzc2Fn
ZXMgZnJvbSBwYXJlbnQgdG8gY2xvc2VkIHdvcmtlciBzaG91bGQgYmUgaWdub3JlZCAoQkMgY3Jl
YXRlZCBhZnRlciBjbG9zaW5nKQorUEFTUyBCcm9hZGNhc3RDaGFubmVsIG1lc3NhZ2VzIHdpdGhp
biBjbG9zZWQgd29ya2VyIHNob3VsZCBiZSBpZ25vcmVkIChCQ3MgY3JlYXRlZCBiZWZvcmUgY2xv
c2luZykKK1BBU1MgQnJvYWRjYXN0Q2hhbm5lbCBtZXNzYWdlcyB3aXRoaW4gY2xvc2VkIHdvcmtl
ciBzaG91bGQgYmUgaWdub3JlZCAoQkNzIGNyZWF0ZWQgYWZ0ZXIgY2xvc2luZykKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNz
YWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC93b3JrZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL3dv
cmtlcnMuaHRtbAppbmRleCAxZDA1ZmViN2VkYmYwZTlmYzE0OGQyMTM2YmI1YTVhMWZmZWI1NmE2
Li44YjU1NDkyZjNjZmZiMzU2NjRlZDI2ZmUxZjM2ODdmNTJmZjQ1N2UwIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9i
cm9hZGNhc3RjaGFubmVsL3dvcmtlcnMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL3dvcmtl
cnMuaHRtbApAQCAtODAsMTEgKzgwLDE0IEBAIGFzeW5jX3Rlc3QodCA9PiB7CiAKICAgICBsZXQg
d29ya2VyID0gbmV3IFdvcmtlcigncmVzb3VyY2VzL3dvcmtlci5qcycpOwogICAgIHdvcmtlci5v
bm1lc3NhZ2UgPSB0LnN0ZXBfZnVuYyhlID0+IHsKLSAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhldmVudHMsIFsnYzE6IGZyb20gd29ya2VyJywgJ2MyOiBlY2hvJ10sCisgICAgICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMoZXZlbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnYzE6
IGZyb20gd29ya2VyJywgJ2MyOiByZWFkeScsICdjMjogZWNobyddLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdtZXNzYWdlcyBpbiBkb2N1bWVudCcpOwogICAgICAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKGUuZGF0YSwgWydkb25lJ10sICdtZXNzYWdlcyBpbiB3b3JrZXInKTsKICAgICAg
ICAgdC5kb25lKCk7CiAgICAgICB9KTsKKyAgICB3b3JrZXIub25tZXNzYWdlcnJvciA9CisgICAg
ICAgIHQudW5yZWFjaGVkX2Z1bmMoJ1dvcmtlclwncyBvbm1lc3NhZ2VlcnJvciBoYW5kbGVyIGNh
bGxlZCcpOwogCiAgICAgYy5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZSA9PiB7CiAgICAg
ICAgIGlmIChlLmRhdGEgPT0gJ2Zyb20gd29ya2VyJykgewpAQCAtOTQsNDggKzk3LDI3OSBAQCBh
c3luY190ZXN0KHQgPT4gewogICAgICAgICAgICAgICBsZXQgYzIgPSBuZXcgQnJvYWRjYXN0Q2hh
bm5lbCgnd29ya2VyLWNsb3NlJyk7CiAgICAgICAgICAgICAgIGMyLm9ubWVzc2FnZSA9IGUgPT4g
ewogICAgICAgICAgICAgICAgICAgZXZlbnRzLnB1c2goJ2MyOiAnICsgZS5kYXRhKTsKLSAgICAg
ICAgICAgICAgICAgIGMyLnBvc3RNZXNzYWdlKCdkb25lJyk7CisgICAgICAgICAgICAgICAgICBp
ZiAoZS5kYXRhID09PSAncmVhZHknKSB7CisgICAgICAgICAgICAgICAgICAgIHdvcmtlci5wb3N0
TWVzc2FnZSh7cGluZzogJ2VjaG8nfSk7CisgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICBjMi5wb3N0TWVzc2FnZSgnZG9uZScpOworICAgICAgICAgICAgICAg
ICAgICBjMi5jbG9zZSgpOworICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH07
Ci0gICAgICAgICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7cGluZzogJ2VjaG8nfSk7CisgICAg
ICAgICAgICAgIC8vIEZvciBzb21lIGltcGxlbWVudGF0aW9ucyB0aGVyZSBtYXkgYmUgYSByYWNl
IGNvbmRpdGlvbiBiZXR3ZWVuCisgICAgICAgICAgICAgIC8vIHdoZW4gdGhlIEJyb2FkY2FzdENo
YW5uZWwgaW5zdGFuY2UgYWJvdmUgaXMgY3JlYXRlZCAvIHJlYWR5IHRvCisgICAgICAgICAgICAg
IC8vIHJlY2VpdmUgbWVzc2FnZXMgYW5kIHdoZW4gdGhlIHdvcmtlciBjYWxscyBwb3N0TWVzc2Fn
ZSBvbiBpdCdzCisgICAgICAgICAgICAgIC8vIEJyb2FkY2FzdENoYW5uZWwgaW5zdGFuY2UuIFRv
IGF2b2lkIHRoaXMsIGNvbmZpcm0gdGhhdCBvdXIKKyAgICAgICAgICAgICAgLy8gaW5zdGFuY2Ug
Y2FuIHJlY2VpdmUgYSBtZXNzYWdlIGJlZm9yZSBpbmRpY2F0aW5nIHRvIHRoZSBvdGhlcgorICAg
ICAgICAgICAgICAvLyB0aHJlYWQgdGhhdCB3ZSBhcmUgcmVhZHkuIEZvciBtb3JlIGRldGFpbHMs
IHNlZToKKyAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9odG1sL2lz
c3Vlcy83MjY3CisgICAgICAgICAgICAgIGxldCBjMyA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKCd3
b3JrZXItY2xvc2UnKTsKKyAgICAgICAgICAgICAgYzMucG9zdE1lc3NhZ2UoJ3JlYWR5Jyk7Cisg
ICAgICAgICAgICAgIGMzLmNsb3NlKCk7CiAgICAgICAgICAgICB9LCAxKTsKICAgICAgICAgfQog
ICAgICAgfSk7CiAKICAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe2NoYW5uZWw6ICd3b3JrZXItY2xv
c2UnfSk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiB3b3JrZXIudGVybWluYXRlKCkpOwogCiAg
IH0sICdDbG9zaW5nIGFuZCByZS1vcGVuaW5nIGEgY2hhbm5lbCB3b3Jrcy4nKTsKIAogYXN5bmNf
dGVzdCh0ID0+IHsKICAgZnVuY3Rpb24gd29ya2VyQ29kZSgpIHsKICAgICBjbG9zZSgpOwotICAg
IHZhciBiYyA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKCd3b3JrZXItdGVzdCcpOworICAgIHRyeSB7
CisgICAgICB2YXIgYmMgPSBuZXcgQnJvYWRjYXN0Q2hhbm5lbCgnd29ya2VyLWNyZWF0ZS1hZnRl
ci1jbG9zZScpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgIHBvc3RNZXNzYWdlKGUpOworICAg
ICAgcmV0dXJuOworICAgIH0KICAgICBwb3N0TWVzc2FnZSh0cnVlKTsKICAgfQogCi0gIHZhciB3
b3JrZXJCbG9iID0gbmV3IEJsb2IoW3dvcmtlckNvZGUudG9TdHJpbmcoKSArICI7d29ya2VyQ29k
ZSgpOyJdLCB7dHlwZToiYXBwbGljYXRpb24vamF2YXNjcmlwdCJ9KTsKKyAgdmFyIHdvcmtlckJs
b2IgPSBuZXcgQmxvYigKKyAgICAgIFt3b3JrZXJDb2RlLnRvU3RyaW5nKCkgKyAnO3dvcmtlckNv
ZGUoKTsnXSwKKyAgICAgIHt0eXBlOiAnYXBwbGljYXRpb24vamF2YXNjcmlwdCd9KTsKIAogICB2
YXIgdyA9IG5ldyBXb3JrZXIoVVJMLmNyZWF0ZU9iamVjdFVSTCh3b3JrZXJCbG9iKSk7Ci0gIHcu
b25tZXNzYWdlID0gZnVuY3Rpb24oZSkgewotICAgIGFzc2VydF90cnVlKGUuZGF0YSwgIkJyb2Fk
Y2FzdENoYW5uZWwgY3JlYXRlZCBvbiB3b3JrZXIgc2h1dGRvd24uIik7Ci0gICAgdC5kb25lKCk7
Ci0gIH0KKyAgdy5vbm1lc3NhZ2UgPSB0LnN0ZXBfZnVuY19kb25lKGZ1bmN0aW9uKGUpIHsKKyAg
ICBhc3NlcnRfZXF1YWxzKAorICAgICAgICBlLmRhdGEsIHRydWUsCisgICAgICAgICdCcm9hZGNh
c3RDaGFubmVsIGNyZWF0aW9uIGluIGNsb3NlZCB3b3JrZXIgdHJpZ2dlcmVkIGV4Y2VwdGlvbjog
JyArCisgICAgICAgICAgICBlLmRhdGEubWVzc2FnZSk7CisgIH0pOworICB0LmFkZF9jbGVhbnVw
KCgpID0+IHcudGVybWluYXRlKCkpOwogfSwgJ0Jyb2FkY2FzdENoYW5uZWwgY3JlYXRlZCBhZnRl
ciBhIHdvcmtlciBzZWxmLmNsb3NlKCknKTsKIAotYXN5bmNfdGVzdCh0ID0+IHsKLSAgZnVuY3Rp
b24gd29ya2VyQ29kZSgpIHsKKworZnVuY3Rpb24gcG9zdE1lc3NhZ2VGcm9tV29ya2VyV29ya2Vy
Q29kZSh3b3JrZXJOYW1lLCBjaGFubmVsTmFtZSkgeworICBpZiAod29ya2VyTmFtZSA9PT0gJ2Ns
b3NlLWJlZm9yZS1jcmVhdGUtd29ya2VyJykgeworICAgIGNsb3NlKCk7CisgIH0KKyAgbGV0IGJj
ID0gbmV3IEJyb2FkY2FzdENoYW5uZWwoY2hhbm5lbE5hbWUpOworICBpZiAod29ya2VyTmFtZSA9
PT0gJ2Nsb3NlLWFmdGVyLWNyZWF0ZS13b3JrZXInKSB7CiAgICAgY2xvc2UoKTsKLSAgICB2YXIg
YmMgPSBuZXcgQnJvYWRjYXN0Q2hhbm5lbCgnd29ya2VyLXRlc3QtYWZ0ZXItY2xvc2UnKTsKLSAg
ICBiYy5wb3N0TWVzc2FnZSh0cnVlKTsKICAgfQorICBiYy5wb3N0TWVzc2FnZSh3b3JrZXJOYW1l
ICsgJyBkb25lJyk7CisgIHBvc3RNZXNzYWdlKHRydWUpOworfQorCitmdW5jdGlvbiBkb1Bvc3RN
ZXNzYWdlRnJvbVdvcmtlclRlc3QodCwgd29ya2VyTmFtZSwgY2hhbm5lbE5hbWUpIHsKKyAgdmFy
IGJjID0gbmV3IEJyb2FkY2FzdENoYW5uZWwoY2hhbm5lbE5hbWUpOworICBiYy5vbm1lc3NhZ2Ug
PSB0LnN0ZXBfZnVuY19kb25lKGZ1bmN0aW9uKGUpIHsKKyAgICBhc3NlcnRfZXF1YWxzKAorICAg
ICAgICBlLmRhdGEsICdkb25lLXdvcmtlciBkb25lJywKKyAgICAgICAgJ0Jyb2FkY2FzdENoYW5u
ZWwgbWVzc2FnZSBzaG91bGQgb25seSBiZSByZWNlaXZlZCBmcm9tIHRoZSBzZWNvbmQgd29ya2Vy
Jyk7CisgIH0pOworICB0LmFkZF9jbGVhbnVwKCgpID0+IGJjLmNsb3NlKCkpOworCisgIHZhciB0
ZXN0TWVzc2FnZUhhbmRsZXIgPSB0LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7CisgICAgYXNzZXJ0
X2VxdWFscygKKyAgICAgICAgZS5kYXRhLCB0cnVlLAorICAgICAgICAnV29ya2VyIHNlbnQgcG9z
dE1lc3NhZ2UgaW5kaWNhdGluZyBpdCBzZW50IGEgQnJvYWRjYXN0Q2hhbm5lbCBtZXNzYWdlJyk7
CisKKyAgICB2YXIgdyA9IGNyZWF0ZVdvcmtlcigKKyAgICAgICAgcG9zdE1lc3NhZ2VGcm9tV29y
a2VyV29ya2VyQ29kZSwgJ2RvbmUtd29ya2VyJywgY2hhbm5lbE5hbWUpOworICAgIHQuYWRkX2Ns
ZWFudXAoKCkgPT4gdy50ZXJtaW5hdGUoKSk7CisgIH0pOworICBjcmVhdGVXb3JrZXIoCisgICAg
ICBwb3N0TWVzc2FnZUZyb21Xb3JrZXJXb3JrZXJDb2RlLCB3b3JrZXJOYW1lLCBjaGFubmVsTmFt
ZSwKKyAgICAgIHRlc3RNZXNzYWdlSGFuZGxlcik7CisKKyAgLy8gVG8gYXZvaWQgY2FsbGluZyB0
LnN0ZXBfdGltZW91dCBoZXJlLCBoYXZlIHRoZSB3b3JrZXIgcG9zdE1lc3NhZ2UodHJ1ZSkKKyAg
Ly8gb25jZSBpdCBpcyBmaW5pc2hlZCBhbmQgdGhlbiB3ZSdsbCBpbnN0YW50aWF0ZSBhbm90aGVy
IHdvcmtlciB0aGF0CisgIC8vIHBlcmZvcm1zIHRoZSBzYW1lIHRlc3Qgc3RlcHMgYnV0IGRvZXNu
J3QgY2xvc2UuIEJ5IHRoZSB0aW1lIHRoZQorICAvLyBCcm9hZGNhc3RDaGFubmVsIG1lc3NhZ2Ug
aW4gdGhhdCB3b3JrZXIgZ2V0cyBzZW50IHN1Y2Nlc3NmdWxseSBpdCBzaG91bGQKKyAgLy8gYmUg
c2FmZSB0byBhc3N1bWUgdGhhdCBhbnkgQnJvYWRjYXN0Q2hhbm5lbCBtZXNzYWdlcyBmcm9tIHRo
ZSBwcmV2aW91cworICAvLyB3b3JrZXIgd291bGQgaGF2ZSBiZWVuIHNlbnQgaWYgdGhleSB3ZXJl
IGdvaW5nIHRvIGJlLgorfQogCi0gIHZhciBiYyA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKCd3b3Jr
ZXItdGVzdC1hZnRlci1jbG9zZScpOwotICBiYy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihlKSB7Ci0g
ICAgYXNzZXJ0X3RydWUoZS5kYXRhLCAiQnJvYWRjYXN0Q2hhbm5lbCBjcmVhdGVkIG9uIHdvcmtl
ciBzaHV0ZG93bi4iKTsKLSAgICB0LmRvbmUoKTsKK2Z1bmN0aW9uIGNyZWF0ZVdvcmtlcih3b3Jr
ZXJDb2RlLCB3b3JrZXJOYW1lLCBjaGFubmVsTmFtZSwgaGFuZGxlciA9IG51bGwpIHsKKyAgdmFy
IHdvcmtlckNvZGVTdHIgPSB3b3JrZXJDb2RlLnRvU3RyaW5nKCkgKworICAgICAgYDske3dvcmtl
ckNvZGUubmFtZX0oIiR7d29ya2VyTmFtZX0iLCAiJHtjaGFubmVsTmFtZX0iKTtgOworICB2YXIg
d29ya2VyQmxvYiA9IG5ldyBCbG9iKFt3b3JrZXJDb2RlU3RyXSwge3R5cGU6ICdhcHBsaWNhdGlv
bi9qYXZhc2NyaXB0J30pOworICB2YXIgdyA9IG5ldyBXb3JrZXIoVVJMLmNyZWF0ZU9iamVjdFVS
TCh3b3JrZXJCbG9iKSk7CisgIGlmIChoYW5kbGVyICE9PSBudWxsKSB7CisgICAgdy5vbm1lc3Nh
Z2UgPSBoYW5kbGVyOwogICB9CisgIHJldHVybiB3OworfQorCithc3luY190ZXN0KHQgPT4gewor
ICBjb25zdCB3b3JrZXJOYW1lID0gJ2Nsb3NlLWFmdGVyLWNyZWF0ZS13b3JrZXInOworICBjb25z
dCBjaGFubmVsTmFtZSA9IHdvcmtlck5hbWUgKyAnLXBvc3RtZXNzYWdlLWZyb20td29ya2VyJzsK
KyAgZG9Qb3N0TWVzc2FnZUZyb21Xb3JrZXJUZXN0KHQsIHdvcmtlck5hbWUsIGNoYW5uZWxOYW1l
KTsKK30sICdCcm9hZGNhc3RDaGFubmVsIG1lc3NhZ2VzIGZyb20gY2xvc2VkIHdvcmtlciB0byBw
YXJlbnQgc2hvdWxkIGJlIGlnbm9yZWQgKEJDIGNyZWF0ZWQgYmVmb3JlIGNsb3NpbmcpJyk7CisK
K2FzeW5jX3Rlc3QodCA9PiB7CisgIGNvbnN0IHdvcmtlck5hbWUgPSAnY2xvc2UtYmVmb3JlLWNy
ZWF0ZS13b3JrZXInOworICBjb25zdCBjaGFubmVsTmFtZSA9IHdvcmtlck5hbWUgKyAnLXBvc3Rt
ZXNzYWdlLWZyb20td29ya2VyJzsKKyAgZG9Qb3N0TWVzc2FnZUZyb21Xb3JrZXJUZXN0KHQsIHdv
cmtlck5hbWUsIGNoYW5uZWxOYW1lKTsKK30sICdCcm9hZGNhc3RDaGFubmVsIG1lc3NhZ2VzIGZy
b20gY2xvc2VkIHdvcmtlciB0byBwYXJlbnQgc2hvdWxkIGJlIGlnbm9yZWQgKEJDIGNyZWF0ZWQg
YWZ0ZXIgY2xvc2luZyknKTsKKworCitmdW5jdGlvbiBwb3N0TWVzc2FnZVRvV29ya2VyV29ya2Vy
Q29kZSh3b3JrZXJOYW1lLCBjaGFubmVsTmFtZSkgeworICBzZWxmLmFkZEV2ZW50TGlzdGVuZXIo
J21lc3NhZ2UnLCAoKSA9PiB7CisgICAgaWYgKHdvcmtlck5hbWUgPT09ICdjbG9zZS1iZWZvcmUt
Y3JlYXRlLXdvcmtlcicpIHsKKyAgICAgIGNsb3NlKCk7CisgICAgfQorICAgIHRyeSB7CisgICAg
ICBsZXQgYmMxID0gbmV3IEJyb2FkY2FzdENoYW5uZWwoY2hhbm5lbE5hbWUpOworICAgICAgYmMx
Lm9ubWVzc2FnZSA9IGUgPT4geworICAgICAgICBpZiAoZS5kYXRhID09PSAncmVhZHknKSB7Cisg
ICAgICAgICAgcG9zdE1lc3NhZ2UoZS5kYXRhKTsKKyAgICAgICAgfSBlbHNlIGlmIChlLmRhdGEg
PT09ICd0ZXN0JykgeworICAgICAgICAgIHBvc3RNZXNzYWdlKHdvcmtlck5hbWUgKyAnIGRvbmUn
KTsKKyAgICAgICAgfQorICAgICAgfTsKKyAgICAgIGJjMS5vbm1lc3NhZ2VlcnJvciA9ICgpID0+
IHsKKyAgICAgICAgcG9zdE1lc3NhZ2UoJ29ubWVzc2FnZWVycm9yIGNhbGxlZCBmcm9tIHdvcmtl
ciBCcm9hZGNhc3RDaGFubmVsJyk7CisgICAgICB9OworICAgICAgaWYgKHdvcmtlck5hbWUgPT09
ICdjbG9zZS1hZnRlci1jcmVhdGUtd29ya2VyJykgeworICAgICAgICBjbG9zZSgpOworICAgICAg
fQorICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgIHBvc3RNZXNzYWdlKGUpOworICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGlmICh3b3JrZXJOYW1lID09PSAnZG9uZS13b3JrZXInKSB7CisgICAg
ICAvLyBGb3Igc29tZSBpbXBsZW1lbnRhdGlvbnMgdGhlcmUgbWF5IGJlIGEgcmFjZSBjb25kaXRp
b24gYmV0d2VlbiB3aGVuCisgICAgICAvLyB0aGUgQnJvYWRjYXN0Q2hhbm5lbCBpbnN0YW5jZSBh
Ym92ZSBpcyBjcmVhdGVkIC8gcmVhZHkgdG8gcmVjZWl2ZQorICAgICAgLy8gbWVzc2FnZXMgYW5k
IHdoZW4gdGhlIHBhcmVudCBjYWxscyBwb3N0TWVzc2FnZSBvbiBpdCdzCisgICAgICAvLyBCcm9h
ZGNhc3RDaGFubmVsIGluc3RhbmNlLiBUbyBhdm9pZCB0aGlzLCBjb25maXJtIHRoYXQgb3VyIGlu
c3RhbmNlCisgICAgICAvLyBjYW4gcmVjZWl2ZSBhIG1lc3NhZ2UgYmVmb3JlIGluZGljYXRpbmcg
dG8gdGhlIG90aGVyIHRocmVhZCB0aGF0IHdlCisgICAgICAvLyBhcmUgcmVhZHkuIEZvciBtb3Jl
IGRldGFpbHMsIHNlZToKKyAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvaHRtbC9p
c3N1ZXMvNzI2NworICAgICAgbGV0IGJjMiA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKGNoYW5uZWxO
YW1lKTsKKyAgICAgIGJjMi5wb3N0TWVzc2FnZSgncmVhZHknKTsKKyAgICAgIGJjMi5jbG9zZSgp
OworICAgIH0gZWxzZSB7CisgICAgICAvLyBTaW5jZSB0aGUgd29ya2VyIGhhcyBjbG9zZWQsIGl0
J3Mgbm90IGV4cGVjdGVkIHRoYXQgdGhlCisgICAgICAvLyBCcm9hZGNhc3RDaGFubmVsIHdpbGwg
cmVjZWl2ZSBtZXNzYWdlcyAodGhlcmUncyBhIHNlcGFyYXRlIHRlc3QgZm9yCisgICAgICAvLyB0
aGF0KSwgc28ganVzdCBpbmRpY2F0ZSBkaXJlY3RseSB0aGF0IGl0J3MgcmVhZHkgdG8gdGVzdCBy
ZWNlaXZpbmcKKyAgICAgIC8vIGEgbWVzc2FnZSBmcm9tIHRoZSBwYXJlbnQgZGlzcGl0ZSB0aGUg
cG9zc2liaWxpdHkgb2YgYSByYWNlIGNvbmRpdGlvbi4KKyAgICAgIHBvc3RNZXNzYWdlKCdyZWFk
eScpOworICAgIH0KKyAgfSk7CisgIHNlbGYuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZWVycm9y
JywgKCkgPT4geworICAgIHBvc3RNZXNzYWdlKCdvbm1lc3NhZ2VlcnJvciBjYWxsZWQgZnJvbSB3
b3JrZXInKTsKKyAgfSk7Cit9CiAKLSAgdmFyIHdvcmtlckJsb2IgPSBuZXcgQmxvYihbd29ya2Vy
Q29kZS50b1N0cmluZygpICsgIjt3b3JrZXJDb2RlKCk7Il0sIHt0eXBlOiJhcHBsaWNhdGlvbi9q
YXZhc2NyaXB0In0pOwotICBuZXcgV29ya2VyKFVSTC5jcmVhdGVPYmplY3RVUkwod29ya2VyQmxv
YikpOwotfSwgJ0Jyb2FkY2FzdENoYW5uZWwgdXNlZCBhZnRlciBhIHdvcmtlciBzZWxmLmNsb3Nl
KCknKTsKK2Z1bmN0aW9uIGRvUG9zdE1lc3NhZ2VUb1dvcmtlclRlc3QodCwgd29ya2VyTmFtZSwg
Y2hhbm5lbE5hbWUpIHsKKyAgdmFyIGJjID0gbmV3IEJyb2FkY2FzdENoYW5uZWwoY2hhbm5lbE5h
bWUpOworICB0LmFkZF9jbGVhbnVwKCgpID0+IGJjLmNsb3NlKCkpOworCisgIHZhciBkb25lTWVz
c2FnZUhhbmRsZXIgPSB0LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7CisgICAgaWYgKGUuZGF0YSA9
PT0gJ3JlYWR5JykgeworICAgICAgYmMucG9zdE1lc3NhZ2UoJ3Rlc3QnKTsKKyAgICB9IGVsc2Ug
aWYgKGUuZGF0YSA9PT0gJ2RvbmUtd29ya2VyIGRvbmUnKSB7CisgICAgICB0LmRvbmUoKTsKKyAg
ICB9IGVsc2UgeworICAgICAgYXNzZXJ0X3VucmVhY2hlZCgKKyAgICAgICAgICAnQnJvYWRjYXN0
Q2hhbm5lbC5wb3N0TWVzc2FnZSB0cmlnZ2VyZWQgZXhjZXB0aW9uIHdpdGhpbiBzZWNvbmQgd29y
a2VyOiAnICsKKyAgICAgICAgICBlLmRhdGEubWVzc2FnZSk7CisgICAgfQorICB9KTsKKyAgdmFy
IHRlc3RNZXNzYWdlSGFuZGxlciA9IHQuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKKyAgICBhc3Nl
cnRfZXF1YWxzKAorICAgICAgICBlLmRhdGEsICdyZWFkeScsCisgICAgICAgICdXb3JrZXIgc2Vu
dCBwb3N0TWVzc2FnZSBpbmRpY2F0aW5nIGl0cyBCcm9hZGNhc3RDaGFubmVsIGluc3RhbmNlIGlz
IHJlYWR5Jyk7CisgICAgYmMucG9zdE1lc3NhZ2UoJ3Rlc3QnKTsKKworICAgIHZhciBkb25lV29y
a2VyID0gY3JlYXRlV29ya2VyKAorICAgICAgICBwb3N0TWVzc2FnZVRvV29ya2VyV29ya2VyQ29k
ZSwgJ2RvbmUtd29ya2VyJywgY2hhbm5lbE5hbWUsCisgICAgICAgIGRvbmVNZXNzYWdlSGFuZGxl
cik7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiB7CisgICAgICBkb25lV29ya2VyLnRlcm1pbmF0
ZSgpOworICAgIH0pOworICAgIGRvbmVXb3JrZXIucG9zdE1lc3NhZ2UoJ3N0YXJ0Jyk7CisgIH0p
OworICB2YXIgdGVzdFdvcmtlciA9IGNyZWF0ZVdvcmtlcigKKyAgICAgIHBvc3RNZXNzYWdlVG9X
b3JrZXJXb3JrZXJDb2RlLCB3b3JrZXJOYW1lLCBjaGFubmVsTmFtZSwKKyAgICAgIHRlc3RNZXNz
YWdlSGFuZGxlcik7CisgIHRlc3RXb3JrZXIucG9zdE1lc3NhZ2UoJ3N0YXJ0Jyk7Cit9CisKK2Fz
eW5jX3Rlc3QodCA9PiB7CisgIGNvbnN0IHdvcmtlck5hbWUgPSAnY2xvc2UtYWZ0ZXItY3JlYXRl
LXdvcmtlcic7CisgIGNvbnN0IGNoYW5uZWxOYW1lID0gd29ya2VyTmFtZSArICctcG9zdG1lc3Nh
Z2UtdG8td29ya2VyJzsKKyAgZG9Qb3N0TWVzc2FnZVRvV29ya2VyVGVzdCh0LCB3b3JrZXJOYW1l
LCBjaGFubmVsTmFtZSk7Cit9LCAnQnJvYWRjYXN0Q2hhbm5lbCBtZXNzYWdlcyBmcm9tIHBhcmVu
dCB0byBjbG9zZWQgd29ya2VyIHNob3VsZCBiZSBpZ25vcmVkIChCQyBjcmVhdGVkIGJlZm9yZSBj
bG9zaW5nKScpOworCithc3luY190ZXN0KHQgPT4geworICBjb25zdCB3b3JrZXJOYW1lID0gJ2Ns
b3NlLWJlZm9yZS1jcmVhdGUtd29ya2VyJzsKKyAgY29uc3QgY2hhbm5lbE5hbWUgPSB3b3JrZXJO
YW1lICsgJy1wb3N0bWVzc2FnZS10by13b3JrZXInOworICBkb1Bvc3RNZXNzYWdlVG9Xb3JrZXJU
ZXN0KHQsIHdvcmtlck5hbWUsIGNoYW5uZWxOYW1lKTsKK30sICdCcm9hZGNhc3RDaGFubmVsIG1l
c3NhZ2VzIGZyb20gcGFyZW50IHRvIGNsb3NlZCB3b3JrZXIgc2hvdWxkIGJlIGlnbm9yZWQgKEJD
IGNyZWF0ZWQgYWZ0ZXIgY2xvc2luZyknKTsKKworCitmdW5jdGlvbiBwb3N0TWVzc2FnZVdpdGhp
bldvcmtlcldvcmtlckNvZGUod29ya2VyTmFtZSwgY2hhbm5lbE5hbWUpIHsKKyAgaWYgKHdvcmtl
ck5hbWUgPT09ICdjbG9zZS1iZWZvcmUtY3JlYXRlLXdvcmtlcicpIHsKKyAgICBjbG9zZSgpOwor
ICB9CisgIHRyeSB7CisgICAgbGV0IGJjMSA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKGNoYW5uZWxO
YW1lKTsKKyAgICBsZXQgYmMyID0gbmV3IEJyb2FkY2FzdENoYW5uZWwoY2hhbm5lbE5hbWUpOwor
ICAgIGJjMS5vbm1lc3NhZ2UgPSBlID0+IHsKKyAgICAgIHBvc3RNZXNzYWdlKHdvcmtlck5hbWUg
KyAnIGRvbmUnKQorICAgIH07CisgICAgaWYgKHdvcmtlck5hbWUgPT09ICdjbG9zZS1hZnRlci1j
cmVhdGUtd29ya2VyJykgeworICAgICAgY2xvc2UoKTsKKyAgICB9CisgICAgYmMyLnBvc3RNZXNz
YWdlKHRydWUpOworICAgIHBvc3RNZXNzYWdlKHRydWUpOworICB9IGNhdGNoIChlKSB7CisgICAg
cG9zdE1lc3NhZ2UoZSk7CisgIH0KK30KKworZnVuY3Rpb24gZG9Qb3N0TWVzc2FnZVdpdGhpbldv
cmtlclRlc3QodCwgd29ya2VyTmFtZSwgY2hhbm5lbE5hbWUpIHsKKyAgdmFyIGRvbmVNZXNzYWdl
SGFuZGxlciA9IHQuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKKyAgICBpZiAoZS5kYXRhID09PSB0
cnVlKSB7CisgICAgICAvLyBEb25lIHdvcmtlciBoYXMgZmluaXNoZWQgLSBubyBhY3Rpb24gbmVl
ZGVkCisgICAgfSBlbHNlIGlmIChlLmRhdGEgPT09ICdkb25lLXdvcmtlciBkb25lJykgeworICAg
ICAgdC5kb25lKCk7CisgICAgfSBlbHNlIHsKKyAgICAgIGFzc2VydF91bnJlYWNoZWQoCisgICAg
ICAgICAgJ0Jyb2FkY2FzdENoYW5uZWwucG9zdE1lc3NhZ2UgdHJpZ2dlcmVkIGV4Y2VwdGlvbiB3
aXRoaW4gc2Vjb25kIHdvcmtlcjogJyArCisgICAgICAgICAgZS5kYXRhLm1lc3NhZ2UpOworICAg
IH0KKyAgfSk7CisgIHZhciB0ZXN0TWVzc2FnZUhhbmRsZXIgPSB0LnN0ZXBfZnVuYyhmdW5jdGlv
bihlKSB7CisgICAgYXNzZXJ0X2VxdWFscygKKyAgICAgICAgZS5kYXRhLCB0cnVlLAorICAgICAg
ICAnV29ya2VyIGluZGljYXRlZCB0aGF0IHRoZSB0ZXN0IHByb2NlZHVyZXMgd2VyZSBleGVjdXRl
ZCBzdWNjZXNzZnVsbHknKTsKKworICAgIHZhciB3ID0gY3JlYXRlV29ya2VyKAorICAgICAgICBw
b3N0TWVzc2FnZVdpdGhpbldvcmtlcldvcmtlckNvZGUsICdkb25lLXdvcmtlcicsIGNoYW5uZWxO
YW1lLAorICAgICAgICBkb25lTWVzc2FnZUhhbmRsZXIpOworICAgIHQuYWRkX2NsZWFudXAoKCkg
PT4gdy50ZXJtaW5hdGUoKSk7CisgIH0pOworICBjcmVhdGVXb3JrZXIoCisgICAgICBwb3N0TWVz
c2FnZVdpdGhpbldvcmtlcldvcmtlckNvZGUsIHdvcmtlck5hbWUsIGNoYW5uZWxOYW1lLAorICAg
ICAgdGVzdE1lc3NhZ2VIYW5kbGVyKTsKK30KKworYXN5bmNfdGVzdCh0ID0+IHsKKyAgY29uc3Qg
d29ya2VyTmFtZSA9ICdjbG9zZS1hZnRlci1jcmVhdGUtd29ya2VyJzsKKyAgY29uc3QgY2hhbm5l
bE5hbWUgPSB3b3JrZXJOYW1lICsgJy1wb3N0bWVzc2FnZS13aXRoaW4td29ya2VyJzsKKyAgZG9Q
b3N0TWVzc2FnZVdpdGhpbldvcmtlclRlc3QodCwgd29ya2VyTmFtZSwgY2hhbm5lbE5hbWUpOwor
fSwgJ0Jyb2FkY2FzdENoYW5uZWwgbWVzc2FnZXMgd2l0aGluIGNsb3NlZCB3b3JrZXIgc2hvdWxk
IGJlIGlnbm9yZWQgKEJDcyBjcmVhdGVkIGJlZm9yZSBjbG9zaW5nKScpOworCithc3luY190ZXN0
KHQgPT4geworICBjb25zdCB3b3JrZXJOYW1lID0gJ2Nsb3NlLWJlZm9yZS1jcmVhdGUtd29ya2Vy
JzsKKyAgY29uc3QgY2hhbm5lbE5hbWUgPSB3b3JrZXJOYW1lICsgJy1wb3N0bWVzc2FnZS13aXRo
aW4td29ya2VyJzsKKyAgZG9Qb3N0TWVzc2FnZVdpdGhpbldvcmtlclRlc3QodCwgd29ya2VyTmFt
ZSwgY2hhbm5lbE5hbWUpOworfSwgJ0Jyb2FkY2FzdENoYW5uZWwgbWVzc2FnZXMgd2l0aGluIGNs
b3NlZCB3b3JrZXIgc2hvdWxkIGJlIGlnbm9yZWQgKEJDcyBjcmVhdGVkIGFmdGVyIGNsb3Npbmcp
Jyk7CiAKIDwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443623</attachid>
            <date>2021-11-08 15:45:23 -0800</date>
            <delta_ts>2021-11-08 17:20:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232693-20211108154522.patch</filename>
            <type>text/plain</type>
            <size>45428</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTUyM2IyYzMwZmU5Njlm
MmM1NzZhNWE5ODc2MjkzOTMxNzJjZWVlMC4uOTBlYjc0MTdhZDRkMjMyMGI5MWQ5MDRiMjJkM2Qx
NDdhYzY0MDc0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTExLTA4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSWdub3JlIEJyb2FkY2FzdENo
YW5uZWw6OnBvc3RNZXNzYWdlIGZyb20gZGV0YWNoZWQgaWZyYW1lIC8gY2xvc2luZyB3b3JrZXIg
Y29udGV4dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMjY5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IElnbm9yZSBCcm9hZGNhc3RDaGFubmVsOjpwb3N0TWVzc2FnZSBmcm9tIGRldGFjaGVkIGlmcmFt
ZSAvIGNsb3Npbmcgd29ya2VyIGNvbnRleHRzOgorICAgICAgICAtIGh0dHBzOi8vaHRtbC5zcGVj
LndoYXR3Zy5vcmcvI2VsaWdpYmxlLWZvci1tZXNzYWdpbmcKKworICAgICAgICBUZXN0czogaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5l
bC9iYXNpY3MuYW55LnNlcnZpY2V3b3JrZXIuaHRtbAorICAgICAgICAgICAgICAgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9jcm9z
cy1vcmlnaW4uaHRtbAorICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9kZXRhY2hlZC1pZnJhbWUuaHRtbAor
ICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdp
bmcvYnJvYWRjYXN0Y2hhbm5lbC9vcmRlcmluZy5odG1sCisgICAgICAgICAgICAgICBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL3Nl
cnZpY2Utd29ya2VyLmh0dHBzLmh0bWwKKworICAgICAgICAqIGRvbS9Ccm9hZGNhc3RDaGFubmVs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWw6OnBvc3RNZXNzYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWw6OmRpc3BhdGNoTWVzc2FnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsOjppc0VsaWdpYmxlRm9yTWVzc2FnaW5n
IGNvbnN0KToKKyAgICAgICAgKiBkb20vQnJvYWRjYXN0Q2hhbm5lbC5oOgorCiAyMDIxLTExLTA4
ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dl
YkdQVV0gQ29ubmVjdCBKUyBiaW5kaW5ncyBjb2RlIHRvIGludGVybmFsIFdlYkdQVSBpbnRlcmZh
Y2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ccm9hZGNhc3RDaGFubmVsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ccm9hZGNhc3RDaGFubmVsLmNwcAppbmRleCA3MzllOTIxY2Ux
ZGRiMjcyZWFiMGM1MTMxMmQ0ZjBmZmY0OTg3N2YyLi42MWFlMDRjOGY3NGIyMjllM2VjMTk3MThi
Y2U2NTUwMTRmMjZkY2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQnJvYWRjYXN0
Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Jyb2FkY2FzdENoYW5uZWwuY3Bw
CkBAIC0xODAsNiArMTgwLDkgQEAgU3RyaW5nIEJyb2FkY2FzdENoYW5uZWw6Om5hbWUoKSBjb25z
dAogCiBFeGNlcHRpb25Pcjx2b2lkPiBCcm9hZGNhc3RDaGFubmVsOjpwb3N0TWVzc2FnZShKU0M6
OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBtZXNzYWdlKQogewor
ICAgIGlmICghaXNFbGlnaWJsZUZvck1lc3NhZ2luZygpKQorICAgICAgICByZXR1cm4geyB9Owor
CiAgICAgaWYgKG1faXNDbG9zZWQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlk
U3RhdGVFcnJvciwgIlRoaXMgQnJvYWRjYXN0Q2hhbm5lbCBpcyBjbG9zZWQiIH07CiAKQEAgLTIy
NSw2ICsyMjgsOSBAQCB2b2lkIEJyb2FkY2FzdENoYW5uZWw6OmRpc3BhdGNoTWVzc2FnZVRvKEJy
b2FkY2FzdENoYW5uZWxJZGVudGlmaWVyIGNoYW5uZWxJZGVudAogCiB2b2lkIEJyb2FkY2FzdENo
YW5uZWw6OmRpc3BhdGNoTWVzc2FnZShSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3Nh
Z2UpCiB7CisgICAgaWYgKCFpc0VsaWdpYmxlRm9yTWVzc2FnaW5nKCkpCisgICAgICAgIHJldHVy
bjsKKwogICAgIGlmIChtX2lzQ2xvc2VkKQogICAgICAgICByZXR1cm47CiAKQEAgLTI0OSw0ICsy
NTUsMTcgQEAgYm9vbCBCcm9hZGNhc3RDaGFubmVsOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5
KCkgY29uc3QKICAgICByZXR1cm4gIW1faXNDbG9zZWQgJiYgbV9oYXNSZWxldmFudEV2ZW50TGlz
dGVuZXI7CiB9CiAKKy8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI2VsaWdpYmxlLWZv
ci1tZXNzYWdpbmcKK2Jvb2wgQnJvYWRjYXN0Q2hhbm5lbDo6aXNFbGlnaWJsZUZvck1lc3NhZ2lu
ZygpIGNvbnN0Cit7CisgICAgYXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChp
czxEb2N1bWVudD4oKmNvbnRleHQpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8RG9jdW1lbnQ+
KCpjb250ZXh0KS5pc0Z1bGx5QWN0aXZlKCk7CisKKyAgICByZXR1cm4gIWRvd25jYXN0PFdvcmtl
ckdsb2JhbFNjb3BlPigqY29udGV4dCkuaXNDbG9zaW5nKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ccm9hZGNhc3RDaGFubmVs
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQnJvYWRjYXN0Q2hhbm5lbC5oCmluZGV4IDlkMDkwMTVj
N2VmYmVmYzkzNDIyNzE3NmUyM2ZlYzIzNzc4YmZjMGYuLmYxNzZhMTAyYTVkYWQ5MDQ0NDQ4MDI5
Y2JiODA2NzFmMjg4M2NjNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ccm9hZGNh
c3RDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Jyb2FkY2FzdENoYW5uZWwuaApA
QCAtNzAsNiArNzAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlKFJlZjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYpOwogICAgIHZvaWQgZW5zdXJlT25NYWluVGhyZWFkKEZ1
bmN0aW9uPHZvaWQoRG9jdW1lbnQmKT4mJik7CiAKKyAgICBib29sIGlzRWxpZ2libGVGb3JNZXNz
YWdpbmcoKSBjb25zdDsKKwogICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgRXZlbnRUYXJnZXRJbnRl
cmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBCcm9hZGNh
c3RDaGFubmVsRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CiAgICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEFj
dGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZwppbmRleCA2ZjNiN2EyYThiZWRmOGNkZDgzZTRjYTI2NGNmN2I0MTgwZmEx
Yzk3Li5iNTMyNjI5ZTBhMzFmMDdiNzM5M2RjMDMxMjMxMWM1M2IzY2RlYjZkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMS0xMS0wOCAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIElnbm9yZSBCcm9hZGNhc3RDaGFu
bmVsOjpwb3N0TWVzc2FnZSBmcm9tIGRldGFjaGVkIGlmcmFtZSAvIGNsb3Npbmcgd29ya2VyIGNv
bnRleHRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzI2OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZXN5bmMgQnJvYWRjYXN0Q2hhbm5lbCBXUFQgdGVzdHMgZnJvbSB1cHN0cmVhbSB0byBnYWluIHRl
c3QgY292ZXJhZ2UuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5n
L2Jyb2FkY2FzdGNoYW5uZWwvYmFzaWNzLmFueS5zZXJ2aWNld29ya2VyLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5l
bC9jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvY3Jvc3Mtb3JpZ2luLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRj
YXN0Y2hhbm5lbC9kZXRhY2hlZC1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvZGV0YWNo
ZWQtaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJt
ZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9vcmRlcmluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5l
bC9vcmRlcmluZy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
bWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvcmVzb3VyY2VzL2Nyb3NzLW9yaWdpbi5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2Fz
dGNoYW5uZWwvcmVzb3VyY2VzL29yZGVyaW5nLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9yZXNvdXJjZXMvc2Vy
dmljZS13b3JrZXIuanM6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJt
ZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9yZXNvdXJjZXMvdzNjLWltcG9ydC5sb2c6CisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL3Jl
c291cmNlcy93b3JrZXIuanM6CisgICAgICAgIChoYW5kbGVyKToKKyAgICAgICAgKiB3ZWItcGxh
dGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvc2VydmljZS13b3JrZXIu
aHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
d2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvc2VydmljZS13b3JrZXIuaHR0cHMuaHRtbDog
QWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNh
c3RjaGFubmVsL3czYy1pbXBvcnQubG9nOgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC93b3JrZXJzLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvd29y
a2Vycy5odG1sOgorCiAyMDIxLTExLTA4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CiAKICAgICAgICAgQWRkIGFib3J0IHJlYXNvbiB0byBBYm9ydFNpZ25hbApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcv
YnJvYWRjYXN0Y2hhbm5lbC9jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hh
bm5lbC9jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZkZmMyNjI5MzFmMjJk
YjM4NmIwNTgxZTZjZDdmNzVkZjU5MzdmYjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3Rj
aGFubmVsL2Nyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKKworUEFT
UyBNZXNzYWdlcyBhcmVuJ3QgZGVsaXZlcmVkIGFjcm9zcyBvcmlnaW5zCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5n
L2Jyb2FkY2FzdGNoYW5uZWwvY3Jvc3Mtb3JpZ2luLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL2Ny
b3NzLW9yaWdpbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlNGIyZjIxYzhlM2ZlYzQ4OGNiMjhkNzJlNDVh
N2U5MTgyMTA4MDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL2Nyb3NzLW9y
aWdpbi5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNl
dD11dGYtOD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIvY29tbW9uL2dldC1ob3N0LWluZm8uc3ViLmpzIj48L3NjcmlwdD4K
KzwhLS0gUHVsbCBpbiB0aGUgd2l0aF9pZnJhbWUgaGVscGVyIGZ1bmN0aW9uIGZyb20gdGhlIHNl
cnZpY2Ugd29ya2VyIHRlc3RzIC0tPgorPHNjcmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2Vy
dmljZS13b3JrZXIvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5zdWIuanMiPjwvc2NyaXB0PgorPGJv
ZHk+Cis8c2NyaXB0PgorCitjb25zdCBldmVudHMgPSBbXTsKKworZnVuY3Rpb24gdGVzdENvbXBs
ZXRpb24odCkgeworICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKKyAgICB3aW5k
b3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHQuc3RlcF9mdW5jKGUgPT4geworICAgICAg
aWYgKGUuZGF0YSA9PSAnZG9uZScpIHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhldmVudHMubGVu
Z3RoLCAwKTsKKyAgICAgICAgcmVzb2x2ZSgpOworICAgICAgfQorICAgIH0pKTsKKyAgfSk7Cit9
CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKworICBjb25zdCBiYzAgPSBuZXcgQnJvYWRj
YXN0Q2hhbm5lbCgnbm8tY3Jvc3Mtb3JpZ2luLW1lc3NhZ2VzJyk7CisgIGJjMC5vbm1lc3NhZ2Ug
PSBlID0+IHt3aW5kb3cuZXZlbnRzLnB1c2goZSk7fTsKKworICBjb25zdCB0ZXN0UmVzdWx0cyA9
IHRlc3RDb21wbGV0aW9uKHQpOworICBjb25zdCB1cmwgPSBnZXRfaG9zdF9pbmZvKCkuSFRUUFNf
Tk9UU0FNRVNJVEVfT1JJR0lOICsKKyAgICAnL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVs
L3Jlc291cmNlcy9jcm9zcy1vcmlnaW4uaHRtbCc7CisgIGF3YWl0IHdpdGhfaWZyYW1lKHVybCk7
CisKKyAgcmV0dXJuIHRlc3RSZXN1bHRzOworfSwgIk1lc3NhZ2VzIGFyZW4ndCBkZWxpdmVyZWQg
YWNyb3NzIG9yaWdpbnMiKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9h
ZGNhc3RjaGFubmVsL2RldGFjaGVkLWlmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFu
bmVsL2RldGFjaGVkLWlmcmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjc5MDMxNzdmNmZl
NjMyNmQ0OTU4ZDY4ZDM0ZWJlYmYzNWU3MzViNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2Fz
dGNoYW5uZWwvZGV0YWNoZWQtaWZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKKwor
UEFTUyBCcm9hZGNhc3RDaGFubmVsIG1lc3NhZ2VzIGZyb20gZGV0YWNoZWQgaWZyYW1lIHRvIHBh
cmVudCBzaG91bGQgYmUgaWdub3JlZCAoQkMgY3JlYXRlZCBiZWZvcmUgZGV0YWNoaW5nKQorUEFT
UyBCcm9hZGNhc3RDaGFubmVsIG1lc3NhZ2VzIGZyb20gZGV0YWNoZWQgaWZyYW1lIHRvIHBhcmVu
dCBzaG91bGQgYmUgaWdub3JlZCAoQkMgY3JlYXRlZCBhZnRlciBkZXRhY2hpbmcpCitQQVNTIEJy
b2FkY2FzdENoYW5uZWwgbWVzc2FnZXMgZnJvbSBwYXJlbnQgdG8gZGV0YWNoZWQgaWZyYW1lIHNo
b3VsZCBiZSBpZ25vcmVkIChCQyBjcmVhdGVkIGJlZm9yZSBkZXRhY2hpbmcpCitQQVNTIEJyb2Fk
Y2FzdENoYW5uZWwgbWVzc2FnZXMgZnJvbSBwYXJlbnQgdG8gZGV0YWNoZWQgaWZyYW1lIHNob3Vs
ZCBiZSBpZ25vcmVkIChCQyBjcmVhdGVkIGFmdGVyIGRldGFjaGluZykKK1BBU1MgQnJvYWRjYXN0
Q2hhbm5lbCBtZXNzYWdlcyB3aXRoaW4gZGV0YWNoZWQgaWZyYW1lIHNob3VsZCBiZSBpZ25vcmVk
IChCQ3MgY3JlYXRlZCBiZWZvcmUgZGV0YWNoaW5nKQorUEFTUyBCcm9hZGNhc3RDaGFubmVsIG1l
c3NhZ2VzIHdpdGhpbiBkZXRhY2hlZCBpZnJhbWUgc2hvdWxkIGJlIGlnbm9yZWQgKEJDcyBjcmVh
dGVkIGFmdGVyIGRldGFjaGluZykKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9kZXRh
Y2hlZC1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvZGV0YWNoZWQtaWZyYW1lLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjliMDZjM2E0NjQ2M2JmNTBhODhlYmM1NDVmMWFkOWVkNmFjNDk2YQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvZGV0YWNoZWQtaWZyYW1lLmh0bWwKQEAg
LTAsMCArMSwxNzQgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD11dGYtOD4KKzxz
Y3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIvY29tbW9uL2dldC1ob3N0LWluZm8uc3ViLmpzIj48L3NjcmlwdD4KKzwhLS0gUHVsbCBp
biB0aGUgd2l0aF9pZnJhbWUgaGVscGVyIGZ1bmN0aW9uIGZyb20gdGhlIHNlcnZpY2Ugd29ya2Vy
IHRlc3RzIC0tPgorPHNjcmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIv
cmVzb3VyY2VzL3Rlc3QtaGVscGVycy5zdWIuanMiPjwvc2NyaXB0PgorPGJvZHk+Cis8c2NyaXB0
PgorY29uc3QgVEVTVF9JRlJBTUVfQ0xBU1NfTkFNRSA9ICd0ZXN0LWlmcmFtZSc7Citjb25zdCBl
dmVudHMgPSBbXTsKK3ZhciBiYzE7Citjb25zdCBET05FX01TRyA9ICdkb25lJzsKKworZnVuY3Rp
b24gRGV0YWNoZWRJZnJhbWVUZXN0Q2hlY2tGb3JPbmVNZXNzYWdlKHQpIHsKKyAgcmV0dXJuIG5l
dyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisgICAgYmMxLm9ubWVzc2FnZSA9IHQuc3RlcF9mdW5j
KGUgPT4geworICAgICAgZXZlbnRzLnB1c2goZSk7CisgICAgICBpZiAoZS5kYXRhID09IERPTkVf
TVNHKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnRzLmxlbmd0aCwgMSk7CisgICAgICAg
IHJlc29sdmUoKTsKKyAgICAgIH0KKyAgICB9KTsKKyAgfSk7Cit9CisKK2NvbnN0IElmcmFtZUFj
dGlvbiA9IHsKKyAgUkVNT1ZFX0JFRk9SRV9DUkVBVElPTjogJ3JlbW92ZS1iZWZvcmUtY3JlYXRp
b24nLAorICBSRU1PVkVfQUZURVJfQ1JFQVRJT046ICdyZW1vdmUtYWZ0ZXItY3JlYXRpb24nLAor
fTsKKworYXN5bmMgZnVuY3Rpb24gZG9NZXNzYWdlU2VudFRlc3QodCwgY2hhbm5lbE5hbWUsIGFj
dGlvbikgeworICBhd2FpdCB3aXRoX2lmcmFtZSgnYWJvdXQ6YmxhbmsnKTsKKyAgY29uc3QgaWZy
YW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShURVNUX0lGUkFNRV9DTEFTU19O
QU1FKVswXTsKKyAgY29uc3QgaWZyYW1lX0Jyb2FkY2FzdENoYW5uZWwgPSBpZnJhbWUuY29udGVu
dFdpbmRvdy5Ccm9hZGNhc3RDaGFubmVsOworCisgIGlmIChhY3Rpb24gPT09IElmcmFtZUFjdGlv
bi5SRU1PVkVfQkVGT1JFX0NSRUFUSU9OKSB7CisgICAgaWZyYW1lLnJlbW92ZSgpOworICB9CisK
KyAgZXZlbnRzLmxlbmd0aCA9IDA7CisKKyAgYmMxID0gbmV3IEJyb2FkY2FzdENoYW5uZWwoY2hh
bm5lbE5hbWUpOworICBjb25zdCBiYzIgPSBuZXcgQnJvYWRjYXN0Q2hhbm5lbChjaGFubmVsTmFt
ZSk7CisgIGNvbnN0IGlmcmFtZV9iYyA9IG5ldyBpZnJhbWVfQnJvYWRjYXN0Q2hhbm5lbChjaGFu
bmVsTmFtZSk7CisKKyAgaWYgKGFjdGlvbiA9PT0gSWZyYW1lQWN0aW9uLlJFTU9WRV9BRlRFUl9D
UkVBVElPTikgeworICAgIGlmcmFtZS5yZW1vdmUoKTsKKyAgfQorCisgIGNvbnN0IHRlc3RSZXN1
bHRzUHJvbWlzZSA9IERldGFjaGVkSWZyYW1lVGVzdENoZWNrRm9yT25lTWVzc2FnZSh0KTsKKwor
ICBpZnJhbWVfYmMucG9zdE1lc3NhZ2UoJ3Rlc3QnKTsKKyAgYmMyLnBvc3RNZXNzYWdlKERPTkVf
TVNHKTsKKworICBiYzIuY2xvc2UoKTsKKyAgaWZyYW1lX2JjLmNsb3NlKCk7CisgIHQuYWRkX2Ns
ZWFudXAoKCkgPT4gYmMxLmNsb3NlKCkpOworCisgIHJldHVybiB0ZXN0UmVzdWx0c1Byb21pc2U7
Cit9CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgcmV0dXJuIGRvTWVzc2FnZVNlbnRU
ZXN0KAorICAgICAgdCwgJ3Bvc3RNZXNzYWdlLWZyb20tZGV0YWNoZWQtaWZyYW1lLXByZScsCisg
ICAgICBJZnJhbWVBY3Rpb24uUkVNT1ZFX0FGVEVSX0NSRUFUSU9OKTsKK30sICdCcm9hZGNhc3RD
aGFubmVsIG1lc3NhZ2VzIGZyb20gZGV0YWNoZWQgaWZyYW1lIHRvIHBhcmVudCBzaG91bGQgYmUg
aWdub3JlZCAoQkMgY3JlYXRlZCBiZWZvcmUgZGV0YWNoaW5nKScpOworCitwcm9taXNlX3Rlc3Qo
YXN5bmMgdCA9PiB7CisgIHJldHVybiBkb01lc3NhZ2VTZW50VGVzdCgKKyAgICAgIHQsICdwb3N0
TWVzc2FnZS1mcm9tLWRldGFjaGVkLWlmcmFtZS1wb3N0JywKKyAgICAgIElmcmFtZUFjdGlvbi5S
RU1PVkVfQkVGT1JFX0NSRUFUSU9OKTsKK30sICdCcm9hZGNhc3RDaGFubmVsIG1lc3NhZ2VzIGZy
b20gZGV0YWNoZWQgaWZyYW1lIHRvIHBhcmVudCBzaG91bGQgYmUgaWdub3JlZCAoQkMgY3JlYXRl
ZCBhZnRlciBkZXRhY2hpbmcpJyk7CisKKworYXN5bmMgZnVuY3Rpb24gZG9NZXNzYWdlUmVjZWl2
ZWRUZXN0KHQsIGNoYW5uZWxOYW1lLCBhY3Rpb24pIHsKKyAgYXdhaXQgd2l0aF9pZnJhbWUoJ2Fi
b3V0OmJsYW5rJyk7CisgIGNvbnN0IGlmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFz
c05hbWUoVEVTVF9JRlJBTUVfQ0xBU1NfTkFNRSlbMF07CisgIGNvbnN0IGlmcmFtZV9Ccm9hZGNh
c3RDaGFubmVsID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuQnJvYWRjYXN0Q2hhbm5lbDsKKworICBp
ZiAoYWN0aW9uID09PSBJZnJhbWVBY3Rpb24uUkVNT1ZFX0JFRk9SRV9DUkVBVElPTikgeworICAg
IGlmcmFtZS5yZW1vdmUoKTsKKyAgfQorCisgIGV2ZW50cy5sZW5ndGggPSAwOworCisgIC8vIGBp
ZnJhbWVfYmNgIG11c3QgYmUgY3JlYXRlZCBmaXJzdCBzbyB0aGF0IGl0IHJlY2VpdmVzIG1lc3Nh
Z2VzIGJlZm9yZQorICAvLyBgYmMxYC4gVGhhdCB3YXkgd2UgY2FuIHRlbGwgd2hldGhlciBgaWZy
YW1lX2JjYCByZWNlaXZlZCBhIG1lc3NhZ2UgYnkKKyAgLy8gaW5zcGVjdGluZyBgZXZlbnRzYCBp
biB0aGUgYGJjMWAgbWVzc2FnZSBoYW5kbGVyLgorICBjb25zdCBpZnJhbWVfYmMgPSBuZXcgaWZy
YW1lX0Jyb2FkY2FzdENoYW5uZWwoY2hhbm5lbE5hbWUpOworICBpZnJhbWVfYmMub25tZXNzYWdl
ID0gZSA9PiB7CisgICAgZXZlbnRzLnB1c2goZSkKKyAgfTsKKyAgYmMxID0gbmV3IEJyb2FkY2Fz
dENoYW5uZWwoY2hhbm5lbE5hbWUpOworICBjb25zdCBiYzIgPSBuZXcgQnJvYWRjYXN0Q2hhbm5l
bChjaGFubmVsTmFtZSk7CisKKyAgaWYgKGFjdGlvbiA9PT0gSWZyYW1lQWN0aW9uLlJFTU9WRV9B
RlRFUl9DUkVBVElPTikgeworICAgIGlmcmFtZS5yZW1vdmUoKTsKKyAgfQorCisgIGNvbnN0IHRl
c3RSZXN1bHRzUHJvbWlzZSA9IERldGFjaGVkSWZyYW1lVGVzdENoZWNrRm9yT25lTWVzc2FnZSh0
KTsKKyAgYmMyLnBvc3RNZXNzYWdlKERPTkVfTVNHKTsKKworICBiYzIuY2xvc2UoKTsKKyAgaWZy
YW1lX2JjLmNsb3NlKCk7CisgIHQuYWRkX2NsZWFudXAoKCkgPT4gYmMxLmNsb3NlKCkpOworfQor
Citwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgIHJldHVybiBkb01lc3NhZ2VSZWNlaXZlZFRl
c3QoCisgICAgICB0LCAncG9zdE1lc3NhZ2UtdG8tZGV0YWNoZWQtaWZyYW1lLXByZScsCisgICAg
ICBJZnJhbWVBY3Rpb24uUkVNT1ZFX0FGVEVSX0NSRUFUSU9OKTsKK30sICdCcm9hZGNhc3RDaGFu
bmVsIG1lc3NhZ2VzIGZyb20gcGFyZW50IHRvIGRldGFjaGVkIGlmcmFtZSBzaG91bGQgYmUgaWdu
b3JlZCAoQkMgY3JlYXRlZCBiZWZvcmUgZGV0YWNoaW5nKScpOworCitwcm9taXNlX3Rlc3QoYXN5
bmMgdCA9PiB7CisgIHJldHVybiBkb01lc3NhZ2VSZWNlaXZlZFRlc3QoCisgICAgICB0LCAncG9z
dE1lc3NhZ2UtdG8tZGV0YWNoZWQtaWZyYW1lLXBvc3QnLAorICAgICAgSWZyYW1lQWN0aW9uLlJF
TU9WRV9CRUZPUkVfQ1JFQVRJT04pOworfSwgJ0Jyb2FkY2FzdENoYW5uZWwgbWVzc2FnZXMgZnJv
bSBwYXJlbnQgdG8gZGV0YWNoZWQgaWZyYW1lIHNob3VsZCBiZSBpZ25vcmVkIChCQyBjcmVhdGVk
IGFmdGVyIGRldGFjaGluZyknKTsKKworCithc3luYyBmdW5jdGlvbiBkb01lc3NhZ2VTZW5kUmVj
ZWl2ZVRlc3QodCwgY2hhbm5lbE5hbWUsIGFjdGlvbikgeworICBhd2FpdCB3aXRoX2lmcmFtZSgn
YWJvdXQ6YmxhbmsnKTsKKyAgY29uc3QgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNs
YXNzTmFtZShURVNUX0lGUkFNRV9DTEFTU19OQU1FKVswXTsKKyAgY29uc3QgaWZyYW1lX0Jyb2Fk
Y2FzdENoYW5uZWwgPSBpZnJhbWUuY29udGVudFdpbmRvdy5Ccm9hZGNhc3RDaGFubmVsOworCisg
IGlmIChhY3Rpb24gPT09IElmcmFtZUFjdGlvbi5SRU1PVkVfQkVGT1JFX0NSRUFUSU9OKSB7Cisg
ICAgaWZyYW1lLnJlbW92ZSgpOworICB9CisKKyAgY29uc3QgaWZyYW1lX2JjMSA9IG5ldyBpZnJh
bWVfQnJvYWRjYXN0Q2hhbm5lbChjaGFubmVsTmFtZSk7CisgIGNvbnN0IGlmcmFtZV9iYzIgPSBu
ZXcgaWZyYW1lX0Jyb2FkY2FzdENoYW5uZWwoY2hhbm5lbE5hbWUpOworICBpZnJhbWVfYmMxLm9u
bWVzc2FnZSA9IHQudW5yZWFjaGVkX2Z1bmMoCisgICAgICAnRGV0YWNoZWQgaWZyYW1lIEJyb2Fk
Y2FzdENoYW5uZWwgaW5zdGFuY2UgcmVjZWl2ZWQgbWVzc2FnZSB1bmV4cGVjdGVkbHknKTsKKwor
ICBpZiAoYWN0aW9uID09PSBJZnJhbWVBY3Rpb24uUkVNT1ZFX0FGVEVSX0NSRUFUSU9OKSB7Cisg
ICAgaWZyYW1lLnJlbW92ZSgpOworICB9CisKKyAgaWZyYW1lX2JjMi5wb3N0TWVzc2FnZShET05F
X01TRyk7CisKKyAgaWZyYW1lX2JjMi5jbG9zZSgpOworICB0LmFkZF9jbGVhbnVwKCgpID0+IGlm
cmFtZV9iYzEuY2xvc2UoKSk7CisKKyAgLy8gVG8gYXZvaWQgY2FsbGluZyB0LnN0ZXBfdGltZW91
dCBoZXJlLCBpbnN0ZWFkIGp1c3QgY3JlYXRlIHR3byBuZXcKKyAgLy8gQnJvYWRjYXN0Q2hhbm5l
bCBpbnN0YW5jZXMgYW5kIGNvbXBsZXRlIHRoZSB0ZXN0IHdoZW4gYSBtZXNzYWdlIGlzIHBhc3Nl
ZAorICAvLyBiZXR3ZWVuIHRoZW0uICBQZXIgdGhlIHNwZWMsIGFsbCAiQnJvYWRjYXN0Q2hhbm5l
bCBvYmplY3RzIHdob3NlIHJlbGV2YW50CisgIC8vIGFnZW50cyBhcmUgdGhlIHNhbWUiIG11c3Qg
aGF2ZSBtZXNzYWdlcyBkZWxpdmVyZWQgdG8gdGhlbSBpbiBjcmVhdGlvbgorICAvLyBvcmRlciwg
c28gaWYgd2UgZ2V0IHRoaXMgbWVzc2FnZSB0aGVuIGl0J3Mgc2FmZSB0byBhc3N1bWUgdGhlIGVh
cmxpZXIKKyAgLy8gbWVzc2FnZSB3b3VsZCBoYXZlIGJlZW4gZGVsaXZlcmVkIGlmIGl0IHdhcyBn
b2luZyB0byBiZS4KKyAgY29uc3QgYmMxID0gbmV3IEJyb2FkY2FzdENoYW5uZWwoY2hhbm5lbE5h
bWUpOworICBjb25zdCBiYzIgPSBuZXcgQnJvYWRjYXN0Q2hhbm5lbChjaGFubmVsTmFtZSk7Cisg
IHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geworICAgIGJjMS5vbm1lc3NhZ2UgPSB0
LnN0ZXBfZnVuYyhlID0+IHsKKyAgICAgIHJlc29sdmUoKTsKKyAgICB9KTsKKyAgICBiYzIucG9z
dE1lc3NhZ2UoRE9ORV9NU0cpOworICB9KTsKK30KKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4g
eworICByZXR1cm4gZG9NZXNzYWdlU2VuZFJlY2VpdmVUZXN0KAorICAgICAgdCwgJ3Bvc3RNZXNz
YWdlLXdpdGhpbi1kZXRhY2hlZC1pZnJhbWUtcHJlJywKKyAgICAgIElmcmFtZUFjdGlvbi5SRU1P
VkVfQUZURVJfQ1JFQVRJT04pOworfSwgJ0Jyb2FkY2FzdENoYW5uZWwgbWVzc2FnZXMgd2l0aGlu
IGRldGFjaGVkIGlmcmFtZSBzaG91bGQgYmUgaWdub3JlZCAoQkNzIGNyZWF0ZWQgYmVmb3JlIGRl
dGFjaGluZyknKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICByZXR1cm4gZG9NZXNz
YWdlU2VuZFJlY2VpdmVUZXN0KAorICAgICAgdCwgJ3Bvc3RNZXNzYWdlLXdpdGhpbi1kZXRhY2hl
ZC1pZnJhbWUtcG9zdCcsCisgICAgICBJZnJhbWVBY3Rpb24uUkVNT1ZFX0JFRk9SRV9DUkVBVElP
Tik7Cit9LCAnQnJvYWRjYXN0Q2hhbm5lbCBtZXNzYWdlcyB3aXRoaW4gZGV0YWNoZWQgaWZyYW1l
IHNob3VsZCBiZSBpZ25vcmVkIChCQ3MgY3JlYXRlZCBhZnRlciBkZXRhY2hpbmcpJyk7CisKKzwv
c2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9vcmRlcmluZy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL29yZGVyaW5nLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kNWU1MWNkMGJhOTc0N2U4YWJmYTU0OWIxZTNjMDc4MDhmYzI3NGY1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9vcmRlcmluZy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw0IEBACisKKworUEFTUyBNZXNzYWdlcyBhcmUgZGVsaXZlcmVkIGluIHBvcnQgY3JlYXRp
b24gb3JkZXIgYWNyb3NzIG11bHRpcGxlIGZyYW1lcworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3Rj
aGFubmVsL29yZGVyaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL29yZGVyaW5nLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMmQ1MjFiOWUwY2NmOTRmZWI0MmZhOWFjYzA5MzQzMzE0ZjYyNWE4NwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvb3JkZXJpbmcuaHRtbApAQCAtMCwwICsxLDEx
NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPCEtLSBQdWxsIGluIHRoZSB3
aXRoX2lmcmFtZSBoZWxwZXIgZnVuY3Rpb24gZnJvbSB0aGUgc2VydmljZSB3b3JrZXIgdGVzdHMg
LS0+Cis8c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9yZXNvdXJj
ZXMvdGVzdC1oZWxwZXJzLnN1Yi5qcyI+PC9zY3JpcHQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisKK2Nv
bnN0IEJDMF9GSVJTVF9NU0cgPSAnZnJvbSBCQzAgLSBmaXJzdCc7Citjb25zdCBCQzFfRklSU1Rf
TVNHID0gJ2Zyb20gQkMxIC0gZmlyc3QnOworY29uc3QgQkMyX0ZJUlNUX01TRyA9ICdmcm9tIEJD
MiAtIGZpcnN0JzsKK2NvbnN0IEJDM19GSVJTVF9NU0cgPSAnZnJvbSBCQzMgLSBmaXJzdCc7Citj
b25zdCBCQzBfU0VDT05EX01TRyA9ICdmcm9tIEJDMCAtIHNlY29uZCc7Citjb25zdCBCQzFfU0VD
T05EX01TRyA9ICdmcm9tIEJDMSAtIHNlY29uZCc7Citjb25zdCBCQzJfU0VDT05EX01TRyA9ICdm
cm9tIEJDMiAtIHNlY29uZCc7Citjb25zdCBCQzNfU0VDT05EX01TRyA9ICdkb25lJzsKK2NvbnN0
IEJDMF9UQVJHRVRfTkFNRSA9ICdCQzEnOworY29uc3QgQkMxX1RBUkdFVF9OQU1FID0gJ0JDMSc7
Citjb25zdCBCQzJfVEFSR0VUX05BTUUgPSAnQkMyJzsKK2NvbnN0IEJDM19UQVJHRVRfTkFNRSA9
ICdCQzMnOworY29uc3QgTVVMVElfRlJBTUVfT1JERVJJTkdfVEVTVF9DSEFOTkVMX05BTUUgPSAn
bXVsdGktZnJhbWUtb3JkZXInOworCitjb25zdCBiYzAgPSBuZXcgQnJvYWRjYXN0Q2hhbm5lbChN
VUxUSV9GUkFNRV9PUkRFUklOR19URVNUX0NIQU5ORUxfTkFNRSk7Citjb25zdCBtZXNzYWdlcyA9
IFtdOworCitmdW5jdGlvbiBsb2dSZWNlaXZlZE1lc3NhZ2UodGFyZ2V0bmFtZSwgZSkgeworICBt
ZXNzYWdlcy5wdXNoKHsndGFyZ2V0JzogdGFyZ2V0bmFtZSwgJ2RhdGEnOiBlLmRhdGF9KTsKK30K
KworZnVuY3Rpb24gcG9zdE1lc3NhZ2VzVG9DaGFubmVsKCkgeworICByZXR1cm4gbmV3IFByb21p
c2UoKHJlc29sdmUpID0+IHsKKyAgICBiYzAucG9zdE1lc3NhZ2UoQkMwX0ZJUlNUX01TRyk7Cisg
ICAgYmMwLnBvc3RNZXNzYWdlKEJDMF9TRUNPTkRfTVNHKTsKKyAgICByZXNvbHZlKCk7CisgIH0p
OworfQorCisvLyBFeHBlY3RlZCBmbG93IG9mIG1lc3NhZ2VzIGJldHdlZW4gdGhlIEJyb2FkY2Fz
dENoYW5uZWwgb2JqZWN0cyAoYmFzZWQgb24KKy8vIHRoZSByZXF1aXJlbWVudCB0aGF0IG1lc3Nh
Z2VzIGdldCBkZWxpdmVyZWQgdG8gQnJvYWRjYXN0Q2hhbm5lbCBvYmplY3RzCisvLyAiaW4gY3Jl
YXRpb24gb3JkZXIsIG9sZGVzdCBmaXJzdCIpIGFuZCBjb21tZW50cyBkZXNjcmliaW5nIHRoZSBh
Y3Rpb25zCisvLyB0YWtlbiBpbiByZXNwb25zZSB0byBlYWNoIGV2ZW50Citjb25zdCBFWFBFQ1RF
RF9SRVNVTFRTID0gWworICAvLyAtPiBCQzAgc2VuZHMgdHdvIG1lc3NhZ2VzLCBCQzEgYW5kIEJD
MiBhcmUgY29ubmVjdGVkIHRvIHRoZSBjaGFubmVsCisKKyAgeydkYXRhJzogQkMwX0ZJUlNUX01T
RywgJ3RhcmdldCc6IEJDMV9UQVJHRVRfTkFNRX0sCisgIC8vIC0+IEJDMSBDcmVhdGVzIEJDMyBh
bmQgc2VuZHMgZmlyc3QgbWVzc2FnZQorCisgIHsnZGF0YSc6IEJDMF9GSVJTVF9NU0csICd0YXJn
ZXQnOiBCQzJfVEFSR0VUX05BTUV9LAorICAvLyAtPiBCQzIgc2VuZHMgdHdvIG1lc3NhZ2VzCisK
KyAgLy8gQkMzIGlzbid0IGV4cGVjdGVkIHRvIHJlY2VpdmUgdGhlIG1lc3NhZ2VzIHNlbnQgYmVm
b3JlIGl0IHdhcyBjcmVhdGVkLCBzbworICAvLyBubyBjb3JyZXNwb25kaW5nIGVudHJpZXMgaGVy
ZSBmb3IgbWVzc2FnZXMgZnJvbSBCQzAuCisKKyAgeydkYXRhJzogQkMwX1NFQ09ORF9NU0csICd0
YXJnZXQnOiBCQzFfVEFSR0VUX05BTUV9LAorICAvLyAtPiBCQzEgc2VuZHMgc2Vjb25kIG1lc3Nh
Z2UKKworICB7J2RhdGEnOiBCQzBfU0VDT05EX01TRywgJ3RhcmdldCc6IEJDMl9UQVJHRVRfTkFN
RX0sCisgIC8vIC0+IEJDMiBjbG9zZXMKKworICB7J2RhdGEnOiBCQzFfRklSU1RfTVNHLCAndGFy
Z2V0JzogQkMwX1RBUkdFVF9OQU1FfSwKKworICB7J2RhdGEnOiBCQzFfRklSU1RfTVNHLCAndGFy
Z2V0JzogQkMzX1RBUkdFVF9OQU1FfSwKKyAgLy8gLT4gQkMzIHNlbmRzIGZpcnN0IG1lc3NhZ2UK
KworICB7J2RhdGEnOiBCQzJfRklSU1RfTVNHLCAndGFyZ2V0JzogQkMwX1RBUkdFVF9OQU1FfSwK
KworICB7J2RhdGEnOiBCQzJfRklSU1RfTVNHLCAndGFyZ2V0JzogQkMxX1RBUkdFVF9OQU1FfSwK
KyAgLy8gLT4gQkMxIGNsb3NlcworCisgIHsnZGF0YSc6IEJDMl9GSVJTVF9NU0csICd0YXJnZXQn
OiBCQzNfVEFSR0VUX05BTUV9LAorICAvLyAtPiBCQzMgc2VuZHMgc2Vjb25kIG1lc3NhZ2UKKwor
ICB7J2RhdGEnOiBCQzJfU0VDT05EX01TRywgJ3RhcmdldCc6IEJDMF9UQVJHRVRfTkFNRX0sCisK
KyAgeydkYXRhJzogQkMyX1NFQ09ORF9NU0csICd0YXJnZXQnOiBCQzNfVEFSR0VUX05BTUV9LAor
ICAvLyAtPiBCQzMgY2xvc2VzCisKKyAgeydkYXRhJzogQkMxX1NFQ09ORF9NU0csICd0YXJnZXQn
OiBCQzBfVEFSR0VUX05BTUV9LAorCisgIHsnZGF0YSc6IEJDM19GSVJTVF9NU0csICd0YXJnZXQn
OiBCQzBfVEFSR0VUX05BTUV9LAorCisgIHsnZGF0YSc6IEJDM19TRUNPTkRfTVNHLCAndGFyZ2V0
JzogQkMwX1RBUkdFVF9OQU1FfSwKK107CisKK2Z1bmN0aW9uIHRlc3RDb21wbGV0aW9uKHQpIHsK
KyAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisgICAgYmMwLm9ubWVzc2FnZSA9
IHQuc3RlcF9mdW5jKGUgPT4geworICAgICAgbG9nUmVjZWl2ZWRNZXNzYWdlKEJDMF9UQVJHRVRf
TkFNRSwgZSk7CisgICAgICBpZiAoZS5kYXRhID09IEJDM19TRUNPTkRfTVNHKSB7CisgICAgICAg
IGFzc2VydF9lcXVhbHMobWVzc2FnZXMubGVuZ3RoLCBFWFBFQ1RFRF9SRVNVTFRTLmxlbmd0aCk7
CisgICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBtZXNzYWdlcy5sZW5ndGg7IGkrKykgeworICAg
ICAgICAgIGFzc2VydF9lcXVhbHMobWVzc2FnZXNbaV0udGFyZ2V0LCBFWFBFQ1RFRF9SRVNVTFRT
W2ldLnRhcmdldCwgYE1lc3NhZ2UgJHtpKzF9IGhhcyB1bmV4cGVjdGVkIHRhcmdldGApOworICAg
ICAgICAgIGFzc2VydF9lcXVhbHMobWVzc2FnZXNbaV0uZGF0YSwgRVhQRUNURURfUkVTVUxUU1tp
XS5kYXRhLCBgTWVzc2FnZSAke2krMX0gaGFzIHVuZXhwZWN0ZWQgbWVzc2FnZSBjb250ZW50c2Ap
OworICAgICAgICB9CisgICAgICAgIHJlc29sdmUoKTsKKyAgICAgIH0KKyAgICB9KTsKKyAgfSk7
Cit9CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKworICBjb25zdCB0ZXN0UmVzdWx0cyA9
IHRlc3RDb21wbGV0aW9uKHQpOworICAvLyBBd2FpdCB0aGVtIHNlcXVlbnRpYWxseSBiZWNhdXNl
IHdlIG5lZWQgdGhlIEJyb2FkY2FzdENoYW5uZWwgb2JqZWN0IGluCisgIC8vIGlmcmFtZTEgdG8g
YmUgY3JlYXRlZCBmaXJzdCwgd2UgbmVlZCB0aGUgQnJvYWRjYXN0Q2hhbm5lbCBvYmplY3QgaW4K
KyAgLy8gaWZyYW1lMiB0byBiZSBjcmVhdGVkIHNlY29uZCwgYW5kIHRoZW4gd2Ugb25seSB3YW50
IHRvIGNhbGwKKyAgLy8gcG9zdE1lc3NhZ2VzVG9DaGFubmVsIG9uY2UgYm90aCBCcm9hZGNhc3RD
aGFubmVscyBoYXZlIGJlZW4gY3JlYXRlZC4KKyAgYXdhaXQgd2l0aF9pZnJhbWUoJ3Jlc291cmNl
cy9vcmRlcmluZy5odG1sP2lkPWlmcmFtZTEnKTsKKyAgYXdhaXQgd2l0aF9pZnJhbWUoJ3Jlc291
cmNlcy9vcmRlcmluZy5odG1sP2lkPWlmcmFtZTInKTsKKyAgYXdhaXQgcG9zdE1lc3NhZ2VzVG9D
aGFubmVsKCk7CisgIHJldHVybiB0ZXN0UmVzdWx0czsKK30sICJNZXNzYWdlcyBhcmUgZGVsaXZl
cmVkIGluIHBvcnQgY3JlYXRpb24gb3JkZXIgYWNyb3NzIG11bHRpcGxlIGZyYW1lcyIpOworCis8
L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvcmVzb3VyY2Vz
L2Nyb3NzLW9yaWdpbi5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9yZXNvdXJjZXMvY3Jvc3Mtb3Jp
Z2luLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTA3OGI2ZmM4ZTQ2ZjU1NmZlMWI4NmM3ZTFhYTVhMTQxYzEz
MmJlMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvcmVzb3VyY2VzL2Nyb3Nz
LW9yaWdpbi5odG1sCkBAIC0wLDAgKzEsMTUgQEAKKzxib2R5PjwvYm9keT4KKzxzY3JpcHQ+Cisg
IHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICBiYzEgPSBuZXcgQnJvYWRjYXN0Q2hh
bm5lbCgnbm8tY3Jvc3Mtb3JpZ2luLW1lc3NhZ2VzJyk7CisgICAgYmMyID0gbmV3IEJyb2FkY2Fz
dENoYW5uZWwoJ25vLWNyb3NzLW9yaWdpbi1tZXNzYWdlcycpOworICAgIGJjMi5vbm1lc3NhZ2Ug
PSBlID0+IHsKKyAgICAgIHBhcmVudC5wb3N0TWVzc2FnZSgnZG9uZScsICIqIik7CisgICAgfTsK
KyAgICAvLyBQb3N0IGEgbWVzc2FnZSBvbiBiYzEgYW5kIG9uY2Ugd2UgcmVjZWl2ZSBpdCBpbiBi
YzIsIHdlIGtub3cgdGhhdCB0aGUKKyAgICAvLyBtZXNzYWdlIHNob3VsZCBoYXZlIGJlZW4gc2Vu
dCB0byBiYzAgaWYgbWVzc2FnZXMgd2VyZSBiZWluZyBwYXNzZWQKKyAgICAvLyBhY3Jvc3Mgb3Jp
Z2luIChhc3N1bWluZyBjb21wbGlhbmNlIHdpdGggdGhlIHNwZWMgcmVnYXJkaW5nIG1lc3NhZ2UK
KyAgICAvLyBkZWxpdmVyeSBpbiBwb3J0IGNyZWF0aW9uIG9yZGVyKS4KKyAgICBiYzEucG9zdE1l
c3NhZ2UoJ2lnbml0aW9uJyk7CisgIH0KKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0
Y2hhbm5lbC9yZXNvdXJjZXMvb3JkZXJpbmcuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvcmVzb3Vy
Y2VzL29yZGVyaW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjdmMTJkODY1YWQyYmY2NDI3ODc5MWU2MGVm
OTI1NTM5ZGU0MDY3MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvcmVzb3Vy
Y2VzL29yZGVyaW5nLmh0bWwKQEAgLTAsMCArMSw3OCBAQAorPGJvZHk+PC9ib2R5PgorPHNjcmlw
dD4KKyAgY29uc3QgQkMwX0ZJUlNUX01TRyA9ICdmcm9tIEJDMCAtIGZpcnN0JzsKKyAgY29uc3Qg
QkMxX0ZJUlNUX01TRyA9ICdmcm9tIEJDMSAtIGZpcnN0JzsKKyAgY29uc3QgQkMyX0ZJUlNUX01T
RyA9ICdmcm9tIEJDMiAtIGZpcnN0JzsKKyAgY29uc3QgQkMzX0ZJUlNUX01TRyA9ICdmcm9tIEJD
MyAtIGZpcnN0JzsKKyAgY29uc3QgQkMwX1NFQ09ORF9NU0cgPSAnZnJvbSBCQzAgLSBzZWNvbmQn
OworICBjb25zdCBCQzFfU0VDT05EX01TRyA9ICdmcm9tIEJDMSAtIHNlY29uZCc7CisgIGNvbnN0
IEJDMl9TRUNPTkRfTVNHID0gJ2Zyb20gQkMyIC0gc2Vjb25kJzsKKyAgY29uc3QgQkMzX1NFQ09O
RF9NU0cgPSAnZG9uZSc7CisgIGNvbnN0IEJDMF9UQVJHRVRfTkFNRSA9ICdCQzEnOworICBjb25z
dCBCQzFfVEFSR0VUX05BTUUgPSAnQkMxJzsKKyAgY29uc3QgQkMyX1RBUkdFVF9OQU1FID0gJ0JD
Mic7CisgIGNvbnN0IEJDM19UQVJHRVRfTkFNRSA9ICdCQzMnOworICBjb25zdCBNVUxUSV9GUkFN
RV9PUkRFUklOR19URVNUX0NIQU5ORUxfTkFNRSA9ICdtdWx0aS1mcmFtZS1vcmRlcic7CisKKyAg
dmFyIGJjMSwgYmMyLCBiYzM7CisgIHZhciBzZW50TWVzc2FnZUNvdW50Rm9yQmMxID0gMDsKKyAg
dmFyIHNlbnRNZXNzYWdlQ291bnRGb3JCYzIgPSAwOworICB2YXIgc2VudE1lc3NhZ2VDb3VudEZv
ckJjMyA9IDA7CisKKyAgdmFyIGJjMV9oYW5kbGVyID0gZSA9PiB7CisgICAgd2luZG93LnRvcC5s
b2dSZWNlaXZlZE1lc3NhZ2UoQkMxX1RBUkdFVF9OQU1FLCBlKTsKKyAgICBzd2l0Y2goc2VudE1l
c3NhZ2VDb3VudEZvckJjMSkgeworICAgICAgY2FzZSAwOgorICAgICAgICBiYzMgPSBuZXcgQnJv
YWRjYXN0Q2hhbm5lbChNVUxUSV9GUkFNRV9PUkRFUklOR19URVNUX0NIQU5ORUxfTkFNRSk7Cisg
ICAgICAgIGJjMy5vbm1lc3NhZ2UgPSBiYzNfaGFuZGxlcjsKKyAgICAgICAgYmMxLnBvc3RNZXNz
YWdlKEJDMV9GSVJTVF9NU0cpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMToKKyAgICAg
ICAgYmMxLnBvc3RNZXNzYWdlKEJDMV9TRUNPTkRfTVNHKTsKKyAgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlIDI6CisgICAgICAgIGJjMS5jbG9zZSgpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIHNlbnRNZXNzYWdlQ291bnRGb3JCYzEgKz0gMTsKKyAgfQorICB2YXIgYmMyX2hhbmRsZXIg
PSBlID0+IHsKKyAgICB3aW5kb3cudG9wLmxvZ1JlY2VpdmVkTWVzc2FnZShCQzJfVEFSR0VUX05B
TUUsIGUpOworICAgIHN3aXRjaChzZW50TWVzc2FnZUNvdW50Rm9yQmMyKSB7CisgICAgICBjYXNl
IDA6CisgICAgICAgIGJjMi5wb3N0TWVzc2FnZShCQzJfRklSU1RfTVNHKTsKKyAgICAgICAgYmMy
LnBvc3RNZXNzYWdlKEJDMl9TRUNPTkRfTVNHKTsKKyAgICAgICAgc2VudE1lc3NhZ2VDb3VudEZv
ckJjMiArPSAyOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMjoKKyAgICAgICAgYmMyLmNs
b3NlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgIH07CisgIHZhciBiYzNfaGFuZGxlciA9
IGUgPT4geworICAgIHdpbmRvdy50b3AubG9nUmVjZWl2ZWRNZXNzYWdlKEJDM19UQVJHRVRfTkFN
RSwgZSk7CisgICAgc3dpdGNoKHNlbnRNZXNzYWdlQ291bnRGb3JCYzMpIHsKKyAgICAgIGNhc2Ug
MDoKKyAgICAgICAgYmMzLnBvc3RNZXNzYWdlKEJDM19GSVJTVF9NU0cpOworICAgICAgICBicmVh
azsKKyAgICAgIGNhc2UgMToKKyAgICAgICAgYmMzLnBvc3RNZXNzYWdlKEJDM19TRUNPTkRfTVNH
KTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDI6CisgICAgICAgIGJjMy5jbG9zZSgpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIHNlbnRNZXNzYWdlQ291bnRGb3JCYzMgKz0gMTsK
KyAgfTsKKworICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgY29uc3QgcGFyYW1z
ID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTsKKyAgICBpZiAo
cGFyYW1zLmdldCgnaWQnKSA9PT0gJ2lmcmFtZTEnKSB7CisgICAgICBiYzEgPSBuZXcgQnJvYWRj
YXN0Q2hhbm5lbChNVUxUSV9GUkFNRV9PUkRFUklOR19URVNUX0NIQU5ORUxfTkFNRSk7CisgICAg
ICBiYzEub25tZXNzYWdlID0gYmMxX2hhbmRsZXI7CisgICAgfSBlbHNlIGlmIChwYXJhbXMuZ2V0
KCdpZCcpICA9PT0gJ2lmcmFtZTInKSB7CisgICAgICBiYzIgPSBuZXcgQnJvYWRjYXN0Q2hhbm5l
bChNVUxUSV9GUkFNRV9PUkRFUklOR19URVNUX0NIQU5ORUxfTkFNRSk7CisgICAgICBiYzIub25t
ZXNzYWdlID0gYmMyX2hhbmRsZXI7CisgICAgfQorICB9Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5n
L2Jyb2FkY2FzdGNoYW5uZWwvcmVzb3VyY2VzL3NlcnZpY2Utd29ya2VyLmpzIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0
Y2hhbm5lbC9yZXNvdXJjZXMvc2VydmljZS13b3JrZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTNkMTdiOWM2
NTBhZGI1Zjg4OWE1MWYxZTczYTQ1MzdhMjgyMTYxZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2Fk
Y2FzdGNoYW5uZWwvcmVzb3VyY2VzL3NlcnZpY2Utd29ya2VyLmpzCkBAIC0wLDAgKzEsMTUgQEAK
K2xldCBwcm9taXNlX2Z1bmMgPSBudWxsOworbGV0IHByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNv
bHZlID0+IHByb21pc2VfZnVuYyA9IHJlc29sdmUpOworCitjb25zdCBTRVJWSUNFX1dPUktFUl9U
RVNUX0NIQU5ORUxfTkFNRSA9ICdzZXJ2aWNlIHdvcmtlcic7Citjb25zdCBiYzMgPSBuZXcgQnJv
YWRjYXN0Q2hhbm5lbChTRVJWSUNFX1dPUktFUl9URVNUX0NIQU5ORUxfTkFNRSk7CitiYzMub25t
ZXNzYWdlID0gZSA9PiB7CisgIGJjMy5wb3N0TWVzc2FnZSgnZG9uZScpOworICBwcm9taXNlX2Z1
bmMoKTsKK307CitiYzMucG9zdE1lc3NhZ2UoJ2Zyb20gd29ya2VyJyk7CisKKy8vIEVuc3VyZSB0
aGF0IHRoZSB3b3JrZXIgc3RheXMgYWxpdmUgZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUgdGVzdAor
c2VsZi5hZGRFdmVudExpc3RlbmVyKCdpbnN0YWxsJywgZXZ0ID0+IHsKKyAgZXZ0LndhaXRVbnRp
bChwcm9taXNlKTsKK30pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9yZXNvdXJjZXMv
dzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL3Jlc291cmNlcy93M2MtaW1wb3J0Lmxv
ZwppbmRleCAwYjk4MjZiMWE0NmVkMTFkZDExNjE5NWVhZDI5ZDA4N2QxNGZjYzY0Li4xMjExYTlm
YWQwMmNkN2I4N2Q1ZDY5NTBmOTQ4YjI5MmU4YzEwNDBjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3Rj
aGFubmVsL3Jlc291cmNlcy93M2MtaW1wb3J0LmxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL3Jl
c291cmNlcy93M2MtaW1wb3J0LmxvZwpAQCAtMTQsNiArMTQsOSBAQCBQcm9wZXJ0eSB2YWx1ZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKIE5vbmUKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogTGlzdCBv
ZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
Ym1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL3Jlc291cmNlcy9jcm9zcy1vcmlnaW4uaHRtbAor
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5n
L2Jyb2FkY2FzdGNoYW5uZWwvcmVzb3VyY2VzL29yZGVyaW5nLmh0bWwKIC9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFu
bmVsL3Jlc291cmNlcy9vcmlnaW4uaHRtbAogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvcmVzb3VyY2VzL3Nh
bmRib3hlZC5odG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9yZXNvdXJjZXMvc2VydmljZS13b3JrZXIu
anMKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3Nh
Z2luZy9icm9hZGNhc3RjaGFubmVsL3Jlc291cmNlcy93b3JrZXIuanMKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jy
b2FkY2FzdGNoYW5uZWwvcmVzb3VyY2VzL3dvcmtlci5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvcmVz
b3VyY2VzL3dvcmtlci5qcwppbmRleCA5MzY0YzYwMjc1NjM4NWNkNGUwZjhlY2UyNjdiNDQ3NjIw
NTkxYzk0Li5kZjIzMDcyYmM5OWY5NWQwOWY3Y2QxYTY1NTA1OTVlNDMwMzllN2I4IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3Nh
Z2luZy9icm9hZGNhc3RjaGFubmVsL3Jlc291cmNlcy93b3JrZXIuanMKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0
Y2hhbm5lbC9yZXNvdXJjZXMvd29ya2VyLmpzCkBAIC0xNiw2ICsxNiwxMiBAQCBmdW5jdGlvbiBo
YW5kbGVyKGUsIHJlcGx5KSB7CiAgIGMgPSBuZXcgQnJvYWRjYXN0Q2hhbm5lbChlLmRhdGEuY2hh
bm5lbCk7CiAgIGxldCBtZXNzYWdlcyA9IFtdOwogICBjLm9ubWVzc2FnZSA9IGUgPT4geworICAg
ICAgaWYgKGUuZGF0YSA9PT0gJ3JlYWR5JykgeworICAgICAgICAvLyBJZ25vcmUgYW55ICdyZWFk
eScgbWVzc2FnZXMgZnJvbSB0aGUgb3RoZXIgdGhyZWFkIHNpbmNlIHRoZXJlIGNvdWxkCisgICAg
ICAgIC8vIGJlIHNvbWUgcmFjZSBjb25kaXRpb25zIGJldHdlZW4gdGhpcyBCcm9hZGNhc3RDaGFu
bmVsIGluc3RhbmNlCisgICAgICAgIC8vIGJlaW5nIGNyZWF0ZWQgLyByZWFkeSB0byByZWNlaXZl
IG1lc3NhZ2VzIGFuZCB0aGUgbWVzc2FnZSBiZWluZyBzZW50LgorICAgICAgICByZXR1cm47Cisg
ICAgICB9CiAgICAgICBtZXNzYWdlcy5wdXNoKGUuZGF0YSk7CiAgICAgICBpZiAoZS5kYXRhID09
ICdkb25lJykKICAgICAgICAgcmVwbHkobWVzc2FnZXMpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0
Y2hhbm5lbC9zZXJ2aWNlLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFu
bmVsL3NlcnZpY2Utd29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NDJmZWI5
MmMyNzBlMWYzYTcyN2FkNDY4OWRjNDQ4OTk2NDI4NjMyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJv
YWRjYXN0Y2hhbm5lbC9zZXJ2aWNlLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwzIEBACisKK0ZBSUwgQnJvYWRjYXN0Q2hhbm5lbCB3b3JrcyBpbiBzZXJ2aWNlIHdvcmtlcnMg
cHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlw
ZUVycm9yOiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogQnJvYWRjYXN0Q2hh
bm5lbCIKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9zZXJ2aWNlLXdvcmtlci5odHRw
cy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJt
ZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9zZXJ2aWNlLXdvcmtlci5odHRwcy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQ2MDU0MzRhZTFjY2IwMjcyNGE5MDFjYWY1ZjIzMjViMTcxOWQ4NzgKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
Ym1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL3NlcnZpY2Utd29ya2VyLmh0dHBzLmh0bWwKQEAg
LTAsMCArMSw0NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4K
KworY29uc3QgU0VSVklDRV9XT1JLRVJfVEVTVF9DSEFOTkVMX05BTUUgPSAnc2VydmljZSB3b3Jr
ZXInOworY29uc3QgZXZlbnRzID0gW107Citjb25zdCBjMSA9IG5ldyBCcm9hZGNhc3RDaGFubmVs
KFNFUlZJQ0VfV09SS0VSX1RFU1RfQ0hBTk5FTF9OQU1FKTsKK2NvbnN0IGMyID0gbmV3IEJyb2Fk
Y2FzdENoYW5uZWwoU0VSVklDRV9XT1JLRVJfVEVTVF9DSEFOTkVMX05BTUUpOworYzEub25tZXNz
YWdlID0gZSA9PiBldmVudHMucHVzaChlKTsKK2MyLm9ubWVzc2FnZSA9IGUgPT4gZXZlbnRzLnB1
c2goZSk7CisKK2Z1bmN0aW9uIHRlc3RDb21wbGV0aW9uKHQpIHsKKyAgcmV0dXJuIG5ldyBQcm9t
aXNlKChyZXNvbHZlKSA9PiB7CisgICAgYzIuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHQu
c3RlcF9mdW5jKGUgPT4geworICAgICAgaWYgKGUuZGF0YSA9PSAnZnJvbSB3b3JrZXInKSB7Cisg
ICAgICAgIGMyLnBvc3RNZXNzYWdlKCdmcm9tIGMyJyk7CisgICAgICB9IGVsc2UgaWYgKGUuZGF0
YSA9PSAnZG9uZScpIHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhldmVudHMubGVuZ3RoLCA1KTsK
KyAgICAgICAgYXNzZXJ0X2VxdWFscyhldmVudHNbMF0uZGF0YSwgJ2Zyb20gd29ya2VyJyk7Cisg
ICAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnRzWzBdLnRhcmdldCwgYzEpOworICAgICAgICBhc3Nl
cnRfZXF1YWxzKGV2ZW50c1sxXS5kYXRhLCAnZnJvbSB3b3JrZXInKTsKKyAgICAgICAgYXNzZXJ0
X2VxdWFscyhldmVudHNbMV0udGFyZ2V0LCBjMik7CisgICAgICAgIGFzc2VydF9lcXVhbHMoZXZl
bnRzWzJdLmRhdGEsICdmcm9tIGMyJyk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnRzWzNd
LmRhdGEsICdkb25lJyk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnRzWzNdLnRhcmdldCwg
YzEpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50c1s0XS5kYXRhLCAnZG9uZScpOworICAg
ICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50c1s0XS50YXJnZXQsIGMyKTsKKyAgICAgICAgcmVzb2x2
ZSgpOworICAgICAgfQorICAgIH0pKTsKKyAgfSk7Cit9CisKK3Byb21pc2VfdGVzdChhc3luYyB0
ID0+IHsKKworICAgIGNvbnN0IHRlc3RSZXN1bHRzID0gdGVzdENvbXBsZXRpb24odCk7CisgICAg
Y29uc3QgU0NSSVBUID0gInJlc291cmNlcy9zZXJ2aWNlLXdvcmtlci5qcyI7CisgICAgY29uc3Qg
U0NPUEUgPSAiL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL3Jlc291cmNlcy9ub3QtdXNl
ZC8iOworCisgICAgY29uc3QgcmVnID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVn
aXN0ZXIoU0NSSVBULCB7J3Njb3BlJzogU0NPUEV9KTsKKyAgICB0LmFkZF9jbGVhbnVwKCgpID0+
IHJlZy51bnJlZ2lzdGVyKCkpOworCisgICAgcmV0dXJuIHRlc3RSZXN1bHRzOworICB9LCAnQnJv
YWRjYXN0Q2hhbm5lbCB3b3JrcyBpbiBzZXJ2aWNlIHdvcmtlcnMnKTsKKzwvc2NyaXB0PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJt
ZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5u
ZWwvdzNjLWltcG9ydC5sb2cKaW5kZXggMTRlOWRkOTRkNzg2YzliMTRlNWRjMDkyYTA1MmQ2NDI1
ZDdkNjcwMC4uODU5MmYwMWRkMzYzOTcwMWFjOGIwNDY4MTU3Zjg2YzQ3YjZlN2UxYiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNz
YWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC93M2MtaW1wb3J0LmxvZworKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFu
bmVsL3czYy1pbXBvcnQubG9nCkBAIC0xNiw3ICsxNiwxMSBAQCBOb25lCiBMaXN0IG9mIGZpbGVz
OgogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2Fn
aW5nL2Jyb2FkY2FzdGNoYW5uZWwvYmFzaWNzLmFueS5qcwogL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvYmxv
YnMuaHRtbAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
bWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvY3Jvc3Mtb3JpZ2luLmh0bWwKKy9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3Rj
aGFubmVsL2RldGFjaGVkLWlmcmFtZS5odG1sCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9pbnRlcmZhY2Uu
YW55LmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJt
ZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9vcmRlcmluZy5odG1sCiAvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5l
bC9vcmlnaW4ud2luZG93LmpzCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9zYW5kYm94Lmh0bWwKKy9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9h
ZGNhc3RjaGFubmVsL3NlcnZpY2Utd29ya2VyLmh0dHBzLmh0bWwKIC9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVs
L3dvcmtlcnMuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC93b3JrZXJzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
bWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvd29ya2Vycy1leHBlY3RlZC50eHQKaW5kZXggMDZl
MDU1NjU3NjgyM2E4M2I0ZjFhNjRiMGViYmMzNDYwY2I3Y2MxMi4uMDNiMzlkNmEyN2M4MWVlNjE0
OWY2OTg2MzA4MzA1MmExNzJjZGRjYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC93b3Jr
ZXJzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL3dvcmtlcnMtZXhwZWN0ZWQu
dHh0CkBAIC0zLDUgKzMsMTAgQEAgUEFTUyBCcm9hZGNhc3RDaGFubmVsIHdvcmtzIGluIHdvcmtl
cnMKIEZBSUwgQnJvYWRjYXN0Q2hhbm5lbCB3b3JrcyBpbiBzaGFyZWQgd29ya2VycyBudWxsIGlz
IG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ3dvcmtlci5wb3J0JykKIFBBU1MgQ2xvc2luZyBh
bmQgcmUtb3BlbmluZyBhIGNoYW5uZWwgd29ya3MuCiBQQVNTIEJyb2FkY2FzdENoYW5uZWwgY3Jl
YXRlZCBhZnRlciBhIHdvcmtlciBzZWxmLmNsb3NlKCkKLVBBU1MgQnJvYWRjYXN0Q2hhbm5lbCB1
c2VkIGFmdGVyIGEgd29ya2VyIHNlbGYuY2xvc2UoKQorUEFTUyBCcm9hZGNhc3RDaGFubmVsIG1l
c3NhZ2VzIGZyb20gY2xvc2VkIHdvcmtlciB0byBwYXJlbnQgc2hvdWxkIGJlIGlnbm9yZWQgKEJD
IGNyZWF0ZWQgYmVmb3JlIGNsb3NpbmcpCitQQVNTIEJyb2FkY2FzdENoYW5uZWwgbWVzc2FnZXMg
ZnJvbSBjbG9zZWQgd29ya2VyIHRvIHBhcmVudCBzaG91bGQgYmUgaWdub3JlZCAoQkMgY3JlYXRl
ZCBhZnRlciBjbG9zaW5nKQorUEFTUyBCcm9hZGNhc3RDaGFubmVsIG1lc3NhZ2VzIGZyb20gcGFy
ZW50IHRvIGNsb3NlZCB3b3JrZXIgc2hvdWxkIGJlIGlnbm9yZWQgKEJDIGNyZWF0ZWQgYmVmb3Jl
IGNsb3NpbmcpCitQQVNTIEJyb2FkY2FzdENoYW5uZWwgbWVzc2FnZXMgZnJvbSBwYXJlbnQgdG8g
Y2xvc2VkIHdvcmtlciBzaG91bGQgYmUgaWdub3JlZCAoQkMgY3JlYXRlZCBhZnRlciBjbG9zaW5n
KQorUEFTUyBCcm9hZGNhc3RDaGFubmVsIG1lc3NhZ2VzIHdpdGhpbiBjbG9zZWQgd29ya2VyIHNo
b3VsZCBiZSBpZ25vcmVkIChCQ3MgY3JlYXRlZCBiZWZvcmUgY2xvc2luZykKK1BBU1MgQnJvYWRj
YXN0Q2hhbm5lbCBtZXNzYWdlcyB3aXRoaW4gY2xvc2VkIHdvcmtlciBzaG91bGQgYmUgaWdub3Jl
ZCAoQkNzIGNyZWF0ZWQgYWZ0ZXIgY2xvc2luZykKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hh
bm5lbC93b3JrZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL3dvcmtlcnMuaHRtbAppbmRleCAx
ZDA1ZmViN2VkYmYwZTlmYzE0OGQyMTM2YmI1YTVhMWZmZWI1NmE2Li44YjU1NDkyZjNjZmZiMzU2
NjRlZDI2ZmUxZjM2ODdmNTJmZjQ1N2UwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL3dv
cmtlcnMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL3dvcmtlcnMuaHRtbApAQCAtODAsMTEg
KzgwLDE0IEBAIGFzeW5jX3Rlc3QodCA9PiB7CiAKICAgICBsZXQgd29ya2VyID0gbmV3IFdvcmtl
cigncmVzb3VyY2VzL3dvcmtlci5qcycpOwogICAgIHdvcmtlci5vbm1lc3NhZ2UgPSB0LnN0ZXBf
ZnVuYyhlID0+IHsKLSAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhldmVudHMsIFsnYzE6IGZy
b20gd29ya2VyJywgJ2MyOiBlY2hvJ10sCisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoZXZl
bnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnYzE6IGZyb20gd29ya2VyJywgJ2My
OiByZWFkeScsICdjMjogZWNobyddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtZXNz
YWdlcyBpbiBkb2N1bWVudCcpOwogICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGUuZGF0YSwg
Wydkb25lJ10sICdtZXNzYWdlcyBpbiB3b3JrZXInKTsKICAgICAgICAgdC5kb25lKCk7CiAgICAg
ICB9KTsKKyAgICB3b3JrZXIub25tZXNzYWdlcnJvciA9CisgICAgICAgIHQudW5yZWFjaGVkX2Z1
bmMoJ1dvcmtlclwncyBvbm1lc3NhZ2VlcnJvciBoYW5kbGVyIGNhbGxlZCcpOwogCiAgICAgYy5h
ZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZSA9PiB7CiAgICAgICAgIGlmIChlLmRhdGEgPT0g
J2Zyb20gd29ya2VyJykgewpAQCAtOTQsNDggKzk3LDI3OSBAQCBhc3luY190ZXN0KHQgPT4gewog
ICAgICAgICAgICAgICBsZXQgYzIgPSBuZXcgQnJvYWRjYXN0Q2hhbm5lbCgnd29ya2VyLWNsb3Nl
Jyk7CiAgICAgICAgICAgICAgIGMyLm9ubWVzc2FnZSA9IGUgPT4gewogICAgICAgICAgICAgICAg
ICAgZXZlbnRzLnB1c2goJ2MyOiAnICsgZS5kYXRhKTsKLSAgICAgICAgICAgICAgICAgIGMyLnBv
c3RNZXNzYWdlKCdkb25lJyk7CisgICAgICAgICAgICAgICAgICBpZiAoZS5kYXRhID09PSAncmVh
ZHknKSB7CisgICAgICAgICAgICAgICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7cGluZzogJ2Vj
aG8nfSk7CisgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBj
Mi5wb3N0TWVzc2FnZSgnZG9uZScpOworICAgICAgICAgICAgICAgICAgICBjMi5jbG9zZSgpOwor
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgIHdv
cmtlci5wb3N0TWVzc2FnZSh7cGluZzogJ2VjaG8nfSk7CisgICAgICAgICAgICAgIC8vIEZvciBz
b21lIGltcGxlbWVudGF0aW9ucyB0aGVyZSBtYXkgYmUgYSByYWNlIGNvbmRpdGlvbiBiZXR3ZWVu
CisgICAgICAgICAgICAgIC8vIHdoZW4gdGhlIEJyb2FkY2FzdENoYW5uZWwgaW5zdGFuY2UgYWJv
dmUgaXMgY3JlYXRlZCAvIHJlYWR5IHRvCisgICAgICAgICAgICAgIC8vIHJlY2VpdmUgbWVzc2Fn
ZXMgYW5kIHdoZW4gdGhlIHdvcmtlciBjYWxscyBwb3N0TWVzc2FnZSBvbiBpdCdzCisgICAgICAg
ICAgICAgIC8vIEJyb2FkY2FzdENoYW5uZWwgaW5zdGFuY2UuIFRvIGF2b2lkIHRoaXMsIGNvbmZp
cm0gdGhhdCBvdXIKKyAgICAgICAgICAgICAgLy8gaW5zdGFuY2UgY2FuIHJlY2VpdmUgYSBtZXNz
YWdlIGJlZm9yZSBpbmRpY2F0aW5nIHRvIHRoZSBvdGhlcgorICAgICAgICAgICAgICAvLyB0aHJl
YWQgdGhhdCB3ZSBhcmUgcmVhZHkuIEZvciBtb3JlIGRldGFpbHMsIHNlZToKKyAgICAgICAgICAg
ICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9odG1sL2lzc3Vlcy83MjY3CisgICAgICAg
ICAgICAgIGxldCBjMyA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKCd3b3JrZXItY2xvc2UnKTsKKyAg
ICAgICAgICAgICAgYzMucG9zdE1lc3NhZ2UoJ3JlYWR5Jyk7CisgICAgICAgICAgICAgIGMzLmNs
b3NlKCk7CiAgICAgICAgICAgICB9LCAxKTsKICAgICAgICAgfQogICAgICAgfSk7CiAKICAgICB3
b3JrZXIucG9zdE1lc3NhZ2Uoe2NoYW5uZWw6ICd3b3JrZXItY2xvc2UnfSk7CisgICAgdC5hZGRf
Y2xlYW51cCgoKSA9PiB3b3JrZXIudGVybWluYXRlKCkpOwogCiAgIH0sICdDbG9zaW5nIGFuZCBy
ZS1vcGVuaW5nIGEgY2hhbm5lbCB3b3Jrcy4nKTsKIAogYXN5bmNfdGVzdCh0ID0+IHsKICAgZnVu
Y3Rpb24gd29ya2VyQ29kZSgpIHsKICAgICBjbG9zZSgpOwotICAgIHZhciBiYyA9IG5ldyBCcm9h
ZGNhc3RDaGFubmVsKCd3b3JrZXItdGVzdCcpOworICAgIHRyeSB7CisgICAgICB2YXIgYmMgPSBu
ZXcgQnJvYWRjYXN0Q2hhbm5lbCgnd29ya2VyLWNyZWF0ZS1hZnRlci1jbG9zZScpOworICAgIH0g
Y2F0Y2ggKGUpIHsKKyAgICAgIHBvc3RNZXNzYWdlKGUpOworICAgICAgcmV0dXJuOworICAgIH0K
ICAgICBwb3N0TWVzc2FnZSh0cnVlKTsKICAgfQogCi0gIHZhciB3b3JrZXJCbG9iID0gbmV3IEJs
b2IoW3dvcmtlckNvZGUudG9TdHJpbmcoKSArICI7d29ya2VyQ29kZSgpOyJdLCB7dHlwZToiYXBw
bGljYXRpb24vamF2YXNjcmlwdCJ9KTsKKyAgdmFyIHdvcmtlckJsb2IgPSBuZXcgQmxvYigKKyAg
ICAgIFt3b3JrZXJDb2RlLnRvU3RyaW5nKCkgKyAnO3dvcmtlckNvZGUoKTsnXSwKKyAgICAgIHt0
eXBlOiAnYXBwbGljYXRpb24vamF2YXNjcmlwdCd9KTsKIAogICB2YXIgdyA9IG5ldyBXb3JrZXIo
VVJMLmNyZWF0ZU9iamVjdFVSTCh3b3JrZXJCbG9iKSk7Ci0gIHcub25tZXNzYWdlID0gZnVuY3Rp
b24oZSkgewotICAgIGFzc2VydF90cnVlKGUuZGF0YSwgIkJyb2FkY2FzdENoYW5uZWwgY3JlYXRl
ZCBvbiB3b3JrZXIgc2h1dGRvd24uIik7Ci0gICAgdC5kb25lKCk7Ci0gIH0KKyAgdy5vbm1lc3Nh
Z2UgPSB0LnN0ZXBfZnVuY19kb25lKGZ1bmN0aW9uKGUpIHsKKyAgICBhc3NlcnRfZXF1YWxzKAor
ICAgICAgICBlLmRhdGEsIHRydWUsCisgICAgICAgICdCcm9hZGNhc3RDaGFubmVsIGNyZWF0aW9u
IGluIGNsb3NlZCB3b3JrZXIgdHJpZ2dlcmVkIGV4Y2VwdGlvbjogJyArCisgICAgICAgICAgICBl
LmRhdGEubWVzc2FnZSk7CisgIH0pOworICB0LmFkZF9jbGVhbnVwKCgpID0+IHcudGVybWluYXRl
KCkpOwogfSwgJ0Jyb2FkY2FzdENoYW5uZWwgY3JlYXRlZCBhZnRlciBhIHdvcmtlciBzZWxmLmNs
b3NlKCknKTsKIAotYXN5bmNfdGVzdCh0ID0+IHsKLSAgZnVuY3Rpb24gd29ya2VyQ29kZSgpIHsK
KworZnVuY3Rpb24gcG9zdE1lc3NhZ2VGcm9tV29ya2VyV29ya2VyQ29kZSh3b3JrZXJOYW1lLCBj
aGFubmVsTmFtZSkgeworICBpZiAod29ya2VyTmFtZSA9PT0gJ2Nsb3NlLWJlZm9yZS1jcmVhdGUt
d29ya2VyJykgeworICAgIGNsb3NlKCk7CisgIH0KKyAgbGV0IGJjID0gbmV3IEJyb2FkY2FzdENo
YW5uZWwoY2hhbm5lbE5hbWUpOworICBpZiAod29ya2VyTmFtZSA9PT0gJ2Nsb3NlLWFmdGVyLWNy
ZWF0ZS13b3JrZXInKSB7CiAgICAgY2xvc2UoKTsKLSAgICB2YXIgYmMgPSBuZXcgQnJvYWRjYXN0
Q2hhbm5lbCgnd29ya2VyLXRlc3QtYWZ0ZXItY2xvc2UnKTsKLSAgICBiYy5wb3N0TWVzc2FnZSh0
cnVlKTsKICAgfQorICBiYy5wb3N0TWVzc2FnZSh3b3JrZXJOYW1lICsgJyBkb25lJyk7CisgIHBv
c3RNZXNzYWdlKHRydWUpOworfQorCitmdW5jdGlvbiBkb1Bvc3RNZXNzYWdlRnJvbVdvcmtlclRl
c3QodCwgd29ya2VyTmFtZSwgY2hhbm5lbE5hbWUpIHsKKyAgdmFyIGJjID0gbmV3IEJyb2FkY2Fz
dENoYW5uZWwoY2hhbm5lbE5hbWUpOworICBiYy5vbm1lc3NhZ2UgPSB0LnN0ZXBfZnVuY19kb25l
KGZ1bmN0aW9uKGUpIHsKKyAgICBhc3NlcnRfZXF1YWxzKAorICAgICAgICBlLmRhdGEsICdkb25l
LXdvcmtlciBkb25lJywKKyAgICAgICAgJ0Jyb2FkY2FzdENoYW5uZWwgbWVzc2FnZSBzaG91bGQg
b25seSBiZSByZWNlaXZlZCBmcm9tIHRoZSBzZWNvbmQgd29ya2VyJyk7CisgIH0pOworICB0LmFk
ZF9jbGVhbnVwKCgpID0+IGJjLmNsb3NlKCkpOworCisgIHZhciB0ZXN0TWVzc2FnZUhhbmRsZXIg
PSB0LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7CisgICAgYXNzZXJ0X2VxdWFscygKKyAgICAgICAg
ZS5kYXRhLCB0cnVlLAorICAgICAgICAnV29ya2VyIHNlbnQgcG9zdE1lc3NhZ2UgaW5kaWNhdGlu
ZyBpdCBzZW50IGEgQnJvYWRjYXN0Q2hhbm5lbCBtZXNzYWdlJyk7CisKKyAgICB2YXIgdyA9IGNy
ZWF0ZVdvcmtlcigKKyAgICAgICAgcG9zdE1lc3NhZ2VGcm9tV29ya2VyV29ya2VyQ29kZSwgJ2Rv
bmUtd29ya2VyJywgY2hhbm5lbE5hbWUpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gdy50ZXJt
aW5hdGUoKSk7CisgIH0pOworICBjcmVhdGVXb3JrZXIoCisgICAgICBwb3N0TWVzc2FnZUZyb21X
b3JrZXJXb3JrZXJDb2RlLCB3b3JrZXJOYW1lLCBjaGFubmVsTmFtZSwKKyAgICAgIHRlc3RNZXNz
YWdlSGFuZGxlcik7CisKKyAgLy8gVG8gYXZvaWQgY2FsbGluZyB0LnN0ZXBfdGltZW91dCBoZXJl
LCBoYXZlIHRoZSB3b3JrZXIgcG9zdE1lc3NhZ2UodHJ1ZSkKKyAgLy8gb25jZSBpdCBpcyBmaW5p
c2hlZCBhbmQgdGhlbiB3ZSdsbCBpbnN0YW50aWF0ZSBhbm90aGVyIHdvcmtlciB0aGF0CisgIC8v
IHBlcmZvcm1zIHRoZSBzYW1lIHRlc3Qgc3RlcHMgYnV0IGRvZXNuJ3QgY2xvc2UuIEJ5IHRoZSB0
aW1lIHRoZQorICAvLyBCcm9hZGNhc3RDaGFubmVsIG1lc3NhZ2UgaW4gdGhhdCB3b3JrZXIgZ2V0
cyBzZW50IHN1Y2Nlc3NmdWxseSBpdCBzaG91bGQKKyAgLy8gYmUgc2FmZSB0byBhc3N1bWUgdGhh
dCBhbnkgQnJvYWRjYXN0Q2hhbm5lbCBtZXNzYWdlcyBmcm9tIHRoZSBwcmV2aW91cworICAvLyB3
b3JrZXIgd291bGQgaGF2ZSBiZWVuIHNlbnQgaWYgdGhleSB3ZXJlIGdvaW5nIHRvIGJlLgorfQog
Ci0gIHZhciBiYyA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKCd3b3JrZXItdGVzdC1hZnRlci1jbG9z
ZScpOwotICBiYy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihlKSB7Ci0gICAgYXNzZXJ0X3RydWUoZS5k
YXRhLCAiQnJvYWRjYXN0Q2hhbm5lbCBjcmVhdGVkIG9uIHdvcmtlciBzaHV0ZG93bi4iKTsKLSAg
ICB0LmRvbmUoKTsKK2Z1bmN0aW9uIGNyZWF0ZVdvcmtlcih3b3JrZXJDb2RlLCB3b3JrZXJOYW1l
LCBjaGFubmVsTmFtZSwgaGFuZGxlciA9IG51bGwpIHsKKyAgdmFyIHdvcmtlckNvZGVTdHIgPSB3
b3JrZXJDb2RlLnRvU3RyaW5nKCkgKworICAgICAgYDske3dvcmtlckNvZGUubmFtZX0oIiR7d29y
a2VyTmFtZX0iLCAiJHtjaGFubmVsTmFtZX0iKTtgOworICB2YXIgd29ya2VyQmxvYiA9IG5ldyBC
bG9iKFt3b3JrZXJDb2RlU3RyXSwge3R5cGU6ICdhcHBsaWNhdGlvbi9qYXZhc2NyaXB0J30pOwor
ICB2YXIgdyA9IG5ldyBXb3JrZXIoVVJMLmNyZWF0ZU9iamVjdFVSTCh3b3JrZXJCbG9iKSk7Cisg
IGlmIChoYW5kbGVyICE9PSBudWxsKSB7CisgICAgdy5vbm1lc3NhZ2UgPSBoYW5kbGVyOwogICB9
CisgIHJldHVybiB3OworfQorCithc3luY190ZXN0KHQgPT4geworICBjb25zdCB3b3JrZXJOYW1l
ID0gJ2Nsb3NlLWFmdGVyLWNyZWF0ZS13b3JrZXInOworICBjb25zdCBjaGFubmVsTmFtZSA9IHdv
cmtlck5hbWUgKyAnLXBvc3RtZXNzYWdlLWZyb20td29ya2VyJzsKKyAgZG9Qb3N0TWVzc2FnZUZy
b21Xb3JrZXJUZXN0KHQsIHdvcmtlck5hbWUsIGNoYW5uZWxOYW1lKTsKK30sICdCcm9hZGNhc3RD
aGFubmVsIG1lc3NhZ2VzIGZyb20gY2xvc2VkIHdvcmtlciB0byBwYXJlbnQgc2hvdWxkIGJlIGln
bm9yZWQgKEJDIGNyZWF0ZWQgYmVmb3JlIGNsb3NpbmcpJyk7CisKK2FzeW5jX3Rlc3QodCA9PiB7
CisgIGNvbnN0IHdvcmtlck5hbWUgPSAnY2xvc2UtYmVmb3JlLWNyZWF0ZS13b3JrZXInOworICBj
b25zdCBjaGFubmVsTmFtZSA9IHdvcmtlck5hbWUgKyAnLXBvc3RtZXNzYWdlLWZyb20td29ya2Vy
JzsKKyAgZG9Qb3N0TWVzc2FnZUZyb21Xb3JrZXJUZXN0KHQsIHdvcmtlck5hbWUsIGNoYW5uZWxO
YW1lKTsKK30sICdCcm9hZGNhc3RDaGFubmVsIG1lc3NhZ2VzIGZyb20gY2xvc2VkIHdvcmtlciB0
byBwYXJlbnQgc2hvdWxkIGJlIGlnbm9yZWQgKEJDIGNyZWF0ZWQgYWZ0ZXIgY2xvc2luZyknKTsK
KworCitmdW5jdGlvbiBwb3N0TWVzc2FnZVRvV29ya2VyV29ya2VyQ29kZSh3b3JrZXJOYW1lLCBj
aGFubmVsTmFtZSkgeworICBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCAoKSA9PiB7
CisgICAgaWYgKHdvcmtlck5hbWUgPT09ICdjbG9zZS1iZWZvcmUtY3JlYXRlLXdvcmtlcicpIHsK
KyAgICAgIGNsb3NlKCk7CisgICAgfQorICAgIHRyeSB7CisgICAgICBsZXQgYmMxID0gbmV3IEJy
b2FkY2FzdENoYW5uZWwoY2hhbm5lbE5hbWUpOworICAgICAgYmMxLm9ubWVzc2FnZSA9IGUgPT4g
eworICAgICAgICBpZiAoZS5kYXRhID09PSAncmVhZHknKSB7CisgICAgICAgICAgcG9zdE1lc3Nh
Z2UoZS5kYXRhKTsKKyAgICAgICAgfSBlbHNlIGlmIChlLmRhdGEgPT09ICd0ZXN0JykgeworICAg
ICAgICAgIHBvc3RNZXNzYWdlKHdvcmtlck5hbWUgKyAnIGRvbmUnKTsKKyAgICAgICAgfQorICAg
ICAgfTsKKyAgICAgIGJjMS5vbm1lc3NhZ2VlcnJvciA9ICgpID0+IHsKKyAgICAgICAgcG9zdE1l
c3NhZ2UoJ29ubWVzc2FnZWVycm9yIGNhbGxlZCBmcm9tIHdvcmtlciBCcm9hZGNhc3RDaGFubmVs
Jyk7CisgICAgICB9OworICAgICAgaWYgKHdvcmtlck5hbWUgPT09ICdjbG9zZS1hZnRlci1jcmVh
dGUtd29ya2VyJykgeworICAgICAgICBjbG9zZSgpOworICAgICAgfQorICAgIH0gY2F0Y2ggKGUp
IHsKKyAgICAgIHBvc3RNZXNzYWdlKGUpOworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
ICh3b3JrZXJOYW1lID09PSAnZG9uZS13b3JrZXInKSB7CisgICAgICAvLyBGb3Igc29tZSBpbXBs
ZW1lbnRhdGlvbnMgdGhlcmUgbWF5IGJlIGEgcmFjZSBjb25kaXRpb24gYmV0d2VlbiB3aGVuCisg
ICAgICAvLyB0aGUgQnJvYWRjYXN0Q2hhbm5lbCBpbnN0YW5jZSBhYm92ZSBpcyBjcmVhdGVkIC8g
cmVhZHkgdG8gcmVjZWl2ZQorICAgICAgLy8gbWVzc2FnZXMgYW5kIHdoZW4gdGhlIHBhcmVudCBj
YWxscyBwb3N0TWVzc2FnZSBvbiBpdCdzCisgICAgICAvLyBCcm9hZGNhc3RDaGFubmVsIGluc3Rh
bmNlLiBUbyBhdm9pZCB0aGlzLCBjb25maXJtIHRoYXQgb3VyIGluc3RhbmNlCisgICAgICAvLyBj
YW4gcmVjZWl2ZSBhIG1lc3NhZ2UgYmVmb3JlIGluZGljYXRpbmcgdG8gdGhlIG90aGVyIHRocmVh
ZCB0aGF0IHdlCisgICAgICAvLyBhcmUgcmVhZHkuIEZvciBtb3JlIGRldGFpbHMsIHNlZToKKyAg
ICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvaHRtbC9pc3N1ZXMvNzI2NworICAgICAg
bGV0IGJjMiA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKGNoYW5uZWxOYW1lKTsKKyAgICAgIGJjMi5w
b3N0TWVzc2FnZSgncmVhZHknKTsKKyAgICAgIGJjMi5jbG9zZSgpOworICAgIH0gZWxzZSB7Cisg
ICAgICAvLyBTaW5jZSB0aGUgd29ya2VyIGhhcyBjbG9zZWQsIGl0J3Mgbm90IGV4cGVjdGVkIHRo
YXQgdGhlCisgICAgICAvLyBCcm9hZGNhc3RDaGFubmVsIHdpbGwgcmVjZWl2ZSBtZXNzYWdlcyAo
dGhlcmUncyBhIHNlcGFyYXRlIHRlc3QgZm9yCisgICAgICAvLyB0aGF0KSwgc28ganVzdCBpbmRp
Y2F0ZSBkaXJlY3RseSB0aGF0IGl0J3MgcmVhZHkgdG8gdGVzdCByZWNlaXZpbmcKKyAgICAgIC8v
IGEgbWVzc2FnZSBmcm9tIHRoZSBwYXJlbnQgZGlzcGl0ZSB0aGUgcG9zc2liaWxpdHkgb2YgYSBy
YWNlIGNvbmRpdGlvbi4KKyAgICAgIHBvc3RNZXNzYWdlKCdyZWFkeScpOworICAgIH0KKyAgfSk7
CisgIHNlbGYuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZWVycm9yJywgKCkgPT4geworICAgIHBv
c3RNZXNzYWdlKCdvbm1lc3NhZ2VlcnJvciBjYWxsZWQgZnJvbSB3b3JrZXInKTsKKyAgfSk7Cit9
CiAKLSAgdmFyIHdvcmtlckJsb2IgPSBuZXcgQmxvYihbd29ya2VyQ29kZS50b1N0cmluZygpICsg
Ijt3b3JrZXJDb2RlKCk7Il0sIHt0eXBlOiJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0In0pOwotICBu
ZXcgV29ya2VyKFVSTC5jcmVhdGVPYmplY3RVUkwod29ya2VyQmxvYikpOwotfSwgJ0Jyb2FkY2Fz
dENoYW5uZWwgdXNlZCBhZnRlciBhIHdvcmtlciBzZWxmLmNsb3NlKCknKTsKK2Z1bmN0aW9uIGRv
UG9zdE1lc3NhZ2VUb1dvcmtlclRlc3QodCwgd29ya2VyTmFtZSwgY2hhbm5lbE5hbWUpIHsKKyAg
dmFyIGJjID0gbmV3IEJyb2FkY2FzdENoYW5uZWwoY2hhbm5lbE5hbWUpOworICB0LmFkZF9jbGVh
bnVwKCgpID0+IGJjLmNsb3NlKCkpOworCisgIHZhciBkb25lTWVzc2FnZUhhbmRsZXIgPSB0LnN0
ZXBfZnVuYyhmdW5jdGlvbihlKSB7CisgICAgaWYgKGUuZGF0YSA9PT0gJ3JlYWR5JykgeworICAg
ICAgYmMucG9zdE1lc3NhZ2UoJ3Rlc3QnKTsKKyAgICB9IGVsc2UgaWYgKGUuZGF0YSA9PT0gJ2Rv
bmUtd29ya2VyIGRvbmUnKSB7CisgICAgICB0LmRvbmUoKTsKKyAgICB9IGVsc2UgeworICAgICAg
YXNzZXJ0X3VucmVhY2hlZCgKKyAgICAgICAgICAnQnJvYWRjYXN0Q2hhbm5lbC5wb3N0TWVzc2Fn
ZSB0cmlnZ2VyZWQgZXhjZXB0aW9uIHdpdGhpbiBzZWNvbmQgd29ya2VyOiAnICsKKyAgICAgICAg
ICBlLmRhdGEubWVzc2FnZSk7CisgICAgfQorICB9KTsKKyAgdmFyIHRlc3RNZXNzYWdlSGFuZGxl
ciA9IHQuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKKyAgICBhc3NlcnRfZXF1YWxzKAorICAgICAg
ICBlLmRhdGEsICdyZWFkeScsCisgICAgICAgICdXb3JrZXIgc2VudCBwb3N0TWVzc2FnZSBpbmRp
Y2F0aW5nIGl0cyBCcm9hZGNhc3RDaGFubmVsIGluc3RhbmNlIGlzIHJlYWR5Jyk7CisgICAgYmMu
cG9zdE1lc3NhZ2UoJ3Rlc3QnKTsKKworICAgIHZhciBkb25lV29ya2VyID0gY3JlYXRlV29ya2Vy
KAorICAgICAgICBwb3N0TWVzc2FnZVRvV29ya2VyV29ya2VyQ29kZSwgJ2RvbmUtd29ya2VyJywg
Y2hhbm5lbE5hbWUsCisgICAgICAgIGRvbmVNZXNzYWdlSGFuZGxlcik7CisgICAgdC5hZGRfY2xl
YW51cCgoKSA9PiB7CisgICAgICBkb25lV29ya2VyLnRlcm1pbmF0ZSgpOworICAgIH0pOworICAg
IGRvbmVXb3JrZXIucG9zdE1lc3NhZ2UoJ3N0YXJ0Jyk7CisgIH0pOworICB2YXIgdGVzdFdvcmtl
ciA9IGNyZWF0ZVdvcmtlcigKKyAgICAgIHBvc3RNZXNzYWdlVG9Xb3JrZXJXb3JrZXJDb2RlLCB3
b3JrZXJOYW1lLCBjaGFubmVsTmFtZSwKKyAgICAgIHRlc3RNZXNzYWdlSGFuZGxlcik7CisgIHRl
c3RXb3JrZXIucG9zdE1lc3NhZ2UoJ3N0YXJ0Jyk7Cit9CisKK2FzeW5jX3Rlc3QodCA9PiB7Cisg
IGNvbnN0IHdvcmtlck5hbWUgPSAnY2xvc2UtYWZ0ZXItY3JlYXRlLXdvcmtlcic7CisgIGNvbnN0
IGNoYW5uZWxOYW1lID0gd29ya2VyTmFtZSArICctcG9zdG1lc3NhZ2UtdG8td29ya2VyJzsKKyAg
ZG9Qb3N0TWVzc2FnZVRvV29ya2VyVGVzdCh0LCB3b3JrZXJOYW1lLCBjaGFubmVsTmFtZSk7Cit9
LCAnQnJvYWRjYXN0Q2hhbm5lbCBtZXNzYWdlcyBmcm9tIHBhcmVudCB0byBjbG9zZWQgd29ya2Vy
IHNob3VsZCBiZSBpZ25vcmVkIChCQyBjcmVhdGVkIGJlZm9yZSBjbG9zaW5nKScpOworCithc3lu
Y190ZXN0KHQgPT4geworICBjb25zdCB3b3JrZXJOYW1lID0gJ2Nsb3NlLWJlZm9yZS1jcmVhdGUt
d29ya2VyJzsKKyAgY29uc3QgY2hhbm5lbE5hbWUgPSB3b3JrZXJOYW1lICsgJy1wb3N0bWVzc2Fn
ZS10by13b3JrZXInOworICBkb1Bvc3RNZXNzYWdlVG9Xb3JrZXJUZXN0KHQsIHdvcmtlck5hbWUs
IGNoYW5uZWxOYW1lKTsKK30sICdCcm9hZGNhc3RDaGFubmVsIG1lc3NhZ2VzIGZyb20gcGFyZW50
IHRvIGNsb3NlZCB3b3JrZXIgc2hvdWxkIGJlIGlnbm9yZWQgKEJDIGNyZWF0ZWQgYWZ0ZXIgY2xv
c2luZyknKTsKKworCitmdW5jdGlvbiBwb3N0TWVzc2FnZVdpdGhpbldvcmtlcldvcmtlckNvZGUo
d29ya2VyTmFtZSwgY2hhbm5lbE5hbWUpIHsKKyAgaWYgKHdvcmtlck5hbWUgPT09ICdjbG9zZS1i
ZWZvcmUtY3JlYXRlLXdvcmtlcicpIHsKKyAgICBjbG9zZSgpOworICB9CisgIHRyeSB7CisgICAg
bGV0IGJjMSA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKGNoYW5uZWxOYW1lKTsKKyAgICBsZXQgYmMy
ID0gbmV3IEJyb2FkY2FzdENoYW5uZWwoY2hhbm5lbE5hbWUpOworICAgIGJjMS5vbm1lc3NhZ2Ug
PSBlID0+IHsKKyAgICAgIHBvc3RNZXNzYWdlKHdvcmtlck5hbWUgKyAnIGRvbmUnKQorICAgIH07
CisgICAgaWYgKHdvcmtlck5hbWUgPT09ICdjbG9zZS1hZnRlci1jcmVhdGUtd29ya2VyJykgewor
ICAgICAgY2xvc2UoKTsKKyAgICB9CisgICAgYmMyLnBvc3RNZXNzYWdlKHRydWUpOworICAgIHBv
c3RNZXNzYWdlKHRydWUpOworICB9IGNhdGNoIChlKSB7CisgICAgcG9zdE1lc3NhZ2UoZSk7Cisg
IH0KK30KKworZnVuY3Rpb24gZG9Qb3N0TWVzc2FnZVdpdGhpbldvcmtlclRlc3QodCwgd29ya2Vy
TmFtZSwgY2hhbm5lbE5hbWUpIHsKKyAgdmFyIGRvbmVNZXNzYWdlSGFuZGxlciA9IHQuc3RlcF9m
dW5jKGZ1bmN0aW9uKGUpIHsKKyAgICBpZiAoZS5kYXRhID09PSB0cnVlKSB7CisgICAgICAvLyBE
b25lIHdvcmtlciBoYXMgZmluaXNoZWQgLSBubyBhY3Rpb24gbmVlZGVkCisgICAgfSBlbHNlIGlm
IChlLmRhdGEgPT09ICdkb25lLXdvcmtlciBkb25lJykgeworICAgICAgdC5kb25lKCk7CisgICAg
fSBlbHNlIHsKKyAgICAgIGFzc2VydF91bnJlYWNoZWQoCisgICAgICAgICAgJ0Jyb2FkY2FzdENo
YW5uZWwucG9zdE1lc3NhZ2UgdHJpZ2dlcmVkIGV4Y2VwdGlvbiB3aXRoaW4gc2Vjb25kIHdvcmtl
cjogJyArCisgICAgICAgICAgZS5kYXRhLm1lc3NhZ2UpOworICAgIH0KKyAgfSk7CisgIHZhciB0
ZXN0TWVzc2FnZUhhbmRsZXIgPSB0LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7CisgICAgYXNzZXJ0
X2VxdWFscygKKyAgICAgICAgZS5kYXRhLCB0cnVlLAorICAgICAgICAnV29ya2VyIGluZGljYXRl
ZCB0aGF0IHRoZSB0ZXN0IHByb2NlZHVyZXMgd2VyZSBleGVjdXRlZCBzdWNjZXNzZnVsbHknKTsK
KworICAgIHZhciB3ID0gY3JlYXRlV29ya2VyKAorICAgICAgICBwb3N0TWVzc2FnZVdpdGhpbldv
cmtlcldvcmtlckNvZGUsICdkb25lLXdvcmtlcicsIGNoYW5uZWxOYW1lLAorICAgICAgICBkb25l
TWVzc2FnZUhhbmRsZXIpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gdy50ZXJtaW5hdGUoKSk7
CisgIH0pOworICBjcmVhdGVXb3JrZXIoCisgICAgICBwb3N0TWVzc2FnZVdpdGhpbldvcmtlcldv
cmtlckNvZGUsIHdvcmtlck5hbWUsIGNoYW5uZWxOYW1lLAorICAgICAgdGVzdE1lc3NhZ2VIYW5k
bGVyKTsKK30KKworYXN5bmNfdGVzdCh0ID0+IHsKKyAgY29uc3Qgd29ya2VyTmFtZSA9ICdjbG9z
ZS1hZnRlci1jcmVhdGUtd29ya2VyJzsKKyAgY29uc3QgY2hhbm5lbE5hbWUgPSB3b3JrZXJOYW1l
ICsgJy1wb3N0bWVzc2FnZS13aXRoaW4td29ya2VyJzsKKyAgZG9Qb3N0TWVzc2FnZVdpdGhpbldv
cmtlclRlc3QodCwgd29ya2VyTmFtZSwgY2hhbm5lbE5hbWUpOworfSwgJ0Jyb2FkY2FzdENoYW5u
ZWwgbWVzc2FnZXMgd2l0aGluIGNsb3NlZCB3b3JrZXIgc2hvdWxkIGJlIGlnbm9yZWQgKEJDcyBj
cmVhdGVkIGJlZm9yZSBjbG9zaW5nKScpOworCithc3luY190ZXN0KHQgPT4geworICBjb25zdCB3
b3JrZXJOYW1lID0gJ2Nsb3NlLWJlZm9yZS1jcmVhdGUtd29ya2VyJzsKKyAgY29uc3QgY2hhbm5l
bE5hbWUgPSB3b3JrZXJOYW1lICsgJy1wb3N0bWVzc2FnZS13aXRoaW4td29ya2VyJzsKKyAgZG9Q
b3N0TWVzc2FnZVdpdGhpbldvcmtlclRlc3QodCwgd29ya2VyTmFtZSwgY2hhbm5lbE5hbWUpOwor
fSwgJ0Jyb2FkY2FzdENoYW5uZWwgbWVzc2FnZXMgd2l0aGluIGNsb3NlZCB3b3JrZXIgc2hvdWxk
IGJlIGlnbm9yZWQgKEJDcyBjcmVhdGVkIGFmdGVyIGNsb3NpbmcpJyk7CiAKIDwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443635</attachid>
            <date>2021-11-08 17:20:53 -0800</date>
            <delta_ts>2021-11-09 09:49:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232693-20211108172053.patch</filename>
            <type>text/plain</type>
            <size>47769</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDM3NzcyNWRmZjc2N2I4
NmNjMzdhYmVjMDA4Mjc5Zjc3ZjBlMWZmYS4uODJhNzFjNzU3ZTRkYjRlYjQ2YWUwNjJkOTVkZjkw
ZTVlYTI1MzA0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTExLTA4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSWdub3JlIEJyb2FkY2FzdENo
YW5uZWw6OnBvc3RNZXNzYWdlIGZyb20gZGV0YWNoZWQgaWZyYW1lIC8gY2xvc2luZyB3b3JrZXIg
Y29udGV4dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMjY5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IElnbm9yZSBCcm9hZGNhc3RDaGFubmVsOjpwb3N0TWVzc2FnZSBmcm9tIGRldGFjaGVkIGlmcmFt
ZSAvIGNsb3Npbmcgd29ya2VyIGNvbnRleHRzOgorICAgICAgICAtIGh0dHBzOi8vaHRtbC5zcGVj
LndoYXR3Zy5vcmcvI2VsaWdpYmxlLWZvci1tZXNzYWdpbmcKKworICAgICAgICBUZXN0czogaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5l
bC9iYXNpY3MuYW55LnNlcnZpY2V3b3JrZXIuaHRtbAorICAgICAgICAgICAgICAgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9jcm9z
cy1vcmlnaW4uaHRtbAorICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9kZXRhY2hlZC1pZnJhbWUuaHRtbAor
ICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdp
bmcvYnJvYWRjYXN0Y2hhbm5lbC9vcmRlcmluZy5odG1sCisgICAgICAgICAgICAgICBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL3Nl
cnZpY2Utd29ya2VyLmh0dHBzLmh0bWwKKworICAgICAgICAqIGRvbS9Ccm9hZGNhc3RDaGFubmVs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWw6OnBvc3RNZXNzYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWw6OmRpc3BhdGNoTWVzc2FnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsOjppc0VsaWdpYmxlRm9yTWVzc2FnaW5n
IGNvbnN0KToKKyAgICAgICAgKiBkb20vQnJvYWRjYXN0Q2hhbm5lbC5oOgorCiAyMDIxLTExLTA4
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAo
cjI4MzkzNSk6IFsgbWFjT1Mgd2sxIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL3NlbWFudGljcy9pbnRlcmFjdGl2ZS1lbGVtZW50cy90aGUtZGlhbG9nLWVsZW1lbnQvZGlh
bG9nLWF1dG9mb2N1cy1tdWx0aXBsZS10aW1lcy5odG1sIGlzIGEgZmxha3kgZmFpbHVyZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Jyb2FkY2FzdENoYW5uZWwuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0Jyb2FkY2FzdENoYW5uZWwuY3BwCmluZGV4IDczOWU5MjFjZTFkZGIyNzJl
YWIwYzUxMzEyZDRmMGZmZjQ5ODc3ZjIuLjYxYWUwNGM4Zjc0YjIyOWUzZWMxOTcxOGJjZTY1NTAx
NGYyNmRjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ccm9hZGNhc3RDaGFubmVs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQnJvYWRjYXN0Q2hhbm5lbC5jcHAKQEAgLTE4
MCw2ICsxODAsOSBAQCBTdHJpbmcgQnJvYWRjYXN0Q2hhbm5lbDo6bmFtZSgpIGNvbnN0CiAKIEV4
Y2VwdGlvbk9yPHZvaWQ+IEJyb2FkY2FzdENoYW5uZWw6OnBvc3RNZXNzYWdlKEpTQzo6SlNHbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIG1lc3NhZ2UpCiB7CisgICAgaWYg
KCFpc0VsaWdpYmxlRm9yTWVzc2FnaW5nKCkpCisgICAgICAgIHJldHVybiB7IH07CisKICAgICBp
ZiAobV9pc0Nsb3NlZCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVy
cm9yLCAiVGhpcyBCcm9hZGNhc3RDaGFubmVsIGlzIGNsb3NlZCIgfTsKIApAQCAtMjI1LDYgKzIy
OCw5IEBAIHZvaWQgQnJvYWRjYXN0Q2hhbm5lbDo6ZGlzcGF0Y2hNZXNzYWdlVG8oQnJvYWRjYXN0
Q2hhbm5lbElkZW50aWZpZXIgY2hhbm5lbElkZW50CiAKIHZvaWQgQnJvYWRjYXN0Q2hhbm5lbDo6
ZGlzcGF0Y2hNZXNzYWdlKFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSkKIHsK
KyAgICBpZiAoIWlzRWxpZ2libGVGb3JNZXNzYWdpbmcoKSkKKyAgICAgICAgcmV0dXJuOworCiAg
ICAgaWYgKG1faXNDbG9zZWQpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjQ5LDQgKzI1NSwxNyBA
QCBib29sIEJyb2FkY2FzdENoYW5uZWw6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25z
dAogICAgIHJldHVybiAhbV9pc0Nsb3NlZCAmJiBtX2hhc1JlbGV2YW50RXZlbnRMaXN0ZW5lcjsK
IH0KIAorLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jZWxpZ2libGUtZm9yLW1lc3Nh
Z2luZworYm9vbCBCcm9hZGNhc3RDaGFubmVsOjppc0VsaWdpYmxlRm9yTWVzc2FnaW5nKCkgY29u
c3QKK3sKKyAgICBhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAg
IGlmICghY29udGV4dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGlzPERvY3Vt
ZW50PigqY29udGV4dCkpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxEb2N1bWVudD4oKmNvbnRl
eHQpLmlzRnVsbHlBY3RpdmUoKTsKKworICAgIHJldHVybiAhZG93bmNhc3Q8V29ya2VyR2xvYmFs
U2NvcGU+KCpjb250ZXh0KS5pc0Nsb3NpbmcoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Jyb2FkY2FzdENoYW5uZWwuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ccm9hZGNhc3RDaGFubmVsLmgKaW5kZXggOWQwOTAxNWM3ZWZiZWZj
OTM0MjI3MTc2ZTIzZmVjMjM3NzhiZmMwZi4uZjE3NmExMDJhNWRhZDkwNDQ0NDgwMjljYmI4MDY3
MWYyODgzY2M0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Jyb2FkY2FzdENoYW5u
ZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQnJvYWRjYXN0Q2hhbm5lbC5oCkBAIC03MCw2
ICs3MCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2UoUmVmPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4mJik7CiAgICAgdm9pZCBlbnN1cmVPbk1haW5UaHJlYWQoRnVuY3Rpb248
dm9pZChEb2N1bWVudCYpPiYmKTsKIAorICAgIGJvb2wgaXNFbGlnaWJsZUZvck1lc3NhZ2luZygp
IGNvbnN0OworCiAgICAgLy8gRXZlbnRUYXJnZXQKICAgICBFdmVudFRhcmdldEludGVyZmFjZSBl
dmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEJyb2FkY2FzdENoYW5u
ZWxFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gQWN0aXZlRE9N
T2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hh
bmdlTG9nCmluZGV4IDZmM2I3YTJhOGJlZGY4Y2RkODNlNGNhMjY0Y2Y3YjQxODBmYTFjOTcuLmI1
MzI2MjllMGEzMWYwN2I3MzkzZGMwMzEyMzExYzUzYjNjZGViNmQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTExLTA4ICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSWdub3JlIEJyb2FkY2FzdENoYW5uZWw6OnBv
c3RNZXNzYWdlIGZyb20gZGV0YWNoZWQgaWZyYW1lIC8gY2xvc2luZyB3b3JrZXIgY29udGV4dHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjY5Mwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlc3luYyBC
cm9hZGNhc3RDaGFubmVsIFdQVCB0ZXN0cyBmcm9tIHVwc3RyZWFtIHRvIGdhaW4gdGVzdCBjb3Zl
cmFnZS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRj
YXN0Y2hhbm5lbC9iYXNpY3MuYW55LnNlcnZpY2V3b3JrZXIuaHRtbDogQWRkZWQuCisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL2Nyb3Nz
LW9yaWdpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9jcm9zcy1vcmlnaW4uaHRtbDogQWRkZWQu
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFu
bmVsL2RldGFjaGVkLWlmcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9kZXRhY2hlZC1pZnJh
bWUuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2lu
Zy9icm9hZGNhc3RjaGFubmVsL29yZGVyaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL29yZGVy
aW5nLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdp
bmcvYnJvYWRjYXN0Y2hhbm5lbC9yZXNvdXJjZXMvY3Jvc3Mtb3JpZ2luLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5l
bC9yZXNvdXJjZXMvb3JkZXJpbmcuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL3Jlc291cmNlcy9zZXJ2aWNlLXdv
cmtlci5qczogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2lu
Zy9icm9hZGNhc3RjaGFubmVsL3Jlc291cmNlcy93M2MtaW1wb3J0LmxvZzoKKyAgICAgICAgKiB3
ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvcmVzb3VyY2Vz
L3dvcmtlci5qczoKKyAgICAgICAgKGhhbmRsZXIpOgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9zZXJ2aWNlLXdvcmtlci5odHRwcy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNz
YWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9zZXJ2aWNlLXdvcmtlci5odHRwcy5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5u
ZWwvdzNjLWltcG9ydC5sb2c6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3Nh
Z2luZy9icm9hZGNhc3RjaGFubmVsL3dvcmtlcnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC93b3JrZXJzLmh0
bWw6CisKIDIwMjEtMTEtMDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGQgYWJvcnQgcmVhc29uIHRvIEFib3J0U2lnbmFsCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNh
c3RjaGFubmVsL2Nyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL2Ny
b3NzLW9yaWdpbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmRmYzI2MjkzMWYyMmRiMzg2YjA1
ODFlNmNkN2Y3NWRmNTkzN2ZiNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwv
Y3Jvc3Mtb3JpZ2luLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworCitQQVNTIE1lc3Nh
Z2VzIGFyZW4ndCBkZWxpdmVyZWQgYWNyb3NzIG9yaWdpbnMKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRj
YXN0Y2hhbm5lbC9jcm9zcy1vcmlnaW4uaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvY3Jvc3Mtb3Jp
Z2luLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZWU0YjJmMjFjOGUzZmVjNDg4Y2IyOGQ3MmU0NWE3ZTkxODIx
MDgwNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvY3Jvc3Mtb3JpZ2luLmh0
bWwKQEAgLTAsMCArMSwzOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PXV0Zi04
PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii9jb21tb24vZ2V0LWhvc3QtaW5mby5zdWIuanMiPjwvc2NyaXB0PgorPCEtLSBQ
dWxsIGluIHRoZSB3aXRoX2lmcmFtZSBoZWxwZXIgZnVuY3Rpb24gZnJvbSB0aGUgc2VydmljZSB3
b3JrZXIgdGVzdHMgLS0+Cis8c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdv
cmtlci9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLnN1Yi5qcyI+PC9zY3JpcHQ+Cis8Ym9keT4KKzxz
Y3JpcHQ+CisKK2NvbnN0IGV2ZW50cyA9IFtdOworCitmdW5jdGlvbiB0ZXN0Q29tcGxldGlvbih0
KSB7CisgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geworICAgIHdpbmRvdy5hZGRF
dmVudExpc3RlbmVyKCJtZXNzYWdlIiwgdC5zdGVwX2Z1bmMoZSA9PiB7CisgICAgICBpZiAoZS5k
YXRhID09ICdkb25lJykgeworICAgICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50cy5sZW5ndGgsIDAp
OworICAgICAgICByZXNvbHZlKCk7CisgICAgICB9CisgICAgfSkpOworICB9KTsKK30KKworcHJv
bWlzZV90ZXN0KGFzeW5jIHQgPT4geworCisgIGNvbnN0IGJjMCA9IG5ldyBCcm9hZGNhc3RDaGFu
bmVsKCduby1jcm9zcy1vcmlnaW4tbWVzc2FnZXMnKTsKKyAgYmMwLm9ubWVzc2FnZSA9IGUgPT4g
e3dpbmRvdy5ldmVudHMucHVzaChlKTt9OworCisgIGNvbnN0IHRlc3RSZXN1bHRzID0gdGVzdENv
bXBsZXRpb24odCk7CisgIGNvbnN0IHVybCA9IGdldF9ob3N0X2luZm8oKS5IVFRQU19OT1RTQU1F
U0lURV9PUklHSU4gKworICAgICcvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvcmVzb3Vy
Y2VzL2Nyb3NzLW9yaWdpbi5odG1sJzsKKyAgYXdhaXQgd2l0aF9pZnJhbWUodXJsKTsKKworICBy
ZXR1cm4gdGVzdFJlc3VsdHM7Cit9LCAiTWVzc2FnZXMgYXJlbid0IGRlbGl2ZXJlZCBhY3Jvc3Mg
b3JpZ2lucyIpOworCis8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNo
YW5uZWwvZGV0YWNoZWQtaWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvZGV0
YWNoZWQtaWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NzkwMzE3N2Y2ZmU2MzI2ZDQ5
NThkNjhkMzRlYmViZjM1ZTczNWI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5l
bC9kZXRhY2hlZC1pZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorCitQQVNTIEJy
b2FkY2FzdENoYW5uZWwgbWVzc2FnZXMgZnJvbSBkZXRhY2hlZCBpZnJhbWUgdG8gcGFyZW50IHNo
b3VsZCBiZSBpZ25vcmVkIChCQyBjcmVhdGVkIGJlZm9yZSBkZXRhY2hpbmcpCitQQVNTIEJyb2Fk
Y2FzdENoYW5uZWwgbWVzc2FnZXMgZnJvbSBkZXRhY2hlZCBpZnJhbWUgdG8gcGFyZW50IHNob3Vs
ZCBiZSBpZ25vcmVkIChCQyBjcmVhdGVkIGFmdGVyIGRldGFjaGluZykKK1BBU1MgQnJvYWRjYXN0
Q2hhbm5lbCBtZXNzYWdlcyBmcm9tIHBhcmVudCB0byBkZXRhY2hlZCBpZnJhbWUgc2hvdWxkIGJl
IGlnbm9yZWQgKEJDIGNyZWF0ZWQgYmVmb3JlIGRldGFjaGluZykKK1BBU1MgQnJvYWRjYXN0Q2hh
bm5lbCBtZXNzYWdlcyBmcm9tIHBhcmVudCB0byBkZXRhY2hlZCBpZnJhbWUgc2hvdWxkIGJlIGln
bm9yZWQgKEJDIGNyZWF0ZWQgYWZ0ZXIgZGV0YWNoaW5nKQorUEFTUyBCcm9hZGNhc3RDaGFubmVs
IG1lc3NhZ2VzIHdpdGhpbiBkZXRhY2hlZCBpZnJhbWUgc2hvdWxkIGJlIGlnbm9yZWQgKEJDcyBj
cmVhdGVkIGJlZm9yZSBkZXRhY2hpbmcpCitQQVNTIEJyb2FkY2FzdENoYW5uZWwgbWVzc2FnZXMg
d2l0aGluIGRldGFjaGVkIGlmcmFtZSBzaG91bGQgYmUgaWdub3JlZCAoQkNzIGNyZWF0ZWQgYWZ0
ZXIgZGV0YWNoaW5nKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL2RldGFjaGVkLWlm
cmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9kZXRhY2hlZC1pZnJhbWUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iOWIwNmMzYTQ2NDYzYmY1MGE4OGViYzU0NWYxYWQ5ZWQ2YWM0OTZhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJt
ZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9kZXRhY2hlZC1pZnJhbWUuaHRtbApAQCAtMCwwICsx
LDE3NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9j
b21tb24vZ2V0LWhvc3QtaW5mby5zdWIuanMiPjwvc2NyaXB0PgorPCEtLSBQdWxsIGluIHRoZSB3
aXRoX2lmcmFtZSBoZWxwZXIgZnVuY3Rpb24gZnJvbSB0aGUgc2VydmljZSB3b3JrZXIgdGVzdHMg
LS0+Cis8c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9yZXNvdXJj
ZXMvdGVzdC1oZWxwZXJzLnN1Yi5qcyI+PC9zY3JpcHQ+Cis8Ym9keT4KKzxzY3JpcHQ+Citjb25z
dCBURVNUX0lGUkFNRV9DTEFTU19OQU1FID0gJ3Rlc3QtaWZyYW1lJzsKK2NvbnN0IGV2ZW50cyA9
IFtdOwordmFyIGJjMTsKK2NvbnN0IERPTkVfTVNHID0gJ2RvbmUnOworCitmdW5jdGlvbiBEZXRh
Y2hlZElmcmFtZVRlc3RDaGVja0Zvck9uZU1lc3NhZ2UodCkgeworICByZXR1cm4gbmV3IFByb21p
c2UoKHJlc29sdmUpID0+IHsKKyAgICBiYzEub25tZXNzYWdlID0gdC5zdGVwX2Z1bmMoZSA9PiB7
CisgICAgICBldmVudHMucHVzaChlKTsKKyAgICAgIGlmIChlLmRhdGEgPT0gRE9ORV9NU0cpIHsK
KyAgICAgICAgYXNzZXJ0X2VxdWFscyhldmVudHMubGVuZ3RoLCAxKTsKKyAgICAgICAgcmVzb2x2
ZSgpOworICAgICAgfQorICAgIH0pOworICB9KTsKK30KKworY29uc3QgSWZyYW1lQWN0aW9uID0g
eworICBSRU1PVkVfQkVGT1JFX0NSRUFUSU9OOiAncmVtb3ZlLWJlZm9yZS1jcmVhdGlvbicsCisg
IFJFTU9WRV9BRlRFUl9DUkVBVElPTjogJ3JlbW92ZS1hZnRlci1jcmVhdGlvbicsCit9OworCith
c3luYyBmdW5jdGlvbiBkb01lc3NhZ2VTZW50VGVzdCh0LCBjaGFubmVsTmFtZSwgYWN0aW9uKSB7
CisgIGF3YWl0IHdpdGhfaWZyYW1lKCdhYm91dDpibGFuaycpOworICBjb25zdCBpZnJhbWUgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFRFU1RfSUZSQU1FX0NMQVNTX05BTUUpWzBd
OworICBjb25zdCBpZnJhbWVfQnJvYWRjYXN0Q2hhbm5lbCA9IGlmcmFtZS5jb250ZW50V2luZG93
LkJyb2FkY2FzdENoYW5uZWw7CisKKyAgaWYgKGFjdGlvbiA9PT0gSWZyYW1lQWN0aW9uLlJFTU9W
RV9CRUZPUkVfQ1JFQVRJT04pIHsKKyAgICBpZnJhbWUucmVtb3ZlKCk7CisgIH0KKworICBldmVu
dHMubGVuZ3RoID0gMDsKKworICBiYzEgPSBuZXcgQnJvYWRjYXN0Q2hhbm5lbChjaGFubmVsTmFt
ZSk7CisgIGNvbnN0IGJjMiA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKGNoYW5uZWxOYW1lKTsKKyAg
Y29uc3QgaWZyYW1lX2JjID0gbmV3IGlmcmFtZV9Ccm9hZGNhc3RDaGFubmVsKGNoYW5uZWxOYW1l
KTsKKworICBpZiAoYWN0aW9uID09PSBJZnJhbWVBY3Rpb24uUkVNT1ZFX0FGVEVSX0NSRUFUSU9O
KSB7CisgICAgaWZyYW1lLnJlbW92ZSgpOworICB9CisKKyAgY29uc3QgdGVzdFJlc3VsdHNQcm9t
aXNlID0gRGV0YWNoZWRJZnJhbWVUZXN0Q2hlY2tGb3JPbmVNZXNzYWdlKHQpOworCisgIGlmcmFt
ZV9iYy5wb3N0TWVzc2FnZSgndGVzdCcpOworICBiYzIucG9zdE1lc3NhZ2UoRE9ORV9NU0cpOwor
CisgIGJjMi5jbG9zZSgpOworICBpZnJhbWVfYmMuY2xvc2UoKTsKKyAgdC5hZGRfY2xlYW51cCgo
KSA9PiBiYzEuY2xvc2UoKSk7CisKKyAgcmV0dXJuIHRlc3RSZXN1bHRzUHJvbWlzZTsKK30KKwor
cHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICByZXR1cm4gZG9NZXNzYWdlU2VudFRlc3QoCisg
ICAgICB0LCAncG9zdE1lc3NhZ2UtZnJvbS1kZXRhY2hlZC1pZnJhbWUtcHJlJywKKyAgICAgIElm
cmFtZUFjdGlvbi5SRU1PVkVfQUZURVJfQ1JFQVRJT04pOworfSwgJ0Jyb2FkY2FzdENoYW5uZWwg
bWVzc2FnZXMgZnJvbSBkZXRhY2hlZCBpZnJhbWUgdG8gcGFyZW50IHNob3VsZCBiZSBpZ25vcmVk
IChCQyBjcmVhdGVkIGJlZm9yZSBkZXRhY2hpbmcpJyk7CisKK3Byb21pc2VfdGVzdChhc3luYyB0
ID0+IHsKKyAgcmV0dXJuIGRvTWVzc2FnZVNlbnRUZXN0KAorICAgICAgdCwgJ3Bvc3RNZXNzYWdl
LWZyb20tZGV0YWNoZWQtaWZyYW1lLXBvc3QnLAorICAgICAgSWZyYW1lQWN0aW9uLlJFTU9WRV9C
RUZPUkVfQ1JFQVRJT04pOworfSwgJ0Jyb2FkY2FzdENoYW5uZWwgbWVzc2FnZXMgZnJvbSBkZXRh
Y2hlZCBpZnJhbWUgdG8gcGFyZW50IHNob3VsZCBiZSBpZ25vcmVkIChCQyBjcmVhdGVkIGFmdGVy
IGRldGFjaGluZyknKTsKKworCithc3luYyBmdW5jdGlvbiBkb01lc3NhZ2VSZWNlaXZlZFRlc3Qo
dCwgY2hhbm5lbE5hbWUsIGFjdGlvbikgeworICBhd2FpdCB3aXRoX2lmcmFtZSgnYWJvdXQ6Ymxh
bmsnKTsKKyAgY29uc3QgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShU
RVNUX0lGUkFNRV9DTEFTU19OQU1FKVswXTsKKyAgY29uc3QgaWZyYW1lX0Jyb2FkY2FzdENoYW5u
ZWwgPSBpZnJhbWUuY29udGVudFdpbmRvdy5Ccm9hZGNhc3RDaGFubmVsOworCisgIGlmIChhY3Rp
b24gPT09IElmcmFtZUFjdGlvbi5SRU1PVkVfQkVGT1JFX0NSRUFUSU9OKSB7CisgICAgaWZyYW1l
LnJlbW92ZSgpOworICB9CisKKyAgZXZlbnRzLmxlbmd0aCA9IDA7CisKKyAgLy8gYGlmcmFtZV9i
Y2AgbXVzdCBiZSBjcmVhdGVkIGZpcnN0IHNvIHRoYXQgaXQgcmVjZWl2ZXMgbWVzc2FnZXMgYmVm
b3JlCisgIC8vIGBiYzFgLiBUaGF0IHdheSB3ZSBjYW4gdGVsbCB3aGV0aGVyIGBpZnJhbWVfYmNg
IHJlY2VpdmVkIGEgbWVzc2FnZSBieQorICAvLyBpbnNwZWN0aW5nIGBldmVudHNgIGluIHRoZSBg
YmMxYCBtZXNzYWdlIGhhbmRsZXIuCisgIGNvbnN0IGlmcmFtZV9iYyA9IG5ldyBpZnJhbWVfQnJv
YWRjYXN0Q2hhbm5lbChjaGFubmVsTmFtZSk7CisgIGlmcmFtZV9iYy5vbm1lc3NhZ2UgPSBlID0+
IHsKKyAgICBldmVudHMucHVzaChlKQorICB9OworICBiYzEgPSBuZXcgQnJvYWRjYXN0Q2hhbm5l
bChjaGFubmVsTmFtZSk7CisgIGNvbnN0IGJjMiA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKGNoYW5u
ZWxOYW1lKTsKKworICBpZiAoYWN0aW9uID09PSBJZnJhbWVBY3Rpb24uUkVNT1ZFX0FGVEVSX0NS
RUFUSU9OKSB7CisgICAgaWZyYW1lLnJlbW92ZSgpOworICB9CisKKyAgY29uc3QgdGVzdFJlc3Vs
dHNQcm9taXNlID0gRGV0YWNoZWRJZnJhbWVUZXN0Q2hlY2tGb3JPbmVNZXNzYWdlKHQpOworICBi
YzIucG9zdE1lc3NhZ2UoRE9ORV9NU0cpOworCisgIGJjMi5jbG9zZSgpOworICBpZnJhbWVfYmMu
Y2xvc2UoKTsKKyAgdC5hZGRfY2xlYW51cCgoKSA9PiBiYzEuY2xvc2UoKSk7Cit9CisKK3Byb21p
c2VfdGVzdChhc3luYyB0ID0+IHsKKyAgcmV0dXJuIGRvTWVzc2FnZVJlY2VpdmVkVGVzdCgKKyAg
ICAgIHQsICdwb3N0TWVzc2FnZS10by1kZXRhY2hlZC1pZnJhbWUtcHJlJywKKyAgICAgIElmcmFt
ZUFjdGlvbi5SRU1PVkVfQUZURVJfQ1JFQVRJT04pOworfSwgJ0Jyb2FkY2FzdENoYW5uZWwgbWVz
c2FnZXMgZnJvbSBwYXJlbnQgdG8gZGV0YWNoZWQgaWZyYW1lIHNob3VsZCBiZSBpZ25vcmVkIChC
QyBjcmVhdGVkIGJlZm9yZSBkZXRhY2hpbmcpJyk7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+
IHsKKyAgcmV0dXJuIGRvTWVzc2FnZVJlY2VpdmVkVGVzdCgKKyAgICAgIHQsICdwb3N0TWVzc2Fn
ZS10by1kZXRhY2hlZC1pZnJhbWUtcG9zdCcsCisgICAgICBJZnJhbWVBY3Rpb24uUkVNT1ZFX0JF
Rk9SRV9DUkVBVElPTik7Cit9LCAnQnJvYWRjYXN0Q2hhbm5lbCBtZXNzYWdlcyBmcm9tIHBhcmVu
dCB0byBkZXRhY2hlZCBpZnJhbWUgc2hvdWxkIGJlIGlnbm9yZWQgKEJDIGNyZWF0ZWQgYWZ0ZXIg
ZGV0YWNoaW5nKScpOworCisKK2FzeW5jIGZ1bmN0aW9uIGRvTWVzc2FnZVNlbmRSZWNlaXZlVGVz
dCh0LCBjaGFubmVsTmFtZSwgYWN0aW9uKSB7CisgIGF3YWl0IHdpdGhfaWZyYW1lKCdhYm91dDpi
bGFuaycpOworICBjb25zdCBpZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1l
KFRFU1RfSUZSQU1FX0NMQVNTX05BTUUpWzBdOworICBjb25zdCBpZnJhbWVfQnJvYWRjYXN0Q2hh
bm5lbCA9IGlmcmFtZS5jb250ZW50V2luZG93LkJyb2FkY2FzdENoYW5uZWw7CisKKyAgaWYgKGFj
dGlvbiA9PT0gSWZyYW1lQWN0aW9uLlJFTU9WRV9CRUZPUkVfQ1JFQVRJT04pIHsKKyAgICBpZnJh
bWUucmVtb3ZlKCk7CisgIH0KKworICBjb25zdCBpZnJhbWVfYmMxID0gbmV3IGlmcmFtZV9Ccm9h
ZGNhc3RDaGFubmVsKGNoYW5uZWxOYW1lKTsKKyAgY29uc3QgaWZyYW1lX2JjMiA9IG5ldyBpZnJh
bWVfQnJvYWRjYXN0Q2hhbm5lbChjaGFubmVsTmFtZSk7CisgIGlmcmFtZV9iYzEub25tZXNzYWdl
ID0gdC51bnJlYWNoZWRfZnVuYygKKyAgICAgICdEZXRhY2hlZCBpZnJhbWUgQnJvYWRjYXN0Q2hh
bm5lbCBpbnN0YW5jZSByZWNlaXZlZCBtZXNzYWdlIHVuZXhwZWN0ZWRseScpOworCisgIGlmIChh
Y3Rpb24gPT09IElmcmFtZUFjdGlvbi5SRU1PVkVfQUZURVJfQ1JFQVRJT04pIHsKKyAgICBpZnJh
bWUucmVtb3ZlKCk7CisgIH0KKworICBpZnJhbWVfYmMyLnBvc3RNZXNzYWdlKERPTkVfTVNHKTsK
KworICBpZnJhbWVfYmMyLmNsb3NlKCk7CisgIHQuYWRkX2NsZWFudXAoKCkgPT4gaWZyYW1lX2Jj
MS5jbG9zZSgpKTsKKworICAvLyBUbyBhdm9pZCBjYWxsaW5nIHQuc3RlcF90aW1lb3V0IGhlcmUs
IGluc3RlYWQganVzdCBjcmVhdGUgdHdvIG5ldworICAvLyBCcm9hZGNhc3RDaGFubmVsIGluc3Rh
bmNlcyBhbmQgY29tcGxldGUgdGhlIHRlc3Qgd2hlbiBhIG1lc3NhZ2UgaXMgcGFzc2VkCisgIC8v
IGJldHdlZW4gdGhlbS4gIFBlciB0aGUgc3BlYywgYWxsICJCcm9hZGNhc3RDaGFubmVsIG9iamVj
dHMgd2hvc2UgcmVsZXZhbnQKKyAgLy8gYWdlbnRzIGFyZSB0aGUgc2FtZSIgbXVzdCBoYXZlIG1l
c3NhZ2VzIGRlbGl2ZXJlZCB0byB0aGVtIGluIGNyZWF0aW9uCisgIC8vIG9yZGVyLCBzbyBpZiB3
ZSBnZXQgdGhpcyBtZXNzYWdlIHRoZW4gaXQncyBzYWZlIHRvIGFzc3VtZSB0aGUgZWFybGllcgor
ICAvLyBtZXNzYWdlIHdvdWxkIGhhdmUgYmVlbiBkZWxpdmVyZWQgaWYgaXQgd2FzIGdvaW5nIHRv
IGJlLgorICBjb25zdCBiYzEgPSBuZXcgQnJvYWRjYXN0Q2hhbm5lbChjaGFubmVsTmFtZSk7Cisg
IGNvbnN0IGJjMiA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKGNoYW5uZWxOYW1lKTsKKyAgcmV0dXJu
IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisgICAgYmMxLm9ubWVzc2FnZSA9IHQuc3RlcF9m
dW5jKGUgPT4geworICAgICAgcmVzb2x2ZSgpOworICAgIH0pOworICAgIGJjMi5wb3N0TWVzc2Fn
ZShET05FX01TRyk7CisgIH0pOworfQorCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgIHJl
dHVybiBkb01lc3NhZ2VTZW5kUmVjZWl2ZVRlc3QoCisgICAgICB0LCAncG9zdE1lc3NhZ2Utd2l0
aGluLWRldGFjaGVkLWlmcmFtZS1wcmUnLAorICAgICAgSWZyYW1lQWN0aW9uLlJFTU9WRV9BRlRF
Ul9DUkVBVElPTik7Cit9LCAnQnJvYWRjYXN0Q2hhbm5lbCBtZXNzYWdlcyB3aXRoaW4gZGV0YWNo
ZWQgaWZyYW1lIHNob3VsZCBiZSBpZ25vcmVkIChCQ3MgY3JlYXRlZCBiZWZvcmUgZGV0YWNoaW5n
KScpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgIHJldHVybiBkb01lc3NhZ2VTZW5k
UmVjZWl2ZVRlc3QoCisgICAgICB0LCAncG9zdE1lc3NhZ2Utd2l0aGluLWRldGFjaGVkLWlmcmFt
ZS1wb3N0JywKKyAgICAgIElmcmFtZUFjdGlvbi5SRU1PVkVfQkVGT1JFX0NSRUFUSU9OKTsKK30s
ICdCcm9hZGNhc3RDaGFubmVsIG1lc3NhZ2VzIHdpdGhpbiBkZXRhY2hlZCBpZnJhbWUgc2hvdWxk
IGJlIGlnbm9yZWQgKEJDcyBjcmVhdGVkIGFmdGVyIGRldGFjaGluZyknKTsKKworPC9zY3JpcHQ+
Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL29yZGVyaW5nLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVz
c2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvb3JkZXJpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQ1ZTUxY2QwYmE5NzQ3ZThhYmZhNTQ5YjFlM2MwNzgwOGZjMjc0ZjUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3Nh
Z2luZy9icm9hZGNhc3RjaGFubmVsL29yZGVyaW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQg
QEAKKworCitQQVNTIE1lc3NhZ2VzIGFyZSBkZWxpdmVyZWQgaW4gcG9ydCBjcmVhdGlvbiBvcmRl
ciBhY3Jvc3MgbXVsdGlwbGUgZnJhbWVzCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwv
b3JkZXJpbmcuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvb3JkZXJpbmcuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yZDUyMWI5ZTBjY2Y5NGZlYjQyZmE5YWNjMDkzNDMzMTRmNjI1YTg3Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNz
YWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9vcmRlcmluZy5odG1sCkBAIC0wLDAgKzEsMTE2IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+Cis8c2NyaXB0IHNyYz0iL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8IS0tIFB1bGwgaW4gdGhlIHdpdGhfaWZy
YW1lIGhlbHBlciBmdW5jdGlvbiBmcm9tIHRoZSBzZXJ2aWNlIHdvcmtlciB0ZXN0cyAtLT4KKzxz
Y3JpcHQgc3JjPSIvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3Jlc291cmNlcy90ZXN0
LWhlbHBlcnMuc3ViLmpzIj48L3NjcmlwdD4KKzxib2R5PgorPHNjcmlwdD4KKworY29uc3QgQkMw
X0ZJUlNUX01TRyA9ICdmcm9tIEJDMCAtIGZpcnN0JzsKK2NvbnN0IEJDMV9GSVJTVF9NU0cgPSAn
ZnJvbSBCQzEgLSBmaXJzdCc7Citjb25zdCBCQzJfRklSU1RfTVNHID0gJ2Zyb20gQkMyIC0gZmly
c3QnOworY29uc3QgQkMzX0ZJUlNUX01TRyA9ICdmcm9tIEJDMyAtIGZpcnN0JzsKK2NvbnN0IEJD
MF9TRUNPTkRfTVNHID0gJ2Zyb20gQkMwIC0gc2Vjb25kJzsKK2NvbnN0IEJDMV9TRUNPTkRfTVNH
ID0gJ2Zyb20gQkMxIC0gc2Vjb25kJzsKK2NvbnN0IEJDMl9TRUNPTkRfTVNHID0gJ2Zyb20gQkMy
IC0gc2Vjb25kJzsKK2NvbnN0IEJDM19TRUNPTkRfTVNHID0gJ2RvbmUnOworY29uc3QgQkMwX1RB
UkdFVF9OQU1FID0gJ0JDMSc7Citjb25zdCBCQzFfVEFSR0VUX05BTUUgPSAnQkMxJzsKK2NvbnN0
IEJDMl9UQVJHRVRfTkFNRSA9ICdCQzInOworY29uc3QgQkMzX1RBUkdFVF9OQU1FID0gJ0JDMyc7
Citjb25zdCBNVUxUSV9GUkFNRV9PUkRFUklOR19URVNUX0NIQU5ORUxfTkFNRSA9ICdtdWx0aS1m
cmFtZS1vcmRlcic7CisKK2NvbnN0IGJjMCA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKE1VTFRJX0ZS
QU1FX09SREVSSU5HX1RFU1RfQ0hBTk5FTF9OQU1FKTsKK2NvbnN0IG1lc3NhZ2VzID0gW107CisK
K2Z1bmN0aW9uIGxvZ1JlY2VpdmVkTWVzc2FnZSh0YXJnZXRuYW1lLCBlKSB7CisgIG1lc3NhZ2Vz
LnB1c2goeyd0YXJnZXQnOiB0YXJnZXRuYW1lLCAnZGF0YSc6IGUuZGF0YX0pOworfQorCitmdW5j
dGlvbiBwb3N0TWVzc2FnZXNUb0NoYW5uZWwoKSB7CisgIHJldHVybiBuZXcgUHJvbWlzZSgocmVz
b2x2ZSkgPT4geworICAgIGJjMC5wb3N0TWVzc2FnZShCQzBfRklSU1RfTVNHKTsKKyAgICBiYzAu
cG9zdE1lc3NhZ2UoQkMwX1NFQ09ORF9NU0cpOworICAgIHJlc29sdmUoKTsKKyAgfSk7Cit9CisK
Ky8vIEV4cGVjdGVkIGZsb3cgb2YgbWVzc2FnZXMgYmV0d2VlbiB0aGUgQnJvYWRjYXN0Q2hhbm5l
bCBvYmplY3RzIChiYXNlZCBvbgorLy8gdGhlIHJlcXVpcmVtZW50IHRoYXQgbWVzc2FnZXMgZ2V0
IGRlbGl2ZXJlZCB0byBCcm9hZGNhc3RDaGFubmVsIG9iamVjdHMKKy8vICJpbiBjcmVhdGlvbiBv
cmRlciwgb2xkZXN0IGZpcnN0IikgYW5kIGNvbW1lbnRzIGRlc2NyaWJpbmcgdGhlIGFjdGlvbnMK
Ky8vIHRha2VuIGluIHJlc3BvbnNlIHRvIGVhY2ggZXZlbnQKK2NvbnN0IEVYUEVDVEVEX1JFU1VM
VFMgPSBbCisgIC8vIC0+IEJDMCBzZW5kcyB0d28gbWVzc2FnZXMsIEJDMSBhbmQgQkMyIGFyZSBj
b25uZWN0ZWQgdG8gdGhlIGNoYW5uZWwKKworICB7J2RhdGEnOiBCQzBfRklSU1RfTVNHLCAndGFy
Z2V0JzogQkMxX1RBUkdFVF9OQU1FfSwKKyAgLy8gLT4gQkMxIENyZWF0ZXMgQkMzIGFuZCBzZW5k
cyBmaXJzdCBtZXNzYWdlCisKKyAgeydkYXRhJzogQkMwX0ZJUlNUX01TRywgJ3RhcmdldCc6IEJD
Ml9UQVJHRVRfTkFNRX0sCisgIC8vIC0+IEJDMiBzZW5kcyB0d28gbWVzc2FnZXMKKworICAvLyBC
QzMgaXNuJ3QgZXhwZWN0ZWQgdG8gcmVjZWl2ZSB0aGUgbWVzc2FnZXMgc2VudCBiZWZvcmUgaXQg
d2FzIGNyZWF0ZWQsIHNvCisgIC8vIG5vIGNvcnJlc3BvbmRpbmcgZW50cmllcyBoZXJlIGZvciBt
ZXNzYWdlcyBmcm9tIEJDMC4KKworICB7J2RhdGEnOiBCQzBfU0VDT05EX01TRywgJ3RhcmdldCc6
IEJDMV9UQVJHRVRfTkFNRX0sCisgIC8vIC0+IEJDMSBzZW5kcyBzZWNvbmQgbWVzc2FnZQorCisg
IHsnZGF0YSc6IEJDMF9TRUNPTkRfTVNHLCAndGFyZ2V0JzogQkMyX1RBUkdFVF9OQU1FfSwKKyAg
Ly8gLT4gQkMyIGNsb3NlcworCisgIHsnZGF0YSc6IEJDMV9GSVJTVF9NU0csICd0YXJnZXQnOiBC
QzBfVEFSR0VUX05BTUV9LAorCisgIHsnZGF0YSc6IEJDMV9GSVJTVF9NU0csICd0YXJnZXQnOiBC
QzNfVEFSR0VUX05BTUV9LAorICAvLyAtPiBCQzMgc2VuZHMgZmlyc3QgbWVzc2FnZQorCisgIHsn
ZGF0YSc6IEJDMl9GSVJTVF9NU0csICd0YXJnZXQnOiBCQzBfVEFSR0VUX05BTUV9LAorCisgIHsn
ZGF0YSc6IEJDMl9GSVJTVF9NU0csICd0YXJnZXQnOiBCQzFfVEFSR0VUX05BTUV9LAorICAvLyAt
PiBCQzEgY2xvc2VzCisKKyAgeydkYXRhJzogQkMyX0ZJUlNUX01TRywgJ3RhcmdldCc6IEJDM19U
QVJHRVRfTkFNRX0sCisgIC8vIC0+IEJDMyBzZW5kcyBzZWNvbmQgbWVzc2FnZQorCisgIHsnZGF0
YSc6IEJDMl9TRUNPTkRfTVNHLCAndGFyZ2V0JzogQkMwX1RBUkdFVF9OQU1FfSwKKworICB7J2Rh
dGEnOiBCQzJfU0VDT05EX01TRywgJ3RhcmdldCc6IEJDM19UQVJHRVRfTkFNRX0sCisgIC8vIC0+
IEJDMyBjbG9zZXMKKworICB7J2RhdGEnOiBCQzFfU0VDT05EX01TRywgJ3RhcmdldCc6IEJDMF9U
QVJHRVRfTkFNRX0sCisKKyAgeydkYXRhJzogQkMzX0ZJUlNUX01TRywgJ3RhcmdldCc6IEJDMF9U
QVJHRVRfTkFNRX0sCisKKyAgeydkYXRhJzogQkMzX1NFQ09ORF9NU0csICd0YXJnZXQnOiBCQzBf
VEFSR0VUX05BTUV9LAorXTsKKworZnVuY3Rpb24gdGVzdENvbXBsZXRpb24odCkgeworICByZXR1
cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKKyAgICBiYzAub25tZXNzYWdlID0gdC5zdGVw
X2Z1bmMoZSA9PiB7CisgICAgICBsb2dSZWNlaXZlZE1lc3NhZ2UoQkMwX1RBUkdFVF9OQU1FLCBl
KTsKKyAgICAgIGlmIChlLmRhdGEgPT0gQkMzX1NFQ09ORF9NU0cpIHsKKyAgICAgICAgYXNzZXJ0
X2VxdWFscyhtZXNzYWdlcy5sZW5ndGgsIEVYUEVDVEVEX1JFU1VMVFMubGVuZ3RoKTsKKyAgICAg
ICAgZm9yKHZhciBpID0gMDsgaSA8IG1lc3NhZ2VzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAg
YXNzZXJ0X2VxdWFscyhtZXNzYWdlc1tpXS50YXJnZXQsIEVYUEVDVEVEX1JFU1VMVFNbaV0udGFy
Z2V0LCBgTWVzc2FnZSAke2krMX0gaGFzIHVuZXhwZWN0ZWQgdGFyZ2V0YCk7CisgICAgICAgICAg
YXNzZXJ0X2VxdWFscyhtZXNzYWdlc1tpXS5kYXRhLCBFWFBFQ1RFRF9SRVNVTFRTW2ldLmRhdGEs
IGBNZXNzYWdlICR7aSsxfSBoYXMgdW5leHBlY3RlZCBtZXNzYWdlIGNvbnRlbnRzYCk7CisgICAg
ICAgIH0KKyAgICAgICAgcmVzb2x2ZSgpOworICAgICAgfQorICAgIH0pOworICB9KTsKK30KKwor
cHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworCisgIGNvbnN0IHRlc3RSZXN1bHRzID0gdGVzdENv
bXBsZXRpb24odCk7CisgIC8vIEF3YWl0IHRoZW0gc2VxdWVudGlhbGx5IGJlY2F1c2Ugd2UgbmVl
ZCB0aGUgQnJvYWRjYXN0Q2hhbm5lbCBvYmplY3QgaW4KKyAgLy8gaWZyYW1lMSB0byBiZSBjcmVh
dGVkIGZpcnN0LCB3ZSBuZWVkIHRoZSBCcm9hZGNhc3RDaGFubmVsIG9iamVjdCBpbgorICAvLyBp
ZnJhbWUyIHRvIGJlIGNyZWF0ZWQgc2Vjb25kLCBhbmQgdGhlbiB3ZSBvbmx5IHdhbnQgdG8gY2Fs
bAorICAvLyBwb3N0TWVzc2FnZXNUb0NoYW5uZWwgb25jZSBib3RoIEJyb2FkY2FzdENoYW5uZWxz
IGhhdmUgYmVlbiBjcmVhdGVkLgorICBhd2FpdCB3aXRoX2lmcmFtZSgncmVzb3VyY2VzL29yZGVy
aW5nLmh0bWw/aWQ9aWZyYW1lMScpOworICBhd2FpdCB3aXRoX2lmcmFtZSgncmVzb3VyY2VzL29y
ZGVyaW5nLmh0bWw/aWQ9aWZyYW1lMicpOworICBhd2FpdCBwb3N0TWVzc2FnZXNUb0NoYW5uZWwo
KTsKKyAgcmV0dXJuIHRlc3RSZXN1bHRzOworfSwgIk1lc3NhZ2VzIGFyZSBkZWxpdmVyZWQgaW4g
cG9ydCBjcmVhdGlvbiBvcmRlciBhY3Jvc3MgbXVsdGlwbGUgZnJhbWVzIik7CisKKzwvc2NyaXB0
PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9yZXNvdXJjZXMvY3Jvc3Mt
b3JpZ2luLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL3Jlc291cmNlcy9jcm9zcy1vcmlnaW4uaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41MDc4YjZmYzhlNDZmNTU2ZmUxYjg2YzdlMWFhNWExNDFjMTMyYmUxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9yZXNvdXJjZXMvY3Jvc3Mtb3JpZ2lu
Lmh0bWwKQEAgLTAsMCArMSwxNSBAQAorPGJvZHk+PC9ib2R5PgorPHNjcmlwdD4KKyAgd2luZG93
Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgIGJjMSA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKCdu
by1jcm9zcy1vcmlnaW4tbWVzc2FnZXMnKTsKKyAgICBiYzIgPSBuZXcgQnJvYWRjYXN0Q2hhbm5l
bCgnbm8tY3Jvc3Mtb3JpZ2luLW1lc3NhZ2VzJyk7CisgICAgYmMyLm9ubWVzc2FnZSA9IGUgPT4g
eworICAgICAgcGFyZW50LnBvc3RNZXNzYWdlKCdkb25lJywgIioiKTsKKyAgICB9OworICAgIC8v
IFBvc3QgYSBtZXNzYWdlIG9uIGJjMSBhbmQgb25jZSB3ZSByZWNlaXZlIGl0IGluIGJjMiwgd2Ug
a25vdyB0aGF0IHRoZQorICAgIC8vIG1lc3NhZ2Ugc2hvdWxkIGhhdmUgYmVlbiBzZW50IHRvIGJj
MCBpZiBtZXNzYWdlcyB3ZXJlIGJlaW5nIHBhc3NlZAorICAgIC8vIGFjcm9zcyBvcmlnaW4gKGFz
c3VtaW5nIGNvbXBsaWFuY2Ugd2l0aCB0aGUgc3BlYyByZWdhcmRpbmcgbWVzc2FnZQorICAgIC8v
IGRlbGl2ZXJ5IGluIHBvcnQgY3JlYXRpb24gb3JkZXIpLgorICAgIGJjMS5wb3N0TWVzc2FnZSgn
aWduaXRpb24nKTsKKyAgfQorPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVs
L3Jlc291cmNlcy9vcmRlcmluZy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9yZXNvdXJjZXMvb3Jk
ZXJpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iN2YxMmQ4NjVhZDJiZjY0Mjc4NzkxZTYwZWY5MjU1Mzlk
ZTQwNjcxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9yZXNvdXJjZXMvb3Jk
ZXJpbmcuaHRtbApAQCAtMCwwICsxLDc4IEBACis8Ym9keT48L2JvZHk+Cis8c2NyaXB0PgorICBj
b25zdCBCQzBfRklSU1RfTVNHID0gJ2Zyb20gQkMwIC0gZmlyc3QnOworICBjb25zdCBCQzFfRklS
U1RfTVNHID0gJ2Zyb20gQkMxIC0gZmlyc3QnOworICBjb25zdCBCQzJfRklSU1RfTVNHID0gJ2Zy
b20gQkMyIC0gZmlyc3QnOworICBjb25zdCBCQzNfRklSU1RfTVNHID0gJ2Zyb20gQkMzIC0gZmly
c3QnOworICBjb25zdCBCQzBfU0VDT05EX01TRyA9ICdmcm9tIEJDMCAtIHNlY29uZCc7CisgIGNv
bnN0IEJDMV9TRUNPTkRfTVNHID0gJ2Zyb20gQkMxIC0gc2Vjb25kJzsKKyAgY29uc3QgQkMyX1NF
Q09ORF9NU0cgPSAnZnJvbSBCQzIgLSBzZWNvbmQnOworICBjb25zdCBCQzNfU0VDT05EX01TRyA9
ICdkb25lJzsKKyAgY29uc3QgQkMwX1RBUkdFVF9OQU1FID0gJ0JDMSc7CisgIGNvbnN0IEJDMV9U
QVJHRVRfTkFNRSA9ICdCQzEnOworICBjb25zdCBCQzJfVEFSR0VUX05BTUUgPSAnQkMyJzsKKyAg
Y29uc3QgQkMzX1RBUkdFVF9OQU1FID0gJ0JDMyc7CisgIGNvbnN0IE1VTFRJX0ZSQU1FX09SREVS
SU5HX1RFU1RfQ0hBTk5FTF9OQU1FID0gJ211bHRpLWZyYW1lLW9yZGVyJzsKKworICB2YXIgYmMx
LCBiYzIsIGJjMzsKKyAgdmFyIHNlbnRNZXNzYWdlQ291bnRGb3JCYzEgPSAwOworICB2YXIgc2Vu
dE1lc3NhZ2VDb3VudEZvckJjMiA9IDA7CisgIHZhciBzZW50TWVzc2FnZUNvdW50Rm9yQmMzID0g
MDsKKworICB2YXIgYmMxX2hhbmRsZXIgPSBlID0+IHsKKyAgICB3aW5kb3cudG9wLmxvZ1JlY2Vp
dmVkTWVzc2FnZShCQzFfVEFSR0VUX05BTUUsIGUpOworICAgIHN3aXRjaChzZW50TWVzc2FnZUNv
dW50Rm9yQmMxKSB7CisgICAgICBjYXNlIDA6CisgICAgICAgIGJjMyA9IG5ldyBCcm9hZGNhc3RD
aGFubmVsKE1VTFRJX0ZSQU1FX09SREVSSU5HX1RFU1RfQ0hBTk5FTF9OQU1FKTsKKyAgICAgICAg
YmMzLm9ubWVzc2FnZSA9IGJjM19oYW5kbGVyOworICAgICAgICBiYzEucG9zdE1lc3NhZ2UoQkMx
X0ZJUlNUX01TRyk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAxOgorICAgICAgICBiYzEu
cG9zdE1lc3NhZ2UoQkMxX1NFQ09ORF9NU0cpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
MjoKKyAgICAgICAgYmMxLmNsb3NlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgc2Vu
dE1lc3NhZ2VDb3VudEZvckJjMSArPSAxOworICB9CisgIHZhciBiYzJfaGFuZGxlciA9IGUgPT4g
eworICAgIHdpbmRvdy50b3AubG9nUmVjZWl2ZWRNZXNzYWdlKEJDMl9UQVJHRVRfTkFNRSwgZSk7
CisgICAgc3dpdGNoKHNlbnRNZXNzYWdlQ291bnRGb3JCYzIpIHsKKyAgICAgIGNhc2UgMDoKKyAg
ICAgICAgYmMyLnBvc3RNZXNzYWdlKEJDMl9GSVJTVF9NU0cpOworICAgICAgICBiYzIucG9zdE1l
c3NhZ2UoQkMyX1NFQ09ORF9NU0cpOworICAgICAgICBzZW50TWVzc2FnZUNvdW50Rm9yQmMyICs9
IDI7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAyOgorICAgICAgICBiYzIuY2xvc2UoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgfTsKKyAgdmFyIGJjM19oYW5kbGVyID0gZSA9PiB7
CisgICAgd2luZG93LnRvcC5sb2dSZWNlaXZlZE1lc3NhZ2UoQkMzX1RBUkdFVF9OQU1FLCBlKTsK
KyAgICBzd2l0Y2goc2VudE1lc3NhZ2VDb3VudEZvckJjMykgeworICAgICAgY2FzZSAwOgorICAg
ICAgICBiYzMucG9zdE1lc3NhZ2UoQkMzX0ZJUlNUX01TRyk7CisgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSAxOgorICAgICAgICBiYzMucG9zdE1lc3NhZ2UoQkMzX1NFQ09ORF9NU0cpOworICAg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgMjoKKyAgICAgICAgYmMzLmNsb3NlKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgc2VudE1lc3NhZ2VDb3VudEZvckJjMyArPSAxOworICB9Owor
CisgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICBjb25zdCBwYXJhbXMgPSBuZXcg
VVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpOworICAgIGlmIChwYXJhbXMu
Z2V0KCdpZCcpID09PSAnaWZyYW1lMScpIHsKKyAgICAgIGJjMSA9IG5ldyBCcm9hZGNhc3RDaGFu
bmVsKE1VTFRJX0ZSQU1FX09SREVSSU5HX1RFU1RfQ0hBTk5FTF9OQU1FKTsKKyAgICAgIGJjMS5v
bm1lc3NhZ2UgPSBiYzFfaGFuZGxlcjsKKyAgICB9IGVsc2UgaWYgKHBhcmFtcy5nZXQoJ2lkJykg
ID09PSAnaWZyYW1lMicpIHsKKyAgICAgIGJjMiA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKE1VTFRJ
X0ZSQU1FX09SREVSSU5HX1RFU1RfQ0hBTk5FTF9OQU1FKTsKKyAgICAgIGJjMi5vbm1lc3NhZ2Ug
PSBiYzJfaGFuZGxlcjsKKyAgICB9CisgIH0KKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRj
YXN0Y2hhbm5lbC9yZXNvdXJjZXMvc2VydmljZS13b3JrZXIuanMgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVs
L3Jlc291cmNlcy9zZXJ2aWNlLXdvcmtlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hM2QxN2I5YzY1MGFkYjVm
ODg5YTUxZjFlNzNhNDUzN2EyODIxNjFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hh
bm5lbC9yZXNvdXJjZXMvc2VydmljZS13b3JrZXIuanMKQEAgLTAsMCArMSwxNSBAQAorbGV0IHBy
b21pc2VfZnVuYyA9IG51bGw7CitsZXQgcHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4g
cHJvbWlzZV9mdW5jID0gcmVzb2x2ZSk7CisKK2NvbnN0IFNFUlZJQ0VfV09SS0VSX1RFU1RfQ0hB
Tk5FTF9OQU1FID0gJ3NlcnZpY2Ugd29ya2VyJzsKK2NvbnN0IGJjMyA9IG5ldyBCcm9hZGNhc3RD
aGFubmVsKFNFUlZJQ0VfV09SS0VSX1RFU1RfQ0hBTk5FTF9OQU1FKTsKK2JjMy5vbm1lc3NhZ2Ug
PSBlID0+IHsKKyAgYmMzLnBvc3RNZXNzYWdlKCdkb25lJyk7CisgIHByb21pc2VfZnVuYygpOwor
fTsKK2JjMy5wb3N0TWVzc2FnZSgnZnJvbSB3b3JrZXInKTsKKworLy8gRW5zdXJlIHRoYXQgdGhl
IHdvcmtlciBzdGF5cyBhbGl2ZSBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSB0ZXN0CitzZWxmLmFk
ZEV2ZW50TGlzdGVuZXIoJ2luc3RhbGwnLCBldnQgPT4geworICBldnQud2FpdFVudGlsKHByb21p
c2UpOworfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL3Jlc291cmNlcy93M2MtaW1w
b3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
bWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvcmVzb3VyY2VzL3czYy1pbXBvcnQubG9nCmluZGV4
IDBiOTgyNmIxYTQ2ZWQxMWRkMTE2MTk1ZWFkMjlkMDg3ZDE0ZmNjNjQuLjEyMTFhOWZhZDAyY2Q3
Yjg3ZDVkNjk1MGY5NDhiMjkyZThjMTA0MGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwv
cmVzb3VyY2VzL3czYy1pbXBvcnQubG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvcmVzb3VyY2Vz
L3czYy1pbXBvcnQubG9nCkBAIC0xNCw2ICsxNCw5IEBAIFByb3BlcnR5IHZhbHVlcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgogTm9uZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBMaXN0IG9mIGZpbGVz
OgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2Fn
aW5nL2Jyb2FkY2FzdGNoYW5uZWwvcmVzb3VyY2VzL2Nyb3NzLW9yaWdpbi5odG1sCisvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRj
YXN0Y2hhbm5lbC9yZXNvdXJjZXMvb3JkZXJpbmcuaHRtbAogL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvcmVz
b3VyY2VzL29yaWdpbi5odG1sCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9yZXNvdXJjZXMvc2FuZGJveGVk
Lmh0bWwKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1l
c3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL3Jlc291cmNlcy9zZXJ2aWNlLXdvcmtlci5qcwogL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jy
b2FkY2FzdGNoYW5uZWwvcmVzb3VyY2VzL3dvcmtlci5qcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0
Y2hhbm5lbC9yZXNvdXJjZXMvd29ya2VyLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9yZXNvdXJjZXMv
d29ya2VyLmpzCmluZGV4IDkzNjRjNjAyNzU2Mzg1Y2Q0ZTBmOGVjZTI2N2I0NDc2MjA1OTFjOTQu
LmRmMjMwNzJiYzk5Zjk1ZDA5ZjdjZDFhNjU1MDU5NWU0MzAzOWU3YjggMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jy
b2FkY2FzdGNoYW5uZWwvcmVzb3VyY2VzL3dvcmtlci5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVs
L3Jlc291cmNlcy93b3JrZXIuanMKQEAgLTE2LDYgKzE2LDEyIEBAIGZ1bmN0aW9uIGhhbmRsZXIo
ZSwgcmVwbHkpIHsKICAgYyA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKGUuZGF0YS5jaGFubmVsKTsK
ICAgbGV0IG1lc3NhZ2VzID0gW107CiAgIGMub25tZXNzYWdlID0gZSA9PiB7CisgICAgICBpZiAo
ZS5kYXRhID09PSAncmVhZHknKSB7CisgICAgICAgIC8vIElnbm9yZSBhbnkgJ3JlYWR5JyBtZXNz
YWdlcyBmcm9tIHRoZSBvdGhlciB0aHJlYWQgc2luY2UgdGhlcmUgY291bGQKKyAgICAgICAgLy8g
YmUgc29tZSByYWNlIGNvbmRpdGlvbnMgYmV0d2VlbiB0aGlzIEJyb2FkY2FzdENoYW5uZWwgaW5z
dGFuY2UKKyAgICAgICAgLy8gYmVpbmcgY3JlYXRlZCAvIHJlYWR5IHRvIHJlY2VpdmUgbWVzc2Fn
ZXMgYW5kIHRoZSBtZXNzYWdlIGJlaW5nIHNlbnQuCisgICAgICAgIHJldHVybjsKKyAgICAgIH0K
ICAgICAgIG1lc3NhZ2VzLnB1c2goZS5kYXRhKTsKICAgICAgIGlmIChlLmRhdGEgPT0gJ2RvbmUn
KQogICAgICAgICByZXBseShtZXNzYWdlcyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVs
L3NlcnZpY2Utd29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvc2Vy
dmljZS13b3JrZXIuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0MmZlYjkyYzI3MGUx
ZjNhNzI3YWQ0Njg5ZGM0NDg5OTY0Mjg2MzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3Rj
aGFubmVsL3NlcnZpY2Utd29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAK
KworRkFJTCBCcm9hZGNhc3RDaGFubmVsIHdvcmtzIGluIHNlcnZpY2Ugd29ya2VycyBwcm9taXNl
X3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6
IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBCcm9hZGNhc3RDaGFubmVsIgor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL3NlcnZpY2Utd29ya2VyLmh0dHBzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2lu
Zy9icm9hZGNhc3RjaGFubmVsL3NlcnZpY2Utd29ya2VyLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDYwNTQzNGFlMWNjYjAyNzI0YTkwMWNhZjVmMjMyNWIxNzE5ZDg3OAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2Fn
aW5nL2Jyb2FkY2FzdGNoYW5uZWwvc2VydmljZS13b3JrZXIuaHR0cHMuaHRtbApAQCAtMCwwICsx
LDQ3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+Cis8c2NyaXB0IHNy
Yz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitjb25z
dCBTRVJWSUNFX1dPUktFUl9URVNUX0NIQU5ORUxfTkFNRSA9ICdzZXJ2aWNlIHdvcmtlcic7Citj
b25zdCBldmVudHMgPSBbXTsKK2NvbnN0IGMxID0gbmV3IEJyb2FkY2FzdENoYW5uZWwoU0VSVklD
RV9XT1JLRVJfVEVTVF9DSEFOTkVMX05BTUUpOworY29uc3QgYzIgPSBuZXcgQnJvYWRjYXN0Q2hh
bm5lbChTRVJWSUNFX1dPUktFUl9URVNUX0NIQU5ORUxfTkFNRSk7CitjMS5vbm1lc3NhZ2UgPSBl
ID0+IGV2ZW50cy5wdXNoKGUpOworYzIub25tZXNzYWdlID0gZSA9PiBldmVudHMucHVzaChlKTsK
KworZnVuY3Rpb24gdGVzdENvbXBsZXRpb24odCkgeworICByZXR1cm4gbmV3IFByb21pc2UoKHJl
c29sdmUpID0+IHsKKyAgICBjMi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgdC5zdGVwX2Z1
bmMoZSA9PiB7CisgICAgICBpZiAoZS5kYXRhID09ICdmcm9tIHdvcmtlcicpIHsKKyAgICAgICAg
YzIucG9zdE1lc3NhZ2UoJ2Zyb20gYzInKTsKKyAgICAgIH0gZWxzZSBpZiAoZS5kYXRhID09ICdk
b25lJykgeworICAgICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50cy5sZW5ndGgsIDUpOworICAgICAg
ICBhc3NlcnRfZXF1YWxzKGV2ZW50c1swXS5kYXRhLCAnZnJvbSB3b3JrZXInKTsKKyAgICAgICAg
YXNzZXJ0X2VxdWFscyhldmVudHNbMF0udGFyZ2V0LCBjMSk7CisgICAgICAgIGFzc2VydF9lcXVh
bHMoZXZlbnRzWzFdLmRhdGEsICdmcm9tIHdvcmtlcicpOworICAgICAgICBhc3NlcnRfZXF1YWxz
KGV2ZW50c1sxXS50YXJnZXQsIGMyKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhldmVudHNbMl0u
ZGF0YSwgJ2Zyb20gYzInKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhldmVudHNbM10uZGF0YSwg
J2RvbmUnKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhldmVudHNbM10udGFyZ2V0LCBjMSk7Cisg
ICAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnRzWzRdLmRhdGEsICdkb25lJyk7CisgICAgICAgIGFz
c2VydF9lcXVhbHMoZXZlbnRzWzRdLnRhcmdldCwgYzIpOworICAgICAgICByZXNvbHZlKCk7Cisg
ICAgICB9CisgICAgfSkpOworICB9KTsKK30KKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewor
CisgICAgY29uc3QgdGVzdFJlc3VsdHMgPSB0ZXN0Q29tcGxldGlvbih0KTsKKyAgICBjb25zdCBT
Q1JJUFQgPSAicmVzb3VyY2VzL3NlcnZpY2Utd29ya2VyLmpzIjsKKyAgICBjb25zdCBTQ09QRSA9
ICIvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvcmVzb3VyY2VzL25vdC11c2VkLyI7CisK
KyAgICBjb25zdCByZWcgPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcihT
Q1JJUFQsIHsnc2NvcGUnOiBTQ09QRX0pOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gcmVnLnVu
cmVnaXN0ZXIoKSk7CisKKyAgICByZXR1cm4gdGVzdFJlc3VsdHM7CisgIH0sICdCcm9hZGNhc3RD
aGFubmVsIHdvcmtzIGluIHNlcnZpY2Ugd29ya2VycycpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2lu
Zy9icm9hZGNhc3RjaGFubmVsL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC93M2Mt
aW1wb3J0LmxvZwppbmRleCAxNGU5ZGQ5NGQ3ODZjOWIxNGU1ZGMwOTJhMDUyZDY0MjVkN2Q2NzAw
Li44NTkyZjAxZGQzNjM5NzAxYWM4YjA0NjgxNTdmODZjNDdiNmU3ZTFiIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9i
cm9hZGNhc3RjaGFubmVsL3czYy1pbXBvcnQubG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvdzNj
LWltcG9ydC5sb2cKQEAgLTE2LDcgKzE2LDExIEBAIE5vbmUKIExpc3Qgb2YgZmlsZXM6CiAvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJv
YWRjYXN0Y2hhbm5lbC9iYXNpY3MuYW55LmpzCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9ibG9icy5odG1s
CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdp
bmcvYnJvYWRjYXN0Y2hhbm5lbC9jcm9zcy1vcmlnaW4uaHRtbAorL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwv
ZGV0YWNoZWQtaWZyYW1lLmh0bWwKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL2ludGVyZmFjZS5hbnkuanMK
Ky9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2lu
Zy9icm9hZGNhc3RjaGFubmVsL29yZGVyaW5nLmh0bWwKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL29yaWdp
bi53aW5kb3cuanMKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL3NhbmRib3guaHRtbAorL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNo
YW5uZWwvc2VydmljZS13b3JrZXIuaHR0cHMuaHRtbAogL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvd29ya2Vy
cy5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL3dvcmtlcnMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdp
bmcvYnJvYWRjYXN0Y2hhbm5lbC93b3JrZXJzLWV4cGVjdGVkLnR4dAppbmRleCAwNmUwNTU2NTc2
ODIzYTgzYjRmMWE2NGIwZWJiYzM0NjBjYjdjYzEyLi4wM2IzOWQ2YTI3YzgxZWU2MTQ5ZjY5ODYz
MDgzMDUyYTE3MmNkZGNhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL3dvcmtlcnMtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvd29ya2Vycy1leHBlY3RlZC50eHQKQEAg
LTMsNSArMywxMCBAQCBQQVNTIEJyb2FkY2FzdENoYW5uZWwgd29ya3MgaW4gd29ya2VycwogRkFJ
TCBCcm9hZGNhc3RDaGFubmVsIHdvcmtzIGluIHNoYXJlZCB3b3JrZXJzIG51bGwgaXMgbm90IGFu
IG9iamVjdCAoZXZhbHVhdGluZyAnd29ya2VyLnBvcnQnKQogUEFTUyBDbG9zaW5nIGFuZCByZS1v
cGVuaW5nIGEgY2hhbm5lbCB3b3Jrcy4KIFBBU1MgQnJvYWRjYXN0Q2hhbm5lbCBjcmVhdGVkIGFm
dGVyIGEgd29ya2VyIHNlbGYuY2xvc2UoKQotUEFTUyBCcm9hZGNhc3RDaGFubmVsIHVzZWQgYWZ0
ZXIgYSB3b3JrZXIgc2VsZi5jbG9zZSgpCitQQVNTIEJyb2FkY2FzdENoYW5uZWwgbWVzc2FnZXMg
ZnJvbSBjbG9zZWQgd29ya2VyIHRvIHBhcmVudCBzaG91bGQgYmUgaWdub3JlZCAoQkMgY3JlYXRl
ZCBiZWZvcmUgY2xvc2luZykKK1BBU1MgQnJvYWRjYXN0Q2hhbm5lbCBtZXNzYWdlcyBmcm9tIGNs
b3NlZCB3b3JrZXIgdG8gcGFyZW50IHNob3VsZCBiZSBpZ25vcmVkIChCQyBjcmVhdGVkIGFmdGVy
IGNsb3NpbmcpCitQQVNTIEJyb2FkY2FzdENoYW5uZWwgbWVzc2FnZXMgZnJvbSBwYXJlbnQgdG8g
Y2xvc2VkIHdvcmtlciBzaG91bGQgYmUgaWdub3JlZCAoQkMgY3JlYXRlZCBiZWZvcmUgY2xvc2lu
ZykKK1BBU1MgQnJvYWRjYXN0Q2hhbm5lbCBtZXNzYWdlcyBmcm9tIHBhcmVudCB0byBjbG9zZWQg
d29ya2VyIHNob3VsZCBiZSBpZ25vcmVkIChCQyBjcmVhdGVkIGFmdGVyIGNsb3NpbmcpCitQQVNT
IEJyb2FkY2FzdENoYW5uZWwgbWVzc2FnZXMgd2l0aGluIGNsb3NlZCB3b3JrZXIgc2hvdWxkIGJl
IGlnbm9yZWQgKEJDcyBjcmVhdGVkIGJlZm9yZSBjbG9zaW5nKQorUEFTUyBCcm9hZGNhc3RDaGFu
bmVsIG1lc3NhZ2VzIHdpdGhpbiBjbG9zZWQgd29ya2VyIHNob3VsZCBiZSBpZ25vcmVkIChCQ3Mg
Y3JlYXRlZCBhZnRlciBjbG9zaW5nKQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL3dv
cmtlcnMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvd29ya2Vycy5odG1sCmluZGV4IDFkMDVmZWI3
ZWRiZjBlOWZjMTQ4ZDIxMzZiYjVhNWExZmZlYjU2YTYuLjhiNTU0OTJmM2NmZmIzNTY2NGVkMjZm
ZTFmMzY4N2Y1MmZmNDU3ZTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvd29ya2Vycy5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
bWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvd29ya2Vycy5odG1sCkBAIC04MCwxMSArODAsMTQg
QEAgYXN5bmNfdGVzdCh0ID0+IHsKIAogICAgIGxldCB3b3JrZXIgPSBuZXcgV29ya2VyKCdyZXNv
dXJjZXMvd29ya2VyLmpzJyk7CiAgICAgd29ya2VyLm9ubWVzc2FnZSA9IHQuc3RlcF9mdW5jKGUg
PT4gewotICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGV2ZW50cywgWydjMTogZnJvbSB3b3Jr
ZXInLCAnYzI6IGVjaG8nXSwKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhldmVudHMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgWydjMTogZnJvbSB3b3JrZXInLCAnYzI6IHJlYWR5
JywgJ2MyOiBlY2hvJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21lc3NhZ2VzIGlu
IGRvY3VtZW50Jyk7CiAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoZS5kYXRhLCBbJ2RvbmUn
XSwgJ21lc3NhZ2VzIGluIHdvcmtlcicpOwogICAgICAgICB0LmRvbmUoKTsKICAgICAgIH0pOwor
ICAgIHdvcmtlci5vbm1lc3NhZ2Vycm9yID0KKyAgICAgICAgdC51bnJlYWNoZWRfZnVuYygnV29y
a2VyXCdzIG9ubWVzc2FnZWVycm9yIGhhbmRsZXIgY2FsbGVkJyk7CiAKICAgICBjLmFkZEV2ZW50
TGlzdGVuZXIoJ21lc3NhZ2UnLCBlID0+IHsKICAgICAgICAgaWYgKGUuZGF0YSA9PSAnZnJvbSB3
b3JrZXInKSB7CkBAIC05NCw0OCArOTcsMjc5IEBAIGFzeW5jX3Rlc3QodCA9PiB7CiAgICAgICAg
ICAgICAgIGxldCBjMiA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKCd3b3JrZXItY2xvc2UnKTsKICAg
ICAgICAgICAgICAgYzIub25tZXNzYWdlID0gZSA9PiB7CiAgICAgICAgICAgICAgICAgICBldmVu
dHMucHVzaCgnYzI6ICcgKyBlLmRhdGEpOwotICAgICAgICAgICAgICAgICAgYzIucG9zdE1lc3Nh
Z2UoJ2RvbmUnKTsKKyAgICAgICAgICAgICAgICAgIGlmIChlLmRhdGEgPT09ICdyZWFkeScpIHsK
KyAgICAgICAgICAgICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHtwaW5nOiAnZWNobyd9KTsK
KyAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGMyLnBvc3RN
ZXNzYWdlKCdkb25lJyk7CisgICAgICAgICAgICAgICAgICAgIGMyLmNsb3NlKCk7CisgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgICAgd29ya2VyLnBv
c3RNZXNzYWdlKHtwaW5nOiAnZWNobyd9KTsKKyAgICAgICAgICAgICAgLy8gRm9yIHNvbWUgaW1w
bGVtZW50YXRpb25zIHRoZXJlIG1heSBiZSBhIHJhY2UgY29uZGl0aW9uIGJldHdlZW4KKyAgICAg
ICAgICAgICAgLy8gd2hlbiB0aGUgQnJvYWRjYXN0Q2hhbm5lbCBpbnN0YW5jZSBhYm92ZSBpcyBj
cmVhdGVkIC8gcmVhZHkgdG8KKyAgICAgICAgICAgICAgLy8gcmVjZWl2ZSBtZXNzYWdlcyBhbmQg
d2hlbiB0aGUgd29ya2VyIGNhbGxzIHBvc3RNZXNzYWdlIG9uIGl0J3MKKyAgICAgICAgICAgICAg
Ly8gQnJvYWRjYXN0Q2hhbm5lbCBpbnN0YW5jZS4gVG8gYXZvaWQgdGhpcywgY29uZmlybSB0aGF0
IG91cgorICAgICAgICAgICAgICAvLyBpbnN0YW5jZSBjYW4gcmVjZWl2ZSBhIG1lc3NhZ2UgYmVm
b3JlIGluZGljYXRpbmcgdG8gdGhlIG90aGVyCisgICAgICAgICAgICAgIC8vIHRocmVhZCB0aGF0
IHdlIGFyZSByZWFkeS4gRm9yIG1vcmUgZGV0YWlscywgc2VlOgorICAgICAgICAgICAgICAvLyBo
dHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL2h0bWwvaXNzdWVzLzcyNjcKKyAgICAgICAgICAgICAg
bGV0IGMzID0gbmV3IEJyb2FkY2FzdENoYW5uZWwoJ3dvcmtlci1jbG9zZScpOworICAgICAgICAg
ICAgICBjMy5wb3N0TWVzc2FnZSgncmVhZHknKTsKKyAgICAgICAgICAgICAgYzMuY2xvc2UoKTsK
ICAgICAgICAgICAgIH0sIDEpOwogICAgICAgICB9CiAgICAgICB9KTsKIAogICAgIHdvcmtlci5w
b3N0TWVzc2FnZSh7Y2hhbm5lbDogJ3dvcmtlci1jbG9zZSd9KTsKKyAgICB0LmFkZF9jbGVhbnVw
KCgpID0+IHdvcmtlci50ZXJtaW5hdGUoKSk7CiAKICAgfSwgJ0Nsb3NpbmcgYW5kIHJlLW9wZW5p
bmcgYSBjaGFubmVsIHdvcmtzLicpOwogCiBhc3luY190ZXN0KHQgPT4gewogICBmdW5jdGlvbiB3
b3JrZXJDb2RlKCkgewogICAgIGNsb3NlKCk7Ci0gICAgdmFyIGJjID0gbmV3IEJyb2FkY2FzdENo
YW5uZWwoJ3dvcmtlci10ZXN0Jyk7CisgICAgdHJ5IHsKKyAgICAgIHZhciBiYyA9IG5ldyBCcm9h
ZGNhc3RDaGFubmVsKCd3b3JrZXItY3JlYXRlLWFmdGVyLWNsb3NlJyk7CisgICAgfSBjYXRjaCAo
ZSkgeworICAgICAgcG9zdE1lc3NhZ2UoZSk7CisgICAgICByZXR1cm47CisgICAgfQogICAgIHBv
c3RNZXNzYWdlKHRydWUpOwogICB9CiAKLSAgdmFyIHdvcmtlckJsb2IgPSBuZXcgQmxvYihbd29y
a2VyQ29kZS50b1N0cmluZygpICsgIjt3b3JrZXJDb2RlKCk7Il0sIHt0eXBlOiJhcHBsaWNhdGlv
bi9qYXZhc2NyaXB0In0pOworICB2YXIgd29ya2VyQmxvYiA9IG5ldyBCbG9iKAorICAgICAgW3dv
cmtlckNvZGUudG9TdHJpbmcoKSArICc7d29ya2VyQ29kZSgpOyddLAorICAgICAge3R5cGU6ICdh
cHBsaWNhdGlvbi9qYXZhc2NyaXB0J30pOwogCiAgIHZhciB3ID0gbmV3IFdvcmtlcihVUkwuY3Jl
YXRlT2JqZWN0VVJMKHdvcmtlckJsb2IpKTsKLSAgdy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihlKSB7
Ci0gICAgYXNzZXJ0X3RydWUoZS5kYXRhLCAiQnJvYWRjYXN0Q2hhbm5lbCBjcmVhdGVkIG9uIHdv
cmtlciBzaHV0ZG93bi4iKTsKLSAgICB0LmRvbmUoKTsKLSAgfQorICB3Lm9ubWVzc2FnZSA9IHQu
c3RlcF9mdW5jX2RvbmUoZnVuY3Rpb24oZSkgeworICAgIGFzc2VydF9lcXVhbHMoCisgICAgICAg
IGUuZGF0YSwgdHJ1ZSwKKyAgICAgICAgJ0Jyb2FkY2FzdENoYW5uZWwgY3JlYXRpb24gaW4gY2xv
c2VkIHdvcmtlciB0cmlnZ2VyZWQgZXhjZXB0aW9uOiAnICsKKyAgICAgICAgICAgIGUuZGF0YS5t
ZXNzYWdlKTsKKyAgfSk7CisgIHQuYWRkX2NsZWFudXAoKCkgPT4gdy50ZXJtaW5hdGUoKSk7CiB9
LCAnQnJvYWRjYXN0Q2hhbm5lbCBjcmVhdGVkIGFmdGVyIGEgd29ya2VyIHNlbGYuY2xvc2UoKScp
OwogCi1hc3luY190ZXN0KHQgPT4gewotICBmdW5jdGlvbiB3b3JrZXJDb2RlKCkgeworCitmdW5j
dGlvbiBwb3N0TWVzc2FnZUZyb21Xb3JrZXJXb3JrZXJDb2RlKHdvcmtlck5hbWUsIGNoYW5uZWxO
YW1lKSB7CisgIGlmICh3b3JrZXJOYW1lID09PSAnY2xvc2UtYmVmb3JlLWNyZWF0ZS13b3JrZXIn
KSB7CisgICAgY2xvc2UoKTsKKyAgfQorICBsZXQgYmMgPSBuZXcgQnJvYWRjYXN0Q2hhbm5lbChj
aGFubmVsTmFtZSk7CisgIGlmICh3b3JrZXJOYW1lID09PSAnY2xvc2UtYWZ0ZXItY3JlYXRlLXdv
cmtlcicpIHsKICAgICBjbG9zZSgpOwotICAgIHZhciBiYyA9IG5ldyBCcm9hZGNhc3RDaGFubmVs
KCd3b3JrZXItdGVzdC1hZnRlci1jbG9zZScpOwotICAgIGJjLnBvc3RNZXNzYWdlKHRydWUpOwog
ICB9CisgIGJjLnBvc3RNZXNzYWdlKHdvcmtlck5hbWUgKyAnIGRvbmUnKTsKKyAgcG9zdE1lc3Nh
Z2UodHJ1ZSk7Cit9CisKK2Z1bmN0aW9uIGRvUG9zdE1lc3NhZ2VGcm9tV29ya2VyVGVzdCh0LCB3
b3JrZXJOYW1lLCBjaGFubmVsTmFtZSkgeworICB2YXIgYmMgPSBuZXcgQnJvYWRjYXN0Q2hhbm5l
bChjaGFubmVsTmFtZSk7CisgIGJjLm9ubWVzc2FnZSA9IHQuc3RlcF9mdW5jX2RvbmUoZnVuY3Rp
b24oZSkgeworICAgIGFzc2VydF9lcXVhbHMoCisgICAgICAgIGUuZGF0YSwgJ2RvbmUtd29ya2Vy
IGRvbmUnLAorICAgICAgICAnQnJvYWRjYXN0Q2hhbm5lbCBtZXNzYWdlIHNob3VsZCBvbmx5IGJl
IHJlY2VpdmVkIGZyb20gdGhlIHNlY29uZCB3b3JrZXInKTsKKyAgfSk7CisgIHQuYWRkX2NsZWFu
dXAoKCkgPT4gYmMuY2xvc2UoKSk7CisKKyAgdmFyIHRlc3RNZXNzYWdlSGFuZGxlciA9IHQuc3Rl
cF9mdW5jKGZ1bmN0aW9uKGUpIHsKKyAgICBhc3NlcnRfZXF1YWxzKAorICAgICAgICBlLmRhdGEs
IHRydWUsCisgICAgICAgICdXb3JrZXIgc2VudCBwb3N0TWVzc2FnZSBpbmRpY2F0aW5nIGl0IHNl
bnQgYSBCcm9hZGNhc3RDaGFubmVsIG1lc3NhZ2UnKTsKKworICAgIHZhciB3ID0gY3JlYXRlV29y
a2VyKAorICAgICAgICBwb3N0TWVzc2FnZUZyb21Xb3JrZXJXb3JrZXJDb2RlLCAnZG9uZS13b3Jr
ZXInLCBjaGFubmVsTmFtZSk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiB3LnRlcm1pbmF0ZSgp
KTsKKyAgfSk7CisgIGNyZWF0ZVdvcmtlcigKKyAgICAgIHBvc3RNZXNzYWdlRnJvbVdvcmtlcldv
cmtlckNvZGUsIHdvcmtlck5hbWUsIGNoYW5uZWxOYW1lLAorICAgICAgdGVzdE1lc3NhZ2VIYW5k
bGVyKTsKKworICAvLyBUbyBhdm9pZCBjYWxsaW5nIHQuc3RlcF90aW1lb3V0IGhlcmUsIGhhdmUg
dGhlIHdvcmtlciBwb3N0TWVzc2FnZSh0cnVlKQorICAvLyBvbmNlIGl0IGlzIGZpbmlzaGVkIGFu
ZCB0aGVuIHdlJ2xsIGluc3RhbnRpYXRlIGFub3RoZXIgd29ya2VyIHRoYXQKKyAgLy8gcGVyZm9y
bXMgdGhlIHNhbWUgdGVzdCBzdGVwcyBidXQgZG9lc24ndCBjbG9zZS4gQnkgdGhlIHRpbWUgdGhl
CisgIC8vIEJyb2FkY2FzdENoYW5uZWwgbWVzc2FnZSBpbiB0aGF0IHdvcmtlciBnZXRzIHNlbnQg
c3VjY2Vzc2Z1bGx5IGl0IHNob3VsZAorICAvLyBiZSBzYWZlIHRvIGFzc3VtZSB0aGF0IGFueSBC
cm9hZGNhc3RDaGFubmVsIG1lc3NhZ2VzIGZyb20gdGhlIHByZXZpb3VzCisgIC8vIHdvcmtlciB3
b3VsZCBoYXZlIGJlZW4gc2VudCBpZiB0aGV5IHdlcmUgZ29pbmcgdG8gYmUuCit9CiAKLSAgdmFy
IGJjID0gbmV3IEJyb2FkY2FzdENoYW5uZWwoJ3dvcmtlci10ZXN0LWFmdGVyLWNsb3NlJyk7Ci0g
IGJjLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGUpIHsKLSAgICBhc3NlcnRfdHJ1ZShlLmRhdGEsICJC
cm9hZGNhc3RDaGFubmVsIGNyZWF0ZWQgb24gd29ya2VyIHNodXRkb3duLiIpOwotICAgIHQuZG9u
ZSgpOworZnVuY3Rpb24gY3JlYXRlV29ya2VyKHdvcmtlckNvZGUsIHdvcmtlck5hbWUsIGNoYW5u
ZWxOYW1lLCBoYW5kbGVyID0gbnVsbCkgeworICB2YXIgd29ya2VyQ29kZVN0ciA9IHdvcmtlckNv
ZGUudG9TdHJpbmcoKSArCisgICAgICBgOyR7d29ya2VyQ29kZS5uYW1lfSgiJHt3b3JrZXJOYW1l
fSIsICIke2NoYW5uZWxOYW1lfSIpO2A7CisgIHZhciB3b3JrZXJCbG9iID0gbmV3IEJsb2IoW3dv
cmtlckNvZGVTdHJdLCB7dHlwZTogJ2FwcGxpY2F0aW9uL2phdmFzY3JpcHQnfSk7CisgIHZhciB3
ID0gbmV3IFdvcmtlcihVUkwuY3JlYXRlT2JqZWN0VVJMKHdvcmtlckJsb2IpKTsKKyAgaWYgKGhh
bmRsZXIgIT09IG51bGwpIHsKKyAgICB3Lm9ubWVzc2FnZSA9IGhhbmRsZXI7CiAgIH0KKyAgcmV0
dXJuIHc7Cit9CisKK2FzeW5jX3Rlc3QodCA9PiB7CisgIGNvbnN0IHdvcmtlck5hbWUgPSAnY2xv
c2UtYWZ0ZXItY3JlYXRlLXdvcmtlcic7CisgIGNvbnN0IGNoYW5uZWxOYW1lID0gd29ya2VyTmFt
ZSArICctcG9zdG1lc3NhZ2UtZnJvbS13b3JrZXInOworICBkb1Bvc3RNZXNzYWdlRnJvbVdvcmtl
clRlc3QodCwgd29ya2VyTmFtZSwgY2hhbm5lbE5hbWUpOworfSwgJ0Jyb2FkY2FzdENoYW5uZWwg
bWVzc2FnZXMgZnJvbSBjbG9zZWQgd29ya2VyIHRvIHBhcmVudCBzaG91bGQgYmUgaWdub3JlZCAo
QkMgY3JlYXRlZCBiZWZvcmUgY2xvc2luZyknKTsKKworYXN5bmNfdGVzdCh0ID0+IHsKKyAgY29u
c3Qgd29ya2VyTmFtZSA9ICdjbG9zZS1iZWZvcmUtY3JlYXRlLXdvcmtlcic7CisgIGNvbnN0IGNo
YW5uZWxOYW1lID0gd29ya2VyTmFtZSArICctcG9zdG1lc3NhZ2UtZnJvbS13b3JrZXInOworICBk
b1Bvc3RNZXNzYWdlRnJvbVdvcmtlclRlc3QodCwgd29ya2VyTmFtZSwgY2hhbm5lbE5hbWUpOwor
fSwgJ0Jyb2FkY2FzdENoYW5uZWwgbWVzc2FnZXMgZnJvbSBjbG9zZWQgd29ya2VyIHRvIHBhcmVu
dCBzaG91bGQgYmUgaWdub3JlZCAoQkMgY3JlYXRlZCBhZnRlciBjbG9zaW5nKScpOworCisKK2Z1
bmN0aW9uIHBvc3RNZXNzYWdlVG9Xb3JrZXJXb3JrZXJDb2RlKHdvcmtlck5hbWUsIGNoYW5uZWxO
YW1lKSB7CisgIHNlbGYuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsICgpID0+IHsKKyAgICBp
ZiAod29ya2VyTmFtZSA9PT0gJ2Nsb3NlLWJlZm9yZS1jcmVhdGUtd29ya2VyJykgeworICAgICAg
Y2xvc2UoKTsKKyAgICB9CisgICAgdHJ5IHsKKyAgICAgIGxldCBiYzEgPSBuZXcgQnJvYWRjYXN0
Q2hhbm5lbChjaGFubmVsTmFtZSk7CisgICAgICBiYzEub25tZXNzYWdlID0gZSA9PiB7CisgICAg
ICAgIGlmIChlLmRhdGEgPT09ICdyZWFkeScpIHsKKyAgICAgICAgICBwb3N0TWVzc2FnZShlLmRh
dGEpOworICAgICAgICB9IGVsc2UgaWYgKGUuZGF0YSA9PT0gJ3Rlc3QnKSB7CisgICAgICAgICAg
cG9zdE1lc3NhZ2Uod29ya2VyTmFtZSArICcgZG9uZScpOworICAgICAgICB9CisgICAgICB9Owor
ICAgICAgYmMxLm9ubWVzc2FnZWVycm9yID0gKCkgPT4geworICAgICAgICBwb3N0TWVzc2FnZSgn
b25tZXNzYWdlZXJyb3IgY2FsbGVkIGZyb20gd29ya2VyIEJyb2FkY2FzdENoYW5uZWwnKTsKKyAg
ICAgIH07CisgICAgICBpZiAod29ya2VyTmFtZSA9PT0gJ2Nsb3NlLWFmdGVyLWNyZWF0ZS13b3Jr
ZXInKSB7CisgICAgICAgIGNsb3NlKCk7CisgICAgICB9CisgICAgfSBjYXRjaCAoZSkgeworICAg
ICAgcG9zdE1lc3NhZ2UoZSk7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHdvcmtl
ck5hbWUgPT09ICdkb25lLXdvcmtlcicpIHsKKyAgICAgIC8vIEZvciBzb21lIGltcGxlbWVudGF0
aW9ucyB0aGVyZSBtYXkgYmUgYSByYWNlIGNvbmRpdGlvbiBiZXR3ZWVuIHdoZW4KKyAgICAgIC8v
IHRoZSBCcm9hZGNhc3RDaGFubmVsIGluc3RhbmNlIGFib3ZlIGlzIGNyZWF0ZWQgLyByZWFkeSB0
byByZWNlaXZlCisgICAgICAvLyBtZXNzYWdlcyBhbmQgd2hlbiB0aGUgcGFyZW50IGNhbGxzIHBv
c3RNZXNzYWdlIG9uIGl0J3MKKyAgICAgIC8vIEJyb2FkY2FzdENoYW5uZWwgaW5zdGFuY2UuIFRv
IGF2b2lkIHRoaXMsIGNvbmZpcm0gdGhhdCBvdXIgaW5zdGFuY2UKKyAgICAgIC8vIGNhbiByZWNl
aXZlIGEgbWVzc2FnZSBiZWZvcmUgaW5kaWNhdGluZyB0byB0aGUgb3RoZXIgdGhyZWFkIHRoYXQg
d2UKKyAgICAgIC8vIGFyZSByZWFkeS4gRm9yIG1vcmUgZGV0YWlscywgc2VlOgorICAgICAgLy8g
aHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9odG1sL2lzc3Vlcy83MjY3CisgICAgICBsZXQgYmMy
ID0gbmV3IEJyb2FkY2FzdENoYW5uZWwoY2hhbm5lbE5hbWUpOworICAgICAgYmMyLnBvc3RNZXNz
YWdlKCdyZWFkeScpOworICAgICAgYmMyLmNsb3NlKCk7CisgICAgfSBlbHNlIHsKKyAgICAgIC8v
IFNpbmNlIHRoZSB3b3JrZXIgaGFzIGNsb3NlZCwgaXQncyBub3QgZXhwZWN0ZWQgdGhhdCB0aGUK
KyAgICAgIC8vIEJyb2FkY2FzdENoYW5uZWwgd2lsbCByZWNlaXZlIG1lc3NhZ2VzICh0aGVyZSdz
IGEgc2VwYXJhdGUgdGVzdCBmb3IKKyAgICAgIC8vIHRoYXQpLCBzbyBqdXN0IGluZGljYXRlIGRp
cmVjdGx5IHRoYXQgaXQncyByZWFkeSB0byB0ZXN0IHJlY2VpdmluZworICAgICAgLy8gYSBtZXNz
YWdlIGZyb20gdGhlIHBhcmVudCBkaXNwaXRlIHRoZSBwb3NzaWJpbGl0eSBvZiBhIHJhY2UgY29u
ZGl0aW9uLgorICAgICAgcG9zdE1lc3NhZ2UoJ3JlYWR5Jyk7CisgICAgfQorICB9KTsKKyAgc2Vs
Zi5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlZXJyb3InLCAoKSA9PiB7CisgICAgcG9zdE1lc3Nh
Z2UoJ29ubWVzc2FnZWVycm9yIGNhbGxlZCBmcm9tIHdvcmtlcicpOworICB9KTsKK30KIAotICB2
YXIgd29ya2VyQmxvYiA9IG5ldyBCbG9iKFt3b3JrZXJDb2RlLnRvU3RyaW5nKCkgKyAiO3dvcmtl
ckNvZGUoKTsiXSwge3R5cGU6ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQifSk7Ci0gIG5ldyBXb3Jr
ZXIoVVJMLmNyZWF0ZU9iamVjdFVSTCh3b3JrZXJCbG9iKSk7Ci19LCAnQnJvYWRjYXN0Q2hhbm5l
bCB1c2VkIGFmdGVyIGEgd29ya2VyIHNlbGYuY2xvc2UoKScpOworZnVuY3Rpb24gZG9Qb3N0TWVz
c2FnZVRvV29ya2VyVGVzdCh0LCB3b3JrZXJOYW1lLCBjaGFubmVsTmFtZSkgeworICB2YXIgYmMg
PSBuZXcgQnJvYWRjYXN0Q2hhbm5lbChjaGFubmVsTmFtZSk7CisgIHQuYWRkX2NsZWFudXAoKCkg
PT4gYmMuY2xvc2UoKSk7CisKKyAgdmFyIGRvbmVNZXNzYWdlSGFuZGxlciA9IHQuc3RlcF9mdW5j
KGZ1bmN0aW9uKGUpIHsKKyAgICBpZiAoZS5kYXRhID09PSAncmVhZHknKSB7CisgICAgICBiYy5w
b3N0TWVzc2FnZSgndGVzdCcpOworICAgIH0gZWxzZSBpZiAoZS5kYXRhID09PSAnZG9uZS13b3Jr
ZXIgZG9uZScpIHsKKyAgICAgIHQuZG9uZSgpOworICAgIH0gZWxzZSB7CisgICAgICBhc3NlcnRf
dW5yZWFjaGVkKAorICAgICAgICAgICdCcm9hZGNhc3RDaGFubmVsLnBvc3RNZXNzYWdlIHRyaWdn
ZXJlZCBleGNlcHRpb24gd2l0aGluIHNlY29uZCB3b3JrZXI6ICcgKworICAgICAgICAgIGUuZGF0
YS5tZXNzYWdlKTsKKyAgICB9CisgIH0pOworICB2YXIgdGVzdE1lc3NhZ2VIYW5kbGVyID0gdC5z
dGVwX2Z1bmMoZnVuY3Rpb24oZSkgeworICAgIGFzc2VydF9lcXVhbHMoCisgICAgICAgIGUuZGF0
YSwgJ3JlYWR5JywKKyAgICAgICAgJ1dvcmtlciBzZW50IHBvc3RNZXNzYWdlIGluZGljYXRpbmcg
aXRzIEJyb2FkY2FzdENoYW5uZWwgaW5zdGFuY2UgaXMgcmVhZHknKTsKKyAgICBiYy5wb3N0TWVz
c2FnZSgndGVzdCcpOworCisgICAgdmFyIGRvbmVXb3JrZXIgPSBjcmVhdGVXb3JrZXIoCisgICAg
ICAgIHBvc3RNZXNzYWdlVG9Xb3JrZXJXb3JrZXJDb2RlLCAnZG9uZS13b3JrZXInLCBjaGFubmVs
TmFtZSwKKyAgICAgICAgZG9uZU1lc3NhZ2VIYW5kbGVyKTsKKyAgICB0LmFkZF9jbGVhbnVwKCgp
ID0+IHsKKyAgICAgIGRvbmVXb3JrZXIudGVybWluYXRlKCk7CisgICAgfSk7CisgICAgZG9uZVdv
cmtlci5wb3N0TWVzc2FnZSgnc3RhcnQnKTsKKyAgfSk7CisgIHZhciB0ZXN0V29ya2VyID0gY3Jl
YXRlV29ya2VyKAorICAgICAgcG9zdE1lc3NhZ2VUb1dvcmtlcldvcmtlckNvZGUsIHdvcmtlck5h
bWUsIGNoYW5uZWxOYW1lLAorICAgICAgdGVzdE1lc3NhZ2VIYW5kbGVyKTsKKyAgdGVzdFdvcmtl
ci5wb3N0TWVzc2FnZSgnc3RhcnQnKTsKK30KKworYXN5bmNfdGVzdCh0ID0+IHsKKyAgY29uc3Qg
d29ya2VyTmFtZSA9ICdjbG9zZS1hZnRlci1jcmVhdGUtd29ya2VyJzsKKyAgY29uc3QgY2hhbm5l
bE5hbWUgPSB3b3JrZXJOYW1lICsgJy1wb3N0bWVzc2FnZS10by13b3JrZXInOworICBkb1Bvc3RN
ZXNzYWdlVG9Xb3JrZXJUZXN0KHQsIHdvcmtlck5hbWUsIGNoYW5uZWxOYW1lKTsKK30sICdCcm9h
ZGNhc3RDaGFubmVsIG1lc3NhZ2VzIGZyb20gcGFyZW50IHRvIGNsb3NlZCB3b3JrZXIgc2hvdWxk
IGJlIGlnbm9yZWQgKEJDIGNyZWF0ZWQgYmVmb3JlIGNsb3NpbmcpJyk7CisKK2FzeW5jX3Rlc3Qo
dCA9PiB7CisgIGNvbnN0IHdvcmtlck5hbWUgPSAnY2xvc2UtYmVmb3JlLWNyZWF0ZS13b3JrZXIn
OworICBjb25zdCBjaGFubmVsTmFtZSA9IHdvcmtlck5hbWUgKyAnLXBvc3RtZXNzYWdlLXRvLXdv
cmtlcic7CisgIGRvUG9zdE1lc3NhZ2VUb1dvcmtlclRlc3QodCwgd29ya2VyTmFtZSwgY2hhbm5l
bE5hbWUpOworfSwgJ0Jyb2FkY2FzdENoYW5uZWwgbWVzc2FnZXMgZnJvbSBwYXJlbnQgdG8gY2xv
c2VkIHdvcmtlciBzaG91bGQgYmUgaWdub3JlZCAoQkMgY3JlYXRlZCBhZnRlciBjbG9zaW5nKScp
OworCisKK2Z1bmN0aW9uIHBvc3RNZXNzYWdlV2l0aGluV29ya2VyV29ya2VyQ29kZSh3b3JrZXJO
YW1lLCBjaGFubmVsTmFtZSkgeworICBpZiAod29ya2VyTmFtZSA9PT0gJ2Nsb3NlLWJlZm9yZS1j
cmVhdGUtd29ya2VyJykgeworICAgIGNsb3NlKCk7CisgIH0KKyAgdHJ5IHsKKyAgICBsZXQgYmMx
ID0gbmV3IEJyb2FkY2FzdENoYW5uZWwoY2hhbm5lbE5hbWUpOworICAgIGxldCBiYzIgPSBuZXcg
QnJvYWRjYXN0Q2hhbm5lbChjaGFubmVsTmFtZSk7CisgICAgYmMxLm9ubWVzc2FnZSA9IGUgPT4g
eworICAgICAgcG9zdE1lc3NhZ2Uod29ya2VyTmFtZSArICcgZG9uZScpCisgICAgfTsKKyAgICBp
ZiAod29ya2VyTmFtZSA9PT0gJ2Nsb3NlLWFmdGVyLWNyZWF0ZS13b3JrZXInKSB7CisgICAgICBj
bG9zZSgpOworICAgIH0KKyAgICBiYzIucG9zdE1lc3NhZ2UodHJ1ZSk7CisgICAgcG9zdE1lc3Nh
Z2UodHJ1ZSk7CisgIH0gY2F0Y2ggKGUpIHsKKyAgICBwb3N0TWVzc2FnZShlKTsKKyAgfQorfQor
CitmdW5jdGlvbiBkb1Bvc3RNZXNzYWdlV2l0aGluV29ya2VyVGVzdCh0LCB3b3JrZXJOYW1lLCBj
aGFubmVsTmFtZSkgeworICB2YXIgZG9uZU1lc3NhZ2VIYW5kbGVyID0gdC5zdGVwX2Z1bmMoZnVu
Y3Rpb24oZSkgeworICAgIGlmIChlLmRhdGEgPT09IHRydWUpIHsKKyAgICAgIC8vIERvbmUgd29y
a2VyIGhhcyBmaW5pc2hlZCAtIG5vIGFjdGlvbiBuZWVkZWQKKyAgICB9IGVsc2UgaWYgKGUuZGF0
YSA9PT0gJ2RvbmUtd29ya2VyIGRvbmUnKSB7CisgICAgICB0LmRvbmUoKTsKKyAgICB9IGVsc2Ug
eworICAgICAgYXNzZXJ0X3VucmVhY2hlZCgKKyAgICAgICAgICAnQnJvYWRjYXN0Q2hhbm5lbC5w
b3N0TWVzc2FnZSB0cmlnZ2VyZWQgZXhjZXB0aW9uIHdpdGhpbiBzZWNvbmQgd29ya2VyOiAnICsK
KyAgICAgICAgICBlLmRhdGEubWVzc2FnZSk7CisgICAgfQorICB9KTsKKyAgdmFyIHRlc3RNZXNz
YWdlSGFuZGxlciA9IHQuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKKyAgICBhc3NlcnRfZXF1YWxz
KAorICAgICAgICBlLmRhdGEsIHRydWUsCisgICAgICAgICdXb3JrZXIgaW5kaWNhdGVkIHRoYXQg
dGhlIHRlc3QgcHJvY2VkdXJlcyB3ZXJlIGV4ZWN1dGVkIHN1Y2Nlc3NmdWxseScpOworCisgICAg
dmFyIHcgPSBjcmVhdGVXb3JrZXIoCisgICAgICAgIHBvc3RNZXNzYWdlV2l0aGluV29ya2VyV29y
a2VyQ29kZSwgJ2RvbmUtd29ya2VyJywgY2hhbm5lbE5hbWUsCisgICAgICAgIGRvbmVNZXNzYWdl
SGFuZGxlcik7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiB3LnRlcm1pbmF0ZSgpKTsKKyAgfSk7
CisgIGNyZWF0ZVdvcmtlcigKKyAgICAgIHBvc3RNZXNzYWdlV2l0aGluV29ya2VyV29ya2VyQ29k
ZSwgd29ya2VyTmFtZSwgY2hhbm5lbE5hbWUsCisgICAgICB0ZXN0TWVzc2FnZUhhbmRsZXIpOwor
fQorCithc3luY190ZXN0KHQgPT4geworICBjb25zdCB3b3JrZXJOYW1lID0gJ2Nsb3NlLWFmdGVy
LWNyZWF0ZS13b3JrZXInOworICBjb25zdCBjaGFubmVsTmFtZSA9IHdvcmtlck5hbWUgKyAnLXBv
c3RtZXNzYWdlLXdpdGhpbi13b3JrZXInOworICBkb1Bvc3RNZXNzYWdlV2l0aGluV29ya2VyVGVz
dCh0LCB3b3JrZXJOYW1lLCBjaGFubmVsTmFtZSk7Cit9LCAnQnJvYWRjYXN0Q2hhbm5lbCBtZXNz
YWdlcyB3aXRoaW4gY2xvc2VkIHdvcmtlciBzaG91bGQgYmUgaWdub3JlZCAoQkNzIGNyZWF0ZWQg
YmVmb3JlIGNsb3NpbmcpJyk7CisKK2FzeW5jX3Rlc3QodCA9PiB7CisgIGNvbnN0IHdvcmtlck5h
bWUgPSAnY2xvc2UtYmVmb3JlLWNyZWF0ZS13b3JrZXInOworICBjb25zdCBjaGFubmVsTmFtZSA9
IHdvcmtlck5hbWUgKyAnLXBvc3RtZXNzYWdlLXdpdGhpbi13b3JrZXInOworICBkb1Bvc3RNZXNz
YWdlV2l0aGluV29ya2VyVGVzdCh0LCB3b3JrZXJOYW1lLCBjaGFubmVsTmFtZSk7Cit9LCAnQnJv
YWRjYXN0Q2hhbm5lbCBtZXNzYWdlcyB3aXRoaW4gY2xvc2VkIHdvcmtlciBzaG91bGQgYmUgaWdu
b3JlZCAoQkNzIGNyZWF0ZWQgYWZ0ZXIgY2xvc2luZyknKTsKIAogPC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYjI0YmMyYjAx
OGVhNjliNzZhYjkwZDYxMjYwZTEyMzljYWU3NTFlNy4uMGRiOWM2MzMzMjE0MzUxYTI4NTdjNzVk
OWY3YjE1ZGNiZGU0YmQ2ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
MS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVz
dEV4cGVjdGF0aW9ucwpAQCAtMzg3LDYgKzM4Nyw3IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2ViLWxvY2tzL3Jlc291cmNlLW5hbWVzLnRlbnRhdGl2ZS5odHRwcy5hbnkuc2Vy
CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYi1sb2Nrcy9zZWN1cmUtY29udGV4
dC50ZW50YXRpdmUuaHR0cHMuYW55LnNlcnZpY2V3b3JrZXIuaHRtbCBbIFNraXAgXQogaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWItbG9ja3Mvc2lnbmFsLnRlbnRhdGl2ZS5odHRw
cy5hbnkuc2VydmljZXdvcmtlci5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYi1sb2Nrcy9zdGVhbC50ZW50YXRpdmUuaHR0cHMuYW55LnNlcnZpY2V3b3Jr
ZXIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNz
YWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9zZXJ2aWNlLXdvcmtlci5odHRwcy5odG1sIFsgU2tpcCBd
CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtsZXRzL2FuaW1hdGlvbi13b3Jr
bGV0LXNlcnZpY2Utd29ya2VyLWludGVyY2VwdGlvbi5odHRwcy5odG1sIFsgU2tpcCBdCiBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtsZXRzL2F1ZGlvLXdvcmtsZXQtc2Vydmlj
ZS13b3JrZXItaW50ZXJjZXB0aW9uLmh0dHBzLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd29ya2xldHMvbGF5b3V0LXdvcmtsZXQtc2VydmljZS13b3JrZXIt
aW50ZXJjZXB0aW9uLmh0dHBzLmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2lu
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOTMxMjljNTVhOGIxNThmYjc2MmU5Nzg3OGMwZGI4YmQ5
ODA0ZDBmYS4uMTZkMjcwZjhlZmJmYWI4ZTllOTdhMjc0ZDI0MTZkMDk0YjNiNzk0ZSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTM3NTYsNiArMzc1Niw3
IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViLWxvY2tzL3Jlc291cmNlLW5h
bWVzLnRlbnRhdGl2ZS5odHRwcy5hbnkuc2VyCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYi1sb2Nrcy9zZWN1cmUtY29udGV4dC50ZW50YXRpdmUuaHR0cHMuYW55LnNlcnZpY2V3
b3JrZXIuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWIt
bG9ja3Mvc2lnbmFsLnRlbnRhdGl2ZS5odHRwcy5hbnkuc2VydmljZXdvcmtlci5odG1sIFsgU2tp
cCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYi1sb2Nrcy9zdGVhbC50ZW50
YXRpdmUuaHR0cHMuYW55LnNlcnZpY2V3b3JrZXIuaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9zZXJ2aWNl
LXdvcmtlci5odHRwcy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtsZXRzL2FuaW1hdGlvbi13b3JrbGV0LXNlcnZpY2Utd29ya2VyLWludGVyY2VwdGlv
bi5odHRwcy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dv
cmtsZXRzL2F1ZGlvLXdvcmtsZXQtc2VydmljZS13b3JrZXItaW50ZXJjZXB0aW9uLmh0dHBzLmh0
bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2xldHMvbGF5
b3V0LXdvcmtsZXQtc2VydmljZS13b3JrZXItaW50ZXJjZXB0aW9uLmh0dHBzLmh0bWwgWyBTa2lw
IF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>