<?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>211342</bug_id>
          
          <creation_ts>2020-05-02 12:30:21 -0700</creation_ts>
          <short_desc>Make it possible to test overlay scrollbar interactions</short_desc>
          <delta_ts>2020-05-08 16:06:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1648259</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-05-02 12:30:21 -0700</bug_when>
    <thetext>Make it possible to test overlay scrollbar interactions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648262</commentid>
    <comment_count>1</comment_count>
      <attachid>398292</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-05-02 12:33:17 -0700</bug_when>
    <thetext>Created attachment 398292
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648278</commentid>
    <comment_count>2</comment_count>
      <attachid>398292</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-05-02 13:39:54 -0700</bug_when>
    <thetext>Comment on attachment 398292
Patch

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

Patch looks good. Better patch would use js-test.js instead of js-test-{pre, post} in tests.

&gt; Source/WebCore/platform/mac/ScrollAnimatorMac.mm:893
&gt; +        result.append(&quot;,expanded&quot;_s);

OK as-is. No change needed. Optimal solution would have space after &apos;,&apos; to make results human pretty.

&gt; Source/WebCore/testing/Internals.cpp:2756
&gt; +ExceptionOr&lt;ScrollableArea*&gt; Internals::scrollableAreaForNode(RefPtr&lt;Node&gt;&amp; node) const

This is ok-is. No change needed. The current signature is optimal, but need to amend to take out a Ref&lt;Node&gt; INSIDE the function before the updateLayout. Alternative optimal solution is take  param by CONST lvalue reference + use a local for the nullptr case.

&gt; Source/WebCore/testing/Internals.cpp:2767
&gt;      if (is&lt;Document&gt;(*node)) {

OK as-is. No change needed. If do ^^^ then optimal solution omits the * here.

&gt; Source/WebCore/testing/Internals.cpp:2773
&gt;      } else if (is&lt;Element&gt;(*node)) {

Ditto.

&gt; LayoutTests/fast/scrolling/mac/scrollbars/overlay-scrollbar-hovered.html:28
&gt; +            debug(&apos;Hovering vertical scrollbar should show expanded scrollbar&apos;);

OK as-is. No change needed. Slightly better solution is to prefix string with &lt;br&gt; because results will be prettier to read. Same thing can be down throughout this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648279</commentid>
    <comment_count>3</comment_count>
      <attachid>398296</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-05-02 13:40:01 -0700</bug_when>
    <thetext>Created attachment 398296
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648281</commentid>
    <comment_count>4</comment_count>
      <attachid>398296</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-05-02 14:20:03 -0700</bug_when>
    <thetext>Comment on attachment 398296
Patch

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

&gt; Source/WebCore/testing/Internals.cpp:2756
&gt; +ExceptionOr&lt;ScrollableArea*&gt; Internals::scrollableAreaForNode(RefPtr&lt;Node&gt;&amp; node) const

OK as-is. No change needed. This change makes node an out-argument. Is this OK? Optimal solutions in previous comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648289</commentid>
    <comment_count>5</comment_count>
      <attachid>398297</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-05-02 16:20:53 -0700</bug_when>
    <thetext>Created attachment 398297
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648302</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-02 20:30:01 -0700</bug_when>
    <thetext>Dan Bates found in /Volumes/Data/worker/Commit-Queue/build/LayoutTests/ChangeLog does not appear to be a valid reviewer according to contributors.json.
/Volumes/Data/worker/Commit-Queue/build/LayoutTests/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648304</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-05-02 20:49:40 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/261056/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648305</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-02 20:50:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/62782371&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650819</commentid>
    <comment_count>9</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-05-08 16:06:45 -0700</bug_when>
    <thetext>*** Bug 199323 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398292</attachid>
            <date>2020-05-02 12:33:17 -0700</date>
            <delta_ts>2020-05-02 13:39:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211342-20200502123316.patch</filename>
            <type>text/plain</type>
            <size>30459</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTZhNmIwYzBiYWQ5ODcy
NmY5N2E3ZDg1ODQ5Y2NlNjI1MWE3N2JjOS4uZTQ3ZGEzNzMxMTlmMzE0ZDczZjQ0MjlmODA5YzYx
YmIyNDQ2YTYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIwLTA1LTAyICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgaXQgcG9z
c2libGUgdG8gdGVzdCBvdmVybGF5IHNjcm9sbGJhciBpbnRlcmFjdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTM0MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbnRlcm5hbHMuaG9yaXpv
bnRhbFNjcm9sbGJhclN0YXRlKCkgYW5kIGludGVybmFscy52ZXJ0aWNhbFNjcm9sbGJhclN0YXRl
KCkgYW5kIGhvb2sgdGhlbQorICAgICAgICB1cCB2aWEgU2Nyb2xsYWJsZUFyZWEgdG8gU2Nyb2xs
QW5pbWF0b3JNYWMuIFRoZXkgZHVtcCBzdGF0ZSBiYXNlZCBvbiB0aGUgTlNTY3JvbGxlckltcCBz
dGF0ZS4KKworICAgICAgICBNYWtlIGludGVybmFscy5zZXRVc2VzT3ZlcmxheVNjcm9sbGJhcnMo
dHJ1ZSkgYWN0dWFsbHkgdHJpZ2dlciByZWFsIG92ZXJsYXkgc2Nyb2xsYmFycyBieSBub3RpZnlp
bmcKKyAgICAgICAgdGhlIFNjcm9sbGJhclRoZW1lIGFib3V0IHRoZSBzY3JvbGxiYXIgc3R5bGUg
Y2hhbmdlLgorCisgICAgICAgIFRlc3RzOiBmYXN0L3Njcm9sbGluZy9tYWMvc2Nyb2xsYmFycy9v
dmVybGF5LXNjcm9sbGJhci1ob3ZlcmVkLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xs
aW5nL21hYy9zY3JvbGxiYXJzL292ZXJsYXktc2Nyb2xsYmFyLXJldmVhbC5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L3Njcm9sbGluZy9tYWMvc2Nyb2xsYmFycy9vdmVybGF5LXNjcm9sbGJhci1z
dGF0ZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L3Njcm9sbGluZy9tYWMvc2Nyb2xsYmFycy9z
Y3JvbGxiYXItc3RhdGUuaHRtbAorCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3Iu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpTY3JvbGxBbmltYXRvcjo6aG9y
aXpvbnRhbFNjcm9sbGJhclN0YXRlRm9yVGVzdGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRvcjo6U2Nyb2xsQW5pbWF0b3I6OnZlcnRpY2FsU2Nyb2xsYmFyU3RhdGVG
b3JUZXN0aW5nIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6aG9yaXpvbnRhbFNjcm9sbGJhclN0
YXRlRm9yVGVzdGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6
dmVydGljYWxTY3JvbGxiYXJTdGF0ZUZvclRlc3RpbmcgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL1Njcm9sbGFibGVBcmVhLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL05TU2Nyb2xsZXJJ
bXBEZXRhaWxzLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLmg6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6c2Nyb2xsYmFyU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0
b3JNYWM6Omhvcml6b250YWxTY3JvbGxiYXJTdGF0ZUZvclRlc3RpbmcgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OnZlcnRpY2FsU2Nyb2xsYmFyU3RhdGVGb3JU
ZXN0aW5nIGNvbnN0KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjogY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzY3JvbGxi
YXJPdmVybGF5U3R5bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzY3Jv
bGxiYXJVc2luZ0RhcmtBcHBlYXJhbmNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVy
bmFsczo6aG9yaXpvbnRhbFNjcm9sbGJhclN0YXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkludGVybmFsczo6dmVydGljYWxTY3JvbGxiYXJTdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnRlcm5hbHM6OnNldFVzZXNPdmVybGF5U2Nyb2xsYmFycyk6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIw
MjAtMDUtMDEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWRkIGEgbG9nIGNoYW5uZWwgZm9yIE92ZXJsYXlTY3JvbGxiYXJzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAppbmRleCA5YjdjMDliNjkwODFlYWFmMzcxM2E3OWEy
NGQ5NWIwNDk4MjI3MjA5Li42NjExODdhNzFjMDg5YzRhOGFjMGY3MzZkZmYzZjFhM2ZhMjE3NDIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKQEAgLTEyMyw2ICsx
MjMsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzUnViYmVyQmFuZEluUHJvZ3Jlc3Mo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbFNuYXBJ
blByb2dyZXNzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIHZpcnR1YWwgU3RyaW5n
IGhvcml6b250YWxTY3JvbGxiYXJTdGF0ZUZvclRlc3RpbmcoKSBjb25zdCB7IHJldHVybiBlbXB0
eVN0cmluZygpOyB9CisgICAgdmlydHVhbCBTdHJpbmcgdmVydGljYWxTY3JvbGxiYXJTdGF0ZUZv
clRlc3RpbmcoKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CisKICAgICB2b2lkIHNl
dFdoZWVsRXZlbnRUZXN0TW9uaXRvcihSZWZQdHI8V2hlZWxFdmVudFRlc3RNb25pdG9yPiYmIHRl
c3RNb25pdG9yKSB7IG1fd2hlZWxFdmVudFRlc3RNb25pdG9yID0gdGVzdE1vbml0b3I7IH0KIAog
I2lmIChFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKSB8fCBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpKSAm
JiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5j
cHAKaW5kZXggY2RhZDM2MDFkMzlhNTM3Y2ZhYzYwZWU3NTVlMTgzMmIxYWFkYzRkNS4uMTNhNGJk
OTBjOTk1ZGQxMzJlZTBhNTY2YjIxMTAzYTM3NmMwODQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcApAQCAtNDM4LDYgKzQzOCwxNiBAQCBib29sIFNjcm9s
bGFibGVBcmVhOjpoYXNMYXllckZvclNjcm9sbENvcm5lcigpIGNvbnN0CiAgICAgcmV0dXJuIGxh
eWVyRm9yU2Nyb2xsQ29ybmVyKCk7CiB9CiAKK1N0cmluZyBTY3JvbGxhYmxlQXJlYTo6aG9yaXpv
bnRhbFNjcm9sbGJhclN0YXRlRm9yVGVzdGluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHNjcm9s
bEFuaW1hdG9yKCkuaG9yaXpvbnRhbFNjcm9sbGJhclN0YXRlRm9yVGVzdGluZygpOworfQorCitT
dHJpbmcgU2Nyb2xsYWJsZUFyZWE6OnZlcnRpY2FsU2Nyb2xsYmFyU3RhdGVGb3JUZXN0aW5nKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gc2Nyb2xsQW5pbWF0b3IoKS52ZXJ0aWNhbFNjcm9sbGJhclN0
YXRlRm9yVGVzdGluZygpOworfQorCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKIFNjcm9s
bFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0PiYgU2Nyb2xsYWJsZUFyZWE6OmVuc3VyZVNuYXBP
ZmZzZXRzSW5mbygpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxhYmxlQXJlYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaApp
bmRleCBmMDA0ZDNiYjc1YjJjYzc4Y2RkYWVhZThjZTc2ZjZlYzY4NDVlMDY1Li44OTJkOGRlNmQz
NDVkOTFmZGE4MGNmYTUzMzRjNGFhNjhiNzU3ZGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGFibGVBcmVhLmgKQEAgLTEzNiw2ICsxMzYsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIGhvcml6b250YWxTY3JvbGxiYXJIaWRkZW5CeVN0eWxlKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgdmVydGljYWxTY3JvbGxiYXJIaWRkZW5CeVN0eWxl
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBo
b3Jpem9udGFsU2Nyb2xsYmFyU3RhdGVGb3JUZXN0aW5nKCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIHZlcnRpY2FsU2Nyb2xsYmFyU3RhdGVGb3JUZXN0aW5nKCkgY29uc3Q7CisK
ICAgICBib29sIGluTGl2ZVJlc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5MaXZlUmVzaXplOyB9
CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHdpbGxTdGFydExpdmVSZXNpemUoKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgd2lsbEVuZExpdmVSZXNpemUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9OU1Njcm9sbGVySW1wRGV0YWls
cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL05TU2Nyb2xsZXJJbXBEZXRhaWxzLmgK
aW5kZXggMWFkM2UzMTFlYzI3OWEwMjA1YTJkMzA1N2MxMDJkYjIyZjQ1NThkMC4uYzE0ZTE4Mzg2
ODU0NTEyZGQ3MWYxYmZlZTYzZWE2ZWRhZWJlZmYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL05TU2Nyb2xsZXJJbXBEZXRhaWxzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL05TU2Nyb2xsZXJJbXBEZXRhaWxzLmgKQEAgLTI5LDYgKzI5LDggQEAK
IAogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCitlbnVtIE5TU2Nyb2xsZXJTdHlsZSA6IGxv
bmc7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2Nyb2xs
ZXJTdHlsZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xs
QW5pbWF0b3JNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRv
ck1hYy5oCmluZGV4IDg3OTVjZjgxNWE0ZGJmNjZlNGU4ZmY0NTlkODVjZDM1YjQ2NjUzNWIuLmVm
NmVlYTA1MmE1NWVhZWNkMWJhN2NhYTViM2EzYTYwNDZjYjlmYTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5oCkBAIC0xMzgsNiArMTM4LDkg
QEAgcHJpdmF0ZToKICAgICBib29sIGlzUnViYmVyQmFuZEluUHJvZ3Jlc3MoKSBjb25zdCBvdmVy
cmlkZTsKICAgICBib29sIGlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoKSBjb25zdCBvdmVycmlkZTsK
IAorICAgIFN0cmluZyBob3Jpem9udGFsU2Nyb2xsYmFyU3RhdGVGb3JUZXN0aW5nKCkgY29uc3Qg
ZmluYWw7CisgICAgU3RyaW5nIHZlcnRpY2FsU2Nyb2xsYmFyU3RhdGVGb3JUZXN0aW5nKCkgY29u
c3QgZmluYWw7CisKICNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCiAgICAgLy8vIFNjcm9sbENv
bnRyb2xsZXJDbGllbnQgbWVtYmVyIGZ1bmN0aW9ucy4KICAgICBJbnRTaXplIHN0cmV0Y2hBbW91
bnQoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9TY3JvbGxBbmltYXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
Y3JvbGxBbmltYXRvck1hYy5tbQppbmRleCAzNWQ5NzcwMWVjNDIxNzk0NWE3Mjc5ODBkMmI4MmVj
ZjEzYjlkMzU0Li43ZjYxNzRkZjM3MDc0MzkyMjZlYTYxNzc4NTQwYzNjYWM4ZjAyM2FkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCkBA
IC04NzQsNiArODc0LDQzIEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OmlzU2Nyb2xsU25hcElu
UHJvZ3Jlc3MoKSBjb25zdAogI2VuZGlmCiB9CiAKK3N0YXRpYyBTdHJpbmcgc2Nyb2xsYmFyU3Rh
dGUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit7CisgICAgaWYgKCFzY3JvbGxiYXIpCisgICAgICAg
IHJldHVybiAibm9uZSJfczsKKworICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OworICAgIHJlc3Vs
dC5hcHBlbmQoc2Nyb2xsYmFyLT5lbmFibGVkKCkgPyAiZW5hYmxlZCJfcyA6ICJkaXNhYmxlZCJf
cyk7CisKKyAgICBpZiAoIXNjcm9sbGJhci0+aXNPdmVybGF5U2Nyb2xsYmFyKCkpCisgICAgICAg
IHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKKworICAgIE5TU2Nyb2xsZXJJbXAgKnNjcm9sbGVy
SW1wID0gc2Nyb2xsZXJJbXBGb3JTY3JvbGxiYXIoKnNjcm9sbGJhcik7CisgICAgaWYgKCFzY3Jv
bGxlckltcCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworCisgICAgaWYgKHNj
cm9sbGVySW1wLmV4cGFuZGVkKQorICAgICAgICByZXN1bHQuYXBwZW5kKCIsZXhwYW5kZWQiX3Mp
OworCisgICAgaWYgKHNjcm9sbGVySW1wLnRyYWNrQWxwaGEgPiAwKQorICAgICAgICByZXN1bHQu
YXBwZW5kKCIsdmlzaWJsZV90cmFjayJfcyk7CisKKyAgICBpZiAoc2Nyb2xsZXJJbXAua25vYkFs
cGhhID4gMCkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiLHZpc2libGVfdGh1bWIiX3MpOworCisg
ICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworfQorCitTdHJpbmcgU2Nyb2xsQW5pbWF0b3JN
YWM6Omhvcml6b250YWxTY3JvbGxiYXJTdGF0ZUZvclRlc3RpbmcoKSBjb25zdAoreworICAgIHJl
dHVybiBzY3JvbGxiYXJTdGF0ZShtX3Njcm9sbGFibGVBcmVhLmhvcml6b250YWxTY3JvbGxiYXIo
KSk7Cit9CisKK1N0cmluZyBTY3JvbGxBbmltYXRvck1hYzo6dmVydGljYWxTY3JvbGxiYXJTdGF0
ZUZvclRlc3RpbmcoKSBjb25zdAoreworICAgIHJldHVybiBzY3JvbGxiYXJTdGF0ZShtX3Njcm9s
bGFibGVBcmVhLnZlcnRpY2FsU2Nyb2xsYmFyKCkpOworfQorCiB2b2lkIFNjcm9sbEFuaW1hdG9y
TWFjOjppbW1lZGlhdGVTY3JvbGxUb1Bvc2l0aW9uRm9yU2Nyb2xsQW5pbWF0aW9uKGNvbnN0IEZs
b2F0UG9pbnQmIG5ld1Bvc2l0aW9uKQogewogICAgIEFTU0VSVChtX3Njcm9sbEFuaW1hdGlvbkhl
bHBlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggZjExNjRhZTljMWFj
M2JmMDE2ODk2YjlmNGRkZWExZmMzNGY2NzkwYS4uOTQ2MThkMWVlZDBkYmY0YmY3NjdlZDBmNTM4
ZGI5OTIzNjIxZWY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMzIy
LDYgKzMyMiw4IEBACiAKICNpZiBQTEFURk9STShNQUMpCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xNYW5hZ2VyLmgiCisjaW5jbHVkZSAiTlNTY3JvbGxlckltcERldGFpbHMuaCIK
KyNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZU1hYy5oIgogI2VuZGlmCiAKICNpZiBQTEFURk9STShD
T0NPQSkKQEAgLTI3NTEsNyArMjc1Myw3IEBAIEV4Y2VwdGlvbk9yPFN0cmluZz4gSW50ZXJuYWxz
OjpyZXBhaW50UmVjdHNBc1RleHQoKSBjb25zdAogICAgIHJldHVybiBkb2N1bWVudC0+ZnJhbWUo
KS0+dHJhY2tlZFJlcGFpbnRSZWN0c0FzVGV4dCgpOwogfQogCi1FeGNlcHRpb25PcjxTdHJpbmc+
IEludGVybmFsczo6c2Nyb2xsYmFyT3ZlcmxheVN0eWxlKE5vZGUqIG5vZGUpIGNvbnN0CitFeGNl
cHRpb25PcjxTY3JvbGxhYmxlQXJlYSo+IEludGVybmFsczo6c2Nyb2xsYWJsZUFyZWFGb3JOb2Rl
KFJlZlB0cjxOb2RlPiYgbm9kZSkgY29uc3QKIHsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIG5v
ZGUgPSBjb250ZXh0RG9jdW1lbnQoKTsKQEAgLTI3NjMsMTMgKzI3NjUsMTMgQEAgRXhjZXB0aW9u
T3I8U3RyaW5nPiBJbnRlcm5hbHM6OnNjcm9sbGJhck92ZXJsYXlTdHlsZShOb2RlKiBub2RlKSBj
b25zdAogCiAgICAgU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhID0gbnVsbHB0cjsKICAg
ICBpZiAoaXM8RG9jdW1lbnQ+KCpub2RlKSkgewotICAgICAgICBhdXRvKiBmcmFtZVZpZXcgPSBk
b3duY2FzdDxEb2N1bWVudD4obm9kZSktPnZpZXcoKTsKKyAgICAgICAgYXV0byogZnJhbWVWaWV3
ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCpub2RlKS52aWV3KCk7CiAgICAgICAgIGlmICghZnJhbWVW
aWV3KQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJvciB9
OwogCiAgICAgICAgIHNjcm9sbGFibGVBcmVhID0gZnJhbWVWaWV3OwogICAgIH0gZWxzZSBpZiAo
aXM8RWxlbWVudD4oKm5vZGUpKSB7Ci0gICAgICAgIGF1dG8mIGVsZW1lbnQgPSAqZG93bmNhc3Q8
RWxlbWVudD4obm9kZSk7CisgICAgICAgIGF1dG8mIGVsZW1lbnQgPSBkb3duY2FzdDxFbGVtZW50
Pigqbm9kZSk7CiAgICAgICAgIGlmICghZWxlbWVudC5yZW5kZXJCb3goKSkKICAgICAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKIApAQCAtMjc4MCw2ICsy
NzgyLDE3IEBAIEV4Y2VwdGlvbk9yPFN0cmluZz4gSW50ZXJuYWxzOjpzY3JvbGxiYXJPdmVybGF5
U3R5bGUoTm9kZSogbm9kZSkgY29uc3QKICAgICBpZiAoIXNjcm9sbGFibGVBcmVhKQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZE5vZGVUeXBlRXJyb3IgfTsKIAorICAgIHJldHVy
biBzY3JvbGxhYmxlQXJlYTsKK30KKworRXhjZXB0aW9uT3I8U3RyaW5nPiBJbnRlcm5hbHM6OnNj
cm9sbGJhck92ZXJsYXlTdHlsZShOb2RlKiBub2RlKSBjb25zdAoreworICAgIGF1dG8gcHJvdGVj
dGVkTm9kZSA9IG1ha2VSZWZQdHIobm9kZSk7CisgICAgYXV0byBhcmVhT3JFeGNlcHRpb24gPSBz
Y3JvbGxhYmxlQXJlYUZvck5vZGUocHJvdGVjdGVkTm9kZSk7CisgICAgaWYgKGFyZWFPckV4Y2Vw
dGlvbi5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGFyZWFPckV4Y2VwdGlvbi5yZWxl
YXNlRXhjZXB0aW9uKCk7CisKKyAgICBhdXRvKiBzY3JvbGxhYmxlQXJlYSA9IGFyZWFPckV4Y2Vw
dGlvbi5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKICAgICBzd2l0Y2ggKHNjcm9sbGFibGVBcmVhLT5z
Y3JvbGxiYXJPdmVybGF5U3R5bGUoKSkgewogICAgIGNhc2UgU2Nyb2xsYmFyT3ZlcmxheVN0eWxl
RGVmYXVsdDoKICAgICAgICAgcmV0dXJuICJkZWZhdWx0Il9zdHI7CkBAIC0yNzk1LDM0ICsyODA4
LDM1IEBAIEV4Y2VwdGlvbk9yPFN0cmluZz4gSW50ZXJuYWxzOjpzY3JvbGxiYXJPdmVybGF5U3R5
bGUoTm9kZSogbm9kZSkgY29uc3QKIAogRXhjZXB0aW9uT3I8Ym9vbD4gSW50ZXJuYWxzOjpzY3Jv
bGxiYXJVc2luZ0RhcmtBcHBlYXJhbmNlKE5vZGUqIG5vZGUpIGNvbnN0CiB7Ci0gICAgaWYgKCFu
b2RlKQotICAgICAgICBub2RlID0gY29udGV4dERvY3VtZW50KCk7Ci0KLSAgICBpZiAoIW5vZGUp
Ci0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKKyAgICBh
dXRvIHByb3RlY3RlZE5vZGUgPSBtYWtlUmVmUHRyKG5vZGUpOworICAgIGF1dG8gYXJlYU9yRXhj
ZXB0aW9uID0gc2Nyb2xsYWJsZUFyZWFGb3JOb2RlKHByb3RlY3RlZE5vZGUpOworICAgIGlmIChh
cmVhT3JFeGNlcHRpb24uaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBhcmVhT3JFeGNl
cHRpb24ucmVsZWFzZUV4Y2VwdGlvbigpOwogCi0gICAgbm9kZS0+ZG9jdW1lbnQoKS51cGRhdGVM
YXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKLQotICAgIFNjcm9sbGFibGVBcmVhKiBz
Y3JvbGxhYmxlQXJlYSA9IG51bGxwdHI7Ci0gICAgaWYgKGlzPERvY3VtZW50Pigqbm9kZSkpIHsK
LSAgICAgICAgYXV0byogZnJhbWVWaWV3ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KG5vZGUpLT52aWV3
KCk7Ci0gICAgICAgIGlmICghZnJhbWVWaWV3KQotICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IEludmFsaWRBY2Nlc3NFcnJvciB9OworICAgIGF1dG8qIHNjcm9sbGFibGVBcmVhID0gYXJl
YU9yRXhjZXB0aW9uLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworICAgIHJldHVybiBzY3JvbGxhYmxl
QXJlYS0+dXNlRGFya0FwcGVhcmFuY2UoKTsKK30KIAotICAgICAgICBzY3JvbGxhYmxlQXJlYSA9
IGZyYW1lVmlldzsKLSAgICB9IGVsc2UgaWYgKGlzPEVsZW1lbnQ+KCpub2RlKSkgewotICAgICAg
ICBhdXRvJiBlbGVtZW50ID0gKmRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpOwotICAgICAgICBpZiAo
IWVsZW1lbnQucmVuZGVyQm94KCkpCi0gICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52
YWxpZEFjY2Vzc0Vycm9yIH07CitFeGNlcHRpb25PcjxTdHJpbmc+IEludGVybmFsczo6aG9yaXpv
bnRhbFNjcm9sbGJhclN0YXRlKE5vZGUqIG5vZGUpIGNvbnN0Cit7CisgICAgYXV0byBwcm90ZWN0
ZWROb2RlID0gbWFrZVJlZlB0cihub2RlKTsKKyAgICBhdXRvIGFyZWFPckV4Y2VwdGlvbiA9IHNj
cm9sbGFibGVBcmVhRm9yTm9kZShwcm90ZWN0ZWROb2RlKTsKKyAgICBpZiAoYXJlYU9yRXhjZXB0
aW9uLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gYXJlYU9yRXhjZXB0aW9uLnJlbGVh
c2VFeGNlcHRpb24oKTsKIAotICAgICAgICBzY3JvbGxhYmxlQXJlYSA9IGVsZW1lbnQucmVuZGVy
Qm94KCktPmxheWVyKCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJ
bnZhbGlkTm9kZVR5cGVFcnJvciB9OworICAgIGF1dG8qIHNjcm9sbGFibGVBcmVhID0gYXJlYU9y
RXhjZXB0aW9uLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworICAgIHJldHVybiBzY3JvbGxhYmxlQXJl
YS0+aG9yaXpvbnRhbFNjcm9sbGJhclN0YXRlRm9yVGVzdGluZygpOworfQogCi0gICAgaWYgKCFz
Y3JvbGxhYmxlQXJlYSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWROb2RlVHlw
ZUVycm9yIH07CitFeGNlcHRpb25PcjxTdHJpbmc+IEludGVybmFsczo6dmVydGljYWxTY3JvbGxi
YXJTdGF0ZShOb2RlKiBub2RlKSBjb25zdAoreworICAgIGF1dG8gcHJvdGVjdGVkTm9kZSA9IG1h
a2VSZWZQdHIobm9kZSk7CisgICAgYXV0byBhcmVhT3JFeGNlcHRpb24gPSBzY3JvbGxhYmxlQXJl
YUZvck5vZGUocHJvdGVjdGVkTm9kZSk7CisgICAgaWYgKGFyZWFPckV4Y2VwdGlvbi5oYXNFeGNl
cHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGFyZWFPckV4Y2VwdGlvbi5yZWxlYXNlRXhjZXB0aW9u
KCk7CiAKLSAgICByZXR1cm4gc2Nyb2xsYWJsZUFyZWEtPnVzZURhcmtBcHBlYXJhbmNlKCk7Cisg
ICAgYXV0byogc2Nyb2xsYWJsZUFyZWEgPSBhcmVhT3JFeGNlcHRpb24ucmVsZWFzZVJldHVyblZh
bHVlKCk7CisgICAgcmV0dXJuIHNjcm9sbGFibGVBcmVhLT52ZXJ0aWNhbFNjcm9sbGJhclN0YXRl
Rm9yVGVzdGluZygpOwogfQogCiBFeGNlcHRpb25PcjxTdHJpbmc+IEludGVybmFsczo6c2Nyb2xs
aW5nU3RhdGVUcmVlQXNUZXh0KCkgY29uc3QKQEAgLTM1ODAsNiArMzU5NCwxNCBAQCBKU0M6OkpT
VmFsdWUgSW50ZXJuYWxzOjpldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbgogdm9pZCBJbnRlcm5hbHM6OnNldFVzZXNPdmVybGF5U2Nyb2xsYmFy
cyhib29sIGVuYWJsZWQpCiB7CiAgICAgV2ViQ29yZTo6RGVwcmVjYXRlZEdsb2JhbFNldHRpbmdz
OjpzZXRVc2VzT3ZlcmxheVNjcm9sbGJhcnMoZW5hYmxlZCk7CisjaWYgUExBVEZPUk0oTUFDKQor
ICAgIFNjcm9sbGVyU3R5bGU6OnNldFVzZU92ZXJsYXlTY3JvbGxiYXJzKGVuYWJsZWQpOworICAg
IFNjcm9sbGJhclRoZW1lJiB0aGVtZSA9IFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpOworICAgIGlm
ICh0aGVtZS5pc01vY2tUaGVtZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBzdGF0aWNfY2Fz
dDxTY3JvbGxiYXJUaGVtZU1hYyY+KHRoZW1lKS5wcmVmZXJlbmNlc0NoYW5nZWQoKTsKKyNlbmRp
ZgogfQogCiB2b2lkIEludGVybmFsczo6c2V0VXNlc01vY2tTY3JvbGxBbmltYXRvcihib29sIGVu
YWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCAyM2M0ZmMwZDg2Y2Q4ZjVh
OWQ0YTczNTlmYTJjMjNkMDlkOWNiMTZmLi5kYWVhODNkNzY3N2E1NzVjYjQxYzE1YjMyODdkYjM0
ZTFmYjFiMGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTk2LDYgKzk2LDcg
QEAgY2xhc3MgUlRDUGVlckNvbm5lY3Rpb247CiBjbGFzcyBSYW5nZTsKIGNsYXNzIFJlbmRlcmVk
RG9jdW1lbnRNYXJrZXI7CiBjbGFzcyBTVkdTVkdFbGVtZW50OworY2xhc3MgU2Nyb2xsYWJsZUFy
ZWE7CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiBjbGFzcyBTb3VyY2VCdWZmZXI7CiBj
bGFzcyBTdHJpbmdDYWxsYmFjazsKQEAgLTM5Nyw2ICszOTgsOSBAQCBwdWJsaWM6CiAgICAgRXhj
ZXB0aW9uT3I8U3RyaW5nPiBzY3JvbGxiYXJPdmVybGF5U3R5bGUoTm9kZSopIGNvbnN0OwogICAg
IEV4Y2VwdGlvbk9yPGJvb2w+IHNjcm9sbGJhclVzaW5nRGFya0FwcGVhcmFuY2UoTm9kZSopIGNv
bnN0OwogCisgICAgRXhjZXB0aW9uT3I8U3RyaW5nPiBob3Jpem9udGFsU2Nyb2xsYmFyU3RhdGUo
Tm9kZSopIGNvbnN0OworICAgIEV4Y2VwdGlvbk9yPFN0cmluZz4gdmVydGljYWxTY3JvbGxiYXJT
dGF0ZShOb2RlKikgY29uc3Q7CisKICAgICBFeGNlcHRpb25PcjxTdHJpbmc+IHNjcm9sbGluZ1N0
YXRlVHJlZUFzVGV4dCgpIGNvbnN0OwogICAgIEV4Y2VwdGlvbk9yPFN0cmluZz4gc2Nyb2xsaW5n
VHJlZUFzVGV4dCgpIGNvbnN0OwogICAgIEV4Y2VwdGlvbk9yPFN0cmluZz4gbWFpblRocmVhZFNj
cm9sbGluZ1JlYXNvbnMoKSBjb25zdDsKQEAgLTEwMTQsNiArMTAxOCw3IEBAIHByaXZhdGU6CiAg
ICAgRnJhbWUqIGZyYW1lKCkgY29uc3Q7CiAKICAgICBFeGNlcHRpb25PcjxSZW5kZXJlZERvY3Vt
ZW50TWFya2VyKj4gbWFya2VyQXQoTm9kZSYsIGNvbnN0IFN0cmluZyYgbWFya2VyVHlwZSwgdW5z
aWduZWQgaW5kZXgpOworICAgIEV4Y2VwdGlvbk9yPFNjcm9sbGFibGVBcmVhKj4gc2Nyb2xsYWJs
ZUFyZWFGb3JOb2RlKFJlZlB0cjxOb2RlPiYpIGNvbnN0OwogCiAjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKICAgICAvLyBSZWFsdGltZU1lZGlhU291cmNlOjpPYnNlcnZlciBBUEkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBjMTUwZWNiYmRjMDMwYWVjOTcwOTE5MDcwOWZj
NGRhYmJjMGY5ZjEyLi45MzE2OGY3MzE5ZTE0ZTU1YjNjZjM1YWNhOWE2NzMzNzNkNzI2ZDc4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC00NTksNiArNDU5LDggQEAgZW51
bSBDb21wb3NpdGluZ1BvbGljeSB7CiAKICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmlu
ZyBzY3JvbGxiYXJPdmVybGF5U3R5bGUob3B0aW9uYWwgTm9kZT8gbm9kZSA9IG51bGwpOwogICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBzY3JvbGxiYXJVc2luZ0RhcmtBcHBlYXJhbmNl
KG9wdGlvbmFsIE5vZGU/IG5vZGUgPSBudWxsKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERP
TVN0cmluZyBob3Jpem9udGFsU2Nyb2xsYmFyU3RhdGUob3B0aW9uYWwgTm9kZT8gbm9kZSA9IG51
bGwpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHZlcnRpY2FsU2Nyb2xsYmFy
U3RhdGUob3B0aW9uYWwgTm9kZT8gbm9kZSA9IG51bGwpOwogCiAgICAgW01heVRocm93RXhjZXB0
aW9uXSBET01TdHJpbmcgc2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KCk7CiAgICAgW01heVRocm93
RXhjZXB0aW9uXSBET01TdHJpbmcgc2Nyb2xsaW5nVHJlZUFzVGV4dCgpOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDI4NGU1
NDhhODJkZjM4ZmMyMzkyYWNiMTU2ZmJlZTk5OTFiNDNlZmQuLmRjODliMTE5OTZlYjg4ZmZiNDgw
NzgxZmZmY2JmZDZlMjJjMDdmMzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMC0wNS0wMiAg
U2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIGl0
IHBvc3NpYmxlIHRvIHRlc3Qgb3ZlcmxheSBzY3JvbGxiYXIgaW50ZXJhY3Rpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTEzNDIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZXcgdGVzdHMsIGFuZCBz
b21lIGhlbHBlciBmdW5jdGlvbnMgaW4gVUlIZWxwZXIuCisKKyAgICAgICAgKiBmYXN0L3Njcm9s
bGluZy9tYWMvc2Nyb2xsYmFycy9vdmVybGF5LXNjcm9sbGJhci1ob3ZlcmVkLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvbWFjL3Njcm9sbGJhcnMvb3Zlcmxh
eS1zY3JvbGxiYXItaG92ZXJlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGlu
Zy9tYWMvc2Nyb2xsYmFycy9vdmVybGF5LXNjcm9sbGJhci1yZXZlYWwtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvc2Nyb2xsYmFycy9vdmVybGF5LXNj
cm9sbGJhci1yZXZlYWwuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvbWFj
L3Njcm9sbGJhcnMvb3ZlcmxheS1zY3JvbGxiYXItc3RhdGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvc2Nyb2xsYmFycy9vdmVybGF5LXNjcm9sbGJh
ci1zdGF0ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvc2Nyb2xs
YmFycy9zY3JvbGxiYXItc3RhdGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3Njcm9sbGluZy9tYWMvc2Nyb2xsYmFycy9zY3JvbGxiYXItc3RhdGUuaHRtbDogQWRkZWQuCisg
ICAgICAgICogcmVzb3VyY2VzL3VpLWhlbHBlci5qczoKKyAgICAgICAgKHdpbmRvdy5VSUhlbHBl
ci5hc3luYyBtb3VzZVdoZWVsTWF5QmVnaW5BdCk6CisgICAgICAgICh3aW5kb3cuVUlIZWxwZXIu
YXN5bmMgbW91c2VXaGVlbENhbmNlbEF0KToKKyAgICAgICAgKHdpbmRvdy5VSUhlbHBlci5hc3lu
YyB3YWl0Rm9yQ29uZGl0aW9uKToKKwogMjAyMC0wNS0wMSAgRXJpYyBDYXJsc29uICA8ZXJpYy5j
YXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbTVNFXSBBdWRpbyBzZXNzaW9uIGNhdGVnb3J5
IGlzIHNvbWV0aW1lcyBub3Qgc2V0IGNvcnJlY3RseSBhZnRlciBjaGFuZ2luZyB2aWRlbyBzb3Vy
Y2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9zY3JvbGxiYXJz
L292ZXJsYXktc2Nyb2xsYmFyLWhvdmVyZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9zY3JvbGxpbmcvbWFjL3Njcm9sbGJhcnMvb3ZlcmxheS1zY3JvbGxiYXItaG92ZXJlZC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMzcyZGE3OTk3MWEyN2QwOWIwNmQ5NGY2Zjk0ZjYxYTZhNzU2
NjYwYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9z
Y3JvbGxiYXJzL292ZXJsYXktc2Nyb2xsYmFyLWhvdmVyZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTUgQEAKK1Rlc3QgaG92ZXIgb3ZlciBvdmVybGF5IHNjcm9sbGJhcgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworRG9jdW1lbnQKK2VuYWJsZWQKK0hvdmVyaW5nIHZlcnRpY2Fs
IHNjcm9sbGJhciBzaG91bGQgc2hvdyBleHBhbmRlZCBzY3JvbGxiYXIKK1BBU1MgU2Nyb2xsYmFy
IHN0YXRlOiBlbmFibGVkLGV4cGFuZGVkLHZpc2libGVfdHJhY2ssdmlzaWJsZV90aHVtYgorVW5o
b3ZlcmluZyB2ZXJ0aWNhbCBzY3JvbGxiYXIgc2hvdWxkIGhpZGUgaXQKK1BBU1MgU2Nyb2xsYmFy
IHN0YXRlOiBlbmFibGVkLHZpc2libGVfdGh1bWIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Nj
cm9sbGluZy9tYWMvc2Nyb2xsYmFycy9vdmVybGF5LXNjcm9sbGJhci1ob3ZlcmVkLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvc2Nyb2xsYmFycy9vdmVybGF5LXNjcm9sbGJh
ci1ob3ZlcmVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjk4YmUxMWFiZjg2YjY0MjNlNjQ3YmEwYzk1ZDhj
YTg2NWQ5MDcyMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5n
L21hYy9zY3JvbGxiYXJzL292ZXJsYXktc2Nyb2xsYmFyLWhvdmVyZWQuaHRtbApAQCAtMCwwICsx
LDY1IEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBpbnRlcm5h
bDp1c2VNb2NrU2Nyb2xsYmFycz1mYWxzZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c3R5
bGU+CisgICAgICAgIGJvZHkgeworICAgICAgICAgICAgaGVpZ2h0OiAxMDAwcHg7CisgICAgICAg
IH0KKyAgICA8L3N0eWxlPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9y
ZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICAKKyAgICA8c2NyaXB0PgorICAg
ICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICAgICAgCisgICAgICAgIHdpbmRvdy5pbnRl
cm5hbHMuc2V0VXNlc092ZXJsYXlTY3JvbGxiYXJzKHRydWUpOworCisgICAgICAgIGFzeW5jIGZ1
bmN0aW9uIGRvVGVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uKCdUZXN0
IGhvdmVyIG92ZXIgb3ZlcmxheSBzY3JvbGxiYXInKTsKKyAgICAgICAgICAgIGlmICghd2luZG93
LmludGVybmFscykKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIGRlYnVnKCdEb2N1bWVudCcpOworICAgICAgICAgICAgZGVidWcoaW50ZXJuYWxzLnZl
cnRpY2FsU2Nyb2xsYmFyU3RhdGUoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGxldCB3
aW5kb3dXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoOworCisgICAgICAgICAgICBkZWJ1ZygnSG92
ZXJpbmcgdmVydGljYWwgc2Nyb2xsYmFyIHNob3VsZCBzaG93IGV4cGFuZGVkIHNjcm9sbGJhcicp
OworICAgICAgICAgICAgYXdhaXQgVUlIZWxwZXIubW91c2VXaGVlbFNjcm9sbEF0KHdpbmRvd1dp
ZHRoIC0gOCwgMTApOworICAgICAgICAgICAgYXdhaXQgVUlIZWxwZXIud2FpdEZvckNvbmRpdGlv
bigoKSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IHN0YXRlID0gaW50ZXJuYWxzLnZlcnRpY2Fs
U2Nyb2xsYmFyU3RhdGUoKTsKKyAgICAgICAgICAgICAgICBsZXQgZXhwYW5kZWQgPSBzdGF0ZS5p
bmRleE9mKCdleHBhbmRlZCcpICE9IC0xOworICAgICAgICAgICAgICAgIGlmIChleHBhbmRlZCkK
KyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgnU2Nyb2xsYmFyIHN0YXRlOiAnICsgc3Rh
dGUpOworICAgICAgICAgICAgICAgIHJldHVybiBleHBhbmRlZDsKKyAgICAgICAgICAgIH0pOwor
CisgICAgICAgICAgICBkZWJ1ZygnVW5ob3ZlcmluZyB2ZXJ0aWNhbCBzY3JvbGxiYXIgc2hvdWxk
IGhpZGUgaXQnKTsKKyAgICAgICAgICAgIGF3YWl0IFVJSGVscGVyLm1vdmVNb3VzZUFuZFdhaXRG
b3JGcmFtZSh3aW5kb3dXaWR0aCAtIDIwLCAxMCk7CisgICAgICAgICAgICBhd2FpdCBVSUhlbHBl
ci53YWl0Rm9yQ29uZGl0aW9uKCgpID0+IHsKKyAgICAgICAgICAgICAgICBsZXQgc3RhdGUgPSBp
bnRlcm5hbHMudmVydGljYWxTY3JvbGxiYXJTdGF0ZSgpOworICAgICAgICAgICAgICAgIGxldCBo
aWRkZW4gPSBzdGF0ZS5pbmRleE9mKCd2aXNpYmxlX3RyYWNrJykgPT0gLTE7CisgICAgICAgICAg
ICAgICAgaWYgKGhpZGRlbikKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgnU2Nyb2xs
YmFyIHN0YXRlOiAnICsgc3RhdGUpOworICAgICAgICAgICAgICAgIHJldHVybiBoaWRkZW47Cisg
ICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0K
KworICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsICgpID0+IHsKKyAgICAg
ICAgICAgIGRvVGVzdCgpOworICAgICAgICB9LCBmYWxzZSk7CisgICAgPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGNsYXNzPSJhdXRvIHNjcm9sbGVyIj4KKyAgICAgICAgPGRp
diBjbGFzcz0iY29udGVudHMiPjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNj
cm9sbCBzY3JvbGxlciI+CisgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnRzIj48L2Rpdj4KKyAg
ICA8L2Rpdj4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvc2Nyb2xsYmFycy9vdmVybGF5LXNjcm9sbGJhci1yZXZl
YWwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL3Njcm9sbGJh
cnMvb3ZlcmxheS1zY3JvbGxiYXItcmV2ZWFsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZmVm
NWFmYjk1MWRmYmU0NmYxOTFiODhhNzJjNGVlYmJhZmRmMWY0Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL3Njcm9sbGJhcnMvb3ZlcmxheS1zY3JvbGxi
YXItcmV2ZWFsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitUZXN0IG1heWJlZ2luIGFu
ZCBjYW5jZWxsZWQKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0RvY3VtZW50Citl
bmFibGVkCitNYXlCZWdpbiBzaG91bGQgc2hvdyB0aGUgc2Nyb2xsYmFyCitQQVNTIFNjcm9sbGJh
ciBzdGF0ZTogZW5hYmxlZCx2aXNpYmxlX3RodW1iCitDYW5jZWxsZWQgc2hvdWxkIGhpZGUgdGhl
IHNjcm9sbGJhcgorUEFTUyBTY3JvbGxiYXIgc3RhdGU6IGVuYWJsZWQKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvc2Nyb2xsYmFycy9vdmVybGF5LXNjcm9sbGJhci1yZXZl
YWwuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9zY3JvbGxiYXJzL292ZXJs
YXktc2Nyb2xsYmFyLXJldmVhbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEwZWU5MTkxODkzYjc1NGE1OTFh
N2YzZWNjMjkzNGU0OGFmYzcxNmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L3Njcm9sbGluZy9tYWMvc2Nyb2xsYmFycy9vdmVybGF5LXNjcm9sbGJhci1yZXZlYWwuaHRtbApA
QCAtMCwwICsxLDY2IEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIg
WyBpbnRlcm5hbDp1c2VNb2NrU2Nyb2xsYmFycz1mYWxzZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4K
KyAgICA8c3R5bGU+CisgICAgICAgIGJvZHkgeworICAgICAgICAgICAgaGVpZ2h0OiAxMDAwcHg7
CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICAKKyAgICA8c2Ny
aXB0PgorICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICAgICAgCisgICAgICAgIHdp
bmRvdy5pbnRlcm5hbHMuc2V0VXNlc092ZXJsYXlTY3JvbGxiYXJzKHRydWUpOworCisgICAgICAg
IGFzeW5jIGZ1bmN0aW9uIGRvVGVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlc2NyaXB0
aW9uKCdUZXN0IG1heWJlZ2luIGFuZCBjYW5jZWxsZWQnKTsKKyAgICAgICAgICAgIGlmICghd2lu
ZG93LmludGVybmFscykKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGRlYnVnKCdEb2N1bWVudCcpOworICAgICAgICAgICAgZGVidWcoaW50ZXJuYWxz
LnZlcnRpY2FsU2Nyb2xsYmFyU3RhdGUoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGxl
dCB3aW5kb3dXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoOworCisgICAgICAgICAgICBkZWJ1Zygn
TWF5QmVnaW4gc2hvdWxkIHNob3cgdGhlIHNjcm9sbGJhcicpOworICAgICAgICAgICAgYXdhaXQg
VUlIZWxwZXIubW91c2VXaGVlbE1heUJlZ2luQXQoMTAwLCAxMDApOworICAgICAgICAgICAgYXdh
aXQgVUlIZWxwZXIud2FpdEZvckNvbmRpdGlvbigoKSA9PiB7CisgICAgICAgICAgICAgICAgbGV0
IHN0YXRlID0gaW50ZXJuYWxzLnZlcnRpY2FsU2Nyb2xsYmFyU3RhdGUoKTsKKyAgICAgICAgICAg
ICAgICBsZXQgdmlzaWJsZSA9IHN0YXRlLmluZGV4T2YoJ3Zpc2libGVfdGh1bWInKSAhPSAtMTsK
KyAgICAgICAgICAgICAgICBpZiAodmlzaWJsZSkKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgnU2Nyb2xsYmFyIHN0YXRlOiAnICsgc3RhdGUpOworICAgICAgICAgICAgICAgIHJldHVy
biB2aXNpYmxlOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGRlYnVnKCdDYW5jZWxs
ZWQgc2hvdWxkIGhpZGUgdGhlIHNjcm9sbGJhcicpOworICAgICAgICAgICAgYXdhaXQgVUlIZWxw
ZXIubW91c2VXaGVlbENhbmNlbEF0KDEwMCwgMTAwKTsKKworICAgICAgICAgICAgYXdhaXQgVUlI
ZWxwZXIud2FpdEZvckNvbmRpdGlvbigoKSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IHN0YXRl
ID0gaW50ZXJuYWxzLnZlcnRpY2FsU2Nyb2xsYmFyU3RhdGUoKTsKKyAgICAgICAgICAgICAgICBs
ZXQgaGlkZGVuID0gc3RhdGUuaW5kZXhPZigndmlzaWJsZV90aHVtYicpID09IC0xOworICAgICAg
ICAgICAgICAgIGlmIChoaWRkZW4pCisgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoJ1Nj
cm9sbGJhciBzdGF0ZTogJyArIHN0YXRlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gaGlkZGVu
OworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAg
ICB9CisKKyAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCAoKSA9PiB7Cisg
ICAgICAgICAgICBkb1Rlc3QoKTsKKyAgICAgICAgfSwgZmFsc2UpOworICAgIDwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+CisgICAgPGRpdiBjbGFzcz0iYXV0byBzY3JvbGxlciI+CisgICAgICAg
IDxkaXYgY2xhc3M9ImNvbnRlbnRzIj48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNz
PSJzY3JvbGwgc2Nyb2xsZXIiPgorICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50cyI+PC9kaXY+
CisgICAgPC9kaXY+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL3Njcm9sbGJhcnMvb3ZlcmxheS1zY3JvbGxiYXIt
c3RhdGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL3Njcm9s
bGJhcnMvb3ZlcmxheS1zY3JvbGxiYXItc3RhdGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIz
N2JkNWQ1NGFkOGZjYjM5ZWU5MDRkZTg5ODc1YTdkYWU0ZWYyNDQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvc2Nyb2xsYmFycy9vdmVybGF5LXNjcm9s
bGJhci1zdGF0ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAorVGVzdCBzY3JvbGxiYXIg
c3RhdGUgaW50ZXJuYWxzCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitEb2N1bWVu
dAorZW5hYmxlZAorbm9uZQorb3ZlcmZsb3c6YXV0bworUEFTUyBpbnRlcm5hbHMudmVydGljYWxT
Y3JvbGxiYXJTdGF0ZShhdXRvU2Nyb2xsZXIpIGlzICJlbmFibGVkIgorUEFTUyBpbnRlcm5hbHMu
aG9yaXpvbnRhbFNjcm9sbGJhclN0YXRlKGF1dG9TY3JvbGxlcikgaXMgIm5vbmUiCitvdmVyZmxv
dzpzY3JvbGwKK1BBU1MgaW50ZXJuYWxzLnZlcnRpY2FsU2Nyb2xsYmFyU3RhdGUoc2Nyb2xsU2Ny
b2xsZXIpIGlzICJlbmFibGVkIgorUEFTUyBpbnRlcm5hbHMuaG9yaXpvbnRhbFNjcm9sbGJhclN0
YXRlKHNjcm9sbFNjcm9sbGVyKSBpcyAibm9uZSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Nj
cm9sbGluZy9tYWMvc2Nyb2xsYmFycy9vdmVybGF5LXNjcm9sbGJhci1zdGF0ZS5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL3Njcm9sbGJhcnMvb3ZlcmxheS1zY3JvbGxiYXIt
c3RhdGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYWZjM2ExYTRjNjdkYTFiNDE3OThlZjI5NDM0NDBmZjZm
OTZkYTlkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFj
L3Njcm9sbGJhcnMvb3ZlcmxheS1zY3JvbGxiYXItc3RhdGUuaHRtbApAQCAtMCwwICsxLDY2IEBA
Cis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBpbnRlcm5hbDp1c2VN
b2NrU2Nyb2xsYmFycz1mYWxzZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c3R5bGU+Cisg
ICAgICAgIGJvZHkgeworICAgICAgICAgICAgaGVpZ2h0OiAxMDAwcHg7CisgICAgICAgIH0KKyAg
ICAgICAgLnNjcm9sbGVyIHsKKyAgICAgICAgICAgIG1hcmdpbjogMTBweDsKKyAgICAgICAgICAg
IHdpZHRoOiAxMDBweDsKKyAgICAgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIH0KKyAg
ICAgICAgLmNvbnRlbnRzIHsKKyAgICAgICAgICAgIHdpZHRoOiAxMDAlOworICAgICAgICAgICAg
aGVpZ2h0OiAyMDAlOworICAgICAgICB9CisgICAgICAgIC5hdXRvIHsKKyAgICAgICAgICAgIG92
ZXJmbG93OiBhdXRvOworICAgICAgICB9CisgICAgICAgIC5zY3JvbGwgeworICAgICAgICAgICAg
b3ZlcmZsb3c6IHNjcm9sbDsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdD4KKyAgICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgICAgIAorICAgICAg
ICBsZXQgYXV0b1Njcm9sbGVyOworICAgICAgICBsZXQgc2Nyb2xsU2Nyb2xsZXI7CisgICAgICAg
IAorICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldFVzZXNPdmVybGF5U2Nyb2xsYmFycyh0cnVl
KTsKKworICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsICgpID0+IHsKKyAg
ICAgICAgICAgIGRlc2NyaXB0aW9uKCdUZXN0IHNjcm9sbGJhciBzdGF0ZSBpbnRlcm5hbHMnKTsK
KyAgICAgICAgICAgIGlmICghd2luZG93LmludGVybmFscykKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGRlYnVnKCdEb2N1bWVudCcpOworICAgICAg
ICAgICAgZGVidWcoaW50ZXJuYWxzLnZlcnRpY2FsU2Nyb2xsYmFyU3RhdGUoKSk7CisgICAgICAg
ICAgICBkZWJ1ZyhpbnRlcm5hbHMuaG9yaXpvbnRhbFNjcm9sbGJhclN0YXRlKCkpOworCisgICAg
ICAgICAgICBhdXRvU2Nyb2xsZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuYXV0by5zY3Jv
bGxlcicpCisgICAgICAgICAgICBzY3JvbGxTY3JvbGxlciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0
b3IoJy5zY3JvbGwuc2Nyb2xsZXInKQorCisgICAgICAgICAgICBkZWJ1Zygnb3ZlcmZsb3c6YXV0
bycpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdpbnRlcm5hbHMudmVydGlj
YWxTY3JvbGxiYXJTdGF0ZShhdXRvU2Nyb2xsZXIpJywgJ2VuYWJsZWQnKTsKKyAgICAgICAgICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygnaW50ZXJuYWxzLmhvcml6b250YWxTY3JvbGxiYXJTdGF0
ZShhdXRvU2Nyb2xsZXIpJywgJ25vbmUnKTsKKworICAgICAgICAgICAgZGVidWcoJ292ZXJmbG93
OnNjcm9sbCcpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdpbnRlcm5hbHMu
dmVydGljYWxTY3JvbGxiYXJTdGF0ZShzY3JvbGxTY3JvbGxlciknLCAnZW5hYmxlZCcpOworICAg
ICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdpbnRlcm5hbHMuaG9yaXpvbnRhbFNjcm9s
bGJhclN0YXRlKHNjcm9sbFNjcm9sbGVyKScsICdub25lJyk7CisKKyAgICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgICAgICB9LCBmYWxzZSk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKyAgICA8ZGl2IGNsYXNzPSJhdXRvIHNjcm9sbGVyIj4KKyAgICAgICAgPGRpdiBjbGFz
cz0iY29udGVudHMiPjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNjcm9sbCBz
Y3JvbGxlciI+CisgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnRzIj48L2Rpdj4KKyAgICA8L2Rp
dj4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3Njcm9sbGluZy9tYWMvc2Nyb2xsYmFycy9zY3JvbGxiYXItc3RhdGUtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL3Njcm9sbGJhcnMvc2Nyb2xsYmFyLXN0
YXRlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YzlhZjA4YWY0MjNkOWUwMDY2ZTI5MzJiMjAz
ZGMxYTRkOWI3M2I4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxp
bmcvbWFjL3Njcm9sbGJhcnMvc2Nyb2xsYmFyLXN0YXRlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE4IEBACitUZXN0IHNjcm9sbGJhciBzdGF0ZSBpbnRlcm5hbHMKKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK0RvY3VtZW50CitQQVNTIGludGVybmFscy52ZXJ0aWNhbFNjcm9sbGJh
clN0YXRlKCkgaXMgImVuYWJsZWQiCitQQVNTIGludGVybmFscy5ob3Jpem9udGFsU2Nyb2xsYmFy
U3RhdGUoKSBpcyAibm9uZSIKK292ZXJmbG93OmF1dG8KK1BBU1MgaW50ZXJuYWxzLnZlcnRpY2Fs
U2Nyb2xsYmFyU3RhdGUoYXV0b1Njcm9sbGVyKSBpcyAiZW5hYmxlZCIKK1BBU1MgaW50ZXJuYWxz
Lmhvcml6b250YWxTY3JvbGxiYXJTdGF0ZShhdXRvU2Nyb2xsZXIpIGlzICJub25lIgorb3ZlcmZs
b3c6c2Nyb2xsCitQQVNTIGludGVybmFscy52ZXJ0aWNhbFNjcm9sbGJhclN0YXRlKHNjcm9sbFNj
cm9sbGVyKSBpcyAiZW5hYmxlZCIKK1BBU1MgaW50ZXJuYWxzLmhvcml6b250YWxTY3JvbGxiYXJT
dGF0ZShzY3JvbGxTY3JvbGxlcikgaXMgImRpc2FibGVkIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3Qvc2Nyb2xsaW5nL21hYy9zY3JvbGxiYXJzL3Njcm9sbGJhci1zdGF0ZS5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL3Njcm9sbGJhcnMvc2Nyb2xsYmFyLXN0YXRlLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNWFkNmM2NmVhNWFjMTljMjFkODhkOGFmZjM4ZjBhYWZkOTFkYjc3ZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9zY3JvbGxiYXJz
L3Njcm9sbGJhci1zdGF0ZS5odG1sCkBAIC0wLDAgKzEsNjQgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKyAgICA8c3R5bGU+CisgICAgICAgIGJvZHkgeworICAgICAgICAgICAg
aGVpZ2h0OiAxMDAwcHg7CisgICAgICAgIH0KKyAgICAgICAgLnNjcm9sbGVyIHsKKyAgICAgICAg
ICAgIG1hcmdpbjogMTBweDsKKyAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgICAg
IGhlaWdodDogMTAwcHg7CisgICAgICAgIH0KKyAgICAgICAgLmNvbnRlbnRzIHsKKyAgICAgICAg
ICAgIHdpZHRoOiAxMDAlOworICAgICAgICAgICAgaGVpZ2h0OiAyMDAlOworICAgICAgICB9Cisg
ICAgICAgIC5hdXRvIHsKKyAgICAgICAgICAgIG92ZXJmbG93OiBhdXRvOworICAgICAgICB9Cisg
ICAgICAgIC5zY3JvbGwgeworICAgICAgICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICAgICAg
fQorICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAganNUZXN0SXNB
c3luYyA9IHRydWU7CisgICAgICAgIAorICAgICAgICBsZXQgYXV0b1Njcm9sbGVyOworICAgICAg
ICBsZXQgc2Nyb2xsU2Nyb2xsZXI7CisKKyAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIo
J2xvYWQnLCAoKSA9PiB7CisgICAgICAgICAgICBkZXNjcmlwdGlvbignVGVzdCBzY3JvbGxiYXIg
c3RhdGUgaW50ZXJuYWxzJyk7CisgICAgICAgICAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICBkZWJ1Zygn
RG9jdW1lbnQnKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnaW50ZXJuYWxz
LnZlcnRpY2FsU2Nyb2xsYmFyU3RhdGUoKScsICdlbmFibGVkJyk7CisgICAgICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoJ2ludGVybmFscy5ob3Jpem9udGFsU2Nyb2xsYmFyU3RhdGUoKScs
ICdub25lJyk7CisKKyAgICAgICAgICAgIGF1dG9TY3JvbGxlciA9IGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoJy5hdXRvLnNjcm9sbGVyJykKKyAgICAgICAgICAgIHNjcm9sbFNjcm9sbGVyID0gZG9j
dW1lbnQucXVlcnlTZWxlY3RvcignLnNjcm9sbC5zY3JvbGxlcicpCisKKyAgICAgICAgICAgIGRl
YnVnKCdvdmVyZmxvdzphdXRvJyk7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
J2ludGVybmFscy52ZXJ0aWNhbFNjcm9sbGJhclN0YXRlKGF1dG9TY3JvbGxlciknLCAnZW5hYmxl
ZCcpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdpbnRlcm5hbHMuaG9yaXpv
bnRhbFNjcm9sbGJhclN0YXRlKGF1dG9TY3JvbGxlciknLCAnbm9uZScpOworCisgICAgICAgICAg
ICBkZWJ1Zygnb3ZlcmZsb3c6c2Nyb2xsJyk7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoJ2ludGVybmFscy52ZXJ0aWNhbFNjcm9sbGJhclN0YXRlKHNjcm9sbFNjcm9sbGVyKScs
ICdlbmFibGVkJyk7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2ludGVybmFs
cy5ob3Jpem9udGFsU2Nyb2xsYmFyU3RhdGUoc2Nyb2xsU2Nyb2xsZXIpJywgJ2Rpc2FibGVkJyk7
CisKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9LCBmYWxzZSk7CisgICAg
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGNsYXNzPSJhdXRvIHNjcm9sbGVy
Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudHMiPjwvZGl2PgorICAgIDwvZGl2PgorICAg
IDxkaXYgY2xhc3M9InNjcm9sbCBzY3JvbGxlciI+CisgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRl
bnRzIj48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzIGIvTGF5b3V0VGVzdHMv
cmVzb3VyY2VzL3VpLWhlbHBlci5qcwppbmRleCAyZDFkZWYyMzlmMDQ4ZTc3OWY4OWQ5NjMyNzMy
ZjU4ZDg0NGM0MDJlLi5kMzdlMTlkNmU3ZDQxOTk1NGJhNDY5OTk3ZDNmMTFiZTIyZjgzZmQzIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzCisrKyBiL0xheW91
dFRlc3RzL3Jlc291cmNlcy91aS1oZWxwZXIuanMKQEAgLTU5LDYgKzU5LDIwIEBAIHdpbmRvdy5V
SUhlbHBlciA9IGNsYXNzIFVJSGVscGVyIHsKICAgICAgICAgfSk7CiAgICAgfQogCisgICAgc3Rh
dGljIGFzeW5jIG1vdXNlV2hlZWxNYXlCZWdpbkF0KHgsIHkpCisgICAgeworICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKHgsIHksICJtYXliZWdpbiIsICJub25lIik7
CisgICAgICAgIGF3YWl0IFVJSGVscGVyLmFuaW1hdGlvbkZyYW1lKCk7CisgICAgfQorCisgICAg
c3RhdGljIGFzeW5jIG1vdXNlV2hlZWxDYW5jZWxBdCh4LCB5KQorICAgIHsKKyAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyh4LCB5LCAiY2FuY2VsbGVkIiwgIm5vbmUi
KTsKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuYW5pbWF0aW9uRnJhbWUoKTsKKyAgICB9CisKICAg
ICBzdGF0aWMgYXN5bmMgd2FpdEZvclNjcm9sbENvbXBsZXRpb24oKQogICAgIHsKICAgICAgICAg
cmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewpAQCAtNzMsNiArODcsMTMgQEAgd2luZG93
LlVJSGVscGVyID0gY2xhc3MgVUlIZWxwZXIgewogICAgICAgICByZXR1cm4gbmV3IFByb21pc2Uo
cmVxdWVzdEFuaW1hdGlvbkZyYW1lKTsKICAgICB9CiAKKyAgICBzdGF0aWMgYXN5bmMgd2FpdEZv
ckNvbmRpdGlvbihjb25kaXRpb25GdW5jKQorICAgIHsKKyAgICAgICAgd2hpbGUgKCFjb25kaXRp
b25GdW5jKCkpIHsKKyAgICAgICAgICAgIGF3YWl0IFVJSGVscGVyLmFuaW1hdGlvbkZyYW1lKCk7
CisgICAgICAgIH0KKyAgICB9CisKICAgICBzdGF0aWMgc2VuZEV2ZW50U3RyZWFtKGV2ZW50U3Ry
ZWFtKQogICAgIHsKICAgICAgICAgY29uc3QgZXZlbnRTdHJlYW1Bc1N0cmluZyA9IEpTT04uc3Ry
aW5naWZ5KGV2ZW50U3RyZWFtKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398296</attachid>
            <date>2020-05-02 13:40:01 -0700</date>
            <delta_ts>2020-05-02 14:20:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211342-20200502134000.patch</filename>
            <type>text/plain</type>
            <size>30558</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTZhNmIwYzBiYWQ5ODcy
NmY5N2E3ZDg1ODQ5Y2NlNjI1MWE3N2JjOS4uZTQ3ZGEzNzMxMTlmMzE0ZDczZjQ0MjlmODA5YzYx
YmIyNDQ2YTYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIwLTA1LTAyICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgaXQgcG9z
c2libGUgdG8gdGVzdCBvdmVybGF5IHNjcm9sbGJhciBpbnRlcmFjdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTM0MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbnRlcm5hbHMuaG9yaXpv
bnRhbFNjcm9sbGJhclN0YXRlKCkgYW5kIGludGVybmFscy52ZXJ0aWNhbFNjcm9sbGJhclN0YXRl
KCkgYW5kIGhvb2sgdGhlbQorICAgICAgICB1cCB2aWEgU2Nyb2xsYWJsZUFyZWEgdG8gU2Nyb2xs
QW5pbWF0b3JNYWMuIFRoZXkgZHVtcCBzdGF0ZSBiYXNlZCBvbiB0aGUgTlNTY3JvbGxlckltcCBz
dGF0ZS4KKworICAgICAgICBNYWtlIGludGVybmFscy5zZXRVc2VzT3ZlcmxheVNjcm9sbGJhcnMo
dHJ1ZSkgYWN0dWFsbHkgdHJpZ2dlciByZWFsIG92ZXJsYXkgc2Nyb2xsYmFycyBieSBub3RpZnlp
bmcKKyAgICAgICAgdGhlIFNjcm9sbGJhclRoZW1lIGFib3V0IHRoZSBzY3JvbGxiYXIgc3R5bGUg
Y2hhbmdlLgorCisgICAgICAgIFRlc3RzOiBmYXN0L3Njcm9sbGluZy9tYWMvc2Nyb2xsYmFycy9v
dmVybGF5LXNjcm9sbGJhci1ob3ZlcmVkLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xs
aW5nL21hYy9zY3JvbGxiYXJzL292ZXJsYXktc2Nyb2xsYmFyLXJldmVhbC5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L3Njcm9sbGluZy9tYWMvc2Nyb2xsYmFycy9vdmVybGF5LXNjcm9sbGJhci1z
dGF0ZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L3Njcm9sbGluZy9tYWMvc2Nyb2xsYmFycy9z
Y3JvbGxiYXItc3RhdGUuaHRtbAorCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3Iu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpTY3JvbGxBbmltYXRvcjo6aG9y
aXpvbnRhbFNjcm9sbGJhclN0YXRlRm9yVGVzdGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRvcjo6U2Nyb2xsQW5pbWF0b3I6OnZlcnRpY2FsU2Nyb2xsYmFyU3RhdGVG
b3JUZXN0aW5nIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6aG9yaXpvbnRhbFNjcm9sbGJhclN0
YXRlRm9yVGVzdGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6
dmVydGljYWxTY3JvbGxiYXJTdGF0ZUZvclRlc3RpbmcgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL1Njcm9sbGFibGVBcmVhLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL05TU2Nyb2xsZXJJ
bXBEZXRhaWxzLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLmg6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6c2Nyb2xsYmFyU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0
b3JNYWM6Omhvcml6b250YWxTY3JvbGxiYXJTdGF0ZUZvclRlc3RpbmcgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OnZlcnRpY2FsU2Nyb2xsYmFyU3RhdGVGb3JU
ZXN0aW5nIGNvbnN0KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjogY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzY3JvbGxi
YXJPdmVybGF5U3R5bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzY3Jv
bGxiYXJVc2luZ0RhcmtBcHBlYXJhbmNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVy
bmFsczo6aG9yaXpvbnRhbFNjcm9sbGJhclN0YXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkludGVybmFsczo6dmVydGljYWxTY3JvbGxiYXJTdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnRlcm5hbHM6OnNldFVzZXNPdmVybGF5U2Nyb2xsYmFycyk6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIw
MjAtMDUtMDEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWRkIGEgbG9nIGNoYW5uZWwgZm9yIE92ZXJsYXlTY3JvbGxiYXJzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAppbmRleCA5YjdjMDliNjkwODFlYWFmMzcxM2E3OWEy
NGQ5NWIwNDk4MjI3MjA5Li42NjExODdhNzFjMDg5YzRhOGFjMGY3MzZkZmYzZjFhM2ZhMjE3NDIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKQEAgLTEyMyw2ICsx
MjMsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzUnViYmVyQmFuZEluUHJvZ3Jlc3Mo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbFNuYXBJ
blByb2dyZXNzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIHZpcnR1YWwgU3RyaW5n
IGhvcml6b250YWxTY3JvbGxiYXJTdGF0ZUZvclRlc3RpbmcoKSBjb25zdCB7IHJldHVybiBlbXB0
eVN0cmluZygpOyB9CisgICAgdmlydHVhbCBTdHJpbmcgdmVydGljYWxTY3JvbGxiYXJTdGF0ZUZv
clRlc3RpbmcoKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CisKICAgICB2b2lkIHNl
dFdoZWVsRXZlbnRUZXN0TW9uaXRvcihSZWZQdHI8V2hlZWxFdmVudFRlc3RNb25pdG9yPiYmIHRl
c3RNb25pdG9yKSB7IG1fd2hlZWxFdmVudFRlc3RNb25pdG9yID0gdGVzdE1vbml0b3I7IH0KIAog
I2lmIChFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKSB8fCBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpKSAm
JiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5j
cHAKaW5kZXggY2RhZDM2MDFkMzlhNTM3Y2ZhYzYwZWU3NTVlMTgzMmIxYWFkYzRkNS4uMTNhNGJk
OTBjOTk1ZGQxMzJlZTBhNTY2YjIxMTAzYTM3NmMwODQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcApAQCAtNDM4LDYgKzQzOCwxNiBAQCBib29sIFNjcm9s
bGFibGVBcmVhOjpoYXNMYXllckZvclNjcm9sbENvcm5lcigpIGNvbnN0CiAgICAgcmV0dXJuIGxh
eWVyRm9yU2Nyb2xsQ29ybmVyKCk7CiB9CiAKK1N0cmluZyBTY3JvbGxhYmxlQXJlYTo6aG9yaXpv
bnRhbFNjcm9sbGJhclN0YXRlRm9yVGVzdGluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHNjcm9s
bEFuaW1hdG9yKCkuaG9yaXpvbnRhbFNjcm9sbGJhclN0YXRlRm9yVGVzdGluZygpOworfQorCitT
dHJpbmcgU2Nyb2xsYWJsZUFyZWE6OnZlcnRpY2FsU2Nyb2xsYmFyU3RhdGVGb3JUZXN0aW5nKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gc2Nyb2xsQW5pbWF0b3IoKS52ZXJ0aWNhbFNjcm9sbGJhclN0
YXRlRm9yVGVzdGluZygpOworfQorCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKIFNjcm9s
bFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0PiYgU2Nyb2xsYWJsZUFyZWE6OmVuc3VyZVNuYXBP
ZmZzZXRzSW5mbygpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxhYmxlQXJlYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaApp
bmRleCBmMDA0ZDNiYjc1YjJjYzc4Y2RkYWVhZThjZTc2ZjZlYzY4NDVlMDY1Li44OTJkOGRlNmQz
NDVkOTFmZGE4MGNmYTUzMzRjNGFhNjhiNzU3ZGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGFibGVBcmVhLmgKQEAgLTEzNiw2ICsxMzYsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIGhvcml6b250YWxTY3JvbGxiYXJIaWRkZW5CeVN0eWxlKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgdmVydGljYWxTY3JvbGxiYXJIaWRkZW5CeVN0eWxl
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBo
b3Jpem9udGFsU2Nyb2xsYmFyU3RhdGVGb3JUZXN0aW5nKCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIHZlcnRpY2FsU2Nyb2xsYmFyU3RhdGVGb3JUZXN0aW5nKCkgY29uc3Q7CisK
ICAgICBib29sIGluTGl2ZVJlc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5MaXZlUmVzaXplOyB9
CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHdpbGxTdGFydExpdmVSZXNpemUoKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgd2lsbEVuZExpdmVSZXNpemUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9OU1Njcm9sbGVySW1wRGV0YWls
cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL05TU2Nyb2xsZXJJbXBEZXRhaWxzLmgK
aW5kZXggMWFkM2UzMTFlYzI3OWEwMjA1YTJkMzA1N2MxMDJkYjIyZjQ1NThkMC4uYzE0ZTE4Mzg2
ODU0NTEyZGQ3MWYxYmZlZTYzZWE2ZWRhZWJlZmYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL05TU2Nyb2xsZXJJbXBEZXRhaWxzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL05TU2Nyb2xsZXJJbXBEZXRhaWxzLmgKQEAgLTI5LDYgKzI5LDggQEAK
IAogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCitlbnVtIE5TU2Nyb2xsZXJTdHlsZSA6IGxv
bmc7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2Nyb2xs
ZXJTdHlsZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xs
QW5pbWF0b3JNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRv
ck1hYy5oCmluZGV4IDg3OTVjZjgxNWE0ZGJmNjZlNGU4ZmY0NTlkODVjZDM1YjQ2NjUzNWIuLmVm
NmVlYTA1MmE1NWVhZWNkMWJhN2NhYTViM2EzYTYwNDZjYjlmYTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5oCkBAIC0xMzgsNiArMTM4LDkg
QEAgcHJpdmF0ZToKICAgICBib29sIGlzUnViYmVyQmFuZEluUHJvZ3Jlc3MoKSBjb25zdCBvdmVy
cmlkZTsKICAgICBib29sIGlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoKSBjb25zdCBvdmVycmlkZTsK
IAorICAgIFN0cmluZyBob3Jpem9udGFsU2Nyb2xsYmFyU3RhdGVGb3JUZXN0aW5nKCkgY29uc3Qg
ZmluYWw7CisgICAgU3RyaW5nIHZlcnRpY2FsU2Nyb2xsYmFyU3RhdGVGb3JUZXN0aW5nKCkgY29u
c3QgZmluYWw7CisKICNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCiAgICAgLy8vIFNjcm9sbENv
bnRyb2xsZXJDbGllbnQgbWVtYmVyIGZ1bmN0aW9ucy4KICAgICBJbnRTaXplIHN0cmV0Y2hBbW91
bnQoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9TY3JvbGxBbmltYXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
Y3JvbGxBbmltYXRvck1hYy5tbQppbmRleCAzNWQ5NzcwMWVjNDIxNzk0NWE3Mjc5ODBkMmI4MmVj
ZjEzYjlkMzU0Li43ZjYxNzRkZjM3MDc0MzkyMjZlYTYxNzc4NTQwYzNjYWM4ZjAyM2FkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCkBA
IC04NzQsNiArODc0LDQzIEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OmlzU2Nyb2xsU25hcElu
UHJvZ3Jlc3MoKSBjb25zdAogI2VuZGlmCiB9CiAKK3N0YXRpYyBTdHJpbmcgc2Nyb2xsYmFyU3Rh
dGUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit7CisgICAgaWYgKCFzY3JvbGxiYXIpCisgICAgICAg
IHJldHVybiAibm9uZSJfczsKKworICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OworICAgIHJlc3Vs
dC5hcHBlbmQoc2Nyb2xsYmFyLT5lbmFibGVkKCkgPyAiZW5hYmxlZCJfcyA6ICJkaXNhYmxlZCJf
cyk7CisKKyAgICBpZiAoIXNjcm9sbGJhci0+aXNPdmVybGF5U2Nyb2xsYmFyKCkpCisgICAgICAg
IHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKKworICAgIE5TU2Nyb2xsZXJJbXAgKnNjcm9sbGVy
SW1wID0gc2Nyb2xsZXJJbXBGb3JTY3JvbGxiYXIoKnNjcm9sbGJhcik7CisgICAgaWYgKCFzY3Jv
bGxlckltcCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworCisgICAgaWYgKHNj
cm9sbGVySW1wLmV4cGFuZGVkKQorICAgICAgICByZXN1bHQuYXBwZW5kKCIsZXhwYW5kZWQiX3Mp
OworCisgICAgaWYgKHNjcm9sbGVySW1wLnRyYWNrQWxwaGEgPiAwKQorICAgICAgICByZXN1bHQu
YXBwZW5kKCIsdmlzaWJsZV90cmFjayJfcyk7CisKKyAgICBpZiAoc2Nyb2xsZXJJbXAua25vYkFs
cGhhID4gMCkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiLHZpc2libGVfdGh1bWIiX3MpOworCisg
ICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworfQorCitTdHJpbmcgU2Nyb2xsQW5pbWF0b3JN
YWM6Omhvcml6b250YWxTY3JvbGxiYXJTdGF0ZUZvclRlc3RpbmcoKSBjb25zdAoreworICAgIHJl
dHVybiBzY3JvbGxiYXJTdGF0ZShtX3Njcm9sbGFibGVBcmVhLmhvcml6b250YWxTY3JvbGxiYXIo
KSk7Cit9CisKK1N0cmluZyBTY3JvbGxBbmltYXRvck1hYzo6dmVydGljYWxTY3JvbGxiYXJTdGF0
ZUZvclRlc3RpbmcoKSBjb25zdAoreworICAgIHJldHVybiBzY3JvbGxiYXJTdGF0ZShtX3Njcm9s
bGFibGVBcmVhLnZlcnRpY2FsU2Nyb2xsYmFyKCkpOworfQorCiB2b2lkIFNjcm9sbEFuaW1hdG9y
TWFjOjppbW1lZGlhdGVTY3JvbGxUb1Bvc2l0aW9uRm9yU2Nyb2xsQW5pbWF0aW9uKGNvbnN0IEZs
b2F0UG9pbnQmIG5ld1Bvc2l0aW9uKQogewogICAgIEFTU0VSVChtX3Njcm9sbEFuaW1hdGlvbkhl
bHBlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggZjExNjRhZTljMWFj
M2JmMDE2ODk2YjlmNGRkZWExZmMzNGY2NzkwYS4uOTQ2MThkMWVlZDBkYmY0YmY3NjdlZDBmNTM4
ZGI5OTIzNjIxZWY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMzIy
LDYgKzMyMiw4IEBACiAKICNpZiBQTEFURk9STShNQUMpCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xNYW5hZ2VyLmgiCisjaW5jbHVkZSAiTlNTY3JvbGxlckltcERldGFpbHMuaCIK
KyNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZU1hYy5oIgogI2VuZGlmCiAKICNpZiBQTEFURk9STShD
T0NPQSkKQEAgLTI3NTEsNyArMjc1Myw3IEBAIEV4Y2VwdGlvbk9yPFN0cmluZz4gSW50ZXJuYWxz
OjpyZXBhaW50UmVjdHNBc1RleHQoKSBjb25zdAogICAgIHJldHVybiBkb2N1bWVudC0+ZnJhbWUo
KS0+dHJhY2tlZFJlcGFpbnRSZWN0c0FzVGV4dCgpOwogfQogCi1FeGNlcHRpb25PcjxTdHJpbmc+
IEludGVybmFsczo6c2Nyb2xsYmFyT3ZlcmxheVN0eWxlKE5vZGUqIG5vZGUpIGNvbnN0CitFeGNl
cHRpb25PcjxTY3JvbGxhYmxlQXJlYSo+IEludGVybmFsczo6c2Nyb2xsYWJsZUFyZWFGb3JOb2Rl
KFJlZlB0cjxOb2RlPiYgbm9kZSkgY29uc3QKIHsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIG5v
ZGUgPSBjb250ZXh0RG9jdW1lbnQoKTsKQEAgLTI3NjMsMTMgKzI3NjUsMTMgQEAgRXhjZXB0aW9u
T3I8U3RyaW5nPiBJbnRlcm5hbHM6OnNjcm9sbGJhck92ZXJsYXlTdHlsZShOb2RlKiBub2RlKSBj
b25zdAogCiAgICAgU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhID0gbnVsbHB0cjsKICAg
ICBpZiAoaXM8RG9jdW1lbnQ+KCpub2RlKSkgewotICAgICAgICBhdXRvKiBmcmFtZVZpZXcgPSBk
b3duY2FzdDxEb2N1bWVudD4obm9kZSktPnZpZXcoKTsKKyAgICAgICAgYXV0byogZnJhbWVWaWV3
ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCpub2RlKS52aWV3KCk7CiAgICAgICAgIGlmICghZnJhbWVW
aWV3KQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJvciB9
OwogCiAgICAgICAgIHNjcm9sbGFibGVBcmVhID0gZnJhbWVWaWV3OwogICAgIH0gZWxzZSBpZiAo
aXM8RWxlbWVudD4oKm5vZGUpKSB7Ci0gICAgICAgIGF1dG8mIGVsZW1lbnQgPSAqZG93bmNhc3Q8
RWxlbWVudD4obm9kZSk7CisgICAgICAgIGF1dG8mIGVsZW1lbnQgPSBkb3duY2FzdDxFbGVtZW50
Pigqbm9kZSk7CiAgICAgICAgIGlmICghZWxlbWVudC5yZW5kZXJCb3goKSkKICAgICAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKIApAQCAtMjc4MCw2ICsy
NzgyLDE3IEBAIEV4Y2VwdGlvbk9yPFN0cmluZz4gSW50ZXJuYWxzOjpzY3JvbGxiYXJPdmVybGF5
U3R5bGUoTm9kZSogbm9kZSkgY29uc3QKICAgICBpZiAoIXNjcm9sbGFibGVBcmVhKQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZE5vZGVUeXBlRXJyb3IgfTsKIAorICAgIHJldHVy
biBzY3JvbGxhYmxlQXJlYTsKK30KKworRXhjZXB0aW9uT3I8U3RyaW5nPiBJbnRlcm5hbHM6OnNj
cm9sbGJhck92ZXJsYXlTdHlsZShOb2RlKiBub2RlKSBjb25zdAoreworICAgIGF1dG8gcHJvdGVj
dGVkTm9kZSA9IG1ha2VSZWZQdHIobm9kZSk7CisgICAgYXV0byBhcmVhT3JFeGNlcHRpb24gPSBz
Y3JvbGxhYmxlQXJlYUZvck5vZGUocHJvdGVjdGVkTm9kZSk7CisgICAgaWYgKGFyZWFPckV4Y2Vw
dGlvbi5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGFyZWFPckV4Y2VwdGlvbi5yZWxl
YXNlRXhjZXB0aW9uKCk7CisKKyAgICBhdXRvKiBzY3JvbGxhYmxlQXJlYSA9IGFyZWFPckV4Y2Vw
dGlvbi5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKICAgICBzd2l0Y2ggKHNjcm9sbGFibGVBcmVhLT5z
Y3JvbGxiYXJPdmVybGF5U3R5bGUoKSkgewogICAgIGNhc2UgU2Nyb2xsYmFyT3ZlcmxheVN0eWxl
RGVmYXVsdDoKICAgICAgICAgcmV0dXJuICJkZWZhdWx0Il9zdHI7CkBAIC0yNzk1LDM0ICsyODA4
LDM1IEBAIEV4Y2VwdGlvbk9yPFN0cmluZz4gSW50ZXJuYWxzOjpzY3JvbGxiYXJPdmVybGF5U3R5
bGUoTm9kZSogbm9kZSkgY29uc3QKIAogRXhjZXB0aW9uT3I8Ym9vbD4gSW50ZXJuYWxzOjpzY3Jv
bGxiYXJVc2luZ0RhcmtBcHBlYXJhbmNlKE5vZGUqIG5vZGUpIGNvbnN0CiB7Ci0gICAgaWYgKCFu
b2RlKQotICAgICAgICBub2RlID0gY29udGV4dERvY3VtZW50KCk7Ci0KLSAgICBpZiAoIW5vZGUp
Ci0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKKyAgICBh
dXRvIHByb3RlY3RlZE5vZGUgPSBtYWtlUmVmUHRyKG5vZGUpOworICAgIGF1dG8gYXJlYU9yRXhj
ZXB0aW9uID0gc2Nyb2xsYWJsZUFyZWFGb3JOb2RlKHByb3RlY3RlZE5vZGUpOworICAgIGlmIChh
cmVhT3JFeGNlcHRpb24uaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBhcmVhT3JFeGNl
cHRpb24ucmVsZWFzZUV4Y2VwdGlvbigpOwogCi0gICAgbm9kZS0+ZG9jdW1lbnQoKS51cGRhdGVM
YXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKLQotICAgIFNjcm9sbGFibGVBcmVhKiBz
Y3JvbGxhYmxlQXJlYSA9IG51bGxwdHI7Ci0gICAgaWYgKGlzPERvY3VtZW50Pigqbm9kZSkpIHsK
LSAgICAgICAgYXV0byogZnJhbWVWaWV3ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KG5vZGUpLT52aWV3
KCk7Ci0gICAgICAgIGlmICghZnJhbWVWaWV3KQotICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IEludmFsaWRBY2Nlc3NFcnJvciB9OworICAgIGF1dG8qIHNjcm9sbGFibGVBcmVhID0gYXJl
YU9yRXhjZXB0aW9uLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworICAgIHJldHVybiBzY3JvbGxhYmxl
QXJlYS0+dXNlRGFya0FwcGVhcmFuY2UoKTsKK30KIAotICAgICAgICBzY3JvbGxhYmxlQXJlYSA9
IGZyYW1lVmlldzsKLSAgICB9IGVsc2UgaWYgKGlzPEVsZW1lbnQ+KCpub2RlKSkgewotICAgICAg
ICBhdXRvJiBlbGVtZW50ID0gKmRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpOwotICAgICAgICBpZiAo
IWVsZW1lbnQucmVuZGVyQm94KCkpCi0gICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52
YWxpZEFjY2Vzc0Vycm9yIH07CitFeGNlcHRpb25PcjxTdHJpbmc+IEludGVybmFsczo6aG9yaXpv
bnRhbFNjcm9sbGJhclN0YXRlKE5vZGUqIG5vZGUpIGNvbnN0Cit7CisgICAgYXV0byBwcm90ZWN0
ZWROb2RlID0gbWFrZVJlZlB0cihub2RlKTsKKyAgICBhdXRvIGFyZWFPckV4Y2VwdGlvbiA9IHNj
cm9sbGFibGVBcmVhRm9yTm9kZShwcm90ZWN0ZWROb2RlKTsKKyAgICBpZiAoYXJlYU9yRXhjZXB0
aW9uLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gYXJlYU9yRXhjZXB0aW9uLnJlbGVh
c2VFeGNlcHRpb24oKTsKIAotICAgICAgICBzY3JvbGxhYmxlQXJlYSA9IGVsZW1lbnQucmVuZGVy
Qm94KCktPmxheWVyKCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJ
bnZhbGlkTm9kZVR5cGVFcnJvciB9OworICAgIGF1dG8qIHNjcm9sbGFibGVBcmVhID0gYXJlYU9y
RXhjZXB0aW9uLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworICAgIHJldHVybiBzY3JvbGxhYmxlQXJl
YS0+aG9yaXpvbnRhbFNjcm9sbGJhclN0YXRlRm9yVGVzdGluZygpOworfQogCi0gICAgaWYgKCFz
Y3JvbGxhYmxlQXJlYSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWROb2RlVHlw
ZUVycm9yIH07CitFeGNlcHRpb25PcjxTdHJpbmc+IEludGVybmFsczo6dmVydGljYWxTY3JvbGxi
YXJTdGF0ZShOb2RlKiBub2RlKSBjb25zdAoreworICAgIGF1dG8gcHJvdGVjdGVkTm9kZSA9IG1h
a2VSZWZQdHIobm9kZSk7CisgICAgYXV0byBhcmVhT3JFeGNlcHRpb24gPSBzY3JvbGxhYmxlQXJl
YUZvck5vZGUocHJvdGVjdGVkTm9kZSk7CisgICAgaWYgKGFyZWFPckV4Y2VwdGlvbi5oYXNFeGNl
cHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGFyZWFPckV4Y2VwdGlvbi5yZWxlYXNlRXhjZXB0aW9u
KCk7CiAKLSAgICByZXR1cm4gc2Nyb2xsYWJsZUFyZWEtPnVzZURhcmtBcHBlYXJhbmNlKCk7Cisg
ICAgYXV0byogc2Nyb2xsYWJsZUFyZWEgPSBhcmVhT3JFeGNlcHRpb24ucmVsZWFzZVJldHVyblZh
bHVlKCk7CisgICAgcmV0dXJuIHNjcm9sbGFibGVBcmVhLT52ZXJ0aWNhbFNjcm9sbGJhclN0YXRl
Rm9yVGVzdGluZygpOwogfQogCiBFeGNlcHRpb25PcjxTdHJpbmc+IEludGVybmFsczo6c2Nyb2xs
aW5nU3RhdGVUcmVlQXNUZXh0KCkgY29uc3QKQEAgLTM1ODAsNiArMzU5NCwxNCBAQCBKU0M6OkpT
VmFsdWUgSW50ZXJuYWxzOjpldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbgogdm9pZCBJbnRlcm5hbHM6OnNldFVzZXNPdmVybGF5U2Nyb2xsYmFy
cyhib29sIGVuYWJsZWQpCiB7CiAgICAgV2ViQ29yZTo6RGVwcmVjYXRlZEdsb2JhbFNldHRpbmdz
OjpzZXRVc2VzT3ZlcmxheVNjcm9sbGJhcnMoZW5hYmxlZCk7CisjaWYgUExBVEZPUk0oTUFDKQor
ICAgIFNjcm9sbGVyU3R5bGU6OnNldFVzZU92ZXJsYXlTY3JvbGxiYXJzKGVuYWJsZWQpOworICAg
IFNjcm9sbGJhclRoZW1lJiB0aGVtZSA9IFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpOworICAgIGlm
ICh0aGVtZS5pc01vY2tUaGVtZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBzdGF0aWNfY2Fz
dDxTY3JvbGxiYXJUaGVtZU1hYyY+KHRoZW1lKS5wcmVmZXJlbmNlc0NoYW5nZWQoKTsKKyNlbmRp
ZgogfQogCiB2b2lkIEludGVybmFsczo6c2V0VXNlc01vY2tTY3JvbGxBbmltYXRvcihib29sIGVu
YWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCAyM2M0ZmMwZDg2Y2Q4ZjVh
OWQ0YTczNTlmYTJjMjNkMDlkOWNiMTZmLi5kYWVhODNkNzY3N2E1NzVjYjQxYzE1YjMyODdkYjM0
ZTFmYjFiMGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTk2LDYgKzk2LDcg
QEAgY2xhc3MgUlRDUGVlckNvbm5lY3Rpb247CiBjbGFzcyBSYW5nZTsKIGNsYXNzIFJlbmRlcmVk
RG9jdW1lbnRNYXJrZXI7CiBjbGFzcyBTVkdTVkdFbGVtZW50OworY2xhc3MgU2Nyb2xsYWJsZUFy
ZWE7CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiBjbGFzcyBTb3VyY2VCdWZmZXI7CiBj
bGFzcyBTdHJpbmdDYWxsYmFjazsKQEAgLTM5Nyw2ICszOTgsOSBAQCBwdWJsaWM6CiAgICAgRXhj
ZXB0aW9uT3I8U3RyaW5nPiBzY3JvbGxiYXJPdmVybGF5U3R5bGUoTm9kZSopIGNvbnN0OwogICAg
IEV4Y2VwdGlvbk9yPGJvb2w+IHNjcm9sbGJhclVzaW5nRGFya0FwcGVhcmFuY2UoTm9kZSopIGNv
bnN0OwogCisgICAgRXhjZXB0aW9uT3I8U3RyaW5nPiBob3Jpem9udGFsU2Nyb2xsYmFyU3RhdGUo
Tm9kZSopIGNvbnN0OworICAgIEV4Y2VwdGlvbk9yPFN0cmluZz4gdmVydGljYWxTY3JvbGxiYXJT
dGF0ZShOb2RlKikgY29uc3Q7CisKICAgICBFeGNlcHRpb25PcjxTdHJpbmc+IHNjcm9sbGluZ1N0
YXRlVHJlZUFzVGV4dCgpIGNvbnN0OwogICAgIEV4Y2VwdGlvbk9yPFN0cmluZz4gc2Nyb2xsaW5n
VHJlZUFzVGV4dCgpIGNvbnN0OwogICAgIEV4Y2VwdGlvbk9yPFN0cmluZz4gbWFpblRocmVhZFNj
cm9sbGluZ1JlYXNvbnMoKSBjb25zdDsKQEAgLTEwMTQsNiArMTAxOCw3IEBAIHByaXZhdGU6CiAg
ICAgRnJhbWUqIGZyYW1lKCkgY29uc3Q7CiAKICAgICBFeGNlcHRpb25PcjxSZW5kZXJlZERvY3Vt
ZW50TWFya2VyKj4gbWFya2VyQXQoTm9kZSYsIGNvbnN0IFN0cmluZyYgbWFya2VyVHlwZSwgdW5z
aWduZWQgaW5kZXgpOworICAgIEV4Y2VwdGlvbk9yPFNjcm9sbGFibGVBcmVhKj4gc2Nyb2xsYWJs
ZUFyZWFGb3JOb2RlKFJlZlB0cjxOb2RlPiYpIGNvbnN0OwogCiAjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKICAgICAvLyBSZWFsdGltZU1lZGlhU291cmNlOjpPYnNlcnZlciBBUEkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBjMTUwZWNiYmRjMDMwYWVjOTcwOTE5MDcwOWZj
NGRhYmJjMGY5ZjEyLi45MzE2OGY3MzE5ZTE0ZTU1YjNjZjM1YWNhOWE2NzMzNzNkNzI2ZDc4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC00NTksNiArNDU5LDggQEAgZW51
bSBDb21wb3NpdGluZ1BvbGljeSB7CiAKICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmlu
ZyBzY3JvbGxiYXJPdmVybGF5U3R5bGUob3B0aW9uYWwgTm9kZT8gbm9kZSA9IG51bGwpOwogICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBzY3JvbGxiYXJVc2luZ0RhcmtBcHBlYXJhbmNl
KG9wdGlvbmFsIE5vZGU/IG5vZGUgPSBudWxsKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERP
TVN0cmluZyBob3Jpem9udGFsU2Nyb2xsYmFyU3RhdGUob3B0aW9uYWwgTm9kZT8gbm9kZSA9IG51
bGwpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHZlcnRpY2FsU2Nyb2xsYmFy
U3RhdGUob3B0aW9uYWwgTm9kZT8gbm9kZSA9IG51bGwpOwogCiAgICAgW01heVRocm93RXhjZXB0
aW9uXSBET01TdHJpbmcgc2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KCk7CiAgICAgW01heVRocm93
RXhjZXB0aW9uXSBET01TdHJpbmcgc2Nyb2xsaW5nVHJlZUFzVGV4dCgpOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDI4NGU1
NDhhODJkZjM4ZmMyMzkyYWNiMTU2ZmJlZTk5OTFiNDNlZmQuLmRjODliMTE5OTZlYjg4ZmZiNDgw
NzgxZmZmY2JmZDZlMjJjMDdmMzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMC0wNS0wMiAg
U2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIGl0
IHBvc3NpYmxlIHRvIHRlc3Qgb3ZlcmxheSBzY3JvbGxiYXIgaW50ZXJhY3Rpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTEzNDIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZXcgdGVzdHMsIGFuZCBz
b21lIGhlbHBlciBmdW5jdGlvbnMgaW4gVUlIZWxwZXIuCisKKyAgICAgICAgKiBmYXN0L3Njcm9s
bGluZy9tYWMvc2Nyb2xsYmFycy9vdmVybGF5LXNjcm9sbGJhci1ob3ZlcmVkLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvbWFjL3Njcm9sbGJhcnMvb3Zlcmxh
eS1zY3JvbGxiYXItaG92ZXJlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGlu
Zy9tYWMvc2Nyb2xsYmFycy9vdmVybGF5LXNjcm9sbGJhci1yZXZlYWwtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvc2Nyb2xsYmFycy9vdmVybGF5LXNj
cm9sbGJhci1yZXZlYWwuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvbWFj
L3Njcm9sbGJhcnMvb3ZlcmxheS1zY3JvbGxiYXItc3RhdGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvc2Nyb2xsYmFycy9vdmVybGF5LXNjcm9sbGJh
ci1zdGF0ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvc2Nyb2xs
YmFycy9zY3JvbGxiYXItc3RhdGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3Njcm9sbGluZy9tYWMvc2Nyb2xsYmFycy9zY3JvbGxiYXItc3RhdGUuaHRtbDogQWRkZWQuCisg
ICAgICAgICogcmVzb3VyY2VzL3VpLWhlbHBlci5qczoKKyAgICAgICAgKHdpbmRvdy5VSUhlbHBl
ci5hc3luYyBtb3VzZVdoZWVsTWF5QmVnaW5BdCk6CisgICAgICAgICh3aW5kb3cuVUlIZWxwZXIu
YXN5bmMgbW91c2VXaGVlbENhbmNlbEF0KToKKyAgICAgICAgKHdpbmRvdy5VSUhlbHBlci5hc3lu
YyB3YWl0Rm9yQ29uZGl0aW9uKToKKwogMjAyMC0wNS0wMSAgRXJpYyBDYXJsc29uICA8ZXJpYy5j
YXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbTVNFXSBBdWRpbyBzZXNzaW9uIGNhdGVnb3J5
IGlzIHNvbWV0aW1lcyBub3Qgc2V0IGNvcnJlY3RseSBhZnRlciBjaGFuZ2luZyB2aWRlbyBzb3Vy
Y2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9zY3JvbGxiYXJz
L292ZXJsYXktc2Nyb2xsYmFyLWhvdmVyZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9zY3JvbGxpbmcvbWFjL3Njcm9sbGJhcnMvb3ZlcmxheS1zY3JvbGxiYXItaG92ZXJlZC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc2YmNlMjViNDAwOTlkYzVmNmQ5ZGM4MmM2NTVlZTJjNWM0
NjRhMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9z
Y3JvbGxiYXJzL292ZXJsYXktc2Nyb2xsYmFyLWhvdmVyZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTUgQEAKK1Rlc3QgaG92ZXIgb3ZlciBvdmVybGF5IHNjcm9sbGJhcgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworRG9jdW1lbnQKK2VuYWJsZWQKK0hvdmVyaW5nIHZlcnRpY2Fs
IHNjcm9sbGJhciBzaG91bGQgc2hvdyBleHBhbmRlZCBzY3JvbGxiYXIKK1BBU1MgU2Nyb2xsYmFy
IHN0YXRlOiBlbmFibGVkLGV4cGFuZGVkLHZpc2libGVfdHJhY2ssdmlzaWJsZV90aHVtYgorVW5o
b3ZlcmluZyB2ZXJ0aWNhbCBzY3JvbGxiYXIgc2hvdWxkIGhpZGUgaXQKK1BBU1MgVGh1bWIgYW5k
IHRyYWNrIGhpZGRlbgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9zY3Jv
bGxiYXJzL292ZXJsYXktc2Nyb2xsYmFyLWhvdmVyZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
c2Nyb2xsaW5nL21hYy9zY3JvbGxiYXJzL292ZXJsYXktc2Nyb2xsYmFyLWhvdmVyZWQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lYjZmMGJjMTJhZGM1ODgyZWIwYjdiMTE4ZGFjN2M3MWIxMjhmZTdhCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL3Njcm9sbGJhcnMv
b3ZlcmxheS1zY3JvbGxiYXItaG92ZXJlZC5odG1sCkBAIC0wLDAgKzEsNjYgQEAKKzwhRE9DVFlQ
RSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGludGVybmFsOnVzZU1vY2tTY3JvbGxi
YXJzPWZhbHNlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzdHlsZT4KKyAgICAgICAgYm9k
eSB7CisgICAgICAgICAgICBoZWlnaHQ6IDEwMDBweDsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+
CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy91aS1oZWxw
ZXIuanMiPjwvc2NyaXB0PgorICAgIAorICAgIDxzY3JpcHQ+CisgICAgICAgIGpzVGVzdElzQXN5
bmMgPSB0cnVlOworICAgICAgICAKKyAgICAgICAgd2luZG93LmludGVybmFscy5zZXRVc2VzT3Zl
cmxheVNjcm9sbGJhcnModHJ1ZSk7CisKKyAgICAgICAgYXN5bmMgZnVuY3Rpb24gZG9UZXN0KCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVzY3JpcHRpb24oJ1Rlc3QgaG92ZXIgb3ZlciBvdmVy
bGF5IHNjcm9sbGJhcicpOworICAgICAgICAgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZGVidWcoJ0Rv
Y3VtZW50Jyk7CisgICAgICAgICAgICBkZWJ1ZyhpbnRlcm5hbHMudmVydGljYWxTY3JvbGxiYXJT
dGF0ZSgpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgbGV0IHdpbmRvd1dpZHRoID0gd2lu
ZG93LmlubmVyV2lkdGg7CisKKyAgICAgICAgICAgIGRlYnVnKCdIb3ZlcmluZyB2ZXJ0aWNhbCBz
Y3JvbGxiYXIgc2hvdWxkIHNob3cgZXhwYW5kZWQgc2Nyb2xsYmFyJyk7CisgICAgICAgICAgICBh
d2FpdCBVSUhlbHBlci5tb3VzZVdoZWVsU2Nyb2xsQXQod2luZG93V2lkdGggLSA4LCAxMCk7Cisg
ICAgICAgICAgICBhd2FpdCBVSUhlbHBlci53YWl0Rm9yQ29uZGl0aW9uKCgpID0+IHsKKyAgICAg
ICAgICAgICAgICBsZXQgc3RhdGUgPSBpbnRlcm5hbHMudmVydGljYWxTY3JvbGxiYXJTdGF0ZSgp
OworICAgICAgICAgICAgICAgIGxldCBleHBhbmRlZCA9IHN0YXRlLmluZGV4T2YoJ2V4cGFuZGVk
JykgIT0gLTE7CisgICAgICAgICAgICAgICAgaWYgKGV4cGFuZGVkKQorICAgICAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCdTY3JvbGxiYXIgc3RhdGU6ICcgKyBzdGF0ZSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGV4cGFuZGVkOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGRl
YnVnKCdVbmhvdmVyaW5nIHZlcnRpY2FsIHNjcm9sbGJhciBzaG91bGQgaGlkZSBpdCcpOworICAg
ICAgICAgICAgYXdhaXQgVUlIZWxwZXIubW92ZU1vdXNlQW5kV2FpdEZvckZyYW1lKHdpbmRvd1dp
ZHRoIC0gMjAsIDEwKTsKKyAgICAgICAgICAgIGF3YWl0IFVJSGVscGVyLndhaXRGb3JDb25kaXRp
b24oKCkgPT4geworICAgICAgICAgICAgICAgIGxldCBzdGF0ZSA9IGludGVybmFscy52ZXJ0aWNh
bFNjcm9sbGJhclN0YXRlKCk7CisgICAgICAgICAgICAgICAgbGV0IHRodW1iSGlkZGVuID0gc3Rh
dGUuaW5kZXhPZigndmlzaWJsZV90aHVtYicpID09IC0xOworICAgICAgICAgICAgICAgIGxldCB0
cmFja0hpZGRlbiA9IHN0YXRlLmluZGV4T2YoJ3Zpc2libGVfdHJhY2snKSA9PSAtMTsKKyAgICAg
ICAgICAgICAgICBpZiAodGh1bWJIaWRkZW4gJiYgdHJhY2tIaWRkZW4pCisgICAgICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoJ1RodW1iIGFuZCB0cmFjayBoaWRkZW4nKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdGh1bWJIaWRkZW4gJiYgdHJhY2tIaWRkZW47CisgICAgICAgICAgICB9KTsK
KworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICB3aW5k
b3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsICgpID0+IHsKKyAgICAgICAgICAgIGRvVGVzdCgp
OworICAgICAgICB9LCBmYWxzZSk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAg
ICA8ZGl2IGNsYXNzPSJhdXRvIHNjcm9sbGVyIj4KKyAgICAgICAgPGRpdiBjbGFzcz0iY29udGVu
dHMiPjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNjcm9sbCBzY3JvbGxlciI+
CisgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnRzIj48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9s
bGluZy9tYWMvc2Nyb2xsYmFycy9vdmVybGF5LXNjcm9sbGJhci1yZXZlYWwtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL3Njcm9sbGJhcnMvb3ZlcmxheS1zY3Jv
bGxiYXItcmV2ZWFsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZmVmNWFmYjk1MWRmYmU0NmYx
OTFiODhhNzJjNGVlYmJhZmRmMWY0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9zY3JvbGxpbmcvbWFjL3Njcm9sbGJhcnMvb3ZlcmxheS1zY3JvbGxiYXItcmV2ZWFsLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitUZXN0IG1heWJlZ2luIGFuZCBjYW5jZWxsZWQKKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0RvY3VtZW50CitlbmFibGVkCitNYXlCZWdp
biBzaG91bGQgc2hvdyB0aGUgc2Nyb2xsYmFyCitQQVNTIFNjcm9sbGJhciBzdGF0ZTogZW5hYmxl
ZCx2aXNpYmxlX3RodW1iCitDYW5jZWxsZWQgc2hvdWxkIGhpZGUgdGhlIHNjcm9sbGJhcgorUEFT
UyBTY3JvbGxiYXIgc3RhdGU6IGVuYWJsZWQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9s
bGluZy9tYWMvc2Nyb2xsYmFycy9vdmVybGF5LXNjcm9sbGJhci1yZXZlYWwuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9zY3JvbGxiYXJzL292ZXJsYXktc2Nyb2xsYmFyLXJl
dmVhbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEwZWU5MTkxODkzYjc1NGE1OTFhN2YzZWNjMjkzNGU0OGFm
YzcxNmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMv
c2Nyb2xsYmFycy9vdmVybGF5LXNjcm9sbGJhci1yZXZlYWwuaHRtbApAQCAtMCwwICsxLDY2IEBA
Cis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBpbnRlcm5hbDp1c2VN
b2NrU2Nyb2xsYmFycz1mYWxzZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c3R5bGU+Cisg
ICAgICAgIGJvZHkgeworICAgICAgICAgICAgaGVpZ2h0OiAxMDAwcHg7CisgICAgICAgIH0KKyAg
ICA8L3N0eWxlPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9yZXNvdXJj
ZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICAKKyAgICA8c2NyaXB0PgorICAgICAgICBq
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICAgICAgCisgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMu
c2V0VXNlc092ZXJsYXlTY3JvbGxiYXJzKHRydWUpOworCisgICAgICAgIGFzeW5jIGZ1bmN0aW9u
IGRvVGVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uKCdUZXN0IG1heWJl
Z2luIGFuZCBjYW5jZWxsZWQnKTsKKyAgICAgICAgICAgIGlmICghd2luZG93LmludGVybmFscykK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGRlYnVn
KCdEb2N1bWVudCcpOworICAgICAgICAgICAgZGVidWcoaW50ZXJuYWxzLnZlcnRpY2FsU2Nyb2xs
YmFyU3RhdGUoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGxldCB3aW5kb3dXaWR0aCA9
IHdpbmRvdy5pbm5lcldpZHRoOworCisgICAgICAgICAgICBkZWJ1ZygnTWF5QmVnaW4gc2hvdWxk
IHNob3cgdGhlIHNjcm9sbGJhcicpOworICAgICAgICAgICAgYXdhaXQgVUlIZWxwZXIubW91c2VX
aGVlbE1heUJlZ2luQXQoMTAwLCAxMDApOworICAgICAgICAgICAgYXdhaXQgVUlIZWxwZXIud2Fp
dEZvckNvbmRpdGlvbigoKSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IHN0YXRlID0gaW50ZXJu
YWxzLnZlcnRpY2FsU2Nyb2xsYmFyU3RhdGUoKTsKKyAgICAgICAgICAgICAgICBsZXQgdmlzaWJs
ZSA9IHN0YXRlLmluZGV4T2YoJ3Zpc2libGVfdGh1bWInKSAhPSAtMTsKKyAgICAgICAgICAgICAg
ICBpZiAodmlzaWJsZSkKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgnU2Nyb2xsYmFy
IHN0YXRlOiAnICsgc3RhdGUpOworICAgICAgICAgICAgICAgIHJldHVybiB2aXNpYmxlOworICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGRlYnVnKCdDYW5jZWxsZWQgc2hvdWxkIGhpZGUg
dGhlIHNjcm9sbGJhcicpOworICAgICAgICAgICAgYXdhaXQgVUlIZWxwZXIubW91c2VXaGVlbENh
bmNlbEF0KDEwMCwgMTAwKTsKKworICAgICAgICAgICAgYXdhaXQgVUlIZWxwZXIud2FpdEZvckNv
bmRpdGlvbigoKSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IHN0YXRlID0gaW50ZXJuYWxzLnZl
cnRpY2FsU2Nyb2xsYmFyU3RhdGUoKTsKKyAgICAgICAgICAgICAgICBsZXQgaGlkZGVuID0gc3Rh
dGUuaW5kZXhPZigndmlzaWJsZV90aHVtYicpID09IC0xOworICAgICAgICAgICAgICAgIGlmICho
aWRkZW4pCisgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoJ1Njcm9sbGJhciBzdGF0ZTog
JyArIHN0YXRlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gaGlkZGVuOworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAg
d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCAoKSA9PiB7CisgICAgICAgICAgICBkb1Rl
c3QoKTsKKyAgICAgICAgfSwgZmFsc2UpOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
CisgICAgPGRpdiBjbGFzcz0iYXV0byBzY3JvbGxlciI+CisgICAgICAgIDxkaXYgY2xhc3M9ImNv
bnRlbnRzIj48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJzY3JvbGwgc2Nyb2xs
ZXIiPgorICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50cyI+PC9kaXY+CisgICAgPC9kaXY+Cisg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9z
Y3JvbGxpbmcvbWFjL3Njcm9sbGJhcnMvb3ZlcmxheS1zY3JvbGxiYXItc3RhdGUtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL3Njcm9sbGJhcnMvb3ZlcmxheS1z
Y3JvbGxiYXItc3RhdGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIzN2JkNWQ1NGFkOGZjYjM5
ZWU5MDRkZTg5ODc1YTdkYWU0ZWYyNDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3Njcm9sbGluZy9tYWMvc2Nyb2xsYmFycy9vdmVybGF5LXNjcm9sbGJhci1zdGF0ZS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAorVGVzdCBzY3JvbGxiYXIgc3RhdGUgaW50ZXJuYWxz
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitEb2N1bWVudAorZW5hYmxlZAorbm9u
ZQorb3ZlcmZsb3c6YXV0bworUEFTUyBpbnRlcm5hbHMudmVydGljYWxTY3JvbGxiYXJTdGF0ZShh
dXRvU2Nyb2xsZXIpIGlzICJlbmFibGVkIgorUEFTUyBpbnRlcm5hbHMuaG9yaXpvbnRhbFNjcm9s
bGJhclN0YXRlKGF1dG9TY3JvbGxlcikgaXMgIm5vbmUiCitvdmVyZmxvdzpzY3JvbGwKK1BBU1Mg
aW50ZXJuYWxzLnZlcnRpY2FsU2Nyb2xsYmFyU3RhdGUoc2Nyb2xsU2Nyb2xsZXIpIGlzICJlbmFi
bGVkIgorUEFTUyBpbnRlcm5hbHMuaG9yaXpvbnRhbFNjcm9sbGJhclN0YXRlKHNjcm9sbFNjcm9s
bGVyKSBpcyAibm9uZSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvc2Ny
b2xsYmFycy9vdmVybGF5LXNjcm9sbGJhci1zdGF0ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9z
Y3JvbGxpbmcvbWFjL3Njcm9sbGJhcnMvb3ZlcmxheS1zY3JvbGxiYXItc3RhdGUuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yYWZjM2ExYTRjNjdkYTFiNDE3OThlZjI5NDM0NDBmZjZmOTZkYTlkCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL3Njcm9sbGJhcnMvb3Zl
cmxheS1zY3JvbGxiYXItc3RhdGUuaHRtbApAQCAtMCwwICsxLDY2IEBACis8IURPQ1RZUEUgaHRt
bD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBpbnRlcm5hbDp1c2VNb2NrU2Nyb2xsYmFycz1m
YWxzZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c3R5bGU+CisgICAgICAgIGJvZHkgewor
ICAgICAgICAgICAgaGVpZ2h0OiAxMDAwcHg7CisgICAgICAgIH0KKyAgICAgICAgLnNjcm9sbGVy
IHsKKyAgICAgICAgICAgIG1hcmdpbjogMTBweDsKKyAgICAgICAgICAgIHdpZHRoOiAxMDBweDsK
KyAgICAgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIH0KKyAgICAgICAgLmNvbnRlbnRz
IHsKKyAgICAgICAgICAgIHdpZHRoOiAxMDAlOworICAgICAgICAgICAgaGVpZ2h0OiAyMDAlOwor
ICAgICAgICB9CisgICAgICAgIC5hdXRvIHsKKyAgICAgICAgICAgIG92ZXJmbG93OiBhdXRvOwor
ICAgICAgICB9CisgICAgICAgIC5zY3JvbGwgeworICAgICAgICAgICAgb3ZlcmZsb3c6IHNjcm9s
bDsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICAg
ICAganNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgICAgIAorICAgICAgICBsZXQgYXV0b1Njcm9s
bGVyOworICAgICAgICBsZXQgc2Nyb2xsU2Nyb2xsZXI7CisgICAgICAgIAorICAgICAgICB3aW5k
b3cuaW50ZXJuYWxzLnNldFVzZXNPdmVybGF5U2Nyb2xsYmFycyh0cnVlKTsKKworICAgICAgICB3
aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsICgpID0+IHsKKyAgICAgICAgICAgIGRlc2Ny
aXB0aW9uKCdUZXN0IHNjcm9sbGJhciBzdGF0ZSBpbnRlcm5hbHMnKTsKKyAgICAgICAgICAgIGlm
ICghd2luZG93LmludGVybmFscykKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIGRlYnVnKCdEb2N1bWVudCcpOworICAgICAgICAgICAgZGVidWcoaW50
ZXJuYWxzLnZlcnRpY2FsU2Nyb2xsYmFyU3RhdGUoKSk7CisgICAgICAgICAgICBkZWJ1ZyhpbnRl
cm5hbHMuaG9yaXpvbnRhbFNjcm9sbGJhclN0YXRlKCkpOworCisgICAgICAgICAgICBhdXRvU2Ny
b2xsZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuYXV0by5zY3JvbGxlcicpCisgICAgICAg
ICAgICBzY3JvbGxTY3JvbGxlciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zY3JvbGwuc2Ny
b2xsZXInKQorCisgICAgICAgICAgICBkZWJ1Zygnb3ZlcmZsb3c6YXV0bycpOworICAgICAgICAg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdpbnRlcm5hbHMudmVydGljYWxTY3JvbGxiYXJTdGF0
ZShhdXRvU2Nyb2xsZXIpJywgJ2VuYWJsZWQnKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygnaW50ZXJuYWxzLmhvcml6b250YWxTY3JvbGxiYXJTdGF0ZShhdXRvU2Nyb2xsZXIp
JywgJ25vbmUnKTsKKworICAgICAgICAgICAgZGVidWcoJ292ZXJmbG93OnNjcm9sbCcpOworICAg
ICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdpbnRlcm5hbHMudmVydGljYWxTY3JvbGxi
YXJTdGF0ZShzY3JvbGxTY3JvbGxlciknLCAnZW5hYmxlZCcpOworICAgICAgICAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCdpbnRlcm5hbHMuaG9yaXpvbnRhbFNjcm9sbGJhclN0YXRlKHNjcm9s
bFNjcm9sbGVyKScsICdub25lJyk7CisKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICB9LCBmYWxzZSk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2
IGNsYXNzPSJhdXRvIHNjcm9sbGVyIj4KKyAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudHMiPjwv
ZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNjcm9sbCBzY3JvbGxlciI+CisgICAg
ICAgIDxkaXYgY2xhc3M9ImNvbnRlbnRzIj48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9t
YWMvc2Nyb2xsYmFycy9zY3JvbGxiYXItc3RhdGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9zY3JvbGxpbmcvbWFjL3Njcm9sbGJhcnMvc2Nyb2xsYmFyLXN0YXRlLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45YzlhZjA4YWY0MjNkOWUwMDY2ZTI5MzJiMjAzZGMxYTRkOWI3M2I4Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL3Njcm9sbGJh
cnMvc2Nyb2xsYmFyLXN0YXRlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACitUZXN0IHNj
cm9sbGJhciBzdGF0ZSBpbnRlcm5hbHMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K0RvY3VtZW50CitQQVNTIGludGVybmFscy52ZXJ0aWNhbFNjcm9sbGJhclN0YXRlKCkgaXMgImVu
YWJsZWQiCitQQVNTIGludGVybmFscy5ob3Jpem9udGFsU2Nyb2xsYmFyU3RhdGUoKSBpcyAibm9u
ZSIKK292ZXJmbG93OmF1dG8KK1BBU1MgaW50ZXJuYWxzLnZlcnRpY2FsU2Nyb2xsYmFyU3RhdGUo
YXV0b1Njcm9sbGVyKSBpcyAiZW5hYmxlZCIKK1BBU1MgaW50ZXJuYWxzLmhvcml6b250YWxTY3Jv
bGxiYXJTdGF0ZShhdXRvU2Nyb2xsZXIpIGlzICJub25lIgorb3ZlcmZsb3c6c2Nyb2xsCitQQVNT
IGludGVybmFscy52ZXJ0aWNhbFNjcm9sbGJhclN0YXRlKHNjcm9sbFNjcm9sbGVyKSBpcyAiZW5h
YmxlZCIKK1BBU1MgaW50ZXJuYWxzLmhvcml6b250YWxTY3JvbGxiYXJTdGF0ZShzY3JvbGxTY3Jv
bGxlcikgaXMgImRpc2FibGVkIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21h
Yy9zY3JvbGxiYXJzL3Njcm9sbGJhci1zdGF0ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3Jv
bGxpbmcvbWFjL3Njcm9sbGJhcnMvc2Nyb2xsYmFyLXN0YXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWFk
NmM2NmVhNWFjMTljMjFkODhkOGFmZjM4ZjBhYWZkOTFkYjc3ZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9zY3JvbGxiYXJzL3Njcm9sbGJhci1zdGF0
ZS5odG1sCkBAIC0wLDAgKzEsNjQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KyAgICA8c3R5bGU+CisgICAgICAgIGJvZHkgeworICAgICAgICAgICAgaGVpZ2h0OiAxMDAwcHg7
CisgICAgICAgIH0KKyAgICAgICAgLnNjcm9sbGVyIHsKKyAgICAgICAgICAgIG1hcmdpbjogMTBw
eDsKKyAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgICAgIGhlaWdodDogMTAwcHg7
CisgICAgICAgIH0KKyAgICAgICAgLmNvbnRlbnRzIHsKKyAgICAgICAgICAgIHdpZHRoOiAxMDAl
OworICAgICAgICAgICAgaGVpZ2h0OiAyMDAlOworICAgICAgICB9CisgICAgICAgIC5hdXRvIHsK
KyAgICAgICAgICAgIG92ZXJmbG93OiBhdXRvOworICAgICAgICB9CisgICAgICAgIC5zY3JvbGwg
eworICAgICAgICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+
CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7Cisg
ICAgICAgIAorICAgICAgICBsZXQgYXV0b1Njcm9sbGVyOworICAgICAgICBsZXQgc2Nyb2xsU2Ny
b2xsZXI7CisKKyAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCAoKSA9PiB7
CisgICAgICAgICAgICBkZXNjcmlwdGlvbignVGVzdCBzY3JvbGxiYXIgc3RhdGUgaW50ZXJuYWxz
Jyk7CisgICAgICAgICAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICBkZWJ1ZygnRG9jdW1lbnQnKTsKKyAg
ICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnaW50ZXJuYWxzLnZlcnRpY2FsU2Nyb2xs
YmFyU3RhdGUoKScsICdlbmFibGVkJyk7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoJ2ludGVybmFscy5ob3Jpem9udGFsU2Nyb2xsYmFyU3RhdGUoKScsICdub25lJyk7CisKKyAg
ICAgICAgICAgIGF1dG9TY3JvbGxlciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hdXRvLnNj
cm9sbGVyJykKKyAgICAgICAgICAgIHNjcm9sbFNjcm9sbGVyID0gZG9jdW1lbnQucXVlcnlTZWxl
Y3RvcignLnNjcm9sbC5zY3JvbGxlcicpCisKKyAgICAgICAgICAgIGRlYnVnKCdvdmVyZmxvdzph
dXRvJyk7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2ludGVybmFscy52ZXJ0
aWNhbFNjcm9sbGJhclN0YXRlKGF1dG9TY3JvbGxlciknLCAnZW5hYmxlZCcpOworICAgICAgICAg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdpbnRlcm5hbHMuaG9yaXpvbnRhbFNjcm9sbGJhclN0
YXRlKGF1dG9TY3JvbGxlciknLCAnbm9uZScpOworCisgICAgICAgICAgICBkZWJ1Zygnb3ZlcmZs
b3c6c2Nyb2xsJyk7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2ludGVybmFs
cy52ZXJ0aWNhbFNjcm9sbGJhclN0YXRlKHNjcm9sbFNjcm9sbGVyKScsICdlbmFibGVkJyk7Cisg
ICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2ludGVybmFscy5ob3Jpem9udGFsU2Ny
b2xsYmFyU3RhdGUoc2Nyb2xsU2Nyb2xsZXIpJywgJ2Rpc2FibGVkJyk7CisKKyAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9LCBmYWxzZSk7CisgICAgPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGNsYXNzPSJhdXRvIHNjcm9sbGVyIj4KKyAgICAgICAgPGRp
diBjbGFzcz0iY29udGVudHMiPjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNj
cm9sbCBzY3JvbGxlciI+CisgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnRzIj48L2Rpdj4KKyAg
ICA8L2Rpdj4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzIGIvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3VpLWhl
bHBlci5qcwppbmRleCAyZDFkZWYyMzlmMDQ4ZTc3OWY4OWQ5NjMyNzMyZjU4ZDg0NGM0MDJlLi5k
MzdlMTlkNmU3ZDQxOTk1NGJhNDY5OTk3ZDNmMTFiZTIyZjgzZmQzIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzCisrKyBiL0xheW91dFRlc3RzL3Jlc291cmNl
cy91aS1oZWxwZXIuanMKQEAgLTU5LDYgKzU5LDIwIEBAIHdpbmRvdy5VSUhlbHBlciA9IGNsYXNz
IFVJSGVscGVyIHsKICAgICAgICAgfSk7CiAgICAgfQogCisgICAgc3RhdGljIGFzeW5jIG1vdXNl
V2hlZWxNYXlCZWdpbkF0KHgsIHkpCisgICAgeworICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyh4LCB5KTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKHgsIHksICJtYXliZWdpbiIsICJub25lIik7CisgICAgICAgIGF3YWl0
IFVJSGVscGVyLmFuaW1hdGlvbkZyYW1lKCk7CisgICAgfQorCisgICAgc3RhdGljIGFzeW5jIG1v
dXNlV2hlZWxDYW5jZWxBdCh4LCB5KQorICAgIHsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oeCwgeSk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyh4LCB5LCAiY2FuY2VsbGVkIiwgIm5vbmUiKTsKKyAgICAgICAgYXdh
aXQgVUlIZWxwZXIuYW5pbWF0aW9uRnJhbWUoKTsKKyAgICB9CisKICAgICBzdGF0aWMgYXN5bmMg
d2FpdEZvclNjcm9sbENvbXBsZXRpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyBQcm9t
aXNlKHJlc29sdmUgPT4gewpAQCAtNzMsNiArODcsMTMgQEAgd2luZG93LlVJSGVscGVyID0gY2xh
c3MgVUlIZWxwZXIgewogICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVxdWVzdEFuaW1hdGlv
bkZyYW1lKTsKICAgICB9CiAKKyAgICBzdGF0aWMgYXN5bmMgd2FpdEZvckNvbmRpdGlvbihjb25k
aXRpb25GdW5jKQorICAgIHsKKyAgICAgICAgd2hpbGUgKCFjb25kaXRpb25GdW5jKCkpIHsKKyAg
ICAgICAgICAgIGF3YWl0IFVJSGVscGVyLmFuaW1hdGlvbkZyYW1lKCk7CisgICAgICAgIH0KKyAg
ICB9CisKICAgICBzdGF0aWMgc2VuZEV2ZW50U3RyZWFtKGV2ZW50U3RyZWFtKQogICAgIHsKICAg
ICAgICAgY29uc3QgZXZlbnRTdHJlYW1Bc1N0cmluZyA9IEpTT04uc3RyaW5naWZ5KGV2ZW50U3Ry
ZWFtKTsK
</data>
<flag name="review"
          id="413672"
          type_id="1"
          status="+"
          setter="dbates"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398297</attachid>
            <date>2020-05-02 16:20:53 -0700</date>
            <delta_ts>2020-05-02 20:30:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211342-20200502162052.patch</filename>
            <type>text/plain</type>
            <size>30641</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTZhNmIwYzBiYWQ5ODcy
NmY5N2E3ZDg1ODQ5Y2NlNjI1MWE3N2JjOS4uMmM2ZDVhNDNiZjljNjM1YzVkZTkxZTYxZWE2YjIz
ZTkwMTBmZjU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIwLTA1LTAyICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgaXQgcG9z
c2libGUgdG8gdGVzdCBvdmVybGF5IHNjcm9sbGJhciBpbnRlcmFjdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTM0MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhbiBCYXRlcy4KKworICAgICAgICBBZGQgaW50ZXJuYWxzLmhvcml6b250YWxT
Y3JvbGxiYXJTdGF0ZSgpIGFuZCBpbnRlcm5hbHMudmVydGljYWxTY3JvbGxiYXJTdGF0ZSgpIGFu
ZCBob29rIHRoZW0KKyAgICAgICAgdXAgdmlhIFNjcm9sbGFibGVBcmVhIHRvIFNjcm9sbEFuaW1h
dG9yTWFjLiBUaGV5IGR1bXAgc3RhdGUgYmFzZWQgb24gdGhlIE5TU2Nyb2xsZXJJbXAgc3RhdGUu
CisKKyAgICAgICAgTWFrZSBpbnRlcm5hbHMuc2V0VXNlc092ZXJsYXlTY3JvbGxiYXJzKHRydWUp
IGFjdHVhbGx5IHRyaWdnZXIgcmVhbCBvdmVybGF5IHNjcm9sbGJhcnMgYnkgbm90aWZ5aW5nCisg
ICAgICAgIHRoZSBTY3JvbGxiYXJUaGVtZSBhYm91dCB0aGUgc2Nyb2xsYmFyIHN0eWxlIGNoYW5n
ZS4KKworICAgICAgICBUZXN0czogZmFzdC9zY3JvbGxpbmcvbWFjL3Njcm9sbGJhcnMvb3Zlcmxh
eS1zY3JvbGxiYXItaG92ZXJlZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L3Njcm9sbGluZy9t
YWMvc2Nyb2xsYmFycy9vdmVybGF5LXNjcm9sbGJhci1yZXZlYWwuaHRtbAorICAgICAgICAgICAg
ICAgZmFzdC9zY3JvbGxpbmcvbWFjL3Njcm9sbGJhcnMvb3ZlcmxheS1zY3JvbGxiYXItc3RhdGUu
aHRtbAorICAgICAgICAgICAgICAgZmFzdC9zY3JvbGxpbmcvbWFjL3Njcm9sbGJhcnMvc2Nyb2xs
YmFyLXN0YXRlLmh0bWwKKworICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6U2Nyb2xsQW5pbWF0b3I6Omhvcml6b250
YWxTY3JvbGxiYXJTdGF0ZUZvclRlc3RpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsQW5pbWF0b3I6OlNjcm9sbEFuaW1hdG9yOjp2ZXJ0aWNhbFNjcm9sbGJhclN0YXRlRm9yVGVz
dGluZyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6Omhvcml6b250YWxTY3JvbGxiYXJTdGF0ZUZv
clRlc3RpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OnZlcnRp
Y2FsU2Nyb2xsYmFyU3RhdGVGb3JUZXN0aW5nIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9T
Y3JvbGxhYmxlQXJlYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9OU1Njcm9sbGVySW1wRGV0
YWlscy5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OnNjcm9sbGJhclN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFj
Ojpob3Jpem9udGFsU2Nyb2xsYmFyU3RhdGVGb3JUZXN0aW5nIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjp2ZXJ0aWNhbFNjcm9sbGJhclN0YXRlRm9yVGVzdGlu
ZyBjb25zdCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2Nyb2xsYmFyT3Zl
cmxheVN0eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2Nyb2xsYmFy
VXNpbmdEYXJrQXBwZWFyYW5jZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6
Omhvcml6b250YWxTY3JvbGxiYXJTdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRl
cm5hbHM6OnZlcnRpY2FsU2Nyb2xsYmFyU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjpzZXRVc2VzT3ZlcmxheVNjcm9sbGJhcnMpOgorICAgICAgICAqIHRlc3Rpbmcv
SW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDIwLTA1
LTAxICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEFk
ZCBhIGxvZyBjaGFubmVsIGZvciBPdmVybGF5U2Nyb2xsYmFycwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbEFuaW1hdG9yLmgKaW5kZXggOWI3YzA5YjY5MDgxZWFhZjM3MTNhNzlhMjRkOTVi
MDQ5ODIyNzIwOS4uNjYxMTg3YTcxYzA4OWM0YThhYzBmNzM2ZGZmM2YxYTNmYTIxNzQyMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCkBAIC0xMjMsNiArMTIzLDkg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1J1YmJlckJhbmRJblByb2dyZXNzKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxTbmFwSW5Qcm9n
cmVzcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICB2aXJ0dWFsIFN0cmluZyBob3Jp
em9udGFsU2Nyb2xsYmFyU3RhdGVGb3JUZXN0aW5nKCkgY29uc3QgeyByZXR1cm4gZW1wdHlTdHJp
bmcoKTsgfQorICAgIHZpcnR1YWwgU3RyaW5nIHZlcnRpY2FsU2Nyb2xsYmFyU3RhdGVGb3JUZXN0
aW5nKCkgY29uc3QgeyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQorCiAgICAgdm9pZCBzZXRXaGVl
bEV2ZW50VGVzdE1vbml0b3IoUmVmUHRyPFdoZWVsRXZlbnRUZXN0TW9uaXRvcj4mJiB0ZXN0TW9u
aXRvcikgeyBtX3doZWVsRXZlbnRUZXN0TW9uaXRvciA9IHRlc3RNb25pdG9yOyB9CiAKICNpZiAo
RU5BQkxFKENTU19TQ1JPTExfU05BUCkgfHwgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKSkgJiYgUExB
VEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJs
ZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCmlu
ZGV4IGNkYWQzNjAxZDM5YTUzN2NmYWM2MGVlNzU1ZTE4MzJiMWFhZGM0ZDUuLjEzYTRiZDkwYzk5
NWRkMTMyZWUwYTU2NmIyMTEwM2EzNzZjMDg0MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTQzOCw2ICs0MzgsMTYgQEAgYm9vbCBTY3JvbGxhYmxl
QXJlYTo6aGFzTGF5ZXJGb3JTY3JvbGxDb3JuZXIoKSBjb25zdAogICAgIHJldHVybiBsYXllckZv
clNjcm9sbENvcm5lcigpOwogfQogCitTdHJpbmcgU2Nyb2xsYWJsZUFyZWE6Omhvcml6b250YWxT
Y3JvbGxiYXJTdGF0ZUZvclRlc3RpbmcoKSBjb25zdAoreworICAgIHJldHVybiBzY3JvbGxBbmlt
YXRvcigpLmhvcml6b250YWxTY3JvbGxiYXJTdGF0ZUZvclRlc3RpbmcoKTsKK30KKworU3RyaW5n
IFNjcm9sbGFibGVBcmVhOjp2ZXJ0aWNhbFNjcm9sbGJhclN0YXRlRm9yVGVzdGluZygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHNjcm9sbEFuaW1hdG9yKCkudmVydGljYWxTY3JvbGxiYXJTdGF0ZUZv
clRlc3RpbmcoKTsKK30KKwogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiBTY3JvbGxTbmFw
T2Zmc2V0c0luZm88TGF5b3V0VW5pdD4mIFNjcm9sbGFibGVBcmVhOjplbnN1cmVTbmFwT2Zmc2V0
c0luZm8oKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJs
ZUFyZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKaW5kZXgg
ZjAwNGQzYmI3NWIyY2M3OGNkZGFlYWU4Y2U3NmY2ZWM2ODQ1ZTA2NS4uODkyZDhkZTZkMzQ1ZDkx
ZmRhODBjZmE1MzM0YzRhYTY4Yjc1N2RhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxhYmxlQXJlYS5oCkBAIC0xMzYsNiArMTM2LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBob3Jpem9udGFsU2Nyb2xsYmFySGlkZGVuQnlTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCBib29sIHZlcnRpY2FsU2Nyb2xsYmFySGlkZGVuQnlTdHlsZSgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgaG9yaXpv
bnRhbFNjcm9sbGJhclN0YXRlRm9yVGVzdGluZygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IFN0cmluZyB2ZXJ0aWNhbFNjcm9sbGJhclN0YXRlRm9yVGVzdGluZygpIGNvbnN0OworCiAgICAg
Ym9vbCBpbkxpdmVSZXNpemUoKSBjb25zdCB7IHJldHVybiBtX2luTGl2ZVJlc2l6ZTsgfQogICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCB3aWxsU3RhcnRMaXZlUmVzaXplKCk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHdpbGxFbmRMaXZlUmVzaXplKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTlNTY3JvbGxlckltcERldGFpbHMuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9OU1Njcm9sbGVySW1wRGV0YWlscy5oCmluZGV4
IDFhZDNlMzExZWMyNzlhMDIwNWEyZDMwNTdjMTAyZGIyMmY0NTU4ZDAuLmMxNGUxODM4Njg1NDUx
MmRkNzFmMWJmZWU2M2VhNmVkYWViZWZmMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9OU1Njcm9sbGVySW1wRGV0YWlscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9OU1Njcm9sbGVySW1wRGV0YWlscy5oCkBAIC0yOSw2ICsyOSw4IEBACiAKICNp
bmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KIAorZW51bSBOU1Njcm9sbGVyU3R5bGUgOiBsb25nOwor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNjcm9sbGVyU3R5
bGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1h
dG9yTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMu
aAppbmRleCA4Nzk1Y2Y4MTVhNGRiZjY2ZTRlOGZmNDU5ZDg1Y2QzNWI0NjY1MzViLi5lZjZlZWEw
NTJhNTVlYWVjZDFiYTdjYWE1YjNhM2E2MDQ2Y2I5ZmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaApAQCAtMTM4LDYgKzEzOCw5IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBpc1J1YmJlckJhbmRJblByb2dyZXNzKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgYm9vbCBpc1Njcm9sbFNuYXBJblByb2dyZXNzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyAg
ICBTdHJpbmcgaG9yaXpvbnRhbFNjcm9sbGJhclN0YXRlRm9yVGVzdGluZygpIGNvbnN0IGZpbmFs
OworICAgIFN0cmluZyB2ZXJ0aWNhbFNjcm9sbGJhclN0YXRlRm9yVGVzdGluZygpIGNvbnN0IGZp
bmFsOworCiAjaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQogICAgIC8vLyBTY3JvbGxDb250cm9s
bGVyQ2xpZW50IG1lbWJlciBmdW5jdGlvbnMuCiAgICAgSW50U2l6ZSBzdHJldGNoQW1vdW50KCkg
Y29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
U2Nyb2xsQW5pbWF0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xs
QW5pbWF0b3JNYWMubW0KaW5kZXggMzVkOTc3MDFlYzQyMTc5NDVhNzI3OTgwZDJiODJlY2YxM2I5
ZDM1NC4uN2Y2MTc0ZGYzNzA3NDM5MjI2ZWE2MTc3ODU0MGMzY2FjOGYwMjNhZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQpAQCAtODc0
LDYgKzg3NCw0MyBAQCBib29sIFNjcm9sbEFuaW1hdG9yTWFjOjppc1Njcm9sbFNuYXBJblByb2dy
ZXNzKCkgY29uc3QKICNlbmRpZgogfQogCitzdGF0aWMgU3RyaW5nIHNjcm9sbGJhclN0YXRlKFNj
cm9sbGJhciogc2Nyb2xsYmFyKQoreworICAgIGlmICghc2Nyb2xsYmFyKQorICAgICAgICByZXR1
cm4gIm5vbmUiX3M7CisKKyAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKKyAgICByZXN1bHQuYXBw
ZW5kKHNjcm9sbGJhci0+ZW5hYmxlZCgpID8gImVuYWJsZWQiX3MgOiAiZGlzYWJsZWQiX3MpOwor
CisgICAgaWYgKCFzY3JvbGxiYXItPmlzT3ZlcmxheVNjcm9sbGJhcigpKQorICAgICAgICByZXR1
cm4gcmVzdWx0LnRvU3RyaW5nKCk7CisKKyAgICBOU1Njcm9sbGVySW1wICpzY3JvbGxlckltcCA9
IHNjcm9sbGVySW1wRm9yU2Nyb2xsYmFyKCpzY3JvbGxiYXIpOworICAgIGlmICghc2Nyb2xsZXJJ
bXApCisgICAgICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKKworICAgIGlmIChzY3JvbGxl
ckltcC5leHBhbmRlZCkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiLGV4cGFuZGVkIl9zKTsKKwor
ICAgIGlmIChzY3JvbGxlckltcC50cmFja0FscGhhID4gMCkKKyAgICAgICAgcmVzdWx0LmFwcGVu
ZCgiLHZpc2libGVfdHJhY2siX3MpOworCisgICAgaWYgKHNjcm9sbGVySW1wLmtub2JBbHBoYSA+
IDApCisgICAgICAgIHJlc3VsdC5hcHBlbmQoIix2aXNpYmxlX3RodW1iIl9zKTsKKworICAgIHJl
dHVybiByZXN1bHQudG9TdHJpbmcoKTsKK30KKworU3RyaW5nIFNjcm9sbEFuaW1hdG9yTWFjOjpo
b3Jpem9udGFsU2Nyb2xsYmFyU3RhdGVGb3JUZXN0aW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
c2Nyb2xsYmFyU3RhdGUobV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsU2Nyb2xsYmFyKCkpOwor
fQorCitTdHJpbmcgU2Nyb2xsQW5pbWF0b3JNYWM6OnZlcnRpY2FsU2Nyb2xsYmFyU3RhdGVGb3JU
ZXN0aW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc2Nyb2xsYmFyU3RhdGUobV9zY3JvbGxhYmxl
QXJlYS52ZXJ0aWNhbFNjcm9sbGJhcigpKTsKK30KKwogdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6
aW1tZWRpYXRlU2Nyb2xsVG9Qb3NpdGlvbkZvclNjcm9sbEFuaW1hdGlvbihjb25zdCBGbG9hdFBv
aW50JiBuZXdQb3NpdGlvbikKIHsKICAgICBBU1NFUlQobV9zY3JvbGxBbmltYXRpb25IZWxwZXIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGYxMTY0YWU5YzFhYzNiZjAx
Njg5NmI5ZjRkZGVhMWZjMzRmNjc5MGEuLmYwMDMwNzgzYjY5ODVhZWZiZjdmNTU5MDIwNjk0YWI3
MDFmNTVlMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTMyMiw2ICsz
MjIsOCBAQAogCiAjaWYgUExBVEZPUk0oTUFDKQogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMTWFuYWdlci5oIgorI2luY2x1ZGUgIk5TU2Nyb2xsZXJJbXBEZXRhaWxzLmgiCisjaW5j
bHVkZSAiU2Nyb2xsYmFyVGhlbWVNYWMuaCIKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CkBAIC0yNzUxLDcgKzI3NTMsNyBAQCBFeGNlcHRpb25PcjxTdHJpbmc+IEludGVybmFsczo6cmVw
YWludFJlY3RzQXNUZXh0KCkgY29uc3QKICAgICByZXR1cm4gZG9jdW1lbnQtPmZyYW1lKCktPnRy
YWNrZWRSZXBhaW50UmVjdHNBc1RleHQoKTsKIH0KIAotRXhjZXB0aW9uT3I8U3RyaW5nPiBJbnRl
cm5hbHM6OnNjcm9sbGJhck92ZXJsYXlTdHlsZShOb2RlKiBub2RlKSBjb25zdAorRXhjZXB0aW9u
T3I8U2Nyb2xsYWJsZUFyZWEqPiBJbnRlcm5hbHM6OnNjcm9sbGFibGVBcmVhRm9yTm9kZShOb2Rl
KiBub2RlKSBjb25zdAogewogICAgIGlmICghbm9kZSkKICAgICAgICAgbm9kZSA9IGNvbnRleHRE
b2N1bWVudCgpOwpAQCAtMjc1OSwxNyArMjc2MSwxOCBAQCBFeGNlcHRpb25PcjxTdHJpbmc+IElu
dGVybmFsczo6c2Nyb2xsYmFyT3ZlcmxheVN0eWxlKE5vZGUqIG5vZGUpIGNvbnN0CiAgICAgaWYg
KCFub2RlKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07
CiAKLSAgICBub2RlLT5kb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNo
ZWV0cygpOworICAgIGF1dG8gbm9kZVJlZiA9IG1ha2VSZWYoKm5vZGUpOworICAgIG5vZGVSZWYt
PmRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKICAg
ICBTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEgPSBudWxscHRyOwotICAgIGlmIChpczxE
b2N1bWVudD4oKm5vZGUpKSB7Ci0gICAgICAgIGF1dG8qIGZyYW1lVmlldyA9IGRvd25jYXN0PERv
Y3VtZW50Pihub2RlKS0+dmlldygpOworICAgIGlmIChpczxEb2N1bWVudD4obm9kZVJlZikpIHsK
KyAgICAgICAgYXV0byogZnJhbWVWaWV3ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KG5vZGVSZWYuZ2V0
KCkpLnZpZXcoKTsKICAgICAgICAgaWYgKCFmcmFtZVZpZXcpCiAgICAgICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CiAKICAgICAgICAgc2Nyb2xsYWJsZUFy
ZWEgPSBmcmFtZVZpZXc7Ci0gICAgfSBlbHNlIGlmIChpczxFbGVtZW50Pigqbm9kZSkpIHsKLSAg
ICAgICAgYXV0byYgZWxlbWVudCA9ICpkb3duY2FzdDxFbGVtZW50Pihub2RlKTsKKyAgICB9IGVs
c2UgaWYgKGlzPEVsZW1lbnQ+KG5vZGVSZWYpKSB7CisgICAgICAgIGF1dG8mIGVsZW1lbnQgPSBk
b3duY2FzdDxFbGVtZW50Pihub2RlUmVmLmdldCgpKTsKICAgICAgICAgaWYgKCFlbGVtZW50LnJl
bmRlckJveCgpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NF
cnJvciB9OwogCkBAIC0yNzgwLDYgKzI3ODMsMTYgQEAgRXhjZXB0aW9uT3I8U3RyaW5nPiBJbnRl
cm5hbHM6OnNjcm9sbGJhck92ZXJsYXlTdHlsZShOb2RlKiBub2RlKSBjb25zdAogICAgIGlmICgh
c2Nyb2xsYWJsZUFyZWEpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTm9kZVR5
cGVFcnJvciB9OwogCisgICAgcmV0dXJuIHNjcm9sbGFibGVBcmVhOworfQorCitFeGNlcHRpb25P
cjxTdHJpbmc+IEludGVybmFsczo6c2Nyb2xsYmFyT3ZlcmxheVN0eWxlKE5vZGUqIG5vZGUpIGNv
bnN0Cit7CisgICAgYXV0byBhcmVhT3JFeGNlcHRpb24gPSBzY3JvbGxhYmxlQXJlYUZvck5vZGUo
bm9kZSk7CisgICAgaWYgKGFyZWFPckV4Y2VwdGlvbi5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAg
cmV0dXJuIGFyZWFPckV4Y2VwdGlvbi5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAgICBhdXRvKiBz
Y3JvbGxhYmxlQXJlYSA9IGFyZWFPckV4Y2VwdGlvbi5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKICAg
ICBzd2l0Y2ggKHNjcm9sbGFibGVBcmVhLT5zY3JvbGxiYXJPdmVybGF5U3R5bGUoKSkgewogICAg
IGNhc2UgU2Nyb2xsYmFyT3ZlcmxheVN0eWxlRGVmYXVsdDoKICAgICAgICAgcmV0dXJuICJkZWZh
dWx0Il9zdHI7CkBAIC0yNzk1LDM0ICsyODA4LDMyIEBAIEV4Y2VwdGlvbk9yPFN0cmluZz4gSW50
ZXJuYWxzOjpzY3JvbGxiYXJPdmVybGF5U3R5bGUoTm9kZSogbm9kZSkgY29uc3QKIAogRXhjZXB0
aW9uT3I8Ym9vbD4gSW50ZXJuYWxzOjpzY3JvbGxiYXJVc2luZ0RhcmtBcHBlYXJhbmNlKE5vZGUq
IG5vZGUpIGNvbnN0CiB7Ci0gICAgaWYgKCFub2RlKQotICAgICAgICBub2RlID0gY29udGV4dERv
Y3VtZW50KCk7CisgICAgYXV0byBhcmVhT3JFeGNlcHRpb24gPSBzY3JvbGxhYmxlQXJlYUZvck5v
ZGUobm9kZSk7CisgICAgaWYgKGFyZWFPckV4Y2VwdGlvbi5oYXNFeGNlcHRpb24oKSkKKyAgICAg
ICAgcmV0dXJuIGFyZWFPckV4Y2VwdGlvbi5yZWxlYXNlRXhjZXB0aW9uKCk7CiAKLSAgICBpZiAo
IW5vZGUpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsK
LQotICAgIG5vZGUtPmRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hl
ZXRzKCk7Ci0KLSAgICBTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEgPSBudWxscHRyOwot
ICAgIGlmIChpczxEb2N1bWVudD4oKm5vZGUpKSB7Ci0gICAgICAgIGF1dG8qIGZyYW1lVmlldyA9
IGRvd25jYXN0PERvY3VtZW50Pihub2RlKS0+dmlldygpOwotICAgICAgICBpZiAoIWZyYW1lVmll
dykKLSAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsK
KyAgICBhdXRvKiBzY3JvbGxhYmxlQXJlYSA9IGFyZWFPckV4Y2VwdGlvbi5yZWxlYXNlUmV0dXJu
VmFsdWUoKTsKKyAgICByZXR1cm4gc2Nyb2xsYWJsZUFyZWEtPnVzZURhcmtBcHBlYXJhbmNlKCk7
Cit9CiAKLSAgICAgICAgc2Nyb2xsYWJsZUFyZWEgPSBmcmFtZVZpZXc7Ci0gICAgfSBlbHNlIGlm
IChpczxFbGVtZW50Pigqbm9kZSkpIHsKLSAgICAgICAgYXV0byYgZWxlbWVudCA9ICpkb3duY2Fz
dDxFbGVtZW50Pihub2RlKTsKLSAgICAgICAgaWYgKCFlbGVtZW50LnJlbmRlckJveCgpKQotICAg
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJvciB9OworRXhjZXB0
aW9uT3I8U3RyaW5nPiBJbnRlcm5hbHM6Omhvcml6b250YWxTY3JvbGxiYXJTdGF0ZShOb2RlKiBu
b2RlKSBjb25zdAoreworICAgIGF1dG8gYXJlYU9yRXhjZXB0aW9uID0gc2Nyb2xsYWJsZUFyZWFG
b3JOb2RlKG5vZGUpOworICAgIGlmIChhcmVhT3JFeGNlcHRpb24uaGFzRXhjZXB0aW9uKCkpCisg
ICAgICAgIHJldHVybiBhcmVhT3JFeGNlcHRpb24ucmVsZWFzZUV4Y2VwdGlvbigpOwogCi0gICAg
ICAgIHNjcm9sbGFibGVBcmVhID0gZWxlbWVudC5yZW5kZXJCb3goKS0+bGF5ZXIoKTsKLSAgICB9
IGVsc2UKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWROb2RlVHlwZUVycm9yIH07
CisgICAgYXV0byogc2Nyb2xsYWJsZUFyZWEgPSBhcmVhT3JFeGNlcHRpb24ucmVsZWFzZVJldHVy
blZhbHVlKCk7CisgICAgcmV0dXJuIHNjcm9sbGFibGVBcmVhLT5ob3Jpem9udGFsU2Nyb2xsYmFy
U3RhdGVGb3JUZXN0aW5nKCk7Cit9CiAKLSAgICBpZiAoIXNjcm9sbGFibGVBcmVhKQotICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZE5vZGVUeXBlRXJyb3IgfTsKK0V4Y2VwdGlvbk9y
PFN0cmluZz4gSW50ZXJuYWxzOjp2ZXJ0aWNhbFNjcm9sbGJhclN0YXRlKE5vZGUqIG5vZGUpIGNv
bnN0Cit7CisgICAgYXV0byBhcmVhT3JFeGNlcHRpb24gPSBzY3JvbGxhYmxlQXJlYUZvck5vZGUo
bm9kZSk7CisgICAgaWYgKGFyZWFPckV4Y2VwdGlvbi5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAg
cmV0dXJuIGFyZWFPckV4Y2VwdGlvbi5yZWxlYXNlRXhjZXB0aW9uKCk7CiAKLSAgICByZXR1cm4g
c2Nyb2xsYWJsZUFyZWEtPnVzZURhcmtBcHBlYXJhbmNlKCk7CisgICAgYXV0byogc2Nyb2xsYWJs
ZUFyZWEgPSBhcmVhT3JFeGNlcHRpb24ucmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAgcmV0dXJu
IHNjcm9sbGFibGVBcmVhLT52ZXJ0aWNhbFNjcm9sbGJhclN0YXRlRm9yVGVzdGluZygpOwogfQog
CiBFeGNlcHRpb25PcjxTdHJpbmc+IEludGVybmFsczo6c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0
KCkgY29uc3QKQEAgLTM1ODAsNiArMzU5MSwxNCBAQCBKU0M6OkpTVmFsdWUgSW50ZXJuYWxzOjpl
dmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbgog
dm9pZCBJbnRlcm5hbHM6OnNldFVzZXNPdmVybGF5U2Nyb2xsYmFycyhib29sIGVuYWJsZWQpCiB7
CiAgICAgV2ViQ29yZTo6RGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjpzZXRVc2VzT3ZlcmxheVNj
cm9sbGJhcnMoZW5hYmxlZCk7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIFNjcm9sbGVyU3R5bGU6
OnNldFVzZU92ZXJsYXlTY3JvbGxiYXJzKGVuYWJsZWQpOworICAgIFNjcm9sbGJhclRoZW1lJiB0
aGVtZSA9IFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpOworICAgIGlmICh0aGVtZS5pc01vY2tUaGVt
ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBzdGF0aWNfY2FzdDxTY3JvbGxiYXJUaGVtZU1h
YyY+KHRoZW1lKS5wcmVmZXJlbmNlc0NoYW5nZWQoKTsKKyNlbmRpZgogfQogCiB2b2lkIEludGVy
bmFsczo6c2V0VXNlc01vY2tTY3JvbGxBbmltYXRvcihib29sIGVuYWJsZWQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaAppbmRleCAyM2M0ZmMwZDg2Y2Q4ZjVhOWQ0YTczNTlmYTJjMjNkMDlk
OWNiMTZmLi5jNDJiNmM3NmM0Nzc3ZWY4NmMzYjEzMTMyNDBlNGQzNWE1Nzk3OTNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTk2LDYgKzk2LDcgQEAgY2xhc3MgUlRDUGVlckNv
bm5lY3Rpb247CiBjbGFzcyBSYW5nZTsKIGNsYXNzIFJlbmRlcmVkRG9jdW1lbnRNYXJrZXI7CiBj
bGFzcyBTVkdTVkdFbGVtZW50OworY2xhc3MgU2Nyb2xsYWJsZUFyZWE7CiBjbGFzcyBTZXJpYWxp
emVkU2NyaXB0VmFsdWU7CiBjbGFzcyBTb3VyY2VCdWZmZXI7CiBjbGFzcyBTdHJpbmdDYWxsYmFj
azsKQEAgLTM5Nyw2ICszOTgsOSBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8U3RyaW5nPiBz
Y3JvbGxiYXJPdmVybGF5U3R5bGUoTm9kZSopIGNvbnN0OwogICAgIEV4Y2VwdGlvbk9yPGJvb2w+
IHNjcm9sbGJhclVzaW5nRGFya0FwcGVhcmFuY2UoTm9kZSopIGNvbnN0OwogCisgICAgRXhjZXB0
aW9uT3I8U3RyaW5nPiBob3Jpem9udGFsU2Nyb2xsYmFyU3RhdGUoTm9kZSopIGNvbnN0OworICAg
IEV4Y2VwdGlvbk9yPFN0cmluZz4gdmVydGljYWxTY3JvbGxiYXJTdGF0ZShOb2RlKikgY29uc3Q7
CisKICAgICBFeGNlcHRpb25PcjxTdHJpbmc+IHNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dCgpIGNv
bnN0OwogICAgIEV4Y2VwdGlvbk9yPFN0cmluZz4gc2Nyb2xsaW5nVHJlZUFzVGV4dCgpIGNvbnN0
OwogICAgIEV4Y2VwdGlvbk9yPFN0cmluZz4gbWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMoKSBj
b25zdDsKQEAgLTEwMTQsNiArMTAxOCw3IEBAIHByaXZhdGU6CiAgICAgRnJhbWUqIGZyYW1lKCkg
Y29uc3Q7CiAKICAgICBFeGNlcHRpb25PcjxSZW5kZXJlZERvY3VtZW50TWFya2VyKj4gbWFya2Vy
QXQoTm9kZSYsIGNvbnN0IFN0cmluZyYgbWFya2VyVHlwZSwgdW5zaWduZWQgaW5kZXgpOworICAg
IEV4Y2VwdGlvbk9yPFNjcm9sbGFibGVBcmVhKj4gc2Nyb2xsYWJsZUFyZWFGb3JOb2RlKE5vZGUq
KSBjb25zdDsKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgLy8gUmVhbHRpbWVNZWRp
YVNvdXJjZTo6T2JzZXJ2ZXIgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5k
ZXggYzE1MGVjYmJkYzAzMGFlYzk3MDkxOTA3MDlmYzRkYWJiYzBmOWYxMi4uOTMxNjhmNzMxOWUx
NGU1NWIzY2YzNWFjYTlhNjczMzczZDcyNmQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmlkbApAQCAtNDU5LDYgKzQ1OSw4IEBAIGVudW0gQ29tcG9zaXRpbmdQb2xpY3kgewogCiAg
ICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgc2Nyb2xsYmFyT3ZlcmxheVN0eWxlKG9w
dGlvbmFsIE5vZGU/IG5vZGUgPSBudWxsKTsKICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIGJvb2xl
YW4gc2Nyb2xsYmFyVXNpbmdEYXJrQXBwZWFyYW5jZShvcHRpb25hbCBOb2RlPyBub2RlID0gbnVs
bCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgaG9yaXpvbnRhbFNjcm9sbGJh
clN0YXRlKG9wdGlvbmFsIE5vZGU/IG5vZGUgPSBudWxsKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIERPTVN0cmluZyB2ZXJ0aWNhbFNjcm9sbGJhclN0YXRlKG9wdGlvbmFsIE5vZGU/IG5vZGUg
PSBudWxsKTsKIAogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHNjcm9sbGluZ1N0
YXRlVHJlZUFzVGV4dCgpOwogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHNjcm9s
bGluZ1RyZWVBc1RleHQoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyODRlNTQ4YTgyZGYzOGZjMjM5MmFjYjE1NmZiZWU5
OTkxYjQzZWZkLi5mOTBjMjQ2YTBkNTFiZTgzMWFhNzhmMTZkNDE2YWJmMmQzZDBkN2NhIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjUgQEAKKzIwMjAtMDUtMDIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byB0ZXN0IG92ZXJsYXkg
c2Nyb2xsYmFyIGludGVyYWN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjExMzQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJhdGVzLgor
CisgICAgICAgIE5ldyB0ZXN0cywgYW5kIHNvbWUgaGVscGVyIGZ1bmN0aW9ucyBpbiBVSUhlbHBl
ci4KKworICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL21hYy9zY3JvbGxiYXJzL292ZXJsYXktc2Ny
b2xsYmFyLWhvdmVyZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9s
bGluZy9tYWMvc2Nyb2xsYmFycy9vdmVybGF5LXNjcm9sbGJhci1ob3ZlcmVkLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL21hYy9zY3JvbGxiYXJzL292ZXJsYXktc2Nyb2xs
YmFyLXJldmVhbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5n
L21hYy9zY3JvbGxiYXJzL292ZXJsYXktc2Nyb2xsYmFyLXJldmVhbC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvc2Nyb2xsYmFycy9vdmVybGF5LXNjcm9sbGJhci1z
dGF0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL21hYy9z
Y3JvbGxiYXJzL292ZXJsYXktc2Nyb2xsYmFyLXN0YXRlLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3Qvc2Nyb2xsaW5nL21hYy9zY3JvbGxiYXJzL3Njcm9sbGJhci1zdGF0ZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL21hYy9zY3JvbGxiYXJzL3Njcm9s
bGJhci1zdGF0ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiByZXNvdXJjZXMvdWktaGVscGVyLmpz
OgorICAgICAgICAod2luZG93LlVJSGVscGVyLmFzeW5jIG1vdXNlV2hlZWxNYXlCZWdpbkF0KToK
KyAgICAgICAgKHdpbmRvdy5VSUhlbHBlci5hc3luYyBtb3VzZVdoZWVsQ2FuY2VsQXQpOgorICAg
ICAgICAod2luZG93LlVJSGVscGVyLmFzeW5jIHdhaXRGb3JDb25kaXRpb24pOgorCiAyMDIwLTA1
LTAxICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFtN
U0VdIEF1ZGlvIHNlc3Npb24gY2F0ZWdvcnkgaXMgc29tZXRpbWVzIG5vdCBzZXQgY29ycmVjdGx5
IGFmdGVyIGNoYW5naW5nIHZpZGVvIHNvdXJjZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9zY3JvbGxpbmcvbWFjL3Njcm9sbGJhcnMvb3ZlcmxheS1zY3JvbGxiYXItaG92ZXJlZC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvc2Nyb2xsYmFycy9vdmVy
bGF5LXNjcm9sbGJhci1ob3ZlcmVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzZiY2UyNWI0
MDA5OWRjNWY2ZDlkYzgyYzY1NWVlMmM1YzQ2NGEwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL3Njcm9sbGJhcnMvb3ZlcmxheS1zY3JvbGxiYXItaG92
ZXJlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorVGVzdCBob3ZlciBvdmVyIG92ZXJs
YXkgc2Nyb2xsYmFyCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitEb2N1bWVudAor
ZW5hYmxlZAorSG92ZXJpbmcgdmVydGljYWwgc2Nyb2xsYmFyIHNob3VsZCBzaG93IGV4cGFuZGVk
IHNjcm9sbGJhcgorUEFTUyBTY3JvbGxiYXIgc3RhdGU6IGVuYWJsZWQsZXhwYW5kZWQsdmlzaWJs
ZV90cmFjayx2aXNpYmxlX3RodW1iCitVbmhvdmVyaW5nIHZlcnRpY2FsIHNjcm9sbGJhciBzaG91
bGQgaGlkZSBpdAorUEFTUyBUaHVtYiBhbmQgdHJhY2sgaGlkZGVuCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvbWFjL3Njcm9sbGJhcnMvb3ZlcmxheS1zY3JvbGxiYXItaG92ZXJl
ZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL3Njcm9sbGJhcnMvb3Zlcmxh
eS1zY3JvbGxiYXItaG92ZXJlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViNmYwYmMxMmFkYzU4ODJlYjBi
N2IxMThkYWM3YzcxYjEyOGZlN2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L3Njcm9sbGluZy9tYWMvc2Nyb2xsYmFycy9vdmVybGF5LXNjcm9sbGJhci1ob3ZlcmVkLmh0bWwK
QEAgLTAsMCArMSw2NiBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVy
IFsgaW50ZXJuYWw6dXNlTW9ja1Njcm9sbGJhcnM9ZmFsc2UgXSAtLT4KKzxodG1sPgorPGhlYWQ+
CisgICAgPHN0eWxlPgorICAgICAgICBib2R5IHsKKyAgICAgICAgICAgIGhlaWdodDogMTAwMHB4
OworICAgICAgICB9CisgICAgPC9zdHlsZT4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+CisgICAgCisgICAgPHNj
cmlwdD4KKyAgICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgICAgIAorICAgICAgICB3
aW5kb3cuaW50ZXJuYWxzLnNldFVzZXNPdmVybGF5U2Nyb2xsYmFycyh0cnVlKTsKKworICAgICAg
ICBhc3luYyBmdW5jdGlvbiBkb1Rlc3QoKQorICAgICAgICB7CisgICAgICAgICAgICBkZXNjcmlw
dGlvbignVGVzdCBob3ZlciBvdmVyIG92ZXJsYXkgc2Nyb2xsYmFyJyk7CisgICAgICAgICAgICBp
ZiAoIXdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBkZWJ1ZygnRG9jdW1lbnQnKTsKKyAgICAgICAgICAgIGRlYnVnKGlu
dGVybmFscy52ZXJ0aWNhbFNjcm9sbGJhclN0YXRlKCkpOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBsZXQgd2luZG93V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDsKKworICAgICAgICAgICAg
ZGVidWcoJ0hvdmVyaW5nIHZlcnRpY2FsIHNjcm9sbGJhciBzaG91bGQgc2hvdyBleHBhbmRlZCBz
Y3JvbGxiYXInKTsKKyAgICAgICAgICAgIGF3YWl0IFVJSGVscGVyLm1vdXNlV2hlZWxTY3JvbGxB
dCh3aW5kb3dXaWR0aCAtIDgsIDEwKTsKKyAgICAgICAgICAgIGF3YWl0IFVJSGVscGVyLndhaXRG
b3JDb25kaXRpb24oKCkgPT4geworICAgICAgICAgICAgICAgIGxldCBzdGF0ZSA9IGludGVybmFs
cy52ZXJ0aWNhbFNjcm9sbGJhclN0YXRlKCk7CisgICAgICAgICAgICAgICAgbGV0IGV4cGFuZGVk
ID0gc3RhdGUuaW5kZXhPZignZXhwYW5kZWQnKSAhPSAtMTsKKyAgICAgICAgICAgICAgICBpZiAo
ZXhwYW5kZWQpCisgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoJ1Njcm9sbGJhciBzdGF0
ZTogJyArIHN0YXRlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZXhwYW5kZWQ7CisgICAgICAg
ICAgICB9KTsKKworICAgICAgICAgICAgZGVidWcoJ1VuaG92ZXJpbmcgdmVydGljYWwgc2Nyb2xs
YmFyIHNob3VsZCBoaWRlIGl0Jyk7CisgICAgICAgICAgICBhd2FpdCBVSUhlbHBlci5tb3ZlTW91
c2VBbmRXYWl0Rm9yRnJhbWUod2luZG93V2lkdGggLSAyMCwgMTApOworICAgICAgICAgICAgYXdh
aXQgVUlIZWxwZXIud2FpdEZvckNvbmRpdGlvbigoKSA9PiB7CisgICAgICAgICAgICAgICAgbGV0
IHN0YXRlID0gaW50ZXJuYWxzLnZlcnRpY2FsU2Nyb2xsYmFyU3RhdGUoKTsKKyAgICAgICAgICAg
ICAgICBsZXQgdGh1bWJIaWRkZW4gPSBzdGF0ZS5pbmRleE9mKCd2aXNpYmxlX3RodW1iJykgPT0g
LTE7CisgICAgICAgICAgICAgICAgbGV0IHRyYWNrSGlkZGVuID0gc3RhdGUuaW5kZXhPZigndmlz
aWJsZV90cmFjaycpID09IC0xOworICAgICAgICAgICAgICAgIGlmICh0aHVtYkhpZGRlbiAmJiB0
cmFja0hpZGRlbikKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgnVGh1bWIgYW5kIHRy
YWNrIGhpZGRlbicpOworICAgICAgICAgICAgICAgIHJldHVybiB0aHVtYkhpZGRlbiAmJiB0cmFj
a0hpZGRlbjsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgfQorCisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgKCkg
PT4geworICAgICAgICAgICAgZG9UZXN0KCk7CisgICAgICAgIH0sIGZhbHNlKTsKKyAgICA8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYgY2xhc3M9ImF1dG8gc2Nyb2xsZXIiPgor
ICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50cyI+PC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRp
diBjbGFzcz0ic2Nyb2xsIHNjcm9sbGVyIj4KKyAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudHMi
PjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9zY3JvbGxiYXJzL292ZXJsYXktc2Ny
b2xsYmFyLXJldmVhbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9t
YWMvc2Nyb2xsYmFycy9vdmVybGF5LXNjcm9sbGJhci1yZXZlYWwtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjdmZWY1YWZiOTUxZGZiZTQ2ZjE5MWI4OGE3MmM0ZWViYmFmZGYxZjQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvc2Nyb2xsYmFycy9vdmVy
bGF5LXNjcm9sbGJhci1yZXZlYWwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1Rlc3Qg
bWF5YmVnaW4gYW5kIGNhbmNlbGxlZAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
RG9jdW1lbnQKK2VuYWJsZWQKK01heUJlZ2luIHNob3VsZCBzaG93IHRoZSBzY3JvbGxiYXIKK1BB
U1MgU2Nyb2xsYmFyIHN0YXRlOiBlbmFibGVkLHZpc2libGVfdGh1bWIKK0NhbmNlbGxlZCBzaG91
bGQgaGlkZSB0aGUgc2Nyb2xsYmFyCitQQVNTIFNjcm9sbGJhciBzdGF0ZTogZW5hYmxlZAorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9zY3JvbGxiYXJzL292ZXJsYXktc2Ny
b2xsYmFyLXJldmVhbC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL3Njcm9s
bGJhcnMvb3ZlcmxheS1zY3JvbGxiYXItcmV2ZWFsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTBlZTkxOTE4
OTNiNzU0YTU5MWE3ZjNlY2MyOTM0ZTQ4YWZjNzE2YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9zY3JvbGxiYXJzL292ZXJsYXktc2Nyb2xsYmFyLXJl
dmVhbC5odG1sCkBAIC0wLDAgKzEsNjYgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10
ZXN0LXJ1bm5lciBbIGludGVybmFsOnVzZU1vY2tTY3JvbGxiYXJzPWZhbHNlIF0gLS0+Cis8aHRt
bD4KKzxoZWFkPgorICAgIDxzdHlsZT4KKyAgICAgICAgYm9keSB7CisgICAgICAgICAgICBoZWln
aHQ6IDEwMDBweDsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAg
IAorICAgIDxzY3JpcHQ+CisgICAgICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgICAgICAK
KyAgICAgICAgd2luZG93LmludGVybmFscy5zZXRVc2VzT3ZlcmxheVNjcm9sbGJhcnModHJ1ZSk7
CisKKyAgICAgICAgYXN5bmMgZnVuY3Rpb24gZG9UZXN0KCkKKyAgICAgICAgeworICAgICAgICAg
ICAgZGVzY3JpcHRpb24oJ1Rlc3QgbWF5YmVnaW4gYW5kIGNhbmNlbGxlZCcpOworICAgICAgICAg
ICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgZGVidWcoJ0RvY3VtZW50Jyk7CisgICAgICAgICAgICBkZWJ1
ZyhpbnRlcm5hbHMudmVydGljYWxTY3JvbGxiYXJTdGF0ZSgpKTsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgbGV0IHdpbmRvd1dpZHRoID0gd2luZG93LmlubmVyV2lkdGg7CisKKyAgICAgICAg
ICAgIGRlYnVnKCdNYXlCZWdpbiBzaG91bGQgc2hvdyB0aGUgc2Nyb2xsYmFyJyk7CisgICAgICAg
ICAgICBhd2FpdCBVSUhlbHBlci5tb3VzZVdoZWVsTWF5QmVnaW5BdCgxMDAsIDEwMCk7CisgICAg
ICAgICAgICBhd2FpdCBVSUhlbHBlci53YWl0Rm9yQ29uZGl0aW9uKCgpID0+IHsKKyAgICAgICAg
ICAgICAgICBsZXQgc3RhdGUgPSBpbnRlcm5hbHMudmVydGljYWxTY3JvbGxiYXJTdGF0ZSgpOwor
ICAgICAgICAgICAgICAgIGxldCB2aXNpYmxlID0gc3RhdGUuaW5kZXhPZigndmlzaWJsZV90aHVt
YicpICE9IC0xOworICAgICAgICAgICAgICAgIGlmICh2aXNpYmxlKQorICAgICAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCdTY3JvbGxiYXIgc3RhdGU6ICcgKyBzdGF0ZSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHZpc2libGU7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgZGVi
dWcoJ0NhbmNlbGxlZCBzaG91bGQgaGlkZSB0aGUgc2Nyb2xsYmFyJyk7CisgICAgICAgICAgICBh
d2FpdCBVSUhlbHBlci5tb3VzZVdoZWVsQ2FuY2VsQXQoMTAwLCAxMDApOworCisgICAgICAgICAg
ICBhd2FpdCBVSUhlbHBlci53YWl0Rm9yQ29uZGl0aW9uKCgpID0+IHsKKyAgICAgICAgICAgICAg
ICBsZXQgc3RhdGUgPSBpbnRlcm5hbHMudmVydGljYWxTY3JvbGxiYXJTdGF0ZSgpOworICAgICAg
ICAgICAgICAgIGxldCBoaWRkZW4gPSBzdGF0ZS5pbmRleE9mKCd2aXNpYmxlX3RodW1iJykgPT0g
LTE7CisgICAgICAgICAgICAgICAgaWYgKGhpZGRlbikKKyAgICAgICAgICAgICAgICAgICAgdGVz
dFBhc3NlZCgnU2Nyb2xsYmFyIHN0YXRlOiAnICsgc3RhdGUpOworICAgICAgICAgICAgICAgIHJl
dHVybiBoaWRkZW47CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgZmluaXNoSlNUZXN0
KCk7CisgICAgICAgIH0KKworICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcs
ICgpID0+IHsKKyAgICAgICAgICAgIGRvVGVzdCgpOworICAgICAgICB9LCBmYWxzZSk7CisgICAg
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGNsYXNzPSJhdXRvIHNjcm9sbGVy
Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudHMiPjwvZGl2PgorICAgIDwvZGl2PgorICAg
IDxkaXYgY2xhc3M9InNjcm9sbCBzY3JvbGxlciI+CisgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRl
bnRzIj48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvc2Nyb2xsYmFycy9vdmVybGF5
LXNjcm9sbGJhci1zdGF0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGlu
Zy9tYWMvc2Nyb2xsYmFycy9vdmVybGF5LXNjcm9sbGJhci1zdGF0ZS1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjM3YmQ1ZDU0YWQ4ZmNiMzllZTkwNGRlODk4NzVhN2RhZTRlZjI0NAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9zY3JvbGxiYXJzL292
ZXJsYXktc2Nyb2xsYmFyLXN0YXRlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACitUZXN0
IHNjcm9sbGJhciBzdGF0ZSBpbnRlcm5hbHMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK0RvY3VtZW50CitlbmFibGVkCitub25lCitvdmVyZmxvdzphdXRvCitQQVNTIGludGVybmFs
cy52ZXJ0aWNhbFNjcm9sbGJhclN0YXRlKGF1dG9TY3JvbGxlcikgaXMgImVuYWJsZWQiCitQQVNT
IGludGVybmFscy5ob3Jpem9udGFsU2Nyb2xsYmFyU3RhdGUoYXV0b1Njcm9sbGVyKSBpcyAibm9u
ZSIKK292ZXJmbG93OnNjcm9sbAorUEFTUyBpbnRlcm5hbHMudmVydGljYWxTY3JvbGxiYXJTdGF0
ZShzY3JvbGxTY3JvbGxlcikgaXMgImVuYWJsZWQiCitQQVNTIGludGVybmFscy5ob3Jpem9udGFs
U2Nyb2xsYmFyU3RhdGUoc2Nyb2xsU2Nyb2xsZXIpIGlzICJub25lIgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9zY3JvbGxiYXJzL292ZXJsYXktc2Nyb2xsYmFyLXN0YXRl
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvc2Nyb2xsYmFycy9vdmVybGF5
LXNjcm9sbGJhci1zdGF0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhZmMzYTFhNGM2N2RhMWI0MTc5OGVm
Mjk0MzQ0MGZmNmY5NmRhOWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Nj
cm9sbGluZy9tYWMvc2Nyb2xsYmFycy9vdmVybGF5LXNjcm9sbGJhci1zdGF0ZS5odG1sCkBAIC0w
LDAgKzEsNjYgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGlu
dGVybmFsOnVzZU1vY2tTY3JvbGxiYXJzPWZhbHNlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorICAg
IDxzdHlsZT4KKyAgICAgICAgYm9keSB7CisgICAgICAgICAgICBoZWlnaHQ6IDEwMDBweDsKKyAg
ICAgICAgfQorICAgICAgICAuc2Nyb2xsZXIgeworICAgICAgICAgICAgbWFyZ2luOiAxMHB4Owor
ICAgICAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAg
ICAgICAgfQorICAgICAgICAuY29udGVudHMgeworICAgICAgICAgICAgd2lkdGg6IDEwMCU7Cisg
ICAgICAgICAgICBoZWlnaHQ6IDIwMCU7CisgICAgICAgIH0KKyAgICAgICAgLmF1dG8geworICAg
ICAgICAgICAgb3ZlcmZsb3c6IGF1dG87CisgICAgICAgIH0KKyAgICAgICAgLnNjcm9sbCB7Cisg
ICAgICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgICAgICB9CisgICAgPC9zdHlsZT4KKyAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0PgorICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICAg
ICAgCisgICAgICAgIGxldCBhdXRvU2Nyb2xsZXI7CisgICAgICAgIGxldCBzY3JvbGxTY3JvbGxl
cjsKKyAgICAgICAgCisgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0VXNlc092ZXJsYXlTY3Jv
bGxiYXJzKHRydWUpOworCisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywg
KCkgPT4geworICAgICAgICAgICAgZGVzY3JpcHRpb24oJ1Rlc3Qgc2Nyb2xsYmFyIHN0YXRlIGlu
dGVybmFscycpOworICAgICAgICAgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZGVidWcoJ0RvY3VtZW50
Jyk7CisgICAgICAgICAgICBkZWJ1ZyhpbnRlcm5hbHMudmVydGljYWxTY3JvbGxiYXJTdGF0ZSgp
KTsKKyAgICAgICAgICAgIGRlYnVnKGludGVybmFscy5ob3Jpem9udGFsU2Nyb2xsYmFyU3RhdGUo
KSk7CisKKyAgICAgICAgICAgIGF1dG9TY3JvbGxlciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Io
Jy5hdXRvLnNjcm9sbGVyJykKKyAgICAgICAgICAgIHNjcm9sbFNjcm9sbGVyID0gZG9jdW1lbnQu
cXVlcnlTZWxlY3RvcignLnNjcm9sbC5zY3JvbGxlcicpCisKKyAgICAgICAgICAgIGRlYnVnKCdv
dmVyZmxvdzphdXRvJyk7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2ludGVy
bmFscy52ZXJ0aWNhbFNjcm9sbGJhclN0YXRlKGF1dG9TY3JvbGxlciknLCAnZW5hYmxlZCcpOwor
ICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdpbnRlcm5hbHMuaG9yaXpvbnRhbFNj
cm9sbGJhclN0YXRlKGF1dG9TY3JvbGxlciknLCAnbm9uZScpOworCisgICAgICAgICAgICBkZWJ1
Zygnb3ZlcmZsb3c6c2Nyb2xsJyk7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
J2ludGVybmFscy52ZXJ0aWNhbFNjcm9sbGJhclN0YXRlKHNjcm9sbFNjcm9sbGVyKScsICdlbmFi
bGVkJyk7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2ludGVybmFscy5ob3Jp
em9udGFsU2Nyb2xsYmFyU3RhdGUoc2Nyb2xsU2Nyb2xsZXIpJywgJ25vbmUnKTsKKworICAgICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0sIGZhbHNlKTsKKyAgICA8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYgY2xhc3M9ImF1dG8gc2Nyb2xsZXIiPgorICAgICAg
ICA8ZGl2IGNsYXNzPSJjb250ZW50cyI+PC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdiBjbGFz
cz0ic2Nyb2xsIHNjcm9sbGVyIj4KKyAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudHMiPjwvZGl2
PgorICAgIDwvZGl2PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9zY3JvbGxiYXJzL3Njcm9sbGJhci1zdGF0ZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvc2Nyb2xsYmFycy9z
Y3JvbGxiYXItc3RhdGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljOWFmMDhhZjQyM2Q5ZTAw
NjZlMjkzMmIyMDNkYzFhNGQ5YjczYjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3Njcm9sbGluZy9tYWMvc2Nyb2xsYmFycy9zY3JvbGxiYXItc3RhdGUtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTggQEAKK1Rlc3Qgc2Nyb2xsYmFyIHN0YXRlIGludGVybmFscworCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworRG9jdW1lbnQKK1BBU1MgaW50ZXJuYWxzLnZlcnRp
Y2FsU2Nyb2xsYmFyU3RhdGUoKSBpcyAiZW5hYmxlZCIKK1BBU1MgaW50ZXJuYWxzLmhvcml6b250
YWxTY3JvbGxiYXJTdGF0ZSgpIGlzICJub25lIgorb3ZlcmZsb3c6YXV0bworUEFTUyBpbnRlcm5h
bHMudmVydGljYWxTY3JvbGxiYXJTdGF0ZShhdXRvU2Nyb2xsZXIpIGlzICJlbmFibGVkIgorUEFT
UyBpbnRlcm5hbHMuaG9yaXpvbnRhbFNjcm9sbGJhclN0YXRlKGF1dG9TY3JvbGxlcikgaXMgIm5v
bmUiCitvdmVyZmxvdzpzY3JvbGwKK1BBU1MgaW50ZXJuYWxzLnZlcnRpY2FsU2Nyb2xsYmFyU3Rh
dGUoc2Nyb2xsU2Nyb2xsZXIpIGlzICJlbmFibGVkIgorUEFTUyBpbnRlcm5hbHMuaG9yaXpvbnRh
bFNjcm9sbGJhclN0YXRlKHNjcm9sbFNjcm9sbGVyKSBpcyAiZGlzYWJsZWQiCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL3Njcm9sbGJhcnMvc2Nyb2xsYmFyLXN0YXRlLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvc2Nyb2xsYmFycy9zY3JvbGxiYXIt
c3RhdGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YWQ2YzY2ZWE1YWMxOWMyMWQ4OGQ4YWZmMzhmMGFhZmQ5
MWRiNzdlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFj
L3Njcm9sbGJhcnMvc2Nyb2xsYmFyLXN0YXRlLmh0bWwKQEAgLTAsMCArMSw2NCBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzdHlsZT4KKyAgICAgICAgYm9keSB7Cisg
ICAgICAgICAgICBoZWlnaHQ6IDEwMDBweDsKKyAgICAgICAgfQorICAgICAgICAuc2Nyb2xsZXIg
eworICAgICAgICAgICAgbWFyZ2luOiAxMHB4OworICAgICAgICAgICAgd2lkdGg6IDEwMHB4Owor
ICAgICAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgfQorICAgICAgICAuY29udGVudHMg
eworICAgICAgICAgICAgd2lkdGg6IDEwMCU7CisgICAgICAgICAgICBoZWlnaHQ6IDIwMCU7Cisg
ICAgICAgIH0KKyAgICAgICAgLmF1dG8geworICAgICAgICAgICAgb3ZlcmZsb3c6IGF1dG87Cisg
ICAgICAgIH0KKyAgICAgICAgLnNjcm9sbCB7CisgICAgICAgICAgICBvdmVyZmxvdzogc2Nyb2xs
OworICAgICAgICB9CisgICAgPC9zdHlsZT4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgICAg
ICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICAgICAgCisgICAgICAgIGxldCBhdXRvU2Nyb2xs
ZXI7CisgICAgICAgIGxldCBzY3JvbGxTY3JvbGxlcjsKKworICAgICAgICB3aW5kb3cuYWRkRXZl
bnRMaXN0ZW5lcignbG9hZCcsICgpID0+IHsKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uKCdUZXN0
IHNjcm9sbGJhciBzdGF0ZSBpbnRlcm5hbHMnKTsKKyAgICAgICAgICAgIGlmICghd2luZG93Lmlu
dGVybmFscykKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGRlYnVnKCdEb2N1bWVudCcpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCdpbnRlcm5hbHMudmVydGljYWxTY3JvbGxiYXJTdGF0ZSgpJywgJ2VuYWJsZWQnKTsKKyAgICAg
ICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnaW50ZXJuYWxzLmhvcml6b250YWxTY3JvbGxi
YXJTdGF0ZSgpJywgJ25vbmUnKTsKKworICAgICAgICAgICAgYXV0b1Njcm9sbGVyID0gZG9jdW1l
bnQucXVlcnlTZWxlY3RvcignLmF1dG8uc2Nyb2xsZXInKQorICAgICAgICAgICAgc2Nyb2xsU2Ny
b2xsZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2Nyb2xsLnNjcm9sbGVyJykKKworICAg
ICAgICAgICAgZGVidWcoJ292ZXJmbG93OmF1dG8nKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygnaW50ZXJuYWxzLnZlcnRpY2FsU2Nyb2xsYmFyU3RhdGUoYXV0b1Njcm9sbGVy
KScsICdlbmFibGVkJyk7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2ludGVy
bmFscy5ob3Jpem9udGFsU2Nyb2xsYmFyU3RhdGUoYXV0b1Njcm9sbGVyKScsICdub25lJyk7CisK
KyAgICAgICAgICAgIGRlYnVnKCdvdmVyZmxvdzpzY3JvbGwnKTsKKyAgICAgICAgICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygnaW50ZXJuYWxzLnZlcnRpY2FsU2Nyb2xsYmFyU3RhdGUoc2Nyb2xs
U2Nyb2xsZXIpJywgJ2VuYWJsZWQnKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygnaW50ZXJuYWxzLmhvcml6b250YWxTY3JvbGxiYXJTdGF0ZShzY3JvbGxTY3JvbGxlciknLCAn
ZGlzYWJsZWQnKTsKKworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0sIGZh
bHNlKTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYgY2xhc3M9ImF1
dG8gc2Nyb2xsZXIiPgorICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50cyI+PC9kaXY+CisgICAg
PC9kaXY+CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsIHNjcm9sbGVyIj4KKyAgICAgICAgPGRpdiBj
bGFzcz0iY29udGVudHMiPjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Jlc291cmNlcy91aS1oZWxwZXIuanMgYi9M
YXlvdXRUZXN0cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzCmluZGV4IDJkMWRlZjIzOWYwNDhlNzc5
Zjg5ZDk2MzI3MzJmNThkODQ0YzQwMmUuLmQzN2UxOWQ2ZTdkNDE5OTU0YmE0Njk5OTdkM2YxMWJl
MjJmODNmZDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Jlc291cmNlcy91aS1oZWxwZXIuanMK
KysrIGIvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3VpLWhlbHBlci5qcwpAQCAtNTksNiArNTksMjAg
QEAgd2luZG93LlVJSGVscGVyID0gY2xhc3MgVUlIZWxwZXIgewogICAgICAgICB9KTsKICAgICB9
CiAKKyAgICBzdGF0aWMgYXN5bmMgbW91c2VXaGVlbE1heUJlZ2luQXQoeCwgeSkKKyAgICB7Cisg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoeCwgeSwgIm1heWJlZ2lu
IiwgIm5vbmUiKTsKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuYW5pbWF0aW9uRnJhbWUoKTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgYXN5bmMgbW91c2VXaGVlbENhbmNlbEF0KHgsIHkpCisgICAgewor
ICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKHgsIHksICJjYW5jZWxs
ZWQiLCAibm9uZSIpOworICAgICAgICBhd2FpdCBVSUhlbHBlci5hbmltYXRpb25GcmFtZSgpOwor
ICAgIH0KKwogICAgIHN0YXRpYyBhc3luYyB3YWl0Rm9yU2Nyb2xsQ29tcGxldGlvbigpCiAgICAg
ewogICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CkBAIC03Myw2ICs4Nywx
MyBAQCB3aW5kb3cuVUlIZWxwZXIgPSBjbGFzcyBVSUhlbHBlciB7CiAgICAgICAgIHJldHVybiBu
ZXcgUHJvbWlzZShyZXF1ZXN0QW5pbWF0aW9uRnJhbWUpOwogICAgIH0KIAorICAgIHN0YXRpYyBh
c3luYyB3YWl0Rm9yQ29uZGl0aW9uKGNvbmRpdGlvbkZ1bmMpCisgICAgeworICAgICAgICB3aGls
ZSAoIWNvbmRpdGlvbkZ1bmMoKSkgeworICAgICAgICAgICAgYXdhaXQgVUlIZWxwZXIuYW5pbWF0
aW9uRnJhbWUoKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHN0YXRpYyBzZW5kRXZlbnRTdHJl
YW0oZXZlbnRTdHJlYW0pCiAgICAgewogICAgICAgICBjb25zdCBldmVudFN0cmVhbUFzU3RyaW5n
ID0gSlNPTi5zdHJpbmdpZnkoZXZlbnRTdHJlYW0pOwo=
</data>
<flag name="commit-queue"
          id="413680"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>