<?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>125840</bug_id>
          
          <creation_ts>2013-12-16 23:40:06 -0800</creation_ts>
          <short_desc>Have XHR.getResponseHeader() return null and XHR.getAllResponseHeaders() return empty string in initial ready states</short_desc>
          <delta_ts>2014-01-29 08:59:26 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>XML</component>
          <version>528+ (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>BlinkMergeCandidate</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>ap</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>d-r</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>rniwa</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>960418</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-12-16 23:40:06 -0800</bug_when>
    <thetext>Consider merging https://chromium.googlesource.com/chromium/blink/+/d201caf874a0bd6f101f517462b3cf1d8c5fce3d

Follow the XMLHttpRequest specification for getResponseHeader() and
return null if the object is in ready states {UNSENT, OPENED}.

Similarly for getAllResponseHeaders() and returning &quot;&quot; (the empty
string) when in these initial two ready states.

This replaces the older spec behavior of throwing InvalidStateError,
something that no other engines currently do, hence cross-browser
compatibility risk is low.

When reconciling the relevant tests, reworked these to use
js-test-{pre,post}.js instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960419</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-12-16 23:42:20 -0800</bug_when>
    <thetext>Also see https://chromium.googlesource.com/chromium/blink/+/7387fe5c5e40100e9219cd89c71970829eb5108d</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960420</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-12-16 23:45:38 -0800</bug_when>
    <thetext>Is this a duplicate of bug 45994?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960422</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-12-16 23:49:52 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Is this a duplicate of bug 45994?

Slightly different one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960766</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-12-17 17:47:32 -0800</bug_when>
    <thetext>Also see https://chromium.googlesource.com/chromium/blink/+/39ac9a416be6499ff63cb9e90138a66e7f7a8557</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960958</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-12-18 09:36:31 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; Is this a duplicate of bug 45994?
&gt; 
&gt; Slightly different one.

Could you please elaborate on what the difference is, and whether we need to keep both bugs?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961316</commentid>
    <comment_count>6</comment_count>
      <attachid>219631</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2013-12-19 01:02:10 -0800</bug_when>
    <thetext>Created attachment 219631
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961317</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2013-12-19 01:04:55 -0800</bug_when>
    <thetext>Patch also aligns with W3C/WPT tests XMLHttpRequest/getresponseheader-error-state.htm and getresponseheader-unsent-opened-state.htm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961322</commentid>
    <comment_count>8</comment_count>
      <attachid>219631</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-12-19 01:47:06 -0800</bug_when>
    <thetext>Comment on attachment 219631
Patch

Attachment 219631 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/49828187</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961324</commentid>
    <comment_count>9</comment_count>
      <attachid>219631</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-12-19 02:09:16 -0800</bug_when>
    <thetext>Comment on attachment 219631
Patch

Attachment 219631 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/47398007</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961326</commentid>
    <comment_count>10</comment_count>
      <attachid>219631</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-12-19 02:18:27 -0800</bug_when>
    <thetext>Comment on attachment 219631
Patch

Attachment 219631 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/48388164</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961328</commentid>
    <comment_count>11</comment_count>
      <attachid>219634</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2013-12-19 02:22:28 -0800</bug_when>
    <thetext>Created attachment 219634
fixing IDL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961372</commentid>
    <comment_count>12</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2013-12-19 06:44:38 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #3)
&gt; &gt; (In reply to comment #2)
&gt; &gt; &gt; Is this a duplicate of bug 45994?
&gt; &gt; 
&gt; &gt; Slightly different one.
&gt; 
&gt; Could you please elaborate on what the difference is, and whether we need to keep both bugs?

I had not checked the thread messages before...
Checking bug 45994, it makes sense to me to migrate that patch (probably with the related blink clearResponse method update) into 45994 patch if that helps the review process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965079</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-07 11:01:47 -0800</bug_when>
    <thetext>&gt; if that helps the review process

It would certainly help me to have clarity about how these bugs are related.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965792</commentid>
    <comment_count>14</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2014-01-09 00:11:13 -0800</bug_when>
    <thetext>FWIU, the relationship lies in the fact that the behavior of getResponseHeader(), getAllResponseHeaders(), status and statusText should be consistent when the request is not sent:
- In the past (http://www.w3.org/TR/2009/WD-XMLHttpRequest2-20090820/), an InvalidStateError was thrown when state was UNSENT or OPENED.
- Since http://www.w3.org/TR/2010/WD-XMLHttpRequest2-20100907, the behavior was changed to return null/O/empty string.

I do not think that there is any other &quot;code interaction&quot; between the two bugs.
Given that bug 45994 description is now focused on status/statusText, it seems to make sense to process those two in parallel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965985</commentid>
    <comment_count>15</comment_count>
      <attachid>219634</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-09 10:55:53 -0800</bug_when>
    <thetext>Comment on attachment 219634
fixing IDL

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        Have XHR.getResponseHeader() return null in initial ready states

Here and in the bug title, please mention getAllResponseHeaders as well.

&gt; Source/WebCore/ChangeLog:8
&gt; +        Merging https://chromium.googlesource.com/chromium/blink/+/d201caf874a0bd6f101f517462b3cf1d8c5fce3d

What do other browsers do? The spec changed many times over the last few years, and it can&apos;t be taken very seriously.

&gt; Source/WebCore/xml/XMLHttpRequest.cpp:1013
&gt; +    if (m_state &lt; HEADERS_RECEIVED || m_error)

Why was &quot;|| m_error&quot; added here? This is not mentioned in ChangeLog.

If this is a behavior change, it should be landed in a separate patch to facilitate regression testing when a site breaks. If there is no behavior change, why is the code changed? I&apos;m not sure if there is any test coverage for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966304</commentid>
    <comment_count>16</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2014-01-10 02:35:16 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; What do other browsers do? The spec changed many times over the last few years, and it can&apos;t be taken very seriously.
&gt; 

Firefox is aligned with the patch and latest spec.
Blink recently aligned to it as well.

&gt; &gt; Source/WebCore/xml/XMLHttpRequest.cpp:1013
&gt; &gt; +    if (m_state &lt; HEADERS_RECEIVED || m_error)
&gt; 
&gt; Why was &quot;|| m_error&quot; added here? This is not mentioned in ChangeLog.
&gt; 

It makes it clearer that the code is aligned with the spec.
The code is also made more robust.

&gt; If this is a behavior change, it should be landed in a separate patch to facilitate regression testing when a site breaks. If there is no behavior change, why is the code changed? I&apos;m not sure if there is any test coverage for this.

I can add a test to cover the &quot;m_error&quot; check (e.g. xhr.send();xhr.abort();).
The test would pass today without the patch: the current code is already aligned with the spec in most cases, m_response is cleared when m_error is set to true.

There may be corner cases though but I am not aware of any right now.
Filing a separate bug may therefore be safer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967349</commentid>
    <comment_count>17</comment_count>
      <attachid>221050</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2014-01-13 08:54:13 -0800</bug_when>
    <thetext>Created attachment 221050
fixed change logs and added test case for new code path

patch contains a new test that check getResponseHeader and getAllResponseHeader when state is DONE and error flag is set. The test is passing with and without the patch but it allows exercicing the new code path introduced in the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970182</commentid>
    <comment_count>18</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2014-01-20 23:43:32 -0800</bug_when>
    <thetext>&gt; There may be corner cases though but I am not aware of any right now.
&gt; Filing a separate bug may therefore be safer?

Here is potentially such a corner case:

var xhr = new XMLHttpRequest()
xhr.onprogress = function(e) {
    // abort will trigger window.onload
    xhr.abort()
}
window.onload = function () {
    // error flag is set to true but response headers are not yet cleared 
    // without the patch, getResponseHeader will NOT return null
    // with the patch, getResponseHeader  will return null
    ...
}
xhr.onreadystatechange = function() {
    if (xhr.readyState == xhr.DONE) {
        // with and without the patch, getResponseHeader will return null
        ...
     }
}
// give time to abort on progress event
xhr.open(&quot;GET&quot;, &quot;/resources/load-and-stall.cgi?name=response-access-on-error.html&amp;stallFor=0.1&amp;stallAt=100&amp;mimeType=text/html&quot;, true)
xhr.setRequestHeader(&quot;Content-Type&quot;,&quot;text/plain&quot;)
xhr.send(null)

This may also apply to bug 45994 and bug 127050</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973370</commentid>
    <comment_count>19</comment_count>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2014-01-29 08:08:52 -0800</bug_when>
    <thetext>I see you set this to cq? - Did you intend to set it to cq+? Or were you waiting for a committer to cq+ this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973380</commentid>
    <comment_count>20</comment_count>
      <attachid>221050</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-29 08:59:22 -0800</bug_when>
    <thetext>Comment on attachment 221050
fixed change logs and added test case for new code path

Clearing flags on attachment: 221050

Committed r163022: &lt;http://trac.webkit.org/changeset/163022&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973381</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-29 08:59:26 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219631</attachid>
            <date>2013-12-19 01:02:10 -0800</date>
            <delta_ts>2013-12-19 02:22:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-125840-20131219100014.patch</filename>
            <type>text/plain</type>
            <size>25598</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYwNzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWZhMmMyOGYyZTRiMDMx
ZjNlMWYyOTBmN2NmYzBhNDlmYzEyNGVlOS4uM2NmNDk3Zjc3YzFkMTljNWRjODY1MGMxYTFkZmY1
OGY0NDY4ODdhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEzLTEyLTE5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uZkBnbWFpbC5jb20+CisKKyAgICAgICAgSGF2ZSBYSFIuZ2V0UmVz
cG9uc2VIZWFkZXIoKSByZXR1cm4gbnVsbCBpbiBpbml0aWFsIHJlYWR5IHN0YXRlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1ODQwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWVyZ2luZyBodHRwczov
L2Nocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vYmxpbmsvKy9kMjAxY2FmODc0YTBi
ZDZmMTAxZjUxNzQ2MmIzY2YxZDhjNWZjZTNkCisKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVl
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmdldEFsbFJlc3BvbnNl
SGVhZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Z2V0UmVzcG9uc2VI
ZWFkZXIpOgorCiAyMDEzLTEyLTE3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBVcGRhdGUgR09iamVjdCBET00gc3ltYm9s
cyBmaWxlIGFmdGVyIHIxNjAzMzYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApp
bmRleCBmOWIzZWRkNjMxZjFjMWUwZWUwZTE5ODA3MjBiMzczNWZkNWYxNzAxLi5lNTdjNzdiMzM1
OGI2MDBmM2Q1Y2IxOWIwZGE1ZTUwMmNiYWNhYjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKQEAgLTEwMTAsMTAgKzEwMTAsOCBAQCBTdHJpbmcgWE1MSHR0cFJlcXVlc3Q6
OmdldFJlcXVlc3RIZWFkZXIoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAogCiBTdHJp
bmcgWE1MSHR0cFJlcXVlc3Q6OmdldEFsbFJlc3BvbnNlSGVhZGVycyhFeGNlcHRpb25Db2RlJiBl
YykgY29uc3QKIHsKLSAgICBpZiAobV9zdGF0ZSA8IEhFQURFUlNfUkVDRUlWRUQpIHsKLSAgICAg
ICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICBpZiAobV9zdGF0ZSA8IEhFQURFUlNfUkVD
RUlWRUQgfHwgbV9lcnJvcikKICAgICAgICAgcmV0dXJuICIiOwotICAgIH0KIAogICAgIFN0cmlu
Z0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKIApAQCAtMTA0NiwxMCArMTA0NCw4IEBAIFN0cmluZyBY
TUxIdHRwUmVxdWVzdDo6Z2V0QWxsUmVzcG9uc2VIZWFkZXJzKEV4Y2VwdGlvbkNvZGUmIGVjKSBj
b25zdAogCiBTdHJpbmcgWE1MSHR0cFJlcXVlc3Q6OmdldFJlc3BvbnNlSGVhZGVyKGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7Ci0gICAgaWYgKG1f
c3RhdGUgPCBIRUFERVJTX1JFQ0VJVkVEKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9F
UlI7CisgICAgaWYgKG1fc3RhdGUgPCBIRUFERVJTX1JFQ0VJVkVEIHx8IG1fZXJyb3IpCiAgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICB9CiAKICAgICAvLyBTZWUgY29tbWVudCBpbiBnZXRB
bGxSZXNwb25zZUhlYWRlcnMgYWJvdmUuCiAgICAgaWYgKGlzU2V0Q29va2llSGVhZGVyKG5hbWUp
ICYmICFzZWN1cml0eU9yaWdpbigpLT5jYW5Mb2FkTG9jYWxSZXNvdXJjZXMoKSkgewpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGE1NmExZTRhOGEwZjliYTE0ZjkxYTQwYzM4ODg2YzBmZTRhZDJkZGEuLjM4ZWJhZmM5ODE4ZTE2
ZDY3YmJiOWQ3MDRmOTkxMzhkYzdhMDY4NTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMy0x
Mi0xOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubmZAZ21haWwuY29tPgorCisgICAgICAgIEhhdmUg
WEhSLmdldFJlc3BvbnNlSGVhZGVyKCkgcmV0dXJuIG51bGwgaW4gaW5pdGlhbCByZWFkeSBzdGF0
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTg0
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1lcmdp
bmcgaHR0cHM6Ly9jaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL2JsaW5rLysvZDIw
MWNhZjg3NGEwYmQ2ZjEwMWY1MTc0NjJiM2NmMWQ4YzVmY2UzZAorCisgICAgICAgICogaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9nZXRBbGxSZXNwb25zZUhlYWRlcnMtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvZ2V0QWxsUmVzcG9uc2VIZWFkZXJz
Lmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9nZXRSZXNwb25zZUhl
YWRlci1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9n
ZXRSZXNwb25zZUhlYWRlci5odG1sOgorCiAyMDEzLTEyLTE3ICBNYXJpbyBTYW5jaGV6IFByYWRh
ICA8bWFyaW8ucHJhZGFAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0dUS11bV0syXSByb3dBdElu
ZGV4IGlzIG5vdCBpbXBsZW1lbnRlZCBpbiBEUlQvV0tUUgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9nZXRBbGxSZXNwb25zZUhlYWRlcnMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9nZXRBbGxSZXNw
b25zZUhlYWRlcnMtZXhwZWN0ZWQudHh0CmluZGV4IDgwNTY0MWUyODMxNjRiYzFjM2VhYjFmZWYx
MzVlNTk0MDg1Yjg1NDEuLjQ0OTZjOGM1ZjVkOTAxMjhkMWE5YTgzZWFhYzNiZmFmMTZjZDE0ZjIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvZ2V0QWxs
UmVzcG9uc2VIZWFkZXJzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L2dldEFsbFJlc3BvbnNlSGVhZGVycy1leHBlY3RlZC50eHQKQEAgLTEs
MTAgKzEsMjcgQEAKLVRlc3QgcGFnZSBmb3IgYnVnIDE1MzU2IGFuZCBidWcgMjkxMjEKK1Rlc3Qg
dGhlIHJlcXVpcmVkIGJlaGF2aW9yIG9mIFhNTEh0dHBSZXF1ZXN0LmdldEFsbFJlc3BvbnNlSGVh
ZGVycygpCiAKLUFzc2VydGlvbjogSW52b2tpbmcgZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIG1ldGhv
ZCB3aGVuIHJlYWR5U3RhdGUgPj0gMiAoSEVBREVSU19SRUNFSVZFRCkgc2hvdWxkIHJldHVybiBh
IGNvbmZvcm1pbmcgbGlzdCBvZiBoZWFkZXJzLgorT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgog
Ci1QQVNTRUQgMAotUEFTU0VEIDEKLVBBU1NFRCAyOiBnZXRBbGxSZXNwb25zZUhlYWRlcnMgcmV0
dXJuZWQgd2hhdCBsb29rcyBsaWtlIGEgY29uZm9ybWluZyBoZWFkZXJsaXN0LgotUEFTU0VEIDMK
LVBBU1NFRCA0CisKK1BBU1Mge3N0YXRlOiAwfTsgaGVhZGVyVmFsdWVzID0geGhyLmdldEFsbFJl
c3BvbnNlSGVhZGVycygpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaGVhZGVyVmFs
dWVzIGlzIHRoZSBlbXB0eSBzdHJpbmcKK1BBU1Mge3N0YXRlOiAxfTsgaGVhZGVyVmFsdWVzID0g
eGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BB
U1MgaGVhZGVyVmFsdWVzIGlzIHRoZSBlbXB0eSBzdHJpbmcKK1BBU1MgZ2V0QWxsUmVzcG9uc2VI
ZWFkZXJzKCkgcmVzdWx0IGlzIGVtcHR5IGluIHJlYWR5IHN0YXRlIDEuCitQQVNTIHhoci5vcGVu
KCJHRVQiLCAicmVzb3VyY2VzLzEyNTEuaHRtbCIsIHRydWUpOyBkaWQgbm90IHRocm93IGV4Y2Vw
dGlvbi4KK1BBU1Mge3N0YXRlOiAxfTsgaGVhZGVyVmFsdWVzID0geGhyLmdldEFsbFJlc3BvbnNl
SGVhZGVycygpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaGVhZGVyVmFsdWVzIGlz
IHRoZSBlbXB0eSBzdHJpbmcKK1BBU1MgeGhyLnNlbmQobnVsbCk7IGRpZCBub3QgdGhyb3cgZXhj
ZXB0aW9uLgorUEFTUyB7c3RhdGU6IDJ9OyBoZWFkZXJWYWx1ZXMgPSB4aHIuZ2V0QWxsUmVzcG9u
c2VIZWFkZXJzKCk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBoZWFkZXJWYWx1ZXMg
aXMgbm90IHRoZSBlbXB0eSBzdHJpbmcKK1BBU1MgSGVhZGVyIHZhbHVlcyBhcHBlYXJzIHRvIGJl
IGNvbmZvcm1pbmcuCitQQVNTIHtzdGF0ZTogM307IGhlYWRlclZhbHVlcyA9IHhoci5nZXRBbGxS
ZXNwb25zZUhlYWRlcnMoKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGhlYWRlclZh
bHVlcyBpcyBub3QgdGhlIGVtcHR5IHN0cmluZworUEFTUyByZXNwb25zZUhlYWRlcnMgaXMgc2F2
ZWRIZWFkZXJzCitQQVNTIHtzdGF0ZTogNH07IGhlYWRlclZhbHVlcyA9IHhoci5nZXRBbGxSZXNw
b25zZUhlYWRlcnMoKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGhlYWRlclZhbHVl
cyBpcyBub3QgdGhlIGVtcHR5IHN0cmluZworUEFTUyByZXNwb25zZUhlYWRlcnMgaXMgc2F2ZWRI
ZWFkZXJzCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9nZXRB
bGxSZXNwb25zZUhlYWRlcnMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3QvZ2V0QWxsUmVzcG9uc2VIZWFkZXJzLmh0bWwKaW5kZXggZjM3MWYwYTQ5MTgxODU1Mjhk
Nzc3ZmEyZDk0YjZkODFiNGUwOTA0Ny4uNWM5MGRkM2RiODllZmMxZWRjZmQ3MTY5MzNlYWUxZWQw
Njg4NmJlMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVz
dC9nZXRBbGxSZXNwb25zZUhlYWRlcnMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L2dldEFsbFJlc3BvbnNlSGVhZGVycy5odG1sCkBAIC0xLDExOCArMSw2
OSBAQAorPCFkb2N0eXBlIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgotICAgIDx0aXRsZT5DaGVjayBl
eGNlcHRpb24gdGhyb3duIGJ5IGdldEFsbFJlc3BvbnNlSGVhZGVycyBhbmQgc29tZQotICAgIGNo
YXJhY3RlcmlzdGljcyBvZiB0aGUgcmV0dXJuIHZhbHVlPC90aXRsZT4KKzx0aXRsZT5UZXN0aW5n
IFhNTEh0dHBSZXF1ZXN0LmdldFJlcG9uc2VIZWFkZXIgYmVoYXZpb3I8L3RpdGxlPgorPHNjcmlw
dCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitkZXNjcmlwdGlvbigiVGVzdCB0aGUgcmVxdWly
ZWQgYmVoYXZpb3Igb2YgWE1MSHR0cFJlcXVlc3QuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkiKTsK
IAotZnVuY3Rpb24gbG9nIChtc2cpIHsKLSAgICB2YXIgcGFyYWdyYXBoID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgibGkiKTsKLSAgICBwYXJhZ3JhcGguaW5uZXJIVE1MPW1zZy5yZXBsYWNlKC9c
bi9nbSwiPGJyPiIpOwotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBw
ZW5kQ2hpbGQocGFyYWdyYXBoKTsKLX0KK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIAot
dmFyIHhocjsKK3ZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKIAotaWYgKHdpbmRvdy5Y
TUxIdHRwUmVxdWVzdCkgewotICAgIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwotfSBlbHNl
IHsKLSAgICB0cnkgewotICAgICAgICB4aHIgPSBuZXcgQWN0aXZlWE9iamVjdCgiTXN4bWwyLlhN
TEhUVFAiKTsKLSAgICB9IGNhdGNoIChleCkgewotICAgICAgICB4aHIgPSBuZXcgQWN0aXZlWE9i
amVjdCgiTWljcm9zb2Z0LlhNTEhUVFAiKTsKLSAgICB9Cit2YXIgc2F2ZWRIZWFkZXJzID0gbnVs
bDsKKwordmFyIGhlYWRlclZhbHVlczsKK2Z1bmN0aW9uIHRlc3RHZXRBbGxSZXNwb25zZUhlYWRl
cnMoeGhyLCBleHBlY3RFbXB0eSkgeworICAgIHNob3VsZE5vdFRocm93KCJ7c3RhdGU6ICIgKyB4
aHIucmVhZHlTdGF0ZSArICJ9OyBoZWFkZXJWYWx1ZXMgPSB4aHIuZ2V0QWxsUmVzcG9uc2VIZWFk
ZXJzKCk7Iik7CisgICAgaWYgKGV4cGVjdEVtcHR5ICYmIGhlYWRlclZhbHVlcyAhPT0gIiIpCisg
ICAgICAgIHRlc3RGYWlsZWQoIkV4cGVjdGVkIHRoZSBlbXB0eSBzdHJpbmcsIGdvdDogJyIgKyBo
ZWFkZXJWYWx1ZXMgKyAiJyIpOworICAgIGVsc2UKKyAgICAgICAgdGVzdFBhc3NlZCgiaGVhZGVy
VmFsdWVzIGlzICIgKyAoIWV4cGVjdEVtcHR5ID8gIm5vdCAiIDogIiIpICsgInRoZSBlbXB0eSBz
dHJpbmciKTsKKyAgICByZXR1cm4gaGVhZGVyVmFsdWVzOwogfQogCi12YXIgc2F2ZWRIZWFkZXIg
PSBudWxsOwordmFyIHJlc3BvbnNlSGVhZGVyczsKIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBm
dW5jdGlvbigpIHsKICAgICB2YXIgclN0YXRlID0gdGhpcy5yZWFkeVN0YXRlOwotICAgIC8vIFdl
IGV4cGVjdCBhbiBJTlZBTElEX1NUQVRFX0VSUiBleGNlcHRpb24gZm9yIHJlYWR5U3RhdGUgPCAy
Ci0gICAgLy8gYW5kIG5vIGV4Y2VwdGlvbiBmb3IgcmVhZHlTdGF0ZSA+PSAyCi0gICAgdHJ5IHsK
LSAgICAgICAgdmFyIGhlYWRlciA9IHRoaXMuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCk7Ci0gICAg
ICAgIGlmIChyU3RhdGUgIT0gdGhpcy5yZWFkeVN0YXRlKQotICAgICAgICAgICAgbG9nKCJVTkNF
UlRBSU4gIiArIHJTdGF0ZSArICI6IHJlYWR5U3RhdGUgY2hhbmdlZCB3aGlsZSBnZXR0aW5nIGhl
YWRlcnMuIik7Ci0gICAgICAgIGlmIChyU3RhdGUgPCAyKSB7Ci0gICAgICAgICAgICBsb2coIkZB
SUxFRCAiICsgclN0YXRlICsgIjogaGVhZGVybGlzdD0iICsgaGVhZGVyKTsKLSAgICAgICAgfSBl
bHNlIGlmIChoZWFkZXIpCi0gICAgICAgICAgICBpZiAoc2F2ZWRIZWFkZXIpCi0gICAgICAgICAg
ICAgICAgaWYgKHNhdmVkSGVhZGVyICE9IGhlYWRlcikgewotICAgICAgICAgICAgICAgICAgICBs
b2coIkZBSUxFRCAiICsgclN0YXRlICsKLSI6IGhlYWRlcmxpc3QgY2hhbmdlZCBhZnRlciBpdCB3
YXMgZmlyc3QgcmV0dXJuZWQuIFByZXZpb3VzIGhlYWRlciBsaXN0OlxuIgotKyBzYXZlZEhlYWRl
ciArICJcbiBOZXcgaGVhZGVybGlzdDpcbiIgKyBoZWFkZXIpOwotICAgICAgICAgICAgICAgIHNh
dmVkSGVhZGVyID0gaGVhZGVyOwotICAgICAgICAgICAgICAgIH0gCi0gICAgICAgICAgICAgICAg
ZWxzZSAvL3NhdmVkSGVhZGVyID09IGhlYWRlciBoZXJlOyBubyBuZWVkIHRvIHJlcHJpbnQgaGVh
ZGVyCi0gICAgICAgICAgICAgICAgICAgIGxvZygiUEFTU0VEICIgKyByU3RhdGUpOwotICAgICAg
ICAgICAgZWxzZSB7Ly9maXJzdCBoZWFkZXIgbGlzdCByZXRyaWV2ZWQKLSAgICAgICAgICAgICAg
ICBpZiAoL15TZXQtQ29va2llOnxeU2V0LUNvb2tpZTI6L2ltLnRlc3QoaGVhZGVyKSkKLSAgICAg
ICAgICAgICAgICAgICAgbG9nKCJGQUlMRUQgIiArIHJTdGF0ZSArCi0iOiAvXlNldC1Db29raWU6
fF5TZXQtQ29va2llMjovIG1hdGNoZXMuIGdldEFsbFJlc3BvbnNlSGVhZGVycyByZXR1cm5lZDpc
biIgKyBoZWFkZXIpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotLy9kbyBub3QgcHJpbnQgbGlzdCBmb3IgYXV0b21hdGVkIHRlc3RzIHRvIGF2b2lkIGZhbHNl
IGZhaWx1cmVzLgotICAgICAgICAgICAgICAgICAgICBsb2coIlBBU1NFRCAiICsgclN0YXRlICsK
LSI6IGdldEFsbFJlc3BvbnNlSGVhZGVycyByZXR1cm5lZCB3aGF0IGxvb2tzIGxpa2UgYSBjb25m
b3JtaW5nIGhlYWRlcmxpc3QuIik7CisgICAgcmVzcG9uc2VIZWFkZXJzID0gdGVzdEdldEFsbFJl
c3BvbnNlSGVhZGVycyh0aGlzLCByU3RhdGUgPD0gWE1MSHR0cFJlcXVlc3QuT1BFTkVEKTsKKyAg
ICBpZiAocmVzcG9uc2VIZWFkZXJzKSB7CisgICAgICAgIGlmIChzYXZlZEhlYWRlcnMpIHsKKyAg
ICAgICAgICAgIHNob3VsZEJlKCJyZXNwb25zZUhlYWRlcnMiLCAic2F2ZWRIZWFkZXJzIik7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoL15TZXQtQ29va2llOnxeU2V0LUNvb2tp
ZTI6L2ltLnRlc3QocmVzcG9uc2VIZWFkZXJzKSkgeworICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoIkRpZCBub3QgZXhwZWN0IHRvIGZpbmQgYSBTZXQtQ29va2llezJ9IGhlYWRlciwgZ290OiAn
IiArIHJlc3BvbnNlSGVhZGVycyArICInIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIC8vIERvIG5vdCBwcmludCBsaXN0IGZvciBhdXRvbWF0ZWQgdGVzdHMgdG8gYXZv
aWQgZmFsc2UgZmFpbHVyZXMuCisgICAgICAgICAgICAgICAgaWYgKHNlbGYudGVzdFJ1bm5lcikK
KyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiSGVhZGVyIHZhbHVlcyBhcHBlYXJzIHRv
IGJlIGNvbmZvcm1pbmcuIik7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
ICAgICBsb2coIlBBU1NFRCAiICsgclN0YXRlICsKLSI6IGdldEFsbFJlc3BvbnNlSGVhZGVycyBy
ZXR1cm5lZDpcbiIgKyBoZWFkZXIpOwotICAgICAgICAgICAgICAgIHNhdmVkSGVhZGVyID0gaGVh
ZGVyOworICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJIZWFkZXIgdmFsdWVzIGFwcGVh
cnMgb2s6ICIgKyBKU09OLnN0cmluZ2lmeShoZWFkZXJWYWx1ZXMpKTsKICAgICAgICAgICAgIH0K
LSAgICAgICAgZWxzZSAvL2hlYWRlciBpcyBudWxsCi0gICAgICAgICAgICBsb2coIkZBSUxFRCAi
ICsgclN0YXRlICsgIjogbnVsbCBoZWFkZXIgbGlzdCByZXR1cm5lZCIpOwotICAgIH0gY2F0Y2gg
KGUpIHsKLSAgICAgICAgaWYgKHJTdGF0ZSA8IDIpIHsKLSAgICAgICAgICAgIGxvZygiUEFTU0VE
ICIgKyByU3RhdGUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbG9nKCJGQUlMRUQg
IiArIHJTdGF0ZSArICI6IEVYQ0VQVElPTiBUSFJPV046ICIgKyBlLm1lc3NhZ2UgKyAiLiIpOwog
ICAgICAgICB9CisgICAgICAgIHNhdmVkSGVhZGVycyA9IHJlc3BvbnNlSGVhZGVyczsKKyAgICB9
IGVsc2UgeworICAgICAgICBpZiAoclN0YXRlID4gWE1MSHR0cFJlcXVlc3QuT1BFTkVEKQorICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiSW4gcmVhZHkgc3RhdGUgIiArIHJTdGF0ZSArICIsIHVuZXhw
ZWN0ZWQgZW1wdHkgdmFsdWUuIik7CisgICAgICAgIGVsc2UgaWYgKHJlc3BvbnNlSGVhZGVycyAh
PT0gIiIpCisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJJbiByZWFkeSBzdGF0ZSAiICsgclN0YXRl
ICsgIiwgZXhwZWN0ZWQgdGhlIGVtcHR5IHN0cmluZywgZ290OiAiICsgSlNPTi5zdHJpbmdpZnko
cmVzcG9uc2VIZWFkZXJzKSArICIuIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRlc3RQ
YXNzZWQoImdldEFsbFJlc3BvbnNlSGVhZGVycygpIHJlc3VsdCBpcyBlbXB0eSBpbiByZWFkeSBz
dGF0ZSAiICsgclN0YXRlICsgIi4iKTsKICAgICB9Ci0gICAgaWYgKChyU3RhdGUgPT0gNCkgJiYg
KHdpbmRvdy50ZXN0UnVubmVyKSkKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OworCisgICAgaWYgKHJTdGF0ZSA9PSBYTUxIdHRwUmVxdWVzdC5ET05FKQorICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKIH0KIAotZnVuY3Rpb24gdGVzdCgpIHsKLSAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKLSAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIH0KK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CiAgICAg
Ly8gVGVzdCBmb3IgcmVhZHlTdGF0ZSA9IDAKLSAgICB0cnkgewotICAgICAgICB2YXIgaGVhZGVy
ID0geGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpOwotICAgICAgICBsb2coIkZBSUxFRCAiICsg
eGhyLnJlYWR5U3RhdGUgKyAiOiBoZWFkZXI9IiArIGhlYWRlcik7Ci0gICAgfSBjYXRjaCAoZSkg
ewotICAgICAgICBsb2coIlBBU1NFRCAiICsgeGhyLnJlYWR5U3RhdGUpOwotICAgIH0KLSAgICB0
cnkgewotICAgICAgICB4aHIub3BlbigiR0VUIiwicmVzb3VyY2VzLzEyNTEuaHRtbCIsIHRydWUp
OwotICAgICAgICB4aHIuc2VuZChudWxsKTsKLSAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgbG9n
KCJGQUlMRUQgb3Blbi9zZW5kOiBFWENFUFRJT04gVEhST1dOOiAiICsgZS5tZXNzYWdlICsiLiIp
OwotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKLSAgICB9CisgICAgdGVzdEdldEFsbFJlc3BvbnNlSGVhZGVycyh4aHIs
IHRydWUpOworICAgIHNob3VsZE5vdFRocm93KCd4aHIub3BlbigiR0VUIiwgInJlc291cmNlcy8x
MjUxLmh0bWwiLCB0cnVlKTsnKTsKKyAgICAvLyBUZXN0IGZvciByZWFkeVN0YXRlID0gMQorICAg
IHRlc3RHZXRBbGxSZXNwb25zZUhlYWRlcnMoeGhyLCB0cnVlKTsKKyAgICBzaG91bGROb3RUaHJv
dygieGhyLnNlbmQobnVsbCk7Iik7CiB9CitydW5UZXN0KCk7CiA8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvaGVh
ZD4KLTxib2R5IG9ubG9hZD0idGVzdCgpIj4KLQotPHA+VGVzdCBwYWdlIGZvciA8YSBocmVmPSJo
dHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM1NiI+YnVnIDE1MzU2PC9h
PgotYW5kIDxhIGhyZWY9Imh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5
MTIxIj5idWcgMjkxMjE8L2E+PC9wPgotPHA+QXNzZXJ0aW9uOiBJbnZva2luZyBnZXRBbGxSZXNw
b25zZUhlYWRlcnMgbWV0aG9kIHdoZW4gcmVhZHlTdGF0ZSA+PSAyCi0oSEVBREVSU19SRUNFSVZF
RCkgc2hvdWxkIHJldHVybiBhIGNvbmZvcm1pbmcgbGlzdCBvZiBoZWFkZXJzLjwvcD4KLTxzY3Jp
cHQ+Ci0gICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgZG9jdW1lbnQud3JpdGUo
IjxwPklmIHRoZSB0ZXN0IHBhc3NlcyBvbmUgc2hvdWxkIHNlZSBcCi1iZWxvdyB0aGUgcnVsZXIg
dGhlIHRleHQgXCJwYXNzZWRcIiBpbiBhbGwgY2FwaXRhbCBsZXR0ZXJzLCA1IHRpbWVzLCBcCi1m
b2xsb3dlZCBlYWNoIHRpbWUgYnkgYSBzcGFjZSBhbmQgdGhlIHJlYWR5U3RhdGUgbnVtYmVyLjwv
cD5cblwKLTxwPlJlYWR5U3RhdGVudW1iZXJzIHNob3VsZCBiZSBpbiBhc2NlbmRpbmcgb3JkZXIg
MCB0byA0LjwvcD5cblwKLTxwPkEgY29uZm9ybWluZyBsaXN0IG9mIHJlc3BvbnNlIGhlYWRlcnMg
c2hvdWxkIGFsc28gYmUgcHJpbnRlZC48L3A+XG5cCi08cD5BIGNvbmZvcm1pbmcgbGlzdCBvZiBo
ZWFkZXJzOjwvcD4gXAotICAgPGxpPiBjb250YWlucyBvbmUgaGVhZGVyIHBlciBsaW5lLjwvbGk+
IFwKLSAgIDxsaT4gaGFzIGhlYWRlciBuYW1lcyBhbmQgaGVhZGVyIHZhbHVlcyBzZXBhcmF0ZWQg
YnkgYSBDT0xPTiBhbmQgXAotYSBTUEFDRS48L2xpPlwKLSAgIDxsaT4gZG9lcyBub3QgY29udGFp
biBhbnkgaGVhZGVycyB0aGF0IG1hdGNoIChjYXNlLWluc2Vuc2l0aXZlbHkpIFwKLVNldC1Db29r
aWUgb3IgU2V0LUNvb2tpZTI8L2xpPiIpOwotIDwvc2NyaXB0PgotIDxocj4KLSA8cD48b2wgaWQ9
Y29uc29sZT48L29sPjwvcD4KLTwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvZ2V0UmVzcG9uc2VIZWFkZXItZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9nZXRSZXNwb25zZUhl
YWRlci1leHBlY3RlZC50eHQKaW5kZXggNzQ4Yjc0N2NmZGRkOGZlMmNiMDE4OTdkMjE4NTZhODVi
NDk1Yzc0MC4uZDFiODViYTI0MGRiY2VkMWRkYzNhYThhNmQ4MGIxMDQ5MGY2NjBlOCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9nZXRSZXNwb25zZUhl
YWRlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVx
dWVzdC9nZXRSZXNwb25zZUhlYWRlci1leHBlY3RlZC50eHQKQEAgLTQsMzUgKzQsNTkgQEAgQ09O
U09MRSBNRVNTQUdFOiBSZWZ1c2VkIHRvIGdldCB1bnNhZmUgaGVhZGVyICJTZVQtQ09vS2llIgog
Q09OU09MRSBNRVNTQUdFOiBSZWZ1c2VkIHRvIGdldCB1bnNhZmUgaGVhZGVyICJzRXQtY29Pa0lF
MiIKIENPTlNPTEUgTUVTU0FHRTogUmVmdXNlZCB0byBnZXQgdW5zYWZlIGhlYWRlciAiU2VULUNP
b0tpZSIKIENPTlNPTEUgTUVTU0FHRTogUmVmdXNlZCB0byBnZXQgdW5zYWZlIGhlYWRlciAic0V0
LWNvT2tJRTIiCi1UZXN0IHBhZ2UgZm9yIGJ1ZyAxNTM1NiBhbmQgYnVnIDI5MTIxCitUZXN0IHRo
ZSByZXF1aXJlZCBiZWhhdmlvciBvZiBYTUxIdHRwUmVxdWVzdC5nZXRSZXNwb25zZUhlYWRlcigp
CiAKLUFzc2VydGlvbjogSW52b2tpbmcgdGhlIGdldFJlc3BvbnNlSGVhZGVyIG1ldGhvZCB3aGVu
IHJlYWR5U3RhdGUgPj0gMiAoSEVBREVSU19SRUNFSVZFRCkgcmV0dXJucyBhIGhlYWRlciB2YWx1
ZSBpZiB0aGUgaGVhZGVyIGV4aXN0cy4KK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAotQXNz
ZXJ0aW9uOiBJbnZva2luZyB0aGUgZ2V0UmVzcG9uc2VIZWFkZXIgbWV0aG9kIHdpdGggdGhlIHBh
cmFtZXRlciBzYXRpc2Z5aW5nIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBjYXVzZXMgZ2V0UmVz
cG9uc2VIZWFkZXIgdG8gcmV0dXJuIG51bGw6CiAKLTFhLiBUaGUgcGFyYW1ldGVyIGNhc2UtaW5z
ZW5zaXRpdmVseSBtYXRjaGVzIFNldC1Db29raWU7Ci0xYi4gVGhlIHBhcmFtZXRlciBjYXNlLWlu
c2Vuc2l0aXZlbHkgbWF0Y2hlcyBTZXQtQ29va2llMjsKLTIuIFRoZSBwYXJhbWV0ZXIgZG9lcyBu
b3QgbWF0Y2ggYW55IGhlYWRlciBpbiB0aGUgcmVzcG9uc2U7Ci0zYS4gVGhlIHBhcmFtZXRlciBp
cyBudWxsIChpdCBpcyBub3QgYSB2YWxpZCBoZWFkZXIgbmFtZSk7Ci0zYi4gVGhlIHBhcmFtZXRl
ciBpcyAiQ29udGVudC1UeXBlOiIgKGl0IGlzIG5vdCBhIHZhbGlkIGhlYWRlciBuYW1lKS4KLVBB
U1NFRCAwIENvbnRlbnQtVHlwZTogZXhjZXB0aW9uIHRocm93bi4KLVBBU1NFRCAxIENvbnRlbnQt
VHlwZTogZXhjZXB0aW9uIHRocm93bgotUEFTU0VEIDIgQ29udGVudC1UeXBlOiBSZXNwb25zZUhl
YWRlcihDb250ZW50LVR5cGUpIHJldHVybmVkIGEgdmFsdWUuCi1QQVNTRUQgMiBTZVQtQ09vS2ll
OiBnZXRSZXNwb25zZUhlYWRlcihTZVQtQ09vS2llKSByZXR1cm5lZCBudWxsLgotUEFTU0VEIDIg
c0V0LWNvT2tJRTI6IGdldFJlc3BvbnNlSGVhZGVyKHNFdC1jb09rSUUyKSByZXR1cm5lZCBudWxs
LgotUEFTU0VEIDIgeHh4LW15dGVzdC1oZWFkZXJhYmM6IGdldFJlc3BvbnNlSGVhZGVyKHh4eC1t
eXRlc3QtaGVhZGVyYWJjKSByZXR1cm5lZCBudWxsLgotUEFTU0VEIDIgbnVsbDogZ2V0UmVzcG9u
c2VIZWFkZXIobnVsbCkgcmV0dXJuZWQgbnVsbC4KLVBBU1NFRCAyIENvbnRlbnQtVHlwZTo6IGdl
dFJlc3BvbnNlSGVhZGVyKENvbnRlbnQtVHlwZTopIHJldHVybmVkIG51bGwuCi1QQVNTRUQgMyBD
b250ZW50LVR5cGU6IENvbnRlbnQtVHlwZQotUEFTU0VEIDMgU2VULUNPb0tpZTogZ2V0UmVzcG9u
c2VIZWFkZXIoU2VULUNPb0tpZSkgcmV0dXJuZWQgbnVsbC4KLVBBU1NFRCAzIHNFdC1jb09rSUUy
OiBnZXRSZXNwb25zZUhlYWRlcihzRXQtY29Pa0lFMikgcmV0dXJuZWQgbnVsbC4KLVBBU1NFRCAz
IHh4eC1teXRlc3QtaGVhZGVyYWJjOiBnZXRSZXNwb25zZUhlYWRlcih4eHgtbXl0ZXN0LWhlYWRl
cmFiYykgcmV0dXJuZWQgbnVsbC4KLVBBU1NFRCAzIG51bGw6IGdldFJlc3BvbnNlSGVhZGVyKG51
bGwpIHJldHVybmVkIG51bGwuCi1QQVNTRUQgMyBDb250ZW50LVR5cGU6OiBnZXRSZXNwb25zZUhl
YWRlcihDb250ZW50LVR5cGU6KSByZXR1cm5lZCBudWxsLgotUEFTU0VEIDQgQ29udGVudC1UeXBl
OiBDb250ZW50LVR5cGUKLVBBU1NFRCA0IFNlVC1DT29LaWU6IGdldFJlc3BvbnNlSGVhZGVyKFNl
VC1DT29LaWUpIHJldHVybmVkIG51bGwuCi1QQVNTRUQgNCBzRXQtY29Pa0lFMjogZ2V0UmVzcG9u
c2VIZWFkZXIoc0V0LWNvT2tJRTIpIHJldHVybmVkIG51bGwuCi1QQVNTRUQgNCB4eHgtbXl0ZXN0
LWhlYWRlcmFiYzogZ2V0UmVzcG9uc2VIZWFkZXIoeHh4LW15dGVzdC1oZWFkZXJhYmMpIHJldHVy
bmVkIG51bGwuCi1QQVNTRUQgNCBudWxsOiBnZXRSZXNwb25zZUhlYWRlcihudWxsKSByZXR1cm5l
ZCBudWxsLgotUEFTU0VEIDQgQ29udGVudC1UeXBlOjogZ2V0UmVzcG9uc2VIZWFkZXIoQ29udGVu
dC1UeXBlOikgcmV0dXJuZWQgbnVsbC4KK1BBU1Mge3N0YXRlOiAwfTsgaGVhZGVyVmFsdWUgPSB4
aHIuZ2V0UmVzcG9uc2VIZWFkZXIoJ0NvbnRlbnQtVHlwZScpOyBkaWQgbm90IHRocm93IGV4Y2Vw
dGlvbi4KK1BBU1MgaGVhZGVyVmFsdWUgaXMgbnVsbAorUEFTUyB7c3RhdGU6IDF9OyBoZWFkZXJW
YWx1ZSA9IHhoci5nZXRSZXNwb25zZUhlYWRlcignQ29udGVudC1UeXBlJyk7IGRpZCBub3QgdGhy
b3cgZXhjZXB0aW9uLgorUEFTUyBoZWFkZXJWYWx1ZSBpcyBudWxsCitQQVNTIEhlYWRlciAnQ29u
dGVudC1UeXBlJyBpcyBudWxsIGluIHJlYWR5IHN0YXRlIDEuCitQQVNTIHhoci5vcGVuKCJHRVQi
LCAicmVzb3VyY2VzLzEyNTEuaHRtbCIsIHRydWUpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4K
K1BBU1Mge3N0YXRlOiAxfTsgaGVhZGVyVmFsdWUgPSB4aHIuZ2V0UmVzcG9uc2VIZWFkZXIoJ0Nv
bnRlbnQtVHlwZScpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaGVhZGVyVmFsdWUg
aXMgbnVsbAorUEFTUyB4aHIuc2VuZChudWxsKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQ
QVNTIHtzdGF0ZTogMn07IGhlYWRlclZhbHVlID0geGhyLmdldFJlc3BvbnNlSGVhZGVyKCdDb250
ZW50LVR5cGUnKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGhlYWRlclZhbHVlIGlz
IG5vbi1udWxsLgorUEFTUyB7c3RhdGU6IDJ9OyBoZWFkZXJWYWx1ZSA9IHhoci5nZXRSZXNwb25z
ZUhlYWRlcignU2VULUNPb0tpZScpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaGVh
ZGVyVmFsdWUgaXMgbnVsbAorUEFTUyB7c3RhdGU6IDJ9OyBoZWFkZXJWYWx1ZSA9IHhoci5nZXRS
ZXNwb25zZUhlYWRlcignc0V0LWNvT2tJRTInKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQ
QVNTIGhlYWRlclZhbHVlIGlzIG51bGwKK1BBU1Mge3N0YXRlOiAyfTsgaGVhZGVyVmFsdWUgPSB4
aHIuZ2V0UmVzcG9uc2VIZWFkZXIoJ3h4eC1teXRlc3QtaGVhZGVyYWJjJyk7IGRpZCBub3QgdGhy
b3cgZXhjZXB0aW9uLgorUEFTUyBoZWFkZXJWYWx1ZSBpcyBudWxsCitQQVNTIHtzdGF0ZTogMn07
IGhlYWRlclZhbHVlID0geGhyLmdldFJlc3BvbnNlSGVhZGVyKCdudWxsJyk7IGRpZCBub3QgdGhy
b3cgZXhjZXB0aW9uLgorUEFTUyBoZWFkZXJWYWx1ZSBpcyBudWxsCitQQVNTIHtzdGF0ZTogMn07
IGhlYWRlclZhbHVlID0geGhyLmdldFJlc3BvbnNlSGVhZGVyKCdDb250ZW50LVR5cGU6Jyk7IGRp
ZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBoZWFkZXJWYWx1ZSBpcyBudWxsCitQQVNTIHtz
dGF0ZTogM307IGhlYWRlclZhbHVlID0geGhyLmdldFJlc3BvbnNlSGVhZGVyKCdDb250ZW50LVR5
cGUnKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGhlYWRlclZhbHVlIGlzIG5vbi1u
dWxsLgorUEFTUyByZXN1bHQgaXMgc2F2ZWRIZWFkZXIKK1BBU1Mge3N0YXRlOiAzfTsgaGVhZGVy
VmFsdWUgPSB4aHIuZ2V0UmVzcG9uc2VIZWFkZXIoJ1NlVC1DT29LaWUnKTsgZGlkIG5vdCB0aHJv
dyBleGNlcHRpb24uCitQQVNTIGhlYWRlclZhbHVlIGlzIG51bGwKK1BBU1Mge3N0YXRlOiAzfTsg
aGVhZGVyVmFsdWUgPSB4aHIuZ2V0UmVzcG9uc2VIZWFkZXIoJ3NFdC1jb09rSUUyJyk7IGRpZCBu
b3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBoZWFkZXJWYWx1ZSBpcyBudWxsCitQQVNTIHtzdGF0
ZTogM307IGhlYWRlclZhbHVlID0geGhyLmdldFJlc3BvbnNlSGVhZGVyKCd4eHgtbXl0ZXN0LWhl
YWRlcmFiYycpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaGVhZGVyVmFsdWUgaXMg
bnVsbAorUEFTUyB7c3RhdGU6IDN9OyBoZWFkZXJWYWx1ZSA9IHhoci5nZXRSZXNwb25zZUhlYWRl
cignbnVsbCcpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaGVhZGVyVmFsdWUgaXMg
bnVsbAorUEFTUyB7c3RhdGU6IDN9OyBoZWFkZXJWYWx1ZSA9IHhoci5nZXRSZXNwb25zZUhlYWRl
cignQ29udGVudC1UeXBlOicpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaGVhZGVy
VmFsdWUgaXMgbnVsbAorUEFTUyB7c3RhdGU6IDR9OyBoZWFkZXJWYWx1ZSA9IHhoci5nZXRSZXNw
b25zZUhlYWRlcignQ29udGVudC1UeXBlJyk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFT
UyBoZWFkZXJWYWx1ZSBpcyBub24tbnVsbC4KK1BBU1MgcmVzdWx0IGlzIHNhdmVkSGVhZGVyCitQ
QVNTIHtzdGF0ZTogNH07IGhlYWRlclZhbHVlID0geGhyLmdldFJlc3BvbnNlSGVhZGVyKCdTZVQt
Q09vS2llJyk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBoZWFkZXJWYWx1ZSBpcyBu
dWxsCitQQVNTIHtzdGF0ZTogNH07IGhlYWRlclZhbHVlID0geGhyLmdldFJlc3BvbnNlSGVhZGVy
KCdzRXQtY29Pa0lFMicpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaGVhZGVyVmFs
dWUgaXMgbnVsbAorUEFTUyB7c3RhdGU6IDR9OyBoZWFkZXJWYWx1ZSA9IHhoci5nZXRSZXNwb25z
ZUhlYWRlcigneHh4LW15dGVzdC1oZWFkZXJhYmMnKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24u
CitQQVNTIGhlYWRlclZhbHVlIGlzIG51bGwKK1BBU1Mge3N0YXRlOiA0fTsgaGVhZGVyVmFsdWUg
PSB4aHIuZ2V0UmVzcG9uc2VIZWFkZXIoJ251bGwnKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24u
CitQQVNTIGhlYWRlclZhbHVlIGlzIG51bGwKK1BBU1Mge3N0YXRlOiA0fTsgaGVhZGVyVmFsdWUg
PSB4aHIuZ2V0UmVzcG9uc2VIZWFkZXIoJ0NvbnRlbnQtVHlwZTonKTsgZGlkIG5vdCB0aHJvdyBl
eGNlcHRpb24uCitQQVNTIGhlYWRlclZhbHVlIGlzIG51bGwKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2dldFJlc3BvbnNlSGVhZGVyLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2dldFJlc3BvbnNlSGVhZGVyLmh0bWwKaW5k
ZXggMDFiNzBhNzZkY2UyNWJhNjhjZTA5MTk1MjMzM2QyYWQzNGFkNjYyNS4uZjA3Y2I1YjdiYmY4
NmE5ZTA2MGQyMDE5MDM0NDUyNjI0NDQzOTZiYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy94bWxodHRwcmVxdWVzdC9nZXRSZXNwb25zZUhlYWRlci5odG1sCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvZ2V0UmVzcG9uc2VIZWFkZXIuaHRtbApA
QCAtMSwxNDAgKzEsNjkgQEAKKzwhZG9jdHlwZSBodG1sPgogPGh0bWw+CiA8aGVhZD4KLSAgICA8
dGl0bGU+Q2hlY2sgZXhjZXB0aW9uIHRocm93biBieSBnZXRSZXBvbnNlSGVhZGVyIDwvdGl0bGU+
Cis8dGl0bGU+VGVzdGluZyBYTUxIdHRwUmVxdWVzdC5nZXRSZXBvbnNlSGVhZGVyIGJlaGF2aW9y
PC90aXRsZT4KKzxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZGVzY3JpcHRpb24o
IlRlc3QgdGhlIHJlcXVpcmVkIGJlaGF2aW9yIG9mIFhNTEh0dHBSZXF1ZXN0LmdldFJlc3BvbnNl
SGVhZGVyKCkiKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogCiB2YXIgc2F2ZWRI
ZWFkZXIgPSBudWxsOwotdmFyIGhlYWRlck5hbWU9IkNvbnRlbnQtVHlwZSI7Ci12YXIgbnVsbFRl
c3RzID0gIG5ldyBBcnJheSgiU2VULUNPb0tpZSIsICJzRXQtY29Pa0lFMiIsIAotICAgICJ4eHgt
bXl0ZXN0LWhlYWRlcmFiYyIsIG51bGwsICJDb250ZW50LVR5cGU6Iik7Cit2YXIgaGVhZGVyTmFt
ZSA9ICJDb250ZW50LVR5cGUiOwordmFyIG51bGxUZXN0cyA9IFsgIlNlVC1DT29LaWUiLAorICAg
ICAgICAgICAgICAgICAgInNFdC1jb09rSUUyIiwKKyAgICAgICAgICAgICAgICAgICJ4eHgtbXl0
ZXN0LWhlYWRlcmFiYyIsCisgICAgICAgICAgICAgICAgICBudWxsLAorICAgICAgICAgICAgICAg
ICAgIkNvbnRlbnQtVHlwZToiIF07CiAKLWZ1bmN0aW9uIGxvZyAobXNnKSB7Ci0gICAgdmFyIHBh
cmFncmFwaCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7Ci0gICAgcGFyYWdyYXBoLmlu
bmVySFRNTD1tc2cucmVwbGFjZSgvXG4vZ20sIjxicj4iKTsKLSAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKHBhcmFncmFwaCk7Ci19Cit2YXIgeGhyID0g
bmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiAKLWZ1bmN0aW9uIGxvZzQoc3RhdHVzLCByU3RhdGUsIHN1
YlN0YXRlLCBtc2cpIHsKLSAgICBsb2coc3RhdHVzICsgIiAiICsgclN0YXRlICsgIiAiICsgc3Vi
U3RhdGUgKyAiOiAiICsgbXNnKTsKLX0KK3ZhciBoZWFkZXJWYWx1ZTsKK2Z1bmN0aW9uIHRlc3RH
ZXRSZXNwb25zZUhlYWRlcih4aHIsIGhlYWRlck5hbWUsIGV4cGVjdE51bGwpIHsKKyAgICBzaG91
bGROb3RUaHJvdygie3N0YXRlOiAiICsgeGhyLnJlYWR5U3RhdGUgKyAifTsgaGVhZGVyVmFsdWUg
PSB4aHIuZ2V0UmVzcG9uc2VIZWFkZXIoJyIgKyBoZWFkZXJOYW1lICsgIicpOyIpOworICAgIGlm
IChleHBlY3ROdWxsKQorICAgICAgICBzaG91bGRCZU51bGwoImhlYWRlclZhbHVlIik7CisgICAg
ZWxzZQorICAgICAgICBzaG91bGRCZU5vbk51bGwoImhlYWRlclZhbHVlIik7CiAKLWZ1bmN0aW9u
IGxvZzMoc3RhdHVzLCByU3RhdGUsIG1zZykgewotICAgIGxvZzQoc3RhdHVzLCByU3RhdGUsIGhl
YWRlck5hbWUsIG1zZyk7Ci19Ci0KLWlmICh3aW5kb3cuWE1MSHR0cFJlcXVlc3QpIHsKLSAgICB4
aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLX0gZWxzZSB7Ci0gICAgdHJ5IHsKLSAgICAgICAg
eGhyID0gbmV3IEFjdGl2ZVhPYmplY3QoIk1zeG1sMi5YTUxIVFRQIik7Ci0gICAgfSBjYXRjaCAo
ZXgpIHsKLSAgICAgICAgeGhyID0gbmV3IEFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQ
Iik7Ci0gICAgfQorICAgIHJldHVybiBoZWFkZXJWYWx1ZTsKIH0KIAordmFyIHJlc3VsdDsKIHho
ci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKICAgICB2YXIgclN0YXRlID0gdGhp
cy5yZWFkeVN0YXRlOwotICAgIC8vIFdlIGV4cGVjdCBhbiBJTlZBTElEX1NUQVRFX0VSUiBleGNl
cHRpb24gZm9yIHJlYWR5U3RhdGUgPCAyCi0gICAgLy8gYW5kIG5vIGV4Y2VwdGlvbiBmb3IgcmVh
ZHlTdGF0ZSA+PSAyCi0gICAgdHJ5IHsKLSAgICAgICAgdmFyIGhlYWRlciA9IHRoaXMuZ2V0UmVz
cG9uc2VIZWFkZXIoaGVhZGVyTmFtZSk7Ci0gICAgICAgIGlmIChyU3RhdGUgIT0gdGhpcy5yZWFk
eVN0YXRlKQotICAgICAgICAgICAgbG9nMygiVU5DRVJUQUlOIiwgclN0YXRlLCAicmVhZHlTdGF0
ZSBjaGFuZ2VkIHdoaWxlIGdldHRpbmcgdGhlIGhlYWRlci4iKTsKLSAgICAgICAgaWYgKHJTdGF0
ZSA8IDIpIHsKLSAgICAgICAgICAgIGxvZzMoIkZBSUxFRCIsIHJTdGF0ZSwgaGVhZGVyTmFtZSAr
ICI9IiArIGhlYWRlcik7Ci0gICAgICAgIH0gZWxzZSBpZiAoaGVhZGVyKSB7Ci0gICAgICAgICAg
ICBpZiAoc2F2ZWRIZWFkZXIpCi0gICAgICAgICAgICAgICAgaWYgKHNhdmVkSGVhZGVyICE9IGhl
YWRlcikgewotICAgICAgICAgICAgICAgICAgICBsb2czKCJGQUlMRUQiLCByU3RhdGUsaGVhZGVy
TmFtZSArICIgY2hhbmdlZCBhZnRlciBpdCB3YXMgZmlyc3QgcmV0dXJuZWQuIFByZXZpb3VzICIg
KyBoZWFkZXJOYW1lCi0gICAgICAgICAgICAgICAgICAgICAgICArICI9IiArIHNhdmVkSGVhZGVy
ICsgIjsgTmV3ICIgKyBoZWFkZXJOYW1lICsgIj0iICsgaGVhZGVyICsgIi4iKTsKLSAgICAgICAg
ICAgICAgICBzYXZlZEhlYWRlciA9IGhlYWRlcjsKLSAgICAgICAgICAgICAgICB9IAotICAgICAg
ICAgICAgICAgIGVsc2UgLy9zYXZlZEhlYWRlciA9PSBoZWFkZXIgaGVyZTsgbm8gbmVlZCB0byBy
ZXByaW50IGhlYWRlcgotICAgICAgICAgICAgICAgICAgICBsb2czKCJQQVNTRUQiLCByU3RhdGUs
IGhlYWRlck5hbWUpOwotICAgICAgICAgICAgZWxzZSB7Ly9maXJzdCBoZWFkZXIgdmFsdWUgcmV0
cmlldmVkCi0gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotLy9kbyBub3Qg
cHJpbnQgdGhlIGhlYWRlcidzIHZhbHVlIGZvciBhdXRvbWF0ZWQgdGVzdHMgdG8gYXZvaWQgZmFs
c2UgZmFpbHVyZXMuCi0gICAgICAgICAgICAgICAgICAgIGxvZzMoIlBBU1NFRCIsIHJTdGF0ZSwg
IlJlc3BvbnNlSGVhZGVyKCIgKyBoZWFkZXJOYW1lICsgIikgcmV0dXJuZWQgYSB2YWx1ZS4iKTsK
LSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGxvZzMoIlBBU1NFRCIs
IHJTdGF0ZSwgImdldFJlc3BvbnNlSGVhZGVyKCIgKyBoZWFkZXJOYW1lICsgIikgcmV0dXJuZWQ6
ICIgKyBoZWFkZXIgKyAiLiIpOwotICAgICAgICAgICAgICAgIHNhdmVkSGVhZGVyID0gaGVhZGVy
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8bnVsbFRlc3RzLmxl
bmd0aDsrK2kpIHsKLSAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICB2
YXIgc3RyID0gdGhpcy5nZXRSZXNwb25zZUhlYWRlcihudWxsVGVzdHNbaV0pOwotICAgICAgICAg
ICAgICAgICAgICBpZiAoc3RyID09IG51bGwpCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2c0
KCJQQVNTRUQiLCByU3RhdGUsIG51bGxUZXN0c1tpXSwgImdldFJlc3BvbnNlSGVhZGVyKCIgKyBu
dWxsVGVzdHNbaV0gKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICIpIHJldHVybmVkIG51
bGwuIik7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAg
IGxvZzQoIkZBSUxFRCIsIHJTdGF0ZSwgbnVsbFRlc3RzW2ldLCAiZ2V0UmVzcG9uc2VIZWFkZXIo
IiArIG51bGxUZXN0c1tpXSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIikgcmV0dXJu
ZWQgXCIiICsgc3RyICsgIlwiIik7Ci0gICAgICAgICAgICAgICAgfSBjYXRjaChlKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGxvZzQoIkZBSUxFRCIsIHJTdGF0ZSwgbnVsbFRlc3RzW2ldLCAiZ2V0
UmVzcG9uc2VIZWFkZXIoIiArIG51bGxUZXN0c1tpXSArICIpIHRocmV3IGV4Y2VwdGlvbjoiICsg
ZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAg
IGVsc2UgLy9oZWFkZXIgaXMgbnVsbAotICAgICAgICAgICAgbG9nMygiRkFJTEVEIiwgclN0YXRl
LCAibnVsbCAiICsgaGVhZGVyTmFtZSArICIgcmV0dXJuZWQuIik7Ci0gICAgfSBjYXRjaCAoZSkg
ewotICAgICAgICBpZiAoclN0YXRlIDwgMikKLSAgICAgICAgICAgIGxvZzMoIlBBU1NFRCIsIHJT
dGF0ZSwgImV4Y2VwdGlvbiB0aHJvd24iKTsKKyAgICByZXN1bHQgPSB0ZXN0R2V0UmVzcG9uc2VI
ZWFkZXIodGhpcywgaGVhZGVyTmFtZSwgclN0YXRlIDw9IFhNTEh0dHBSZXF1ZXN0Lk9QRU5FRCk7
CisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICBpZiAoc2F2ZWRIZWFkZXIpCisgICAgICAgICAg
ICBzaG91bGRCZSgicmVzdWx0IiwgInNhdmVkSGVhZGVyIik7CisKKyAgICAgICAgc2F2ZWRIZWFk
ZXIgPSByZXN1bHQ7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudWxsVGVzdHMubGVu
Z3RoOyArK2kpCisgICAgICAgICAgICB0ZXN0R2V0UmVzcG9uc2VIZWFkZXIodGhpcywgbnVsbFRl
c3RzW2ldLCB0cnVlKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoclN0YXRlID4gWE1MSHR0
cFJlcXVlc3QuT1BFTkVEKQorICAgICAgICAgICAgdGVzdEZhaWxlZCgiSW4gcmVhZHkgc3RhdGUg
IiArIHJTdGF0ZSArICIsIHVuZXhwZWN0ZWQgbnVsbCB2YWx1ZSBmb3IgJyIgKyBoZWFkZXJOYW1l
ICsgIicuIik7CisgICAgICAgIGVsc2UgaWYgKHJlc3VsdCAhPT0gbnVsbCkKKyAgICAgICAgICAg
IHRlc3RGYWlsZWQoIkluIHJlYWR5IHN0YXRlICIgKyByU3RhdGUgKyAiLCBleHBlY3RlZCBudWxs
IGZvciAnIiArIGhlYWRlck5hbWUgKyAiLCBnb3Q6ICIgKyBKU09OLnN0cmluZ2lmeShyZXN1bHQp
ICsgIi4iKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbG9nMygiRkFJTEVEIiwgclN0YXRl
LCAiZXhjZXB0aW9uIHRocm93bjogIiArIGUubWVzc2FnZSArICIuIik7CisgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJIZWFkZXIgJyIgKyBoZWFkZXJOYW1lICsgIicgaXMgbnVsbCBpbiByZWFkeSBz
dGF0ZSAiICsgclN0YXRlICsgIi4iKTsKICAgICB9Ci0gICAgaWYgKChyU3RhdGUgPT0gNCkgJiYg
KHdpbmRvdy50ZXN0UnVubmVyKSkKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwotfQogCi1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAoclN0YXRlID09
IFhNTEh0dHBSZXF1ZXN0LkRPTkUpCisgICAgICAgIGZpbmlzaEpTVGVzdCgpOwogfQogCi1mdW5j
dGlvbiB0ZXN0KCkgeworZnVuY3Rpb24gcnVuVGVzdCgpIHsKICAgICAvLyBUZXN0IGZvciByZWFk
eVN0YXRlID0gMAotICAgIHRyeSB7Ci0gICAgICAgIHZhciBoZWFkZXIgPSB4aHIuZ2V0UmVzcG9u
c2VIZWFkZXIoaGVhZGVyTmFtZSk7Ci0gICAgICAgIGxvZzMoIkZBSUxFRCIsIHhoci5yZWFkeVN0
YXRlLCBoZWFkZXJOYW1lICsgIj0iICsgaGVhZGVyICsgIi4iKTsKLSAgICB9IGNhdGNoIChlKSB7
Ci0gICAgICAgIGxvZzMoIlBBU1NFRCIsIHhoci5yZWFkeVN0YXRlLCAiZXhjZXB0aW9uIHRocm93
bi4iKTsKLSAgICB9Ci0gICAgdHJ5IHsKLSAgICAgICAgeGhyLm9wZW4oIkdFVCIsInJlc291cmNl
cy8xMjUxLmh0bWwiLCB0cnVlKTsKLSAgICAgICAgeGhyLnNlbmQobnVsbCk7Ci0gICAgfSBjYXRj
aChlKSB7Ci0gICAgICAgIGxvZzMoIkZBSUxFRCIsICJvcGVuL3NlbmQiLCAiZXhjZXB0aW9uIHRo
cm93bjogIiArIGUubWVzc2FnZSArIi4iKTsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfQorICAgIHRlc3RH
ZXRSZXNwb25zZUhlYWRlcih4aHIsIGhlYWRlck5hbWUsIHRydWUpOworICAgIHNob3VsZE5vdFRo
cm93KCd4aHIub3BlbigiR0VUIiwgInJlc291cmNlcy8xMjUxLmh0bWwiLCB0cnVlKTsnKTsKKyAg
ICAvLyBUZXN0IGZvciByZWFkeVN0YXRlID0gMQorICAgIHRlc3RHZXRSZXNwb25zZUhlYWRlcih4
aHIsIGhlYWRlck5hbWUsIHRydWUpOworICAgIHNob3VsZE5vdFRocm93KCJ4aHIuc2VuZChudWxs
KTsiKTsKIH0KK3J1blRlc3QoKTsKIDwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9oZWFkPgotPGJvZHkgb25sb2Fk
PSJ0ZXN0KCkiPgotCi08cD5UZXN0IHBhZ2UgZm9yIDxhIGhyZWY9Imh0dHA6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzU2Ij5idWcKLTE1MzU2PC9hPgotYW5kIDxhIGhyZWY9
Imh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5MTIxIj5idWcgMjkxMjE8
L2E+PC9wPgotPHA+QXNzZXJ0aW9uOiBJbnZva2luZyB0aGUgZ2V0UmVzcG9uc2VIZWFkZXIgbWV0
aG9kIHdoZW4gcmVhZHlTdGF0ZSA+PSAyCi0oSEVBREVSU19SRUNFSVZFRCkgcmV0dXJucyBhIGhl
YWRlciB2YWx1ZSBpZiB0aGUgaGVhZGVyIGV4aXN0cy48L3A+Ci08cD5Bc3NlcnRpb246IEludm9r
aW5nIHRoZSBnZXRSZXNwb25zZUhlYWRlciBtZXRob2Qgd2l0aCB0aGUgcGFyYW1ldGVyCi0gICAg
c2F0aXNmeWluZyB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgY2F1c2VzIGdldFJlc3BvbnNlSGVh
ZGVyCi0gICAgdG8gcmV0dXJuIG51bGw6Ci08bGk+MWEuIFRoZSBwYXJhbWV0ZXIgY2FzZS1pbnNl
bnNpdGl2ZWx5IG1hdGNoZXMgU2V0LUNvb2tpZTs8L2xpPgotPGxpPjFiLiBUaGUgcGFyYW1ldGVy
IGNhc2UtaW5zZW5zaXRpdmVseSBtYXRjaGVzIFNldC1Db29raWUyOzwvbGk+Ci08bGk+Mi4gIFRo
ZSBwYXJhbWV0ZXIgZG9lcyBub3QgbWF0Y2ggYW55IGhlYWRlciBpbiB0aGUgcmVzcG9uc2U7PC9s
aT4KLTxsaT4zYS4gVGhlIHBhcmFtZXRlciBpcyBudWxsIChpdCBpcyBub3QgYSB2YWxpZCBoZWFk
ZXIgbmFtZSk7PC9saT4KLTxsaT4zYi4gVGhlIHBhcmFtZXRlciBpcyAiQ29udGVudC1UeXBlOiIg
KGl0IGlzIG5vdCBhIHZhbGlkIGhlYWRlciBuYW1lKS48L2xpPgotCi08c2NyaXB0PgotICAgIGlm
ICghd2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIGRvY3VtZW50LndyaXRlKCI8cD5JZiB0aGUg
dGVzdCBwYXNzZXMgb25lIHNob3VsZCBzZWUgXAotYmVsb3cgdGhlIHJ1bGVyIHRoZSB0ZXh0IFwi
cGFzc2VkXCIgaW4gYWxsIGNhcGl0YWwgbGV0dGVycywgb25jZSBmb3IgZXZlcnkgcmVhZHkgc3Rh
dGUgJmx0OyAyLCBcCi1mb2xsb3dlZCBlYWNoIHRpbWUgYnkgYSBzcGFjZSBhbmQgdGhlIHJlYWR5
U3RhdGUgbnVtYmVyIGFuZCA2IHRpbWVzIGZvciBldmVyeSByZWFkeSBzdGF0ZSA+PSAyLjwvcD5c
blwKLTxwPlJlYWR5U3RhdGUgbnVtYmVycyBzaG91bGQgYmUgaW4gYXNjZW5kaW5nIG9yZGVyIDAg
dG8gNC48L3A+XG5cCi08cD5SZWFkeVN0YXRlIG51bWJlcnMgc2hvdWxkIGJlIGZvbGxvd2VkIGJ5
IGEgYmxhbmssIHRoZSBuYW1lIG9mIHRoZSBoZWFkZXIgdGVzdGVkLCBjb2xvbiBhIHNwYWNlIGFu
ZCBhIG1lc3NhZ2UuPC9wPlwKLTxwPlRoZSB2YWx1ZSBvZiB0aGUgIiArIGhlYWRlck5hbWUgKyAi
IGhlYWRlciBzaG91bGQgIGJlIHByaW50ZWQgZm9yIHJlYWR5IHN0YXRlIDIuPC9wPiIpOwotPC9z
Y3JpcHQ+Ci0gPGhyPgotIDxwPjxvbCBpZD1jb25zb2xlPjwvb2w+PC9wPgotPC9ib2R5PgogPC9o
dG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219634</attachid>
            <date>2013-12-19 02:22:28 -0800</date>
            <delta_ts>2014-01-13 08:53:58 -0800</delta_ts>
            <desc>fixing IDL</desc>
            <filename>bug-125840-20131219112033.patch</filename>
            <type>text/plain</type>
            <size>27812</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYwNzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWZhMmMyOGYyZTRiMDMx
ZjNlMWYyOTBmN2NmYzBhNDlmYzEyNGVlOS4uMTYzMGY3ZmFiNTRkMzljOTZhZjRiOTM3MGQ0YTVk
ZDUwYWJiM2RlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEzLTEyLTE5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uZkBnbWFpbC5jb20+CisKKyAgICAgICAgSGF2ZSBYSFIuZ2V0UmVz
cG9uc2VIZWFkZXIoKSByZXR1cm4gbnVsbCBpbiBpbml0aWFsIHJlYWR5IHN0YXRlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1ODQwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWVyZ2luZyBodHRwczov
L2Nocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vYmxpbmsvKy9kMjAxY2FmODc0YTBi
ZDZmMTAxZjUxNzQ2MmIzY2YxZDhjNWZjZTNkCisKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVl
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmdldEFsbFJlc3BvbnNl
SGVhZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Z2V0UmVzcG9uc2VI
ZWFkZXIpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5oOgorICAgICAgICAqIHhtbC9Y
TUxIdHRwUmVxdWVzdC5pZGw6CisKIDIwMTMtMTItMTcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8
Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFVwZGF0ZSBHT2JqZWN0
IERPTSBzeW1ib2xzIGZpbGUgYWZ0ZXIgcjE2MDMzNi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuY3BwCmluZGV4IGY5YjNlZGQ2MzFmMWMxZTBlZTBlMTk4MDcyMGIzNzM1ZmQ1ZjE3MDEu
LmM4NzFiNGU5YmRlYjIxNGE1OGFmZDExY2VjNGZkMTlhZGM1N2Y2MzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMTAwOCwxMiArMTAwOCwxMCBAQCBTdHJpbmcgWE1M
SHR0cFJlcXVlc3Q6OmdldFJlcXVlc3RIZWFkZXIoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBj
b25zdAogICAgIHJldHVybiBtX3JlcXVlc3RIZWFkZXJzLmdldChuYW1lKTsKIH0KIAotU3RyaW5n
IFhNTEh0dHBSZXF1ZXN0OjpnZXRBbGxSZXNwb25zZUhlYWRlcnMoRXhjZXB0aW9uQ29kZSYgZWMp
IGNvbnN0CitTdHJpbmcgWE1MSHR0cFJlcXVlc3Q6OmdldEFsbFJlc3BvbnNlSGVhZGVycygpIGNv
bnN0CiB7Ci0gICAgaWYgKG1fc3RhdGUgPCBIRUFERVJTX1JFQ0VJVkVEKSB7Ci0gICAgICAgIGVj
ID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgaWYgKG1fc3RhdGUgPCBIRUFERVJTX1JFQ0VJVkVE
IHx8IG1fZXJyb3IpCiAgICAgICAgIHJldHVybiAiIjsKLSAgICB9CiAKICAgICBTdHJpbmdCdWls
ZGVyIHN0cmluZ0J1aWxkZXI7CiAKQEAgLTEwNDQsMTIgKzEwNDIsMTAgQEAgU3RyaW5nIFhNTEh0
dHBSZXF1ZXN0OjpnZXRBbGxSZXNwb25zZUhlYWRlcnMoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0
CiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKIH0KIAotU3RyaW5nIFhNTEh0
dHBSZXF1ZXN0OjpnZXRSZXNwb25zZUhlYWRlcihjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIEV4
Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAorU3RyaW5nIFhNTEh0dHBSZXF1ZXN0OjpnZXRSZXNwb25z
ZUhlYWRlcihjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0CiB7Ci0gICAgaWYgKG1fc3Rh
dGUgPCBIRUFERVJTX1JFQ0VJVkVEKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7
CisgICAgaWYgKG1fc3RhdGUgPCBIRUFERVJTX1JFQ0VJVkVEIHx8IG1fZXJyb3IpCiAgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKLSAgICB9CiAKICAgICAvLyBTZWUgY29tbWVudCBpbiBnZXRBbGxS
ZXNwb25zZUhlYWRlcnMgYWJvdmUuCiAgICAgaWYgKGlzU2V0Q29va2llSGVhZGVyKG5hbWUpICYm
ICFzZWN1cml0eU9yaWdpbigpLT5jYW5Mb2FkTG9jYWxSZXNvdXJjZXMoKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCA5MzkzYTY2NjlmMzQzMmZkM2U2ZDIzMDA0ODk3NmZm
MzI2NjUzNWZhLi5hNDc4NzE5ZjI4MTIwM2RlZjljOGE4OGE0OTU3NDEyM2I5MmYyNmVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtMTA1LDggKzEwNSw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldFJlcXVlc3RIZWFkZXIoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBvdmVycmlkZU1pbWVU
eXBlKGNvbnN0IFN0cmluZyYgb3ZlcnJpZGUpOwogICAgIGJvb2wgZG9uZVdpdGhvdXRFcnJvcnMo
KSBjb25zdCB7IHJldHVybiAhbV9lcnJvciAmJiBtX3N0YXRlID09IERPTkU7IH0KLSAgICBTdHJp
bmcgZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKLSAgICBTdHJp
bmcgZ2V0UmVzcG9uc2VIZWFkZXIoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25D
b2RlJikgY29uc3Q7CisgICAgU3RyaW5nIGdldEFsbFJlc3BvbnNlSGVhZGVycygpIGNvbnN0Owor
ICAgIFN0cmluZyBnZXRSZXNwb25zZUhlYWRlcihjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNv
bnN0OwogICAgIFN0cmluZyByZXNwb25zZVRleHQoRXhjZXB0aW9uQ29kZSYpOwogICAgIFN0cmlu
ZyByZXNwb25zZVRleHRJZ25vcmluZ1Jlc3BvbnNlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVz
cG9uc2VCdWlsZGVyLnRvU3RyaW5nUHJlc2VydmVDYXBhY2l0eSgpOyB9CiAgICAgRG9jdW1lbnQq
IHJlc3BvbnNlWE1MKEV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuaWRsCmluZGV4IGZlODBlMTY2ZTAxMWU3NzkzOWRiNTcyMDJhZjk4NTUwN2Q0MzlkNjAuLmVm
MWEyMWFlNjdmNDA5MDAyMzc5YjkxNjVlN2YzMzJlZTA0YjkxZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmlkbApAQCAtODAsOCArODAsOCBAQCBlbnVtIFhNTEh0dHBSZXF1ZXN0
UmVzcG9uc2VUeXBlIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgWE1MSHR0cFJlcXVlc3RVcGxv
YWQgdXBsb2FkOwogCiAgICAgLy8gcmVzcG9uc2UKLSAgICBbVHJlYXRSZXR1cm5lZE51bGxTdHJp
bmdBcz1VbmRlZmluZWQsIFJhaXNlc0V4Y2VwdGlvbl0gRE9NU3RyaW5nIGdldEFsbFJlc3BvbnNl
SGVhZGVycygpOwotICAgIFtUcmVhdFJldHVybmVkTnVsbFN0cmluZ0FzPU51bGwsIFJhaXNlc0V4
Y2VwdGlvbl0gRE9NU3RyaW5nIGdldFJlc3BvbnNlSGVhZGVyKERPTVN0cmluZyBoZWFkZXIpOwor
ICAgIFtUcmVhdFJldHVybmVkTnVsbFN0cmluZ0FzPVVuZGVmaW5lZF0gRE9NU3RyaW5nIGdldEFs
bFJlc3BvbnNlSGVhZGVycygpOworICAgIFtUcmVhdFJldHVybmVkTnVsbFN0cmluZ0FzPU51bGxd
IERPTVN0cmluZyBnZXRSZXNwb25zZUhlYWRlcihET01TdHJpbmcgaGVhZGVyKTsKICAgICBbR2V0
dGVyUmFpc2VzRXhjZXB0aW9uLCBDdXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01T
dHJpbmcgcmVzcG9uc2VUZXh0OyAvLyBUaGUgY3VzdG9tIGdldHRlciBpbXBsZW1lbnRzIFRyZWF0
UmV0dXJuZWROdWxsU3RyaW5nQXM9TnVsbAogICAgIFtHZXR0ZXJSYWlzZXNFeGNlcHRpb25dIHJl
YWRvbmx5IGF0dHJpYnV0ZSBEb2N1bWVudCByZXNwb25zZVhNTDsKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGE1NmExZTRh
OGEwZjliYTE0ZjkxYTQwYzM4ODg2YzBmZTRhZDJkZGEuLjM4ZWJhZmM5ODE4ZTE2ZDY3YmJiOWQ3
MDRmOTkxMzhkYzdhMDY4NTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMy0xMi0xOSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubmZAZ21haWwuY29tPgorCisgICAgICAgIEhhdmUgWEhSLmdldFJl
c3BvbnNlSGVhZGVyKCkgcmV0dXJuIG51bGwgaW4gaW5pdGlhbCByZWFkeSBzdGF0ZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTg0MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1lcmdpbmcgaHR0cHM6
Ly9jaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL2JsaW5rLysvZDIwMWNhZjg3NGEw
YmQ2ZjEwMWY1MTc0NjJiM2NmMWQ4YzVmY2UzZAorCisgICAgICAgICogaHR0cC90ZXN0cy94bWxo
dHRwcmVxdWVzdC9nZXRBbGxSZXNwb25zZUhlYWRlcnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvZ2V0QWxsUmVzcG9uc2VIZWFkZXJzLmh0bWw6Cisg
ICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9nZXRSZXNwb25zZUhlYWRlci1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9nZXRSZXNwb25z
ZUhlYWRlci5odG1sOgorCiAyMDEzLTEyLTE3ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bWFyaW8u
cHJhZGFAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0dUS11bV0syXSByb3dBdEluZGV4IGlzIG5v
dCBpbXBsZW1lbnRlZCBpbiBEUlQvV0tUUgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9nZXRBbGxSZXNwb25zZUhlYWRlcnMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9nZXRBbGxSZXNwb25zZUhlYWRl
cnMtZXhwZWN0ZWQudHh0CmluZGV4IDgwNTY0MWUyODMxNjRiYzFjM2VhYjFmZWYxMzVlNTk0MDg1
Yjg1NDEuLjQ0OTZjOGM1ZjVkOTAxMjhkMWE5YTgzZWFhYzNiZmFmMTZjZDE0ZjIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvZ2V0QWxsUmVzcG9uc2VI
ZWFkZXJzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L2dldEFsbFJlc3BvbnNlSGVhZGVycy1leHBlY3RlZC50eHQKQEAgLTEsMTAgKzEsMjcg
QEAKLVRlc3QgcGFnZSBmb3IgYnVnIDE1MzU2IGFuZCBidWcgMjkxMjEKK1Rlc3QgdGhlIHJlcXVp
cmVkIGJlaGF2aW9yIG9mIFhNTEh0dHBSZXF1ZXN0LmdldEFsbFJlc3BvbnNlSGVhZGVycygpCiAK
LUFzc2VydGlvbjogSW52b2tpbmcgZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIG1ldGhvZCB3aGVuIHJl
YWR5U3RhdGUgPj0gMiAoSEVBREVSU19SRUNFSVZFRCkgc2hvdWxkIHJldHVybiBhIGNvbmZvcm1p
bmcgbGlzdCBvZiBoZWFkZXJzLgorT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCi1QQVNTRUQg
MAotUEFTU0VEIDEKLVBBU1NFRCAyOiBnZXRBbGxSZXNwb25zZUhlYWRlcnMgcmV0dXJuZWQgd2hh
dCBsb29rcyBsaWtlIGEgY29uZm9ybWluZyBoZWFkZXJsaXN0LgotUEFTU0VEIDMKLVBBU1NFRCA0
CisKK1BBU1Mge3N0YXRlOiAwfTsgaGVhZGVyVmFsdWVzID0geGhyLmdldEFsbFJlc3BvbnNlSGVh
ZGVycygpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaGVhZGVyVmFsdWVzIGlzIHRo
ZSBlbXB0eSBzdHJpbmcKK1BBU1Mge3N0YXRlOiAxfTsgaGVhZGVyVmFsdWVzID0geGhyLmdldEFs
bFJlc3BvbnNlSGVhZGVycygpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaGVhZGVy
VmFsdWVzIGlzIHRoZSBlbXB0eSBzdHJpbmcKK1BBU1MgZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkg
cmVzdWx0IGlzIGVtcHR5IGluIHJlYWR5IHN0YXRlIDEuCitQQVNTIHhoci5vcGVuKCJHRVQiLCAi
cmVzb3VyY2VzLzEyNTEuaHRtbCIsIHRydWUpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BB
U1Mge3N0YXRlOiAxfTsgaGVhZGVyVmFsdWVzID0geGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygp
OyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaGVhZGVyVmFsdWVzIGlzIHRoZSBlbXB0
eSBzdHJpbmcKK1BBU1MgeGhyLnNlbmQobnVsbCk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgor
UEFTUyB7c3RhdGU6IDJ9OyBoZWFkZXJWYWx1ZXMgPSB4aHIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJz
KCk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBoZWFkZXJWYWx1ZXMgaXMgbm90IHRo
ZSBlbXB0eSBzdHJpbmcKK1BBU1MgSGVhZGVyIHZhbHVlcyBhcHBlYXJzIHRvIGJlIGNvbmZvcm1p
bmcuCitQQVNTIHtzdGF0ZTogM307IGhlYWRlclZhbHVlcyA9IHhoci5nZXRBbGxSZXNwb25zZUhl
YWRlcnMoKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGhlYWRlclZhbHVlcyBpcyBu
b3QgdGhlIGVtcHR5IHN0cmluZworUEFTUyByZXNwb25zZUhlYWRlcnMgaXMgc2F2ZWRIZWFkZXJz
CitQQVNTIHtzdGF0ZTogNH07IGhlYWRlclZhbHVlcyA9IHhoci5nZXRBbGxSZXNwb25zZUhlYWRl
cnMoKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGhlYWRlclZhbHVlcyBpcyBub3Qg
dGhlIGVtcHR5IHN0cmluZworUEFTUyByZXNwb25zZUhlYWRlcnMgaXMgc2F2ZWRIZWFkZXJzCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9nZXRBbGxSZXNwb25z
ZUhlYWRlcnMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvZ2V0
QWxsUmVzcG9uc2VIZWFkZXJzLmh0bWwKaW5kZXggZjM3MWYwYTQ5MTgxODU1MjhkNzc3ZmEyZDk0
YjZkODFiNGUwOTA0Ny4uNWM5MGRkM2RiODllZmMxZWRjZmQ3MTY5MzNlYWUxZWQwNjg4NmJlMCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9nZXRBbGxS
ZXNwb25zZUhlYWRlcnMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L2dldEFsbFJlc3BvbnNlSGVhZGVycy5odG1sCkBAIC0xLDExOCArMSw2OSBAQAorPCFk
b2N0eXBlIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgotICAgIDx0aXRsZT5DaGVjayBleGNlcHRpb24g
dGhyb3duIGJ5IGdldEFsbFJlc3BvbnNlSGVhZGVycyBhbmQgc29tZQotICAgIGNoYXJhY3Rlcmlz
dGljcyBvZiB0aGUgcmV0dXJuIHZhbHVlPC90aXRsZT4KKzx0aXRsZT5UZXN0aW5nIFhNTEh0dHBS
ZXF1ZXN0LmdldFJlcG9uc2VIZWFkZXIgYmVoYXZpb3I8L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii9q
cy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCI+CitkZXNjcmlwdGlvbigiVGVzdCB0aGUgcmVxdWlyZWQgYmVoYXZp
b3Igb2YgWE1MSHR0cFJlcXVlc3QuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkiKTsKIAotZnVuY3Rp
b24gbG9nIChtc2cpIHsKLSAgICB2YXIgcGFyYWdyYXBoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgibGkiKTsKLSAgICBwYXJhZ3JhcGguaW5uZXJIVE1MPW1zZy5yZXBsYWNlKC9cbi9nbSwiPGJy
PiIpOwotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQo
cGFyYWdyYXBoKTsKLX0KK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIAotdmFyIHhocjsK
K3ZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKIAotaWYgKHdpbmRvdy5YTUxIdHRwUmVx
dWVzdCkgewotICAgIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwotfSBlbHNlIHsKLSAgICB0
cnkgewotICAgICAgICB4aHIgPSBuZXcgQWN0aXZlWE9iamVjdCgiTXN4bWwyLlhNTEhUVFAiKTsK
LSAgICB9IGNhdGNoIChleCkgewotICAgICAgICB4aHIgPSBuZXcgQWN0aXZlWE9iamVjdCgiTWlj
cm9zb2Z0LlhNTEhUVFAiKTsKLSAgICB9Cit2YXIgc2F2ZWRIZWFkZXJzID0gbnVsbDsKKwordmFy
IGhlYWRlclZhbHVlczsKK2Z1bmN0aW9uIHRlc3RHZXRBbGxSZXNwb25zZUhlYWRlcnMoeGhyLCBl
eHBlY3RFbXB0eSkgeworICAgIHNob3VsZE5vdFRocm93KCJ7c3RhdGU6ICIgKyB4aHIucmVhZHlT
dGF0ZSArICJ9OyBoZWFkZXJWYWx1ZXMgPSB4aHIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCk7Iik7
CisgICAgaWYgKGV4cGVjdEVtcHR5ICYmIGhlYWRlclZhbHVlcyAhPT0gIiIpCisgICAgICAgIHRl
c3RGYWlsZWQoIkV4cGVjdGVkIHRoZSBlbXB0eSBzdHJpbmcsIGdvdDogJyIgKyBoZWFkZXJWYWx1
ZXMgKyAiJyIpOworICAgIGVsc2UKKyAgICAgICAgdGVzdFBhc3NlZCgiaGVhZGVyVmFsdWVzIGlz
ICIgKyAoIWV4cGVjdEVtcHR5ID8gIm5vdCAiIDogIiIpICsgInRoZSBlbXB0eSBzdHJpbmciKTsK
KyAgICByZXR1cm4gaGVhZGVyVmFsdWVzOwogfQogCi12YXIgc2F2ZWRIZWFkZXIgPSBudWxsOwor
dmFyIHJlc3BvbnNlSGVhZGVyczsKIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigp
IHsKICAgICB2YXIgclN0YXRlID0gdGhpcy5yZWFkeVN0YXRlOwotICAgIC8vIFdlIGV4cGVjdCBh
biBJTlZBTElEX1NUQVRFX0VSUiBleGNlcHRpb24gZm9yIHJlYWR5U3RhdGUgPCAyCi0gICAgLy8g
YW5kIG5vIGV4Y2VwdGlvbiBmb3IgcmVhZHlTdGF0ZSA+PSAyCi0gICAgdHJ5IHsKLSAgICAgICAg
dmFyIGhlYWRlciA9IHRoaXMuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCk7Ci0gICAgICAgIGlmIChy
U3RhdGUgIT0gdGhpcy5yZWFkeVN0YXRlKQotICAgICAgICAgICAgbG9nKCJVTkNFUlRBSU4gIiAr
IHJTdGF0ZSArICI6IHJlYWR5U3RhdGUgY2hhbmdlZCB3aGlsZSBnZXR0aW5nIGhlYWRlcnMuIik7
Ci0gICAgICAgIGlmIChyU3RhdGUgPCAyKSB7Ci0gICAgICAgICAgICBsb2coIkZBSUxFRCAiICsg
clN0YXRlICsgIjogaGVhZGVybGlzdD0iICsgaGVhZGVyKTsKLSAgICAgICAgfSBlbHNlIGlmICho
ZWFkZXIpCi0gICAgICAgICAgICBpZiAoc2F2ZWRIZWFkZXIpCi0gICAgICAgICAgICAgICAgaWYg
KHNhdmVkSGVhZGVyICE9IGhlYWRlcikgewotICAgICAgICAgICAgICAgICAgICBsb2coIkZBSUxF
RCAiICsgclN0YXRlICsKLSI6IGhlYWRlcmxpc3QgY2hhbmdlZCBhZnRlciBpdCB3YXMgZmlyc3Qg
cmV0dXJuZWQuIFByZXZpb3VzIGhlYWRlciBsaXN0OlxuIgotKyBzYXZlZEhlYWRlciArICJcbiBO
ZXcgaGVhZGVybGlzdDpcbiIgKyBoZWFkZXIpOwotICAgICAgICAgICAgICAgIHNhdmVkSGVhZGVy
ID0gaGVhZGVyOwotICAgICAgICAgICAgICAgIH0gCi0gICAgICAgICAgICAgICAgZWxzZSAvL3Nh
dmVkSGVhZGVyID09IGhlYWRlciBoZXJlOyBubyBuZWVkIHRvIHJlcHJpbnQgaGVhZGVyCi0gICAg
ICAgICAgICAgICAgICAgIGxvZygiUEFTU0VEICIgKyByU3RhdGUpOwotICAgICAgICAgICAgZWxz
ZSB7Ly9maXJzdCBoZWFkZXIgbGlzdCByZXRyaWV2ZWQKLSAgICAgICAgICAgICAgICBpZiAoL15T
ZXQtQ29va2llOnxeU2V0LUNvb2tpZTI6L2ltLnRlc3QoaGVhZGVyKSkKLSAgICAgICAgICAgICAg
ICAgICAgbG9nKCJGQUlMRUQgIiArIHJTdGF0ZSArCi0iOiAvXlNldC1Db29raWU6fF5TZXQtQ29v
a2llMjovIG1hdGNoZXMuIGdldEFsbFJlc3BvbnNlSGVhZGVycyByZXR1cm5lZDpcbiIgKyBoZWFk
ZXIpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotLy9kbyBu
b3QgcHJpbnQgbGlzdCBmb3IgYXV0b21hdGVkIHRlc3RzIHRvIGF2b2lkIGZhbHNlIGZhaWx1cmVz
LgotICAgICAgICAgICAgICAgICAgICBsb2coIlBBU1NFRCAiICsgclN0YXRlICsKLSI6IGdldEFs
bFJlc3BvbnNlSGVhZGVycyByZXR1cm5lZCB3aGF0IGxvb2tzIGxpa2UgYSBjb25mb3JtaW5nIGhl
YWRlcmxpc3QuIik7CisgICAgcmVzcG9uc2VIZWFkZXJzID0gdGVzdEdldEFsbFJlc3BvbnNlSGVh
ZGVycyh0aGlzLCByU3RhdGUgPD0gWE1MSHR0cFJlcXVlc3QuT1BFTkVEKTsKKyAgICBpZiAocmVz
cG9uc2VIZWFkZXJzKSB7CisgICAgICAgIGlmIChzYXZlZEhlYWRlcnMpIHsKKyAgICAgICAgICAg
IHNob3VsZEJlKCJyZXNwb25zZUhlYWRlcnMiLCAic2F2ZWRIZWFkZXJzIik7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBpZiAoL15TZXQtQ29va2llOnxeU2V0LUNvb2tpZTI6L2ltLnRl
c3QocmVzcG9uc2VIZWFkZXJzKSkgeworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkRpZCBu
b3QgZXhwZWN0IHRvIGZpbmQgYSBTZXQtQ29va2llezJ9IGhlYWRlciwgZ290OiAnIiArIHJlc3Bv
bnNlSGVhZGVycyArICInIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IC8vIERvIG5vdCBwcmludCBsaXN0IGZvciBhdXRvbWF0ZWQgdGVzdHMgdG8gYXZvaWQgZmFsc2Ug
ZmFpbHVyZXMuCisgICAgICAgICAgICAgICAgaWYgKHNlbGYudGVzdFJ1bm5lcikKKyAgICAgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiSGVhZGVyIHZhbHVlcyBhcHBlYXJzIHRvIGJlIGNvbmZv
cm1pbmcuIik7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBsb2co
IlBBU1NFRCAiICsgclN0YXRlICsKLSI6IGdldEFsbFJlc3BvbnNlSGVhZGVycyByZXR1cm5lZDpc
biIgKyBoZWFkZXIpOwotICAgICAgICAgICAgICAgIHNhdmVkSGVhZGVyID0gaGVhZGVyOworICAg
ICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJIZWFkZXIgdmFsdWVzIGFwcGVhcnMgb2s6ICIg
KyBKU09OLnN0cmluZ2lmeShoZWFkZXJWYWx1ZXMpKTsKICAgICAgICAgICAgIH0KLSAgICAgICAg
ZWxzZSAvL2hlYWRlciBpcyBudWxsCi0gICAgICAgICAgICBsb2coIkZBSUxFRCAiICsgclN0YXRl
ICsgIjogbnVsbCBoZWFkZXIgbGlzdCByZXR1cm5lZCIpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAg
ICAgICAgaWYgKHJTdGF0ZSA8IDIpIHsKLSAgICAgICAgICAgIGxvZygiUEFTU0VEICIgKyByU3Rh
dGUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbG9nKCJGQUlMRUQgIiArIHJTdGF0
ZSArICI6IEVYQ0VQVElPTiBUSFJPV046ICIgKyBlLm1lc3NhZ2UgKyAiLiIpOwogICAgICAgICB9
CisgICAgICAgIHNhdmVkSGVhZGVycyA9IHJlc3BvbnNlSGVhZGVyczsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBpZiAoclN0YXRlID4gWE1MSHR0cFJlcXVlc3QuT1BFTkVEKQorICAgICAgICAgICAg
dGVzdEZhaWxlZCgiSW4gcmVhZHkgc3RhdGUgIiArIHJTdGF0ZSArICIsIHVuZXhwZWN0ZWQgZW1w
dHkgdmFsdWUuIik7CisgICAgICAgIGVsc2UgaWYgKHJlc3BvbnNlSGVhZGVycyAhPT0gIiIpCisg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJJbiByZWFkeSBzdGF0ZSAiICsgclN0YXRlICsgIiwgZXhw
ZWN0ZWQgdGhlIGVtcHR5IHN0cmluZywgZ290OiAiICsgSlNPTi5zdHJpbmdpZnkocmVzcG9uc2VI
ZWFkZXJzKSArICIuIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoImdl
dEFsbFJlc3BvbnNlSGVhZGVycygpIHJlc3VsdCBpcyBlbXB0eSBpbiByZWFkeSBzdGF0ZSAiICsg
clN0YXRlICsgIi4iKTsKICAgICB9Ci0gICAgaWYgKChyU3RhdGUgPT0gNCkgJiYgKHdpbmRvdy50
ZXN0UnVubmVyKSkKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworCisgICAg
aWYgKHJTdGF0ZSA9PSBYTUxIdHRwUmVxdWVzdC5ET05FKQorICAgICAgICBmaW5pc2hKU1Rlc3Qo
KTsKIH0KIAotZnVuY3Rpb24gdGVzdCgpIHsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
LSAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwotICAgIH0KK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CiAgICAgLy8gVGVzdCBm
b3IgcmVhZHlTdGF0ZSA9IDAKLSAgICB0cnkgewotICAgICAgICB2YXIgaGVhZGVyID0geGhyLmdl
dEFsbFJlc3BvbnNlSGVhZGVycygpOwotICAgICAgICBsb2coIkZBSUxFRCAiICsgeGhyLnJlYWR5
U3RhdGUgKyAiOiBoZWFkZXI9IiArIGhlYWRlcik7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAg
ICBsb2coIlBBU1NFRCAiICsgeGhyLnJlYWR5U3RhdGUpOwotICAgIH0KLSAgICB0cnkgewotICAg
ICAgICB4aHIub3BlbigiR0VUIiwicmVzb3VyY2VzLzEyNTEuaHRtbCIsIHRydWUpOwotICAgICAg
ICB4aHIuc2VuZChudWxsKTsKLSAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgbG9nKCJGQUlMRUQg
b3Blbi9zZW5kOiBFWENFUFRJT04gVEhST1dOOiAiICsgZS5tZXNzYWdlICsiLiIpOwotICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKLSAgICB9CisgICAgdGVzdEdldEFsbFJlc3BvbnNlSGVhZGVycyh4aHIsIHRydWUpOwor
ICAgIHNob3VsZE5vdFRocm93KCd4aHIub3BlbigiR0VUIiwgInJlc291cmNlcy8xMjUxLmh0bWwi
LCB0cnVlKTsnKTsKKyAgICAvLyBUZXN0IGZvciByZWFkeVN0YXRlID0gMQorICAgIHRlc3RHZXRB
bGxSZXNwb25zZUhlYWRlcnMoeGhyLCB0cnVlKTsKKyAgICBzaG91bGROb3RUaHJvdygieGhyLnNl
bmQobnVsbCk7Iik7CiB9CitydW5UZXN0KCk7CiA8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvanMt
dGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KLTxib2R5
IG9ubG9hZD0idGVzdCgpIj4KLQotPHA+VGVzdCBwYWdlIGZvciA8YSBocmVmPSJodHRwOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM1NiI+YnVnIDE1MzU2PC9hPgotYW5kIDxh
IGhyZWY9Imh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5MTIxIj5idWcg
MjkxMjE8L2E+PC9wPgotPHA+QXNzZXJ0aW9uOiBJbnZva2luZyBnZXRBbGxSZXNwb25zZUhlYWRl
cnMgbWV0aG9kIHdoZW4gcmVhZHlTdGF0ZSA+PSAyCi0oSEVBREVSU19SRUNFSVZFRCkgc2hvdWxk
IHJldHVybiBhIGNvbmZvcm1pbmcgbGlzdCBvZiBoZWFkZXJzLjwvcD4KLTxzY3JpcHQ+Ci0gICAg
aWYgKCF3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgZG9jdW1lbnQud3JpdGUoIjxwPklmIHRo
ZSB0ZXN0IHBhc3NlcyBvbmUgc2hvdWxkIHNlZSBcCi1iZWxvdyB0aGUgcnVsZXIgdGhlIHRleHQg
XCJwYXNzZWRcIiBpbiBhbGwgY2FwaXRhbCBsZXR0ZXJzLCA1IHRpbWVzLCBcCi1mb2xsb3dlZCBl
YWNoIHRpbWUgYnkgYSBzcGFjZSBhbmQgdGhlIHJlYWR5U3RhdGUgbnVtYmVyLjwvcD5cblwKLTxw
PlJlYWR5U3RhdGVudW1iZXJzIHNob3VsZCBiZSBpbiBhc2NlbmRpbmcgb3JkZXIgMCB0byA0Ljwv
cD5cblwKLTxwPkEgY29uZm9ybWluZyBsaXN0IG9mIHJlc3BvbnNlIGhlYWRlcnMgc2hvdWxkIGFs
c28gYmUgcHJpbnRlZC48L3A+XG5cCi08cD5BIGNvbmZvcm1pbmcgbGlzdCBvZiBoZWFkZXJzOjwv
cD4gXAotICAgPGxpPiBjb250YWlucyBvbmUgaGVhZGVyIHBlciBsaW5lLjwvbGk+IFwKLSAgIDxs
aT4gaGFzIGhlYWRlciBuYW1lcyBhbmQgaGVhZGVyIHZhbHVlcyBzZXBhcmF0ZWQgYnkgYSBDT0xP
TiBhbmQgXAotYSBTUEFDRS48L2xpPlwKLSAgIDxsaT4gZG9lcyBub3QgY29udGFpbiBhbnkgaGVh
ZGVycyB0aGF0IG1hdGNoIChjYXNlLWluc2Vuc2l0aXZlbHkpIFwKLVNldC1Db29raWUgb3IgU2V0
LUNvb2tpZTI8L2xpPiIpOwotIDwvc2NyaXB0PgotIDxocj4KLSA8cD48b2wgaWQ9Y29uc29sZT48
L29sPjwvcD4KLTwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMveG1saHR0cHJlcXVlc3QvZ2V0UmVzcG9uc2VIZWFkZXItZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9nZXRSZXNwb25zZUhlYWRlci1leHBl
Y3RlZC50eHQKaW5kZXggNzQ4Yjc0N2NmZGRkOGZlMmNiMDE4OTdkMjE4NTZhODViNDk1Yzc0MC4u
ZDFiODViYTI0MGRiY2VkMWRkYzNhYThhNmQ4MGIxMDQ5MGY2NjBlOCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9nZXRSZXNwb25zZUhlYWRlci1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9nZXRS
ZXNwb25zZUhlYWRlci1leHBlY3RlZC50eHQKQEAgLTQsMzUgKzQsNTkgQEAgQ09OU09MRSBNRVNT
QUdFOiBSZWZ1c2VkIHRvIGdldCB1bnNhZmUgaGVhZGVyICJTZVQtQ09vS2llIgogQ09OU09MRSBN
RVNTQUdFOiBSZWZ1c2VkIHRvIGdldCB1bnNhZmUgaGVhZGVyICJzRXQtY29Pa0lFMiIKIENPTlNP
TEUgTUVTU0FHRTogUmVmdXNlZCB0byBnZXQgdW5zYWZlIGhlYWRlciAiU2VULUNPb0tpZSIKIENP
TlNPTEUgTUVTU0FHRTogUmVmdXNlZCB0byBnZXQgdW5zYWZlIGhlYWRlciAic0V0LWNvT2tJRTIi
Ci1UZXN0IHBhZ2UgZm9yIGJ1ZyAxNTM1NiBhbmQgYnVnIDI5MTIxCitUZXN0IHRoZSByZXF1aXJl
ZCBiZWhhdmlvciBvZiBYTUxIdHRwUmVxdWVzdC5nZXRSZXNwb25zZUhlYWRlcigpCiAKLUFzc2Vy
dGlvbjogSW52b2tpbmcgdGhlIGdldFJlc3BvbnNlSGVhZGVyIG1ldGhvZCB3aGVuIHJlYWR5U3Rh
dGUgPj0gMiAoSEVBREVSU19SRUNFSVZFRCkgcmV0dXJucyBhIGhlYWRlciB2YWx1ZSBpZiB0aGUg
aGVhZGVyIGV4aXN0cy4KK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAotQXNzZXJ0aW9uOiBJ
bnZva2luZyB0aGUgZ2V0UmVzcG9uc2VIZWFkZXIgbWV0aG9kIHdpdGggdGhlIHBhcmFtZXRlciBz
YXRpc2Z5aW5nIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBjYXVzZXMgZ2V0UmVzcG9uc2VIZWFk
ZXIgdG8gcmV0dXJuIG51bGw6CiAKLTFhLiBUaGUgcGFyYW1ldGVyIGNhc2UtaW5zZW5zaXRpdmVs
eSBtYXRjaGVzIFNldC1Db29raWU7Ci0xYi4gVGhlIHBhcmFtZXRlciBjYXNlLWluc2Vuc2l0aXZl
bHkgbWF0Y2hlcyBTZXQtQ29va2llMjsKLTIuIFRoZSBwYXJhbWV0ZXIgZG9lcyBub3QgbWF0Y2gg
YW55IGhlYWRlciBpbiB0aGUgcmVzcG9uc2U7Ci0zYS4gVGhlIHBhcmFtZXRlciBpcyBudWxsIChp
dCBpcyBub3QgYSB2YWxpZCBoZWFkZXIgbmFtZSk7Ci0zYi4gVGhlIHBhcmFtZXRlciBpcyAiQ29u
dGVudC1UeXBlOiIgKGl0IGlzIG5vdCBhIHZhbGlkIGhlYWRlciBuYW1lKS4KLVBBU1NFRCAwIENv
bnRlbnQtVHlwZTogZXhjZXB0aW9uIHRocm93bi4KLVBBU1NFRCAxIENvbnRlbnQtVHlwZTogZXhj
ZXB0aW9uIHRocm93bgotUEFTU0VEIDIgQ29udGVudC1UeXBlOiBSZXNwb25zZUhlYWRlcihDb250
ZW50LVR5cGUpIHJldHVybmVkIGEgdmFsdWUuCi1QQVNTRUQgMiBTZVQtQ09vS2llOiBnZXRSZXNw
b25zZUhlYWRlcihTZVQtQ09vS2llKSByZXR1cm5lZCBudWxsLgotUEFTU0VEIDIgc0V0LWNvT2tJ
RTI6IGdldFJlc3BvbnNlSGVhZGVyKHNFdC1jb09rSUUyKSByZXR1cm5lZCBudWxsLgotUEFTU0VE
IDIgeHh4LW15dGVzdC1oZWFkZXJhYmM6IGdldFJlc3BvbnNlSGVhZGVyKHh4eC1teXRlc3QtaGVh
ZGVyYWJjKSByZXR1cm5lZCBudWxsLgotUEFTU0VEIDIgbnVsbDogZ2V0UmVzcG9uc2VIZWFkZXIo
bnVsbCkgcmV0dXJuZWQgbnVsbC4KLVBBU1NFRCAyIENvbnRlbnQtVHlwZTo6IGdldFJlc3BvbnNl
SGVhZGVyKENvbnRlbnQtVHlwZTopIHJldHVybmVkIG51bGwuCi1QQVNTRUQgMyBDb250ZW50LVR5
cGU6IENvbnRlbnQtVHlwZQotUEFTU0VEIDMgU2VULUNPb0tpZTogZ2V0UmVzcG9uc2VIZWFkZXIo
U2VULUNPb0tpZSkgcmV0dXJuZWQgbnVsbC4KLVBBU1NFRCAzIHNFdC1jb09rSUUyOiBnZXRSZXNw
b25zZUhlYWRlcihzRXQtY29Pa0lFMikgcmV0dXJuZWQgbnVsbC4KLVBBU1NFRCAzIHh4eC1teXRl
c3QtaGVhZGVyYWJjOiBnZXRSZXNwb25zZUhlYWRlcih4eHgtbXl0ZXN0LWhlYWRlcmFiYykgcmV0
dXJuZWQgbnVsbC4KLVBBU1NFRCAzIG51bGw6IGdldFJlc3BvbnNlSGVhZGVyKG51bGwpIHJldHVy
bmVkIG51bGwuCi1QQVNTRUQgMyBDb250ZW50LVR5cGU6OiBnZXRSZXNwb25zZUhlYWRlcihDb250
ZW50LVR5cGU6KSByZXR1cm5lZCBudWxsLgotUEFTU0VEIDQgQ29udGVudC1UeXBlOiBDb250ZW50
LVR5cGUKLVBBU1NFRCA0IFNlVC1DT29LaWU6IGdldFJlc3BvbnNlSGVhZGVyKFNlVC1DT29LaWUp
IHJldHVybmVkIG51bGwuCi1QQVNTRUQgNCBzRXQtY29Pa0lFMjogZ2V0UmVzcG9uc2VIZWFkZXIo
c0V0LWNvT2tJRTIpIHJldHVybmVkIG51bGwuCi1QQVNTRUQgNCB4eHgtbXl0ZXN0LWhlYWRlcmFi
YzogZ2V0UmVzcG9uc2VIZWFkZXIoeHh4LW15dGVzdC1oZWFkZXJhYmMpIHJldHVybmVkIG51bGwu
Ci1QQVNTRUQgNCBudWxsOiBnZXRSZXNwb25zZUhlYWRlcihudWxsKSByZXR1cm5lZCBudWxsLgot
UEFTU0VEIDQgQ29udGVudC1UeXBlOjogZ2V0UmVzcG9uc2VIZWFkZXIoQ29udGVudC1UeXBlOikg
cmV0dXJuZWQgbnVsbC4KK1BBU1Mge3N0YXRlOiAwfTsgaGVhZGVyVmFsdWUgPSB4aHIuZ2V0UmVz
cG9uc2VIZWFkZXIoJ0NvbnRlbnQtVHlwZScpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BB
U1MgaGVhZGVyVmFsdWUgaXMgbnVsbAorUEFTUyB7c3RhdGU6IDF9OyBoZWFkZXJWYWx1ZSA9IHho
ci5nZXRSZXNwb25zZUhlYWRlcignQ29udGVudC1UeXBlJyk7IGRpZCBub3QgdGhyb3cgZXhjZXB0
aW9uLgorUEFTUyBoZWFkZXJWYWx1ZSBpcyBudWxsCitQQVNTIEhlYWRlciAnQ29udGVudC1UeXBl
JyBpcyBudWxsIGluIHJlYWR5IHN0YXRlIDEuCitQQVNTIHhoci5vcGVuKCJHRVQiLCAicmVzb3Vy
Y2VzLzEyNTEuaHRtbCIsIHRydWUpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1Mge3N0
YXRlOiAxfTsgaGVhZGVyVmFsdWUgPSB4aHIuZ2V0UmVzcG9uc2VIZWFkZXIoJ0NvbnRlbnQtVHlw
ZScpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaGVhZGVyVmFsdWUgaXMgbnVsbAor
UEFTUyB4aHIuc2VuZChudWxsKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIHtzdGF0
ZTogMn07IGhlYWRlclZhbHVlID0geGhyLmdldFJlc3BvbnNlSGVhZGVyKCdDb250ZW50LVR5cGUn
KTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGhlYWRlclZhbHVlIGlzIG5vbi1udWxs
LgorUEFTUyB7c3RhdGU6IDJ9OyBoZWFkZXJWYWx1ZSA9IHhoci5nZXRSZXNwb25zZUhlYWRlcign
U2VULUNPb0tpZScpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaGVhZGVyVmFsdWUg
aXMgbnVsbAorUEFTUyB7c3RhdGU6IDJ9OyBoZWFkZXJWYWx1ZSA9IHhoci5nZXRSZXNwb25zZUhl
YWRlcignc0V0LWNvT2tJRTInKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGhlYWRl
clZhbHVlIGlzIG51bGwKK1BBU1Mge3N0YXRlOiAyfTsgaGVhZGVyVmFsdWUgPSB4aHIuZ2V0UmVz
cG9uc2VIZWFkZXIoJ3h4eC1teXRlc3QtaGVhZGVyYWJjJyk7IGRpZCBub3QgdGhyb3cgZXhjZXB0
aW9uLgorUEFTUyBoZWFkZXJWYWx1ZSBpcyBudWxsCitQQVNTIHtzdGF0ZTogMn07IGhlYWRlclZh
bHVlID0geGhyLmdldFJlc3BvbnNlSGVhZGVyKCdudWxsJyk7IGRpZCBub3QgdGhyb3cgZXhjZXB0
aW9uLgorUEFTUyBoZWFkZXJWYWx1ZSBpcyBudWxsCitQQVNTIHtzdGF0ZTogMn07IGhlYWRlclZh
bHVlID0geGhyLmdldFJlc3BvbnNlSGVhZGVyKCdDb250ZW50LVR5cGU6Jyk7IGRpZCBub3QgdGhy
b3cgZXhjZXB0aW9uLgorUEFTUyBoZWFkZXJWYWx1ZSBpcyBudWxsCitQQVNTIHtzdGF0ZTogM307
IGhlYWRlclZhbHVlID0geGhyLmdldFJlc3BvbnNlSGVhZGVyKCdDb250ZW50LVR5cGUnKTsgZGlk
IG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGhlYWRlclZhbHVlIGlzIG5vbi1udWxsLgorUEFT
UyByZXN1bHQgaXMgc2F2ZWRIZWFkZXIKK1BBU1Mge3N0YXRlOiAzfTsgaGVhZGVyVmFsdWUgPSB4
aHIuZ2V0UmVzcG9uc2VIZWFkZXIoJ1NlVC1DT29LaWUnKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRp
b24uCitQQVNTIGhlYWRlclZhbHVlIGlzIG51bGwKK1BBU1Mge3N0YXRlOiAzfTsgaGVhZGVyVmFs
dWUgPSB4aHIuZ2V0UmVzcG9uc2VIZWFkZXIoJ3NFdC1jb09rSUUyJyk7IGRpZCBub3QgdGhyb3cg
ZXhjZXB0aW9uLgorUEFTUyBoZWFkZXJWYWx1ZSBpcyBudWxsCitQQVNTIHtzdGF0ZTogM307IGhl
YWRlclZhbHVlID0geGhyLmdldFJlc3BvbnNlSGVhZGVyKCd4eHgtbXl0ZXN0LWhlYWRlcmFiYycp
OyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaGVhZGVyVmFsdWUgaXMgbnVsbAorUEFT
UyB7c3RhdGU6IDN9OyBoZWFkZXJWYWx1ZSA9IHhoci5nZXRSZXNwb25zZUhlYWRlcignbnVsbCcp
OyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaGVhZGVyVmFsdWUgaXMgbnVsbAorUEFT
UyB7c3RhdGU6IDN9OyBoZWFkZXJWYWx1ZSA9IHhoci5nZXRSZXNwb25zZUhlYWRlcignQ29udGVu
dC1UeXBlOicpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaGVhZGVyVmFsdWUgaXMg
bnVsbAorUEFTUyB7c3RhdGU6IDR9OyBoZWFkZXJWYWx1ZSA9IHhoci5nZXRSZXNwb25zZUhlYWRl
cignQ29udGVudC1UeXBlJyk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBoZWFkZXJW
YWx1ZSBpcyBub24tbnVsbC4KK1BBU1MgcmVzdWx0IGlzIHNhdmVkSGVhZGVyCitQQVNTIHtzdGF0
ZTogNH07IGhlYWRlclZhbHVlID0geGhyLmdldFJlc3BvbnNlSGVhZGVyKCdTZVQtQ09vS2llJyk7
IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBoZWFkZXJWYWx1ZSBpcyBudWxsCitQQVNT
IHtzdGF0ZTogNH07IGhlYWRlclZhbHVlID0geGhyLmdldFJlc3BvbnNlSGVhZGVyKCdzRXQtY29P
a0lFMicpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaGVhZGVyVmFsdWUgaXMgbnVs
bAorUEFTUyB7c3RhdGU6IDR9OyBoZWFkZXJWYWx1ZSA9IHhoci5nZXRSZXNwb25zZUhlYWRlcign
eHh4LW15dGVzdC1oZWFkZXJhYmMnKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGhl
YWRlclZhbHVlIGlzIG51bGwKK1BBU1Mge3N0YXRlOiA0fTsgaGVhZGVyVmFsdWUgPSB4aHIuZ2V0
UmVzcG9uc2VIZWFkZXIoJ251bGwnKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGhl
YWRlclZhbHVlIGlzIG51bGwKK1BBU1Mge3N0YXRlOiA0fTsgaGVhZGVyVmFsdWUgPSB4aHIuZ2V0
UmVzcG9uc2VIZWFkZXIoJ0NvbnRlbnQtVHlwZTonKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24u
CitQQVNTIGhlYWRlclZhbHVlIGlzIG51bGwKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L2dldFJlc3BvbnNlSGVhZGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L2dldFJlc3BvbnNlSGVhZGVyLmh0bWwKaW5kZXggMDFiNzBh
NzZkY2UyNWJhNjhjZTA5MTk1MjMzM2QyYWQzNGFkNjYyNS4uZjA3Y2I1YjdiYmY4NmE5ZTA2MGQy
MDE5MDM0NDUyNjI0NDQzOTZiYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC9nZXRSZXNwb25zZUhlYWRlci5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvZ2V0UmVzcG9uc2VIZWFkZXIuaHRtbApAQCAtMSwxNDAg
KzEsNjkgQEAKKzwhZG9jdHlwZSBodG1sPgogPGh0bWw+CiA8aGVhZD4KLSAgICA8dGl0bGU+Q2hl
Y2sgZXhjZXB0aW9uIHRocm93biBieSBnZXRSZXBvbnNlSGVhZGVyIDwvdGl0bGU+Cis8dGl0bGU+
VGVzdGluZyBYTUxIdHRwUmVxdWVzdC5nZXRSZXBvbnNlSGVhZGVyIGJlaGF2aW9yPC90aXRsZT4K
KzxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZGVzY3JpcHRpb24oIlRlc3QgdGhl
IHJlcXVpcmVkIGJlaGF2aW9yIG9mIFhNTEh0dHBSZXF1ZXN0LmdldFJlc3BvbnNlSGVhZGVyKCki
KTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogCiB2YXIgc2F2ZWRIZWFkZXIgPSBu
dWxsOwotdmFyIGhlYWRlck5hbWU9IkNvbnRlbnQtVHlwZSI7Ci12YXIgbnVsbFRlc3RzID0gIG5l
dyBBcnJheSgiU2VULUNPb0tpZSIsICJzRXQtY29Pa0lFMiIsIAotICAgICJ4eHgtbXl0ZXN0LWhl
YWRlcmFiYyIsIG51bGwsICJDb250ZW50LVR5cGU6Iik7Cit2YXIgaGVhZGVyTmFtZSA9ICJDb250
ZW50LVR5cGUiOwordmFyIG51bGxUZXN0cyA9IFsgIlNlVC1DT29LaWUiLAorICAgICAgICAgICAg
ICAgICAgInNFdC1jb09rSUUyIiwKKyAgICAgICAgICAgICAgICAgICJ4eHgtbXl0ZXN0LWhlYWRl
cmFiYyIsCisgICAgICAgICAgICAgICAgICBudWxsLAorICAgICAgICAgICAgICAgICAgIkNvbnRl
bnQtVHlwZToiIF07CiAKLWZ1bmN0aW9uIGxvZyAobXNnKSB7Ci0gICAgdmFyIHBhcmFncmFwaCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7Ci0gICAgcGFyYWdyYXBoLmlubmVySFRNTD1t
c2cucmVwbGFjZSgvXG4vZ20sIjxicj4iKTsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Y29uc29sZSIpLmFwcGVuZENoaWxkKHBhcmFncmFwaCk7Ci19Cit2YXIgeGhyID0gbmV3IFhNTEh0
dHBSZXF1ZXN0KCk7CiAKLWZ1bmN0aW9uIGxvZzQoc3RhdHVzLCByU3RhdGUsIHN1YlN0YXRlLCBt
c2cpIHsKLSAgICBsb2coc3RhdHVzICsgIiAiICsgclN0YXRlICsgIiAiICsgc3ViU3RhdGUgKyAi
OiAiICsgbXNnKTsKLX0KK3ZhciBoZWFkZXJWYWx1ZTsKK2Z1bmN0aW9uIHRlc3RHZXRSZXNwb25z
ZUhlYWRlcih4aHIsIGhlYWRlck5hbWUsIGV4cGVjdE51bGwpIHsKKyAgICBzaG91bGROb3RUaHJv
dygie3N0YXRlOiAiICsgeGhyLnJlYWR5U3RhdGUgKyAifTsgaGVhZGVyVmFsdWUgPSB4aHIuZ2V0
UmVzcG9uc2VIZWFkZXIoJyIgKyBoZWFkZXJOYW1lICsgIicpOyIpOworICAgIGlmIChleHBlY3RO
dWxsKQorICAgICAgICBzaG91bGRCZU51bGwoImhlYWRlclZhbHVlIik7CisgICAgZWxzZQorICAg
ICAgICBzaG91bGRCZU5vbk51bGwoImhlYWRlclZhbHVlIik7CiAKLWZ1bmN0aW9uIGxvZzMoc3Rh
dHVzLCByU3RhdGUsIG1zZykgewotICAgIGxvZzQoc3RhdHVzLCByU3RhdGUsIGhlYWRlck5hbWUs
IG1zZyk7Ci19Ci0KLWlmICh3aW5kb3cuWE1MSHR0cFJlcXVlc3QpIHsKLSAgICB4aHIgPSBuZXcg
WE1MSHR0cFJlcXVlc3QoKTsKLX0gZWxzZSB7Ci0gICAgdHJ5IHsKLSAgICAgICAgeGhyID0gbmV3
IEFjdGl2ZVhPYmplY3QoIk1zeG1sMi5YTUxIVFRQIik7Ci0gICAgfSBjYXRjaCAoZXgpIHsKLSAg
ICAgICAgeGhyID0gbmV3IEFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIik7Ci0gICAg
fQorICAgIHJldHVybiBoZWFkZXJWYWx1ZTsKIH0KIAordmFyIHJlc3VsdDsKIHhoci5vbnJlYWR5
c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKICAgICB2YXIgclN0YXRlID0gdGhpcy5yZWFkeVN0
YXRlOwotICAgIC8vIFdlIGV4cGVjdCBhbiBJTlZBTElEX1NUQVRFX0VSUiBleGNlcHRpb24gZm9y
IHJlYWR5U3RhdGUgPCAyCi0gICAgLy8gYW5kIG5vIGV4Y2VwdGlvbiBmb3IgcmVhZHlTdGF0ZSA+
PSAyCi0gICAgdHJ5IHsKLSAgICAgICAgdmFyIGhlYWRlciA9IHRoaXMuZ2V0UmVzcG9uc2VIZWFk
ZXIoaGVhZGVyTmFtZSk7Ci0gICAgICAgIGlmIChyU3RhdGUgIT0gdGhpcy5yZWFkeVN0YXRlKQot
ICAgICAgICAgICAgbG9nMygiVU5DRVJUQUlOIiwgclN0YXRlLCAicmVhZHlTdGF0ZSBjaGFuZ2Vk
IHdoaWxlIGdldHRpbmcgdGhlIGhlYWRlci4iKTsKLSAgICAgICAgaWYgKHJTdGF0ZSA8IDIpIHsK
LSAgICAgICAgICAgIGxvZzMoIkZBSUxFRCIsIHJTdGF0ZSwgaGVhZGVyTmFtZSArICI9IiArIGhl
YWRlcik7Ci0gICAgICAgIH0gZWxzZSBpZiAoaGVhZGVyKSB7Ci0gICAgICAgICAgICBpZiAoc2F2
ZWRIZWFkZXIpCi0gICAgICAgICAgICAgICAgaWYgKHNhdmVkSGVhZGVyICE9IGhlYWRlcikgewot
ICAgICAgICAgICAgICAgICAgICBsb2czKCJGQUlMRUQiLCByU3RhdGUsaGVhZGVyTmFtZSArICIg
Y2hhbmdlZCBhZnRlciBpdCB3YXMgZmlyc3QgcmV0dXJuZWQuIFByZXZpb3VzICIgKyBoZWFkZXJO
YW1lCi0gICAgICAgICAgICAgICAgICAgICAgICArICI9IiArIHNhdmVkSGVhZGVyICsgIjsgTmV3
ICIgKyBoZWFkZXJOYW1lICsgIj0iICsgaGVhZGVyICsgIi4iKTsKLSAgICAgICAgICAgICAgICBz
YXZlZEhlYWRlciA9IGhlYWRlcjsKLSAgICAgICAgICAgICAgICB9IAotICAgICAgICAgICAgICAg
IGVsc2UgLy9zYXZlZEhlYWRlciA9PSBoZWFkZXIgaGVyZTsgbm8gbmVlZCB0byByZXByaW50IGhl
YWRlcgotICAgICAgICAgICAgICAgICAgICBsb2czKCJQQVNTRUQiLCByU3RhdGUsIGhlYWRlck5h
bWUpOwotICAgICAgICAgICAgZWxzZSB7Ly9maXJzdCBoZWFkZXIgdmFsdWUgcmV0cmlldmVkCi0g
ICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotLy9kbyBub3QgcHJpbnQgdGhl
IGhlYWRlcidzIHZhbHVlIGZvciBhdXRvbWF0ZWQgdGVzdHMgdG8gYXZvaWQgZmFsc2UgZmFpbHVy
ZXMuCi0gICAgICAgICAgICAgICAgICAgIGxvZzMoIlBBU1NFRCIsIHJTdGF0ZSwgIlJlc3BvbnNl
SGVhZGVyKCIgKyBoZWFkZXJOYW1lICsgIikgcmV0dXJuZWQgYSB2YWx1ZS4iKTsKLSAgICAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGxvZzMoIlBBU1NFRCIsIHJTdGF0ZSwg
ImdldFJlc3BvbnNlSGVhZGVyKCIgKyBoZWFkZXJOYW1lICsgIikgcmV0dXJuZWQ6ICIgKyBoZWFk
ZXIgKyAiLiIpOwotICAgICAgICAgICAgICAgIHNhdmVkSGVhZGVyID0gaGVhZGVyOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8bnVsbFRlc3RzLmxlbmd0aDsrK2kp
IHsKLSAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICB2YXIgc3RyID0g
dGhpcy5nZXRSZXNwb25zZUhlYWRlcihudWxsVGVzdHNbaV0pOwotICAgICAgICAgICAgICAgICAg
ICBpZiAoc3RyID09IG51bGwpCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2c0KCJQQVNTRUQi
LCByU3RhdGUsIG51bGxUZXN0c1tpXSwgImdldFJlc3BvbnNlSGVhZGVyKCIgKyBudWxsVGVzdHNb
aV0gKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICIpIHJldHVybmVkIG51bGwuIik7Ci0g
ICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZzQoIkZB
SUxFRCIsIHJTdGF0ZSwgbnVsbFRlc3RzW2ldLCAiZ2V0UmVzcG9uc2VIZWFkZXIoIiArIG51bGxU
ZXN0c1tpXSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIikgcmV0dXJuZWQgXCIiICsg
c3RyICsgIlwiIik7Ci0gICAgICAgICAgICAgICAgfSBjYXRjaChlKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGxvZzQoIkZBSUxFRCIsIHJTdGF0ZSwgbnVsbFRlc3RzW2ldLCAiZ2V0UmVzcG9uc2VI
ZWFkZXIoIiArIG51bGxUZXN0c1tpXSArICIpIHRocmV3IGV4Y2VwdGlvbjoiICsgZSk7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgLy9o
ZWFkZXIgaXMgbnVsbAotICAgICAgICAgICAgbG9nMygiRkFJTEVEIiwgclN0YXRlLCAibnVsbCAi
ICsgaGVhZGVyTmFtZSArICIgcmV0dXJuZWQuIik7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAg
ICBpZiAoclN0YXRlIDwgMikKLSAgICAgICAgICAgIGxvZzMoIlBBU1NFRCIsIHJTdGF0ZSwgImV4
Y2VwdGlvbiB0aHJvd24iKTsKKyAgICByZXN1bHQgPSB0ZXN0R2V0UmVzcG9uc2VIZWFkZXIodGhp
cywgaGVhZGVyTmFtZSwgclN0YXRlIDw9IFhNTEh0dHBSZXF1ZXN0Lk9QRU5FRCk7CisgICAgaWYg
KHJlc3VsdCkgeworICAgICAgICBpZiAoc2F2ZWRIZWFkZXIpCisgICAgICAgICAgICBzaG91bGRC
ZSgicmVzdWx0IiwgInNhdmVkSGVhZGVyIik7CisKKyAgICAgICAgc2F2ZWRIZWFkZXIgPSByZXN1
bHQ7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudWxsVGVzdHMubGVuZ3RoOyArK2kp
CisgICAgICAgICAgICB0ZXN0R2V0UmVzcG9uc2VIZWFkZXIodGhpcywgbnVsbFRlc3RzW2ldLCB0
cnVlKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoclN0YXRlID4gWE1MSHR0cFJlcXVlc3Qu
T1BFTkVEKQorICAgICAgICAgICAgdGVzdEZhaWxlZCgiSW4gcmVhZHkgc3RhdGUgIiArIHJTdGF0
ZSArICIsIHVuZXhwZWN0ZWQgbnVsbCB2YWx1ZSBmb3IgJyIgKyBoZWFkZXJOYW1lICsgIicuIik7
CisgICAgICAgIGVsc2UgaWYgKHJlc3VsdCAhPT0gbnVsbCkKKyAgICAgICAgICAgIHRlc3RGYWls
ZWQoIkluIHJlYWR5IHN0YXRlICIgKyByU3RhdGUgKyAiLCBleHBlY3RlZCBudWxsIGZvciAnIiAr
IGhlYWRlck5hbWUgKyAiLCBnb3Q6ICIgKyBKU09OLnN0cmluZ2lmeShyZXN1bHQpICsgIi4iKTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgbG9nMygiRkFJTEVEIiwgclN0YXRlLCAiZXhjZXB0
aW9uIHRocm93bjogIiArIGUubWVzc2FnZSArICIuIik7CisgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCJIZWFkZXIgJyIgKyBoZWFkZXJOYW1lICsgIicgaXMgbnVsbCBpbiByZWFkeSBzdGF0ZSAiICsg
clN0YXRlICsgIi4iKTsKICAgICB9Ci0gICAgaWYgKChyU3RhdGUgPT0gNCkgJiYgKHdpbmRvdy50
ZXN0UnVubmVyKSkKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfQogCi1p
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
LSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAoclN0YXRlID09IFhNTEh0dHBS
ZXF1ZXN0LkRPTkUpCisgICAgICAgIGZpbmlzaEpTVGVzdCgpOwogfQogCi1mdW5jdGlvbiB0ZXN0
KCkgeworZnVuY3Rpb24gcnVuVGVzdCgpIHsKICAgICAvLyBUZXN0IGZvciByZWFkeVN0YXRlID0g
MAotICAgIHRyeSB7Ci0gICAgICAgIHZhciBoZWFkZXIgPSB4aHIuZ2V0UmVzcG9uc2VIZWFkZXIo
aGVhZGVyTmFtZSk7Ci0gICAgICAgIGxvZzMoIkZBSUxFRCIsIHhoci5yZWFkeVN0YXRlLCBoZWFk
ZXJOYW1lICsgIj0iICsgaGVhZGVyICsgIi4iKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAg
IGxvZzMoIlBBU1NFRCIsIHhoci5yZWFkeVN0YXRlLCAiZXhjZXB0aW9uIHRocm93bi4iKTsKLSAg
ICB9Ci0gICAgdHJ5IHsKLSAgICAgICAgeGhyLm9wZW4oIkdFVCIsInJlc291cmNlcy8xMjUxLmh0
bWwiLCB0cnVlKTsKLSAgICAgICAgeGhyLnNlbmQobnVsbCk7Ci0gICAgfSBjYXRjaChlKSB7Ci0g
ICAgICAgIGxvZzMoIkZBSUxFRCIsICJvcGVuL3NlbmQiLCAiZXhjZXB0aW9uIHRocm93bjogIiAr
IGUubWVzc2FnZSArIi4iKTsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfQorICAgIHRlc3RHZXRSZXNwb25z
ZUhlYWRlcih4aHIsIGhlYWRlck5hbWUsIHRydWUpOworICAgIHNob3VsZE5vdFRocm93KCd4aHIu
b3BlbigiR0VUIiwgInJlc291cmNlcy8xMjUxLmh0bWwiLCB0cnVlKTsnKTsKKyAgICAvLyBUZXN0
IGZvciByZWFkeVN0YXRlID0gMQorICAgIHRlc3RHZXRSZXNwb25zZUhlYWRlcih4aHIsIGhlYWRl
ck5hbWUsIHRydWUpOworICAgIHNob3VsZE5vdFRocm93KCJ4aHIuc2VuZChudWxsKTsiKTsKIH0K
K3J1blRlc3QoKTsKIDwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9oZWFkPgotPGJvZHkgb25sb2FkPSJ0ZXN0KCki
PgotCi08cD5UZXN0IHBhZ2UgZm9yIDxhIGhyZWY9Imh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1MzU2Ij5idWcKLTE1MzU2PC9hPgotYW5kIDxhIGhyZWY9Imh0dHA6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5MTIxIj5idWcgMjkxMjE8L2E+PC9wPgot
PHA+QXNzZXJ0aW9uOiBJbnZva2luZyB0aGUgZ2V0UmVzcG9uc2VIZWFkZXIgbWV0aG9kIHdoZW4g
cmVhZHlTdGF0ZSA+PSAyCi0oSEVBREVSU19SRUNFSVZFRCkgcmV0dXJucyBhIGhlYWRlciB2YWx1
ZSBpZiB0aGUgaGVhZGVyIGV4aXN0cy48L3A+Ci08cD5Bc3NlcnRpb246IEludm9raW5nIHRoZSBn
ZXRSZXNwb25zZUhlYWRlciBtZXRob2Qgd2l0aCB0aGUgcGFyYW1ldGVyCi0gICAgc2F0aXNmeWlu
ZyB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgY2F1c2VzIGdldFJlc3BvbnNlSGVhZGVyCi0gICAg
dG8gcmV0dXJuIG51bGw6Ci08bGk+MWEuIFRoZSBwYXJhbWV0ZXIgY2FzZS1pbnNlbnNpdGl2ZWx5
IG1hdGNoZXMgU2V0LUNvb2tpZTs8L2xpPgotPGxpPjFiLiBUaGUgcGFyYW1ldGVyIGNhc2UtaW5z
ZW5zaXRpdmVseSBtYXRjaGVzIFNldC1Db29raWUyOzwvbGk+Ci08bGk+Mi4gIFRoZSBwYXJhbWV0
ZXIgZG9lcyBub3QgbWF0Y2ggYW55IGhlYWRlciBpbiB0aGUgcmVzcG9uc2U7PC9saT4KLTxsaT4z
YS4gVGhlIHBhcmFtZXRlciBpcyBudWxsIChpdCBpcyBub3QgYSB2YWxpZCBoZWFkZXIgbmFtZSk7
PC9saT4KLTxsaT4zYi4gVGhlIHBhcmFtZXRlciBpcyAiQ29udGVudC1UeXBlOiIgKGl0IGlzIG5v
dCBhIHZhbGlkIGhlYWRlciBuYW1lKS48L2xpPgotCi08c2NyaXB0PgotICAgIGlmICghd2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgIGRvY3VtZW50LndyaXRlKCI8cD5JZiB0aGUgdGVzdCBwYXNz
ZXMgb25lIHNob3VsZCBzZWUgXAotYmVsb3cgdGhlIHJ1bGVyIHRoZSB0ZXh0IFwicGFzc2VkXCIg
aW4gYWxsIGNhcGl0YWwgbGV0dGVycywgb25jZSBmb3IgZXZlcnkgcmVhZHkgc3RhdGUgJmx0OyAy
LCBcCi1mb2xsb3dlZCBlYWNoIHRpbWUgYnkgYSBzcGFjZSBhbmQgdGhlIHJlYWR5U3RhdGUgbnVt
YmVyIGFuZCA2IHRpbWVzIGZvciBldmVyeSByZWFkeSBzdGF0ZSA+PSAyLjwvcD5cblwKLTxwPlJl
YWR5U3RhdGUgbnVtYmVycyBzaG91bGQgYmUgaW4gYXNjZW5kaW5nIG9yZGVyIDAgdG8gNC48L3A+
XG5cCi08cD5SZWFkeVN0YXRlIG51bWJlcnMgc2hvdWxkIGJlIGZvbGxvd2VkIGJ5IGEgYmxhbmss
IHRoZSBuYW1lIG9mIHRoZSBoZWFkZXIgdGVzdGVkLCBjb2xvbiBhIHNwYWNlIGFuZCBhIG1lc3Nh
Z2UuPC9wPlwKLTxwPlRoZSB2YWx1ZSBvZiB0aGUgIiArIGhlYWRlck5hbWUgKyAiIGhlYWRlciBz
aG91bGQgIGJlIHByaW50ZWQgZm9yIHJlYWR5IHN0YXRlIDIuPC9wPiIpOwotPC9zY3JpcHQ+Ci0g
PGhyPgotIDxwPjxvbCBpZD1jb25zb2xlPjwvb2w+PC9wPgotPC9ib2R5PgogPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221050</attachid>
            <date>2014-01-13 08:54:13 -0800</date>
            <delta_ts>2014-01-29 08:59:22 -0800</delta_ts>
            <desc>fixed change logs and added test case for new code path</desc>
            <filename>bug-125840-20140113175410.patch</filename>
            <type>text/plain</type>
            <size>31184</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYxODYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTM1MmUyOWVlYjEzYjM4
ODJhZmI3NjVmZGViNGVhMjIzNDIzMjJiZC4uNWUyZGRhMzlmODY4YTA1MzIyMjYzODM3ODQ1ODk0
NzczNjlkNWIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE0LTAxLTEzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uZkBnbWFpbC5jb20+CisKKyAgICAgICAgSGF2ZSBYSFIuZ2V0UmVz
cG9uc2VIZWFkZXIoKSByZXR1cm4gbnVsbCBhbmQgWEhSLmdldEFsbFJlc3BvbnNlSGVhZGVyKCkg
cmV0dXJuIHRoZSBlbXB0eSBzdHJpbmcgaW4gaW5pdGlhbCByZWFkeSBzdGF0ZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTg0MAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1lcmdpbmcgaHR0cHM6Ly9j
aHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL2JsaW5rLysvZDIwMWNhZjg3NGEwYmQ2
ZjEwMWY1MTc0NjJiM2NmMWQ4YzVmY2UzZAorICAgICAgICBUaGlzIHBhdGNoIG1ha2VzIGl0IGNs
ZWFyIHRoYXQgbnVsbC9lbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQgd2hlbmV2ZXIgdGhlIGVycm9y
IGZsYWcgaXMgc2V0LgorICAgICAgICBUaGlzIG5ldyBjb2RlIHBhdGggaXMgY292ZXJlZCBieSB0
aGUgYWRkZWQgdGVzdC4KKyAgICAgICAgCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3QvcmVzcG9uc2UtYWNjZXNzLW9uLWVycm9yLmh0bWwKKworICAgICAgICAqIHhtbC9Y
TUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Z2V0
QWxsUmVzcG9uc2VIZWFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0Ojpn
ZXRSZXNwb25zZUhlYWRlcik6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisgICAg
ICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmlkbDoKKwogMjAxNC0wMS0xMiAgQ29tbWl0IFF1ZXVl
ICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGlu
ZyBvdXQgcjE2MTg0My4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVx
dWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IDEw
MDI5ZWU0NjYzZDQwMGJjNGJiZDUwNWYwZmZhZGRiNDU5ZDYyNmYuLjU0OTEyZTNmNzVhY2Y4NDhm
ZWExZjAyY2FkZWZjNWM3NTYzNjAzMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcApAQCAtOTg2LDEyICs5ODYsMTAgQEAgU3RyaW5nIFhNTEh0dHBSZXF1ZXN0OjpnZXRSZXF1
ZXN0SGVhZGVyKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QKICAgICByZXR1cm4gbV9y
ZXF1ZXN0SGVhZGVycy5nZXQobmFtZSk7CiB9CiAKLVN0cmluZyBYTUxIdHRwUmVxdWVzdDo6Z2V0
QWxsUmVzcG9uc2VIZWFkZXJzKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAorU3RyaW5nIFhNTEh0
dHBSZXF1ZXN0OjpnZXRBbGxSZXNwb25zZUhlYWRlcnMoKSBjb25zdAogewotICAgIGlmIChtX3N0
YXRlIDwgSEVBREVSU19SRUNFSVZFRCkgewotICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJS
OworICAgIGlmIChtX3N0YXRlIDwgSEVBREVSU19SRUNFSVZFRCB8fCBtX2Vycm9yKQogICAgICAg
ICByZXR1cm4gIiI7Ci0gICAgfQogCiAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwog
CkBAIC0xMDIyLDEyICsxMDIwLDEwIEBAIFN0cmluZyBYTUxIdHRwUmVxdWVzdDo6Z2V0QWxsUmVz
cG9uc2VIZWFkZXJzKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogICAgIHJldHVybiBzdHJpbmdC
dWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKLVN0cmluZyBYTUxIdHRwUmVxdWVzdDo6Z2V0UmVzcG9u
c2VIZWFkZXIoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykgY29u
c3QKK1N0cmluZyBYTUxIdHRwUmVxdWVzdDo6Z2V0UmVzcG9uc2VIZWFkZXIoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lKSBjb25zdAogewotICAgIGlmIChtX3N0YXRlIDwgSEVBREVSU19SRUNFSVZF
RCkgewotICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgIGlmIChtX3N0YXRlIDwg
SEVBREVSU19SRUNFSVZFRCB8fCBtX2Vycm9yKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0g
ICAgfQogCiAgICAgLy8gU2VlIGNvbW1lbnQgaW4gZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIGFib3Zl
LgogICAgIGlmIChpc1NldENvb2tpZUhlYWRlcihuYW1lKSAmJiAhc2VjdXJpdHlPcmlnaW4oKS0+
Y2FuTG9hZExvY2FsUmVzb3VyY2VzKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgK
aW5kZXggOTMyNWFkNzI2NGRlZDZmMDhmMGI1NDRiODAwNWM3NzRmNzA5OGVkYS4uMTgzODY4MjY1
NmIzYzIyMjExYmQ5NTc4MjBjNTYwMDlhNzAyZTdhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmgKQEAgLTEwNSw4ICsxMDUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSZXF1ZXN0
SGVhZGVyKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgRXhj
ZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgb3ZlcnJpZGVNaW1lVHlwZShjb25zdCBTdHJpbmcmIG92
ZXJyaWRlKTsKICAgICBib29sIGRvbmVXaXRob3V0RXJyb3JzKCkgY29uc3QgeyByZXR1cm4gIW1f
ZXJyb3IgJiYgbV9zdGF0ZSA9PSBET05FOyB9Ci0gICAgU3RyaW5nIGdldEFsbFJlc3BvbnNlSGVh
ZGVycyhFeGNlcHRpb25Db2RlJikgY29uc3Q7Ci0gICAgU3RyaW5nIGdldFJlc3BvbnNlSGVhZGVy
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OworICAgIFN0
cmluZyBnZXRBbGxSZXNwb25zZUhlYWRlcnMoKSBjb25zdDsKKyAgICBTdHJpbmcgZ2V0UmVzcG9u
c2VIZWFkZXIoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdDsKICAgICBTdHJpbmcgcmVz
cG9uc2VUZXh0KEV4Y2VwdGlvbkNvZGUmKTsKICAgICBTdHJpbmcgcmVzcG9uc2VUZXh0SWdub3Jp
bmdSZXNwb25zZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlQnVpbGRlci50b1N0cmlu
Z1ByZXNlcnZlQ2FwYWNpdHkoKTsgfQogICAgIERvY3VtZW50KiByZXNwb25zZVhNTChFeGNlcHRp
b25Db2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
aWRsIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmlkbAppbmRleCBmZTgwZTE2
NmUwMTFlNzc5MzlkYjU3MjAyYWY5ODU1MDdkNDM5ZDYwLi5lZjFhMjFhZTY3ZjQwOTAwMjM3OWI5
MTY1ZTdmMzMyZWUwNGI5MWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5pZGwK
QEAgLTgwLDggKzgwLDggQEAgZW51bSBYTUxIdHRwUmVxdWVzdFJlc3BvbnNlVHlwZSB7CiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIFhNTEh0dHBSZXF1ZXN0VXBsb2FkIHVwbG9hZDsKIAogICAgIC8v
IHJlc3BvbnNlCi0gICAgW1RyZWF0UmV0dXJuZWROdWxsU3RyaW5nQXM9VW5kZWZpbmVkLCBSYWlz
ZXNFeGNlcHRpb25dIERPTVN0cmluZyBnZXRBbGxSZXNwb25zZUhlYWRlcnMoKTsKLSAgICBbVHJl
YXRSZXR1cm5lZE51bGxTdHJpbmdBcz1OdWxsLCBSYWlzZXNFeGNlcHRpb25dIERPTVN0cmluZyBn
ZXRSZXNwb25zZUhlYWRlcihET01TdHJpbmcgaGVhZGVyKTsKKyAgICBbVHJlYXRSZXR1cm5lZE51
bGxTdHJpbmdBcz1VbmRlZmluZWRdIERPTVN0cmluZyBnZXRBbGxSZXNwb25zZUhlYWRlcnMoKTsK
KyAgICBbVHJlYXRSZXR1cm5lZE51bGxTdHJpbmdBcz1OdWxsXSBET01TdHJpbmcgZ2V0UmVzcG9u
c2VIZWFkZXIoRE9NU3RyaW5nIGhlYWRlcik7CiAgICAgW0dldHRlclJhaXNlc0V4Y2VwdGlvbiwg
Q3VzdG9tR2V0dGVyXSByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHJlc3BvbnNlVGV4dDsg
Ly8gVGhlIGN1c3RvbSBnZXR0ZXIgaW1wbGVtZW50cyBUcmVhdFJldHVybmVkTnVsbFN0cmluZ0Fz
PU51bGwKICAgICBbR2V0dGVyUmFpc2VzRXhjZXB0aW9uXSByZWFkb25seSBhdHRyaWJ1dGUgRG9j
dW1lbnQgcmVzcG9uc2VYTUw7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkNzExMDA5MWEyZjJhZTk3ZjE4YmNkMDVlNzU2
ODY4ZGE5NTdjN2Q1Li42OThhNTNjYjQzNTRkZTdmNGVmNTVmZmE0NzEzNjM1NDQyMTA4ODEzIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTQtMDEtMTMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5m
QGdtYWlsLmNvbT4KKworICAgICAgICBIYXZlIFhIUi5nZXRSZXNwb25zZUhlYWRlcigpIHJldHVy
biBudWxsIGFuZCBYSFIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgcmV0dXJuIGVtcHR5IHN0cmlu
ZyBpbiBpbml0aWFsIHJlYWR5IHN0YXRlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTI1ODQwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTWVyZ2luZyBodHRwczovL2Nocm9taXVtLmdvb2dsZXNvdXJjZS5j
b20vY2hyb21pdW0vYmxpbmsvKy9kMjAxY2FmODc0YTBiZDZmMTAxZjUxNzQ2MmIzY2YxZDhjNWZj
ZTNkCisgICAgICAgIFRoZSBuZXcgdGVzdCBleGVyY2ljZXMgdGhlIG5ldyBjb2RlIHBhdGggaW4g
Y2FzZSB4aHIgcmVjZWl2ZWQgSFRUUCBoZWFkZXJzIGJ1dCBtX2Vycm9yIGlzIHNldAorCisgICAg
ICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9nZXRBbGxSZXNwb25zZUhlYWRlcnMtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvZ2V0QWxsUmVz
cG9uc2VIZWFkZXJzLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9n
ZXRSZXNwb25zZUhlYWRlci1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy94bWxo
dHRwcmVxdWVzdC9nZXRSZXNwb25zZUhlYWRlci5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3QvcmVzcG9uc2UtYWNjZXNzLW9uLWVycm9yLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNwb25zZS1hY2Nlc3Mt
b24tZXJyb3IuaHRtbDogQWRkZWQuCisKIDIwMTQtMDEtMTIgIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIx
NjE4NDMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L2dldEFsbFJlc3BvbnNlSGVhZGVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L2dldEFsbFJlc3BvbnNlSGVhZGVycy1leHBlY3RlZC50eHQKaW5k
ZXggODA1NjQxZTI4MzE2NGJjMWMzZWFiMWZlZjEzNWU1OTQwODViODU0MS4uNDQ5NmM4YzVmNWQ5
MDEyOGQxYTlhODNlYWFjM2JmYWYxNmNkMTRmMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy94bWxodHRwcmVxdWVzdC9nZXRBbGxSZXNwb25zZUhlYWRlcnMtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvZ2V0QWxsUmVzcG9u
c2VIZWFkZXJzLWV4cGVjdGVkLnR4dApAQCAtMSwxMCArMSwyNyBAQAotVGVzdCBwYWdlIGZvciBi
dWcgMTUzNTYgYW5kIGJ1ZyAyOTEyMQorVGVzdCB0aGUgcmVxdWlyZWQgYmVoYXZpb3Igb2YgWE1M
SHR0cFJlcXVlc3QuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkKIAotQXNzZXJ0aW9uOiBJbnZva2lu
ZyBnZXRBbGxSZXNwb25zZUhlYWRlcnMgbWV0aG9kIHdoZW4gcmVhZHlTdGF0ZSA+PSAyIChIRUFE
RVJTX1JFQ0VJVkVEKSBzaG91bGQgcmV0dXJuIGEgY29uZm9ybWluZyBsaXN0IG9mIGhlYWRlcnMu
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKLVBBU1NFRCAwCi1QQVNTRUQgMQotUEFTU0VE
IDI6IGdldEFsbFJlc3BvbnNlSGVhZGVycyByZXR1cm5lZCB3aGF0IGxvb2tzIGxpa2UgYSBjb25m
b3JtaW5nIGhlYWRlcmxpc3QuCi1QQVNTRUQgMwotUEFTU0VEIDQKKworUEFTUyB7c3RhdGU6IDB9
OyBoZWFkZXJWYWx1ZXMgPSB4aHIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCk7IGRpZCBub3QgdGhy
b3cgZXhjZXB0aW9uLgorUEFTUyBoZWFkZXJWYWx1ZXMgaXMgdGhlIGVtcHR5IHN0cmluZworUEFT
UyB7c3RhdGU6IDF9OyBoZWFkZXJWYWx1ZXMgPSB4aHIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCk7
IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBoZWFkZXJWYWx1ZXMgaXMgdGhlIGVtcHR5
IHN0cmluZworUEFTUyBnZXRBbGxSZXNwb25zZUhlYWRlcnMoKSByZXN1bHQgaXMgZW1wdHkgaW4g
cmVhZHkgc3RhdGUgMS4KK1BBU1MgeGhyLm9wZW4oIkdFVCIsICJyZXNvdXJjZXMvMTI1MS5odG1s
IiwgdHJ1ZSk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyB7c3RhdGU6IDF9OyBoZWFk
ZXJWYWx1ZXMgPSB4aHIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCk7IGRpZCBub3QgdGhyb3cgZXhj
ZXB0aW9uLgorUEFTUyBoZWFkZXJWYWx1ZXMgaXMgdGhlIGVtcHR5IHN0cmluZworUEFTUyB4aHIu
c2VuZChudWxsKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIHtzdGF0ZTogMn07IGhl
YWRlclZhbHVlcyA9IHhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKTsgZGlkIG5vdCB0aHJvdyBl
eGNlcHRpb24uCitQQVNTIGhlYWRlclZhbHVlcyBpcyBub3QgdGhlIGVtcHR5IHN0cmluZworUEFT
UyBIZWFkZXIgdmFsdWVzIGFwcGVhcnMgdG8gYmUgY29uZm9ybWluZy4KK1BBU1Mge3N0YXRlOiAz
fTsgaGVhZGVyVmFsdWVzID0geGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpOyBkaWQgbm90IHRo
cm93IGV4Y2VwdGlvbi4KK1BBU1MgaGVhZGVyVmFsdWVzIGlzIG5vdCB0aGUgZW1wdHkgc3RyaW5n
CitQQVNTIHJlc3BvbnNlSGVhZGVycyBpcyBzYXZlZEhlYWRlcnMKK1BBU1Mge3N0YXRlOiA0fTsg
aGVhZGVyVmFsdWVzID0geGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpOyBkaWQgbm90IHRocm93
IGV4Y2VwdGlvbi4KK1BBU1MgaGVhZGVyVmFsdWVzIGlzIG5vdCB0aGUgZW1wdHkgc3RyaW5nCitQ
QVNTIHJlc3BvbnNlSGVhZGVycyBpcyBzYXZlZEhlYWRlcnMKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2dldEFsbFJlc3BvbnNlSGVhZGVycy5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9nZXRBbGxSZXNwb25zZUhlYWRlcnMu
aHRtbAppbmRleCBmMzcxZjBhNDkxODE4NTUyOGQ3NzdmYTJkOTRiNmQ4MWI0ZTA5MDQ3Li41Yzkw
ZGQzZGI4OWVmYzFlZGNmZDcxNjkzM2VhZTFlZDA2ODg2YmUwIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2dldEFsbFJlc3BvbnNlSGVhZGVycy5odG1s
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvZ2V0QWxsUmVzcG9u
c2VIZWFkZXJzLmh0bWwKQEAgLTEsMTE4ICsxLDY5IEBACis8IWRvY3R5cGUgaHRtbD4KIDxodG1s
PgogPGhlYWQ+Ci0gICAgPHRpdGxlPkNoZWNrIGV4Y2VwdGlvbiB0aHJvd24gYnkgZ2V0QWxsUmVz
cG9uc2VIZWFkZXJzIGFuZCBzb21lCi0gICAgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZSByZXR1cm4g
dmFsdWU8L3RpdGxlPgorPHRpdGxlPlRlc3RpbmcgWE1MSHR0cFJlcXVlc3QuZ2V0UmVwb25zZUhl
YWRlciBiZWhhdmlvcjwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4K
K2Rlc2NyaXB0aW9uKCJUZXN0IHRoZSByZXF1aXJlZCBiZWhhdmlvciBvZiBYTUxIdHRwUmVxdWVz
dC5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSIpOwogCi1mdW5jdGlvbiBsb2cgKG1zZykgewotICAg
IHZhciBwYXJhZ3JhcGggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOwotICAgIHBhcmFn
cmFwaC5pbm5lckhUTUw9bXNnLnJlcGxhY2UoL1xuL2dtLCI8YnI+Iik7Ci0gICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChwYXJhZ3JhcGgpOwotfQord2lu
ZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogCi12YXIgeGhyOwordmFyIHhociA9IG5ldyBYTUxI
dHRwUmVxdWVzdCgpOwogCi1pZiAod2luZG93LlhNTEh0dHBSZXF1ZXN0KSB7Ci0gICAgeGhyID0g
bmV3IFhNTEh0dHBSZXF1ZXN0KCk7Ci19IGVsc2UgewotICAgIHRyeSB7Ci0gICAgICAgIHhociA9
IG5ldyBBY3RpdmVYT2JqZWN0KCJNc3htbDIuWE1MSFRUUCIpOwotICAgIH0gY2F0Y2ggKGV4KSB7
Ci0gICAgICAgIHhociA9IG5ldyBBY3RpdmVYT2JqZWN0KCJNaWNyb3NvZnQuWE1MSFRUUCIpOwot
ICAgIH0KK3ZhciBzYXZlZEhlYWRlcnMgPSBudWxsOworCit2YXIgaGVhZGVyVmFsdWVzOworZnVu
Y3Rpb24gdGVzdEdldEFsbFJlc3BvbnNlSGVhZGVycyh4aHIsIGV4cGVjdEVtcHR5KSB7CisgICAg
c2hvdWxkTm90VGhyb3coIntzdGF0ZTogIiArIHhoci5yZWFkeVN0YXRlICsgIn07IGhlYWRlclZh
bHVlcyA9IHhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKTsiKTsKKyAgICBpZiAoZXhwZWN0RW1w
dHkgJiYgaGVhZGVyVmFsdWVzICE9PSAiIikKKyAgICAgICAgdGVzdEZhaWxlZCgiRXhwZWN0ZWQg
dGhlIGVtcHR5IHN0cmluZywgZ290OiAnIiArIGhlYWRlclZhbHVlcyArICInIik7CisgICAgZWxz
ZQorICAgICAgICB0ZXN0UGFzc2VkKCJoZWFkZXJWYWx1ZXMgaXMgIiArICghZXhwZWN0RW1wdHkg
PyAibm90ICIgOiAiIikgKyAidGhlIGVtcHR5IHN0cmluZyIpOworICAgIHJldHVybiBoZWFkZXJW
YWx1ZXM7CiB9CiAKLXZhciBzYXZlZEhlYWRlciA9IG51bGw7Cit2YXIgcmVzcG9uc2VIZWFkZXJz
OwogeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkgewogICAgIHZhciByU3RhdGUg
PSB0aGlzLnJlYWR5U3RhdGU7Ci0gICAgLy8gV2UgZXhwZWN0IGFuIElOVkFMSURfU1RBVEVfRVJS
IGV4Y2VwdGlvbiBmb3IgcmVhZHlTdGF0ZSA8IDIKLSAgICAvLyBhbmQgbm8gZXhjZXB0aW9uIGZv
ciByZWFkeVN0YXRlID49IDIKLSAgICB0cnkgewotICAgICAgICB2YXIgaGVhZGVyID0gdGhpcy5n
ZXRBbGxSZXNwb25zZUhlYWRlcnMoKTsKLSAgICAgICAgaWYgKHJTdGF0ZSAhPSB0aGlzLnJlYWR5
U3RhdGUpCi0gICAgICAgICAgICBsb2coIlVOQ0VSVEFJTiAiICsgclN0YXRlICsgIjogcmVhZHlT
dGF0ZSBjaGFuZ2VkIHdoaWxlIGdldHRpbmcgaGVhZGVycy4iKTsKLSAgICAgICAgaWYgKHJTdGF0
ZSA8IDIpIHsKLSAgICAgICAgICAgIGxvZygiRkFJTEVEICIgKyByU3RhdGUgKyAiOiBoZWFkZXJs
aXN0PSIgKyBoZWFkZXIpOwotICAgICAgICB9IGVsc2UgaWYgKGhlYWRlcikKLSAgICAgICAgICAg
IGlmIChzYXZlZEhlYWRlcikKLSAgICAgICAgICAgICAgICBpZiAoc2F2ZWRIZWFkZXIgIT0gaGVh
ZGVyKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxvZygiRkFJTEVEICIgKyByU3RhdGUgKwotIjog
aGVhZGVybGlzdCBjaGFuZ2VkIGFmdGVyIGl0IHdhcyBmaXJzdCByZXR1cm5lZC4gUHJldmlvdXMg
aGVhZGVyIGxpc3Q6XG4iCi0rIHNhdmVkSGVhZGVyICsgIlxuIE5ldyBoZWFkZXJsaXN0OlxuIiAr
IGhlYWRlcik7Ci0gICAgICAgICAgICAgICAgc2F2ZWRIZWFkZXIgPSBoZWFkZXI7Ci0gICAgICAg
ICAgICAgICAgfSAKLSAgICAgICAgICAgICAgICBlbHNlIC8vc2F2ZWRIZWFkZXIgPT0gaGVhZGVy
IGhlcmU7IG5vIG5lZWQgdG8gcmVwcmludCBoZWFkZXIKLSAgICAgICAgICAgICAgICAgICAgbG9n
KCJQQVNTRUQgIiArIHJTdGF0ZSk7Ci0gICAgICAgICAgICBlbHNlIHsvL2ZpcnN0IGhlYWRlciBs
aXN0IHJldHJpZXZlZAotICAgICAgICAgICAgICAgIGlmICgvXlNldC1Db29raWU6fF5TZXQtQ29v
a2llMjovaW0udGVzdChoZWFkZXIpKQotICAgICAgICAgICAgICAgICAgICBsb2coIkZBSUxFRCAi
ICsgclN0YXRlICsKLSI6IC9eU2V0LUNvb2tpZTp8XlNldC1Db29raWUyOi8gbWF0Y2hlcy4gZ2V0
QWxsUmVzcG9uc2VIZWFkZXJzIHJldHVybmVkOlxuIiArIGhlYWRlcik7Ci0gICAgICAgICAgICAg
ICAgZWxzZSBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0vL2RvIG5vdCBwcmludCBsaXN0IGZvciBh
dXRvbWF0ZWQgdGVzdHMgdG8gYXZvaWQgZmFsc2UgZmFpbHVyZXMuCi0gICAgICAgICAgICAgICAg
ICAgIGxvZygiUEFTU0VEICIgKyByU3RhdGUgKwotIjogZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIHJl
dHVybmVkIHdoYXQgbG9va3MgbGlrZSBhIGNvbmZvcm1pbmcgaGVhZGVybGlzdC4iKTsKKyAgICBy
ZXNwb25zZUhlYWRlcnMgPSB0ZXN0R2V0QWxsUmVzcG9uc2VIZWFkZXJzKHRoaXMsIHJTdGF0ZSA8
PSBYTUxIdHRwUmVxdWVzdC5PUEVORUQpOworICAgIGlmIChyZXNwb25zZUhlYWRlcnMpIHsKKyAg
ICAgICAgaWYgKHNhdmVkSGVhZGVycykgeworICAgICAgICAgICAgc2hvdWxkQmUoInJlc3BvbnNl
SGVhZGVycyIsICJzYXZlZEhlYWRlcnMiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IGlmICgvXlNldC1Db29raWU6fF5TZXQtQ29va2llMjovaW0udGVzdChyZXNwb25zZUhlYWRlcnMp
KSB7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiRGlkIG5vdCBleHBlY3QgdG8gZmluZCBh
IFNldC1Db29raWV7Mn0gaGVhZGVyLCBnb3Q6ICciICsgcmVzcG9uc2VIZWFkZXJzICsgIiciKTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gRG8gbm90IHByaW50IGxp
c3QgZm9yIGF1dG9tYXRlZCB0ZXN0cyB0byBhdm9pZCBmYWxzZSBmYWlsdXJlcy4KKyAgICAgICAg
ICAgICAgICBpZiAoc2VsZi50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJIZWFkZXIgdmFsdWVzIGFwcGVhcnMgdG8gYmUgY29uZm9ybWluZy4iKTsKICAgICAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGxvZygiUEFTU0VEICIgKyByU3RhdGUg
KwotIjogZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIHJldHVybmVkOlxuIiArIGhlYWRlcik7Ci0gICAg
ICAgICAgICAgICAgc2F2ZWRIZWFkZXIgPSBoZWFkZXI7CisgICAgICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoIkhlYWRlciB2YWx1ZXMgYXBwZWFycyBvazogIiArIEpTT04uc3RyaW5naWZ5KGhl
YWRlclZhbHVlcykpOwogICAgICAgICAgICAgfQotICAgICAgICBlbHNlIC8vaGVhZGVyIGlzIG51
bGwKLSAgICAgICAgICAgIGxvZygiRkFJTEVEICIgKyByU3RhdGUgKyAiOiBudWxsIGhlYWRlciBs
aXN0IHJldHVybmVkIik7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICBpZiAoclN0YXRlIDwg
MikgewotICAgICAgICAgICAgbG9nKCJQQVNTRUQgIiArIHJTdGF0ZSk7Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBsb2coIkZBSUxFRCAiICsgclN0YXRlICsgIjogRVhDRVBUSU9OIFRI
Uk9XTjogIiArIGUubWVzc2FnZSArICIuIik7CiAgICAgICAgIH0KKyAgICAgICAgc2F2ZWRIZWFk
ZXJzID0gcmVzcG9uc2VIZWFkZXJzOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChyU3RhdGUg
PiBYTUxIdHRwUmVxdWVzdC5PUEVORUQpCisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJJbiByZWFk
eSBzdGF0ZSAiICsgclN0YXRlICsgIiwgdW5leHBlY3RlZCBlbXB0eSB2YWx1ZS4iKTsKKyAgICAg
ICAgZWxzZSBpZiAocmVzcG9uc2VIZWFkZXJzICE9PSAiIikKKyAgICAgICAgICAgIHRlc3RGYWls
ZWQoIkluIHJlYWR5IHN0YXRlICIgKyByU3RhdGUgKyAiLCBleHBlY3RlZCB0aGUgZW1wdHkgc3Ry
aW5nLCBnb3Q6ICIgKyBKU09OLnN0cmluZ2lmeShyZXNwb25zZUhlYWRlcnMpICsgIi4iKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgdGVzdFBhc3NlZCgiZ2V0QWxsUmVzcG9uc2VIZWFkZXJz
KCkgcmVzdWx0IGlzIGVtcHR5IGluIHJlYWR5IHN0YXRlICIgKyByU3RhdGUgKyAiLiIpOwogICAg
IH0KLSAgICBpZiAoKHJTdGF0ZSA9PSA0KSAmJiAod2luZG93LnRlc3RSdW5uZXIpKQotICAgICAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisKKyAgICBpZiAoclN0YXRlID09IFhNTEh0
dHBSZXF1ZXN0LkRPTkUpCisgICAgICAgIGZpbmlzaEpTVGVzdCgpOwogfQogCi1mdW5jdGlvbiB0
ZXN0KCkgewotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKLSAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAg
fQorZnVuY3Rpb24gcnVuVGVzdCgpIHsKICAgICAvLyBUZXN0IGZvciByZWFkeVN0YXRlID0gMAot
ICAgIHRyeSB7Ci0gICAgICAgIHZhciBoZWFkZXIgPSB4aHIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJz
KCk7Ci0gICAgICAgIGxvZygiRkFJTEVEICIgKyB4aHIucmVhZHlTdGF0ZSArICI6IGhlYWRlcj0i
ICsgaGVhZGVyKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGxvZygiUEFTU0VEICIgKyB4
aHIucmVhZHlTdGF0ZSk7Ci0gICAgfQotICAgIHRyeSB7Ci0gICAgICAgIHhoci5vcGVuKCJHRVQi
LCJyZXNvdXJjZXMvMTI1MS5odG1sIiwgdHJ1ZSk7Ci0gICAgICAgIHhoci5zZW5kKG51bGwpOwot
ICAgIH0gY2F0Y2goZSkgewotICAgICAgICBsb2coIkZBSUxFRCBvcGVuL3NlbmQ6IEVYQ0VQVElP
TiBUSFJPV046ICIgKyBlLm1lc3NhZ2UgKyIuIik7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0KKyAgICB0
ZXN0R2V0QWxsUmVzcG9uc2VIZWFkZXJzKHhociwgdHJ1ZSk7CisgICAgc2hvdWxkTm90VGhyb3co
J3hoci5vcGVuKCJHRVQiLCAicmVzb3VyY2VzLzEyNTEuaHRtbCIsIHRydWUpOycpOworICAgIC8v
IFRlc3QgZm9yIHJlYWR5U3RhdGUgPSAxCisgICAgdGVzdEdldEFsbFJlc3BvbnNlSGVhZGVycyh4
aHIsIHRydWUpOworICAgIHNob3VsZE5vdFRocm93KCJ4aHIuc2VuZChudWxsKTsiKTsKIH0KK3J1
blRlc3QoKTsKIDwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9oZWFkPgotPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgot
Ci08cD5UZXN0IHBhZ2UgZm9yIDxhIGhyZWY9Imh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1MzU2Ij5idWcgMTUzNTY8L2E+Ci1hbmQgPGEgaHJlZj0iaHR0cDovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjkxMjEiPmJ1ZyAyOTEyMTwvYT48L3A+Ci08cD5B
c3NlcnRpb246IEludm9raW5nIGdldEFsbFJlc3BvbnNlSGVhZGVycyBtZXRob2Qgd2hlbiByZWFk
eVN0YXRlID49IDIKLShIRUFERVJTX1JFQ0VJVkVEKSBzaG91bGQgcmV0dXJuIGEgY29uZm9ybWlu
ZyBsaXN0IG9mIGhlYWRlcnMuPC9wPgotPHNjcmlwdD4KLSAgICBpZiAoIXdpbmRvdy50ZXN0UnVu
bmVyKQotICAgICAgICBkb2N1bWVudC53cml0ZSgiPHA+SWYgdGhlIHRlc3QgcGFzc2VzIG9uZSBz
aG91bGQgc2VlIFwKLWJlbG93IHRoZSBydWxlciB0aGUgdGV4dCBcInBhc3NlZFwiIGluIGFsbCBj
YXBpdGFsIGxldHRlcnMsIDUgdGltZXMsIFwKLWZvbGxvd2VkIGVhY2ggdGltZSBieSBhIHNwYWNl
IGFuZCB0aGUgcmVhZHlTdGF0ZSBudW1iZXIuPC9wPlxuXAotPHA+UmVhZHlTdGF0ZW51bWJlcnMg
c2hvdWxkIGJlIGluIGFzY2VuZGluZyBvcmRlciAwIHRvIDQuPC9wPlxuXAotPHA+QSBjb25mb3Jt
aW5nIGxpc3Qgb2YgcmVzcG9uc2UgaGVhZGVycyBzaG91bGQgYWxzbyBiZSBwcmludGVkLjwvcD5c
blwKLTxwPkEgY29uZm9ybWluZyBsaXN0IG9mIGhlYWRlcnM6PC9wPiBcCi0gICA8bGk+IGNvbnRh
aW5zIG9uZSBoZWFkZXIgcGVyIGxpbmUuPC9saT4gXAotICAgPGxpPiBoYXMgaGVhZGVyIG5hbWVz
IGFuZCBoZWFkZXIgdmFsdWVzIHNlcGFyYXRlZCBieSBhIENPTE9OIGFuZCBcCi1hIFNQQUNFLjwv
bGk+XAotICAgPGxpPiBkb2VzIG5vdCBjb250YWluIGFueSBoZWFkZXJzIHRoYXQgbWF0Y2ggKGNh
c2UtaW5zZW5zaXRpdmVseSkgXAotU2V0LUNvb2tpZSBvciBTZXQtQ29va2llMjwvbGk+Iik7Ci0g
PC9zY3JpcHQ+Ci0gPGhyPgotIDxwPjxvbCBpZD1jb25zb2xlPjwvb2w+PC9wPgotPC9ib2R5Pgog
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVz
dC9nZXRSZXNwb25zZUhlYWRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L2dldFJlc3BvbnNlSGVhZGVyLWV4cGVjdGVkLnR4dAppbmRleCA3NDhi
NzQ3Y2ZkZGQ4ZmUyY2IwMTg5N2QyMTg1NmE4NWI0OTVjNzQwLi5kMWI4NWJhMjQwZGJjZWQxZGRj
M2FhOGE2ZDgwYjEwNDkwZjY2MGU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L2dldFJlc3BvbnNlSGVhZGVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2dldFJlc3BvbnNlSGVhZGVyLWV4cGVj
dGVkLnR4dApAQCAtNCwzNSArNCw1OSBAQCBDT05TT0xFIE1FU1NBR0U6IFJlZnVzZWQgdG8gZ2V0
IHVuc2FmZSBoZWFkZXIgIlNlVC1DT29LaWUiCiBDT05TT0xFIE1FU1NBR0U6IFJlZnVzZWQgdG8g
Z2V0IHVuc2FmZSBoZWFkZXIgInNFdC1jb09rSUUyIgogQ09OU09MRSBNRVNTQUdFOiBSZWZ1c2Vk
IHRvIGdldCB1bnNhZmUgaGVhZGVyICJTZVQtQ09vS2llIgogQ09OU09MRSBNRVNTQUdFOiBSZWZ1
c2VkIHRvIGdldCB1bnNhZmUgaGVhZGVyICJzRXQtY29Pa0lFMiIKLVRlc3QgcGFnZSBmb3IgYnVn
IDE1MzU2IGFuZCBidWcgMjkxMjEKK1Rlc3QgdGhlIHJlcXVpcmVkIGJlaGF2aW9yIG9mIFhNTEh0
dHBSZXF1ZXN0LmdldFJlc3BvbnNlSGVhZGVyKCkKIAotQXNzZXJ0aW9uOiBJbnZva2luZyB0aGUg
Z2V0UmVzcG9uc2VIZWFkZXIgbWV0aG9kIHdoZW4gcmVhZHlTdGF0ZSA+PSAyIChIRUFERVJTX1JF
Q0VJVkVEKSByZXR1cm5zIGEgaGVhZGVyIHZhbHVlIGlmIHRoZSBoZWFkZXIgZXhpc3RzLgorT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCi1Bc3NlcnRpb246IEludm9raW5nIHRoZSBnZXRSZXNw
b25zZUhlYWRlciBtZXRob2Qgd2l0aCB0aGUgcGFyYW1ldGVyIHNhdGlzZnlpbmcgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGNhdXNlcyBnZXRSZXNwb25zZUhlYWRlciB0byByZXR1cm4gbnVsbDoK
IAotMWEuIFRoZSBwYXJhbWV0ZXIgY2FzZS1pbnNlbnNpdGl2ZWx5IG1hdGNoZXMgU2V0LUNvb2tp
ZTsKLTFiLiBUaGUgcGFyYW1ldGVyIGNhc2UtaW5zZW5zaXRpdmVseSBtYXRjaGVzIFNldC1Db29r
aWUyOwotMi4gVGhlIHBhcmFtZXRlciBkb2VzIG5vdCBtYXRjaCBhbnkgaGVhZGVyIGluIHRoZSBy
ZXNwb25zZTsKLTNhLiBUaGUgcGFyYW1ldGVyIGlzIG51bGwgKGl0IGlzIG5vdCBhIHZhbGlkIGhl
YWRlciBuYW1lKTsKLTNiLiBUaGUgcGFyYW1ldGVyIGlzICJDb250ZW50LVR5cGU6IiAoaXQgaXMg
bm90IGEgdmFsaWQgaGVhZGVyIG5hbWUpLgotUEFTU0VEIDAgQ29udGVudC1UeXBlOiBleGNlcHRp
b24gdGhyb3duLgotUEFTU0VEIDEgQ29udGVudC1UeXBlOiBleGNlcHRpb24gdGhyb3duCi1QQVNT
RUQgMiBDb250ZW50LVR5cGU6IFJlc3BvbnNlSGVhZGVyKENvbnRlbnQtVHlwZSkgcmV0dXJuZWQg
YSB2YWx1ZS4KLVBBU1NFRCAyIFNlVC1DT29LaWU6IGdldFJlc3BvbnNlSGVhZGVyKFNlVC1DT29L
aWUpIHJldHVybmVkIG51bGwuCi1QQVNTRUQgMiBzRXQtY29Pa0lFMjogZ2V0UmVzcG9uc2VIZWFk
ZXIoc0V0LWNvT2tJRTIpIHJldHVybmVkIG51bGwuCi1QQVNTRUQgMiB4eHgtbXl0ZXN0LWhlYWRl
cmFiYzogZ2V0UmVzcG9uc2VIZWFkZXIoeHh4LW15dGVzdC1oZWFkZXJhYmMpIHJldHVybmVkIG51
bGwuCi1QQVNTRUQgMiBudWxsOiBnZXRSZXNwb25zZUhlYWRlcihudWxsKSByZXR1cm5lZCBudWxs
LgotUEFTU0VEIDIgQ29udGVudC1UeXBlOjogZ2V0UmVzcG9uc2VIZWFkZXIoQ29udGVudC1UeXBl
OikgcmV0dXJuZWQgbnVsbC4KLVBBU1NFRCAzIENvbnRlbnQtVHlwZTogQ29udGVudC1UeXBlCi1Q
QVNTRUQgMyBTZVQtQ09vS2llOiBnZXRSZXNwb25zZUhlYWRlcihTZVQtQ09vS2llKSByZXR1cm5l
ZCBudWxsLgotUEFTU0VEIDMgc0V0LWNvT2tJRTI6IGdldFJlc3BvbnNlSGVhZGVyKHNFdC1jb09r
SUUyKSByZXR1cm5lZCBudWxsLgotUEFTU0VEIDMgeHh4LW15dGVzdC1oZWFkZXJhYmM6IGdldFJl
c3BvbnNlSGVhZGVyKHh4eC1teXRlc3QtaGVhZGVyYWJjKSByZXR1cm5lZCBudWxsLgotUEFTU0VE
IDMgbnVsbDogZ2V0UmVzcG9uc2VIZWFkZXIobnVsbCkgcmV0dXJuZWQgbnVsbC4KLVBBU1NFRCAz
IENvbnRlbnQtVHlwZTo6IGdldFJlc3BvbnNlSGVhZGVyKENvbnRlbnQtVHlwZTopIHJldHVybmVk
IG51bGwuCi1QQVNTRUQgNCBDb250ZW50LVR5cGU6IENvbnRlbnQtVHlwZQotUEFTU0VEIDQgU2VU
LUNPb0tpZTogZ2V0UmVzcG9uc2VIZWFkZXIoU2VULUNPb0tpZSkgcmV0dXJuZWQgbnVsbC4KLVBB
U1NFRCA0IHNFdC1jb09rSUUyOiBnZXRSZXNwb25zZUhlYWRlcihzRXQtY29Pa0lFMikgcmV0dXJu
ZWQgbnVsbC4KLVBBU1NFRCA0IHh4eC1teXRlc3QtaGVhZGVyYWJjOiBnZXRSZXNwb25zZUhlYWRl
cih4eHgtbXl0ZXN0LWhlYWRlcmFiYykgcmV0dXJuZWQgbnVsbC4KLVBBU1NFRCA0IG51bGw6IGdl
dFJlc3BvbnNlSGVhZGVyKG51bGwpIHJldHVybmVkIG51bGwuCi1QQVNTRUQgNCBDb250ZW50LVR5
cGU6OiBnZXRSZXNwb25zZUhlYWRlcihDb250ZW50LVR5cGU6KSByZXR1cm5lZCBudWxsLgorUEFT
UyB7c3RhdGU6IDB9OyBoZWFkZXJWYWx1ZSA9IHhoci5nZXRSZXNwb25zZUhlYWRlcignQ29udGVu
dC1UeXBlJyk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBoZWFkZXJWYWx1ZSBpcyBu
dWxsCitQQVNTIHtzdGF0ZTogMX07IGhlYWRlclZhbHVlID0geGhyLmdldFJlc3BvbnNlSGVhZGVy
KCdDb250ZW50LVR5cGUnKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGhlYWRlclZh
bHVlIGlzIG51bGwKK1BBU1MgSGVhZGVyICdDb250ZW50LVR5cGUnIGlzIG51bGwgaW4gcmVhZHkg
c3RhdGUgMS4KK1BBU1MgeGhyLm9wZW4oIkdFVCIsICJyZXNvdXJjZXMvMTI1MS5odG1sIiwgdHJ1
ZSk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyB7c3RhdGU6IDF9OyBoZWFkZXJWYWx1
ZSA9IHhoci5nZXRSZXNwb25zZUhlYWRlcignQ29udGVudC1UeXBlJyk7IGRpZCBub3QgdGhyb3cg
ZXhjZXB0aW9uLgorUEFTUyBoZWFkZXJWYWx1ZSBpcyBudWxsCitQQVNTIHhoci5zZW5kKG51bGwp
OyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1Mge3N0YXRlOiAyfTsgaGVhZGVyVmFsdWUg
PSB4aHIuZ2V0UmVzcG9uc2VIZWFkZXIoJ0NvbnRlbnQtVHlwZScpOyBkaWQgbm90IHRocm93IGV4
Y2VwdGlvbi4KK1BBU1MgaGVhZGVyVmFsdWUgaXMgbm9uLW51bGwuCitQQVNTIHtzdGF0ZTogMn07
IGhlYWRlclZhbHVlID0geGhyLmdldFJlc3BvbnNlSGVhZGVyKCdTZVQtQ09vS2llJyk7IGRpZCBu
b3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBoZWFkZXJWYWx1ZSBpcyBudWxsCitQQVNTIHtzdGF0
ZTogMn07IGhlYWRlclZhbHVlID0geGhyLmdldFJlc3BvbnNlSGVhZGVyKCdzRXQtY29Pa0lFMicp
OyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaGVhZGVyVmFsdWUgaXMgbnVsbAorUEFT
UyB7c3RhdGU6IDJ9OyBoZWFkZXJWYWx1ZSA9IHhoci5nZXRSZXNwb25zZUhlYWRlcigneHh4LW15
dGVzdC1oZWFkZXJhYmMnKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGhlYWRlclZh
bHVlIGlzIG51bGwKK1BBU1Mge3N0YXRlOiAyfTsgaGVhZGVyVmFsdWUgPSB4aHIuZ2V0UmVzcG9u
c2VIZWFkZXIoJ251bGwnKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGhlYWRlclZh
bHVlIGlzIG51bGwKK1BBU1Mge3N0YXRlOiAyfTsgaGVhZGVyVmFsdWUgPSB4aHIuZ2V0UmVzcG9u
c2VIZWFkZXIoJ0NvbnRlbnQtVHlwZTonKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNT
IGhlYWRlclZhbHVlIGlzIG51bGwKK1BBU1Mge3N0YXRlOiAzfTsgaGVhZGVyVmFsdWUgPSB4aHIu
Z2V0UmVzcG9uc2VIZWFkZXIoJ0NvbnRlbnQtVHlwZScpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlv
bi4KK1BBU1MgaGVhZGVyVmFsdWUgaXMgbm9uLW51bGwuCitQQVNTIHJlc3VsdCBpcyBzYXZlZEhl
YWRlcgorUEFTUyB7c3RhdGU6IDN9OyBoZWFkZXJWYWx1ZSA9IHhoci5nZXRSZXNwb25zZUhlYWRl
cignU2VULUNPb0tpZScpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaGVhZGVyVmFs
dWUgaXMgbnVsbAorUEFTUyB7c3RhdGU6IDN9OyBoZWFkZXJWYWx1ZSA9IHhoci5nZXRSZXNwb25z
ZUhlYWRlcignc0V0LWNvT2tJRTInKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGhl
YWRlclZhbHVlIGlzIG51bGwKK1BBU1Mge3N0YXRlOiAzfTsgaGVhZGVyVmFsdWUgPSB4aHIuZ2V0
UmVzcG9uc2VIZWFkZXIoJ3h4eC1teXRlc3QtaGVhZGVyYWJjJyk7IGRpZCBub3QgdGhyb3cgZXhj
ZXB0aW9uLgorUEFTUyBoZWFkZXJWYWx1ZSBpcyBudWxsCitQQVNTIHtzdGF0ZTogM307IGhlYWRl
clZhbHVlID0geGhyLmdldFJlc3BvbnNlSGVhZGVyKCdudWxsJyk7IGRpZCBub3QgdGhyb3cgZXhj
ZXB0aW9uLgorUEFTUyBoZWFkZXJWYWx1ZSBpcyBudWxsCitQQVNTIHtzdGF0ZTogM307IGhlYWRl
clZhbHVlID0geGhyLmdldFJlc3BvbnNlSGVhZGVyKCdDb250ZW50LVR5cGU6Jyk7IGRpZCBub3Qg
dGhyb3cgZXhjZXB0aW9uLgorUEFTUyBoZWFkZXJWYWx1ZSBpcyBudWxsCitQQVNTIHtzdGF0ZTog
NH07IGhlYWRlclZhbHVlID0geGhyLmdldFJlc3BvbnNlSGVhZGVyKCdDb250ZW50LVR5cGUnKTsg
ZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGhlYWRlclZhbHVlIGlzIG5vbi1udWxsLgor
UEFTUyByZXN1bHQgaXMgc2F2ZWRIZWFkZXIKK1BBU1Mge3N0YXRlOiA0fTsgaGVhZGVyVmFsdWUg
PSB4aHIuZ2V0UmVzcG9uc2VIZWFkZXIoJ1NlVC1DT29LaWUnKTsgZGlkIG5vdCB0aHJvdyBleGNl
cHRpb24uCitQQVNTIGhlYWRlclZhbHVlIGlzIG51bGwKK1BBU1Mge3N0YXRlOiA0fTsgaGVhZGVy
VmFsdWUgPSB4aHIuZ2V0UmVzcG9uc2VIZWFkZXIoJ3NFdC1jb09rSUUyJyk7IGRpZCBub3QgdGhy
b3cgZXhjZXB0aW9uLgorUEFTUyBoZWFkZXJWYWx1ZSBpcyBudWxsCitQQVNTIHtzdGF0ZTogNH07
IGhlYWRlclZhbHVlID0geGhyLmdldFJlc3BvbnNlSGVhZGVyKCd4eHgtbXl0ZXN0LWhlYWRlcmFi
YycpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaGVhZGVyVmFsdWUgaXMgbnVsbAor
UEFTUyB7c3RhdGU6IDR9OyBoZWFkZXJWYWx1ZSA9IHhoci5nZXRSZXNwb25zZUhlYWRlcignbnVs
bCcpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaGVhZGVyVmFsdWUgaXMgbnVsbAor
UEFTUyB7c3RhdGU6IDR9OyBoZWFkZXJWYWx1ZSA9IHhoci5nZXRSZXNwb25zZUhlYWRlcignQ29u
dGVudC1UeXBlOicpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaGVhZGVyVmFsdWUg
aXMgbnVsbAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvZ2V0
UmVzcG9uc2VIZWFkZXIuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVl
c3QvZ2V0UmVzcG9uc2VIZWFkZXIuaHRtbAppbmRleCAwMWI3MGE3NmRjZTI1YmE2OGNlMDkxOTUy
MzMzZDJhZDM0YWQ2NjI1Li5mMDdjYjViN2JiZjg2YTllMDYwZDIwMTkwMzQ0NTI2MjQ0NDM5NmJi
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2dldFJl
c3BvbnNlSGVhZGVyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVx
dWVzdC9nZXRSZXNwb25zZUhlYWRlci5odG1sCkBAIC0xLDE0MCArMSw2OSBAQAorPCFkb2N0eXBl
IGh0bWw+CiA8aHRtbD4KIDxoZWFkPgotICAgIDx0aXRsZT5DaGVjayBleGNlcHRpb24gdGhyb3du
IGJ5IGdldFJlcG9uc2VIZWFkZXIgPC90aXRsZT4KKzx0aXRsZT5UZXN0aW5nIFhNTEh0dHBSZXF1
ZXN0LmdldFJlcG9uc2VIZWFkZXIgYmVoYXZpb3I8L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii9qcy10
ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCI+CitkZXNjcmlwdGlvbigiVGVzdCB0aGUgcmVxdWlyZWQgYmVoYXZpb3Ig
b2YgWE1MSHR0cFJlcXVlc3QuZ2V0UmVzcG9uc2VIZWFkZXIoKSIpOworCit3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CiAKIHZhciBzYXZlZEhlYWRlciA9IG51bGw7Ci12YXIgaGVhZGVyTmFt
ZT0iQ29udGVudC1UeXBlIjsKLXZhciBudWxsVGVzdHMgPSAgbmV3IEFycmF5KCJTZVQtQ09vS2ll
IiwgInNFdC1jb09rSUUyIiwgCi0gICAgInh4eC1teXRlc3QtaGVhZGVyYWJjIiwgbnVsbCwgIkNv
bnRlbnQtVHlwZToiKTsKK3ZhciBoZWFkZXJOYW1lID0gIkNvbnRlbnQtVHlwZSI7Cit2YXIgbnVs
bFRlc3RzID0gWyAiU2VULUNPb0tpZSIsCisgICAgICAgICAgICAgICAgICAic0V0LWNvT2tJRTIi
LAorICAgICAgICAgICAgICAgICAgInh4eC1teXRlc3QtaGVhZGVyYWJjIiwKKyAgICAgICAgICAg
ICAgICAgIG51bGwsCisgICAgICAgICAgICAgICAgICAiQ29udGVudC1UeXBlOiIgXTsKIAotZnVu
Y3Rpb24gbG9nIChtc2cpIHsKLSAgICB2YXIgcGFyYWdyYXBoID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgibGkiKTsKLSAgICBwYXJhZ3JhcGguaW5uZXJIVE1MPW1zZy5yZXBsYWNlKC9cbi9nbSwi
PGJyPiIpOwotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hp
bGQocGFyYWdyYXBoKTsKLX0KK3ZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKIAotZnVu
Y3Rpb24gbG9nNChzdGF0dXMsIHJTdGF0ZSwgc3ViU3RhdGUsIG1zZykgewotICAgIGxvZyhzdGF0
dXMgKyAiICIgKyByU3RhdGUgKyAiICIgKyBzdWJTdGF0ZSArICI6ICIgKyBtc2cpOwotfQordmFy
IGhlYWRlclZhbHVlOworZnVuY3Rpb24gdGVzdEdldFJlc3BvbnNlSGVhZGVyKHhociwgaGVhZGVy
TmFtZSwgZXhwZWN0TnVsbCkgeworICAgIHNob3VsZE5vdFRocm93KCJ7c3RhdGU6ICIgKyB4aHIu
cmVhZHlTdGF0ZSArICJ9OyBoZWFkZXJWYWx1ZSA9IHhoci5nZXRSZXNwb25zZUhlYWRlcignIiAr
IGhlYWRlck5hbWUgKyAiJyk7Iik7CisgICAgaWYgKGV4cGVjdE51bGwpCisgICAgICAgIHNob3Vs
ZEJlTnVsbCgiaGVhZGVyVmFsdWUiKTsKKyAgICBlbHNlCisgICAgICAgIHNob3VsZEJlTm9uTnVs
bCgiaGVhZGVyVmFsdWUiKTsKIAotZnVuY3Rpb24gbG9nMyhzdGF0dXMsIHJTdGF0ZSwgbXNnKSB7
Ci0gICAgbG9nNChzdGF0dXMsIHJTdGF0ZSwgaGVhZGVyTmFtZSwgbXNnKTsKLX0KLQotaWYgKHdp
bmRvdy5YTUxIdHRwUmVxdWVzdCkgewotICAgIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwot
fSBlbHNlIHsKLSAgICB0cnkgewotICAgICAgICB4aHIgPSBuZXcgQWN0aXZlWE9iamVjdCgiTXN4
bWwyLlhNTEhUVFAiKTsKLSAgICB9IGNhdGNoIChleCkgewotICAgICAgICB4aHIgPSBuZXcgQWN0
aXZlWE9iamVjdCgiTWljcm9zb2Z0LlhNTEhUVFAiKTsKLSAgICB9CisgICAgcmV0dXJuIGhlYWRl
clZhbHVlOwogfQogCit2YXIgcmVzdWx0OwogeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0
aW9uKCkgewogICAgIHZhciByU3RhdGUgPSB0aGlzLnJlYWR5U3RhdGU7Ci0gICAgLy8gV2UgZXhw
ZWN0IGFuIElOVkFMSURfU1RBVEVfRVJSIGV4Y2VwdGlvbiBmb3IgcmVhZHlTdGF0ZSA8IDIKLSAg
ICAvLyBhbmQgbm8gZXhjZXB0aW9uIGZvciByZWFkeVN0YXRlID49IDIKLSAgICB0cnkgewotICAg
ICAgICB2YXIgaGVhZGVyID0gdGhpcy5nZXRSZXNwb25zZUhlYWRlcihoZWFkZXJOYW1lKTsKLSAg
ICAgICAgaWYgKHJTdGF0ZSAhPSB0aGlzLnJlYWR5U3RhdGUpCi0gICAgICAgICAgICBsb2czKCJV
TkNFUlRBSU4iLCByU3RhdGUsICJyZWFkeVN0YXRlIGNoYW5nZWQgd2hpbGUgZ2V0dGluZyB0aGUg
aGVhZGVyLiIpOwotICAgICAgICBpZiAoclN0YXRlIDwgMikgewotICAgICAgICAgICAgbG9nMygi
RkFJTEVEIiwgclN0YXRlLCBoZWFkZXJOYW1lICsgIj0iICsgaGVhZGVyKTsKLSAgICAgICAgfSBl
bHNlIGlmIChoZWFkZXIpIHsKLSAgICAgICAgICAgIGlmIChzYXZlZEhlYWRlcikKLSAgICAgICAg
ICAgICAgICBpZiAoc2F2ZWRIZWFkZXIgIT0gaGVhZGVyKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGxvZzMoIkZBSUxFRCIsIHJTdGF0ZSxoZWFkZXJOYW1lICsgIiBjaGFuZ2VkIGFmdGVyIGl0IHdh
cyBmaXJzdCByZXR1cm5lZC4gUHJldmlvdXMgIiArIGhlYWRlck5hbWUKLSAgICAgICAgICAgICAg
ICAgICAgICAgICsgIj0iICsgc2F2ZWRIZWFkZXIgKyAiOyBOZXcgIiArIGhlYWRlck5hbWUgKyAi
PSIgKyBoZWFkZXIgKyAiLiIpOwotICAgICAgICAgICAgICAgIHNhdmVkSGVhZGVyID0gaGVhZGVy
OwotICAgICAgICAgICAgICAgIH0gCi0gICAgICAgICAgICAgICAgZWxzZSAvL3NhdmVkSGVhZGVy
ID09IGhlYWRlciBoZXJlOyBubyBuZWVkIHRvIHJlcHJpbnQgaGVhZGVyCi0gICAgICAgICAgICAg
ICAgICAgIGxvZzMoIlBBU1NFRCIsIHJTdGF0ZSwgaGVhZGVyTmFtZSk7Ci0gICAgICAgICAgICBl
bHNlIHsvL2ZpcnN0IGhlYWRlciB2YWx1ZSByZXRyaWV2ZWQKLSAgICAgICAgICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCi0vL2RvIG5vdCBwcmludCB0aGUgaGVhZGVyJ3MgdmFsdWUgZm9y
IGF1dG9tYXRlZCB0ZXN0cyB0byBhdm9pZCBmYWxzZSBmYWlsdXJlcy4KLSAgICAgICAgICAgICAg
ICAgICAgbG9nMygiUEFTU0VEIiwgclN0YXRlLCAiUmVzcG9uc2VIZWFkZXIoIiArIGhlYWRlck5h
bWUgKyAiKSByZXR1cm5lZCBhIHZhbHVlLiIpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgbG9nMygiUEFTU0VEIiwgclN0YXRlLCAiZ2V0UmVzcG9uc2VIZWFkZXIo
IiArIGhlYWRlck5hbWUgKyAiKSByZXR1cm5lZDogIiArIGhlYWRlciArICIuIik7Ci0gICAgICAg
ICAgICAgICAgc2F2ZWRIZWFkZXIgPSBoZWFkZXI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBmb3IgKHZhciBpPTA7aTxudWxsVGVzdHMubGVuZ3RoOysraSkgewotICAgICAgICAgICAgICAg
IHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBzdHIgPSB0aGlzLmdldFJlc3BvbnNlSGVh
ZGVyKG51bGxUZXN0c1tpXSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzdHIgPT0gbnVsbCkK
LSAgICAgICAgICAgICAgICAgICAgICAgIGxvZzQoIlBBU1NFRCIsIHJTdGF0ZSwgbnVsbFRlc3Rz
W2ldLCAiZ2V0UmVzcG9uc2VIZWFkZXIoIiArIG51bGxUZXN0c1tpXSArCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIikgcmV0dXJuZWQgbnVsbC4iKTsKLSAgICAgICAgICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgbG9nNCgiRkFJTEVEIiwgclN0YXRlLCBudWxs
VGVzdHNbaV0sICJnZXRSZXNwb25zZUhlYWRlcigiICsgbnVsbFRlc3RzW2ldICsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiKSByZXR1cm5lZCBcIiIgKyBzdHIgKyAiXCIiKTsKLSAgICAg
ICAgICAgICAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgICAgICAgICAgICAgbG9nNCgiRkFJTEVE
IiwgclN0YXRlLCBudWxsVGVzdHNbaV0sICJnZXRSZXNwb25zZUhlYWRlcigiICsgbnVsbFRlc3Rz
W2ldICsgIikgdGhyZXcgZXhjZXB0aW9uOiIgKyBlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSAvL2hlYWRlciBpcyBudWxsCi0gICAg
ICAgICAgICBsb2czKCJGQUlMRUQiLCByU3RhdGUsICJudWxsICIgKyBoZWFkZXJOYW1lICsgIiBy
ZXR1cm5lZC4iKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGlmIChyU3RhdGUgPCAyKQot
ICAgICAgICAgICAgbG9nMygiUEFTU0VEIiwgclN0YXRlLCAiZXhjZXB0aW9uIHRocm93biIpOwor
ICAgIHJlc3VsdCA9IHRlc3RHZXRSZXNwb25zZUhlYWRlcih0aGlzLCBoZWFkZXJOYW1lLCByU3Rh
dGUgPD0gWE1MSHR0cFJlcXVlc3QuT1BFTkVEKTsKKyAgICBpZiAocmVzdWx0KSB7CisgICAgICAg
IGlmIChzYXZlZEhlYWRlcikKKyAgICAgICAgICAgIHNob3VsZEJlKCJyZXN1bHQiLCAic2F2ZWRI
ZWFkZXIiKTsKKworICAgICAgICBzYXZlZEhlYWRlciA9IHJlc3VsdDsKKworICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IG51bGxUZXN0cy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHRlc3RH
ZXRSZXNwb25zZUhlYWRlcih0aGlzLCBudWxsVGVzdHNbaV0sIHRydWUpOworICAgIH0gZWxzZSB7
CisgICAgICAgIGlmIChyU3RhdGUgPiBYTUxIdHRwUmVxdWVzdC5PUEVORUQpCisgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJJbiByZWFkeSBzdGF0ZSAiICsgclN0YXRlICsgIiwgdW5leHBlY3RlZCBu
dWxsIHZhbHVlIGZvciAnIiArIGhlYWRlck5hbWUgKyAiJy4iKTsKKyAgICAgICAgZWxzZSBpZiAo
cmVzdWx0ICE9PSBudWxsKQorICAgICAgICAgICAgdGVzdEZhaWxlZCgiSW4gcmVhZHkgc3RhdGUg
IiArIHJTdGF0ZSArICIsIGV4cGVjdGVkIG51bGwgZm9yICciICsgaGVhZGVyTmFtZSArICIsIGdv
dDogIiArIEpTT04uc3RyaW5naWZ5KHJlc3VsdCkgKyAiLiIpOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBsb2czKCJGQUlMRUQiLCByU3RhdGUsICJleGNlcHRpb24gdGhyb3duOiAiICsgZS5t
ZXNzYWdlICsgIi4iKTsKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkhlYWRlciAnIiArIGhlYWRl
ck5hbWUgKyAiJyBpcyBudWxsIGluIHJlYWR5IHN0YXRlICIgKyByU3RhdGUgKyAiLiIpOwogICAg
IH0KLSAgICBpZiAoKHJTdGF0ZSA9PSA0KSAmJiAod2luZG93LnRlc3RSdW5uZXIpKQotICAgICAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19CiAKLWlmICh3aW5kb3cudGVzdFJ1bm5l
cikgewotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOworICAgIGlmIChyU3RhdGUgPT0gWE1MSHR0cFJlcXVlc3QuRE9ORSkKKyAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CiB9CiAKLWZ1bmN0aW9uIHRlc3QoKSB7CitmdW5jdGlvbiBydW5U
ZXN0KCkgewogICAgIC8vIFRlc3QgZm9yIHJlYWR5U3RhdGUgPSAwCi0gICAgdHJ5IHsKLSAgICAg
ICAgdmFyIGhlYWRlciA9IHhoci5nZXRSZXNwb25zZUhlYWRlcihoZWFkZXJOYW1lKTsKLSAgICAg
ICAgbG9nMygiRkFJTEVEIiwgeGhyLnJlYWR5U3RhdGUsIGhlYWRlck5hbWUgKyAiPSIgKyBoZWFk
ZXIgKyAiLiIpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgbG9nMygiUEFTU0VEIiwgeGhy
LnJlYWR5U3RhdGUsICJleGNlcHRpb24gdGhyb3duLiIpOwotICAgIH0KLSAgICB0cnkgewotICAg
ICAgICB4aHIub3BlbigiR0VUIiwicmVzb3VyY2VzLzEyNTEuaHRtbCIsIHRydWUpOwotICAgICAg
ICB4aHIuc2VuZChudWxsKTsKLSAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgbG9nMygiRkFJTEVE
IiwgIm9wZW4vc2VuZCIsICJleGNlcHRpb24gdGhyb3duOiAiICsgZS5tZXNzYWdlICsiLiIpOwot
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKLSAgICB9CisgICAgdGVzdEdldFJlc3BvbnNlSGVhZGVyKHhociwgaGVhZGVy
TmFtZSwgdHJ1ZSk7CisgICAgc2hvdWxkTm90VGhyb3coJ3hoci5vcGVuKCJHRVQiLCAicmVzb3Vy
Y2VzLzEyNTEuaHRtbCIsIHRydWUpOycpOworICAgIC8vIFRlc3QgZm9yIHJlYWR5U3RhdGUgPSAx
CisgICAgdGVzdEdldFJlc3BvbnNlSGVhZGVyKHhociwgaGVhZGVyTmFtZSwgdHJ1ZSk7CisgICAg
c2hvdWxkTm90VGhyb3coInhoci5zZW5kKG51bGwpOyIpOwogfQorcnVuVGVzdCgpOwogPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+CiA8L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InRlc3QoKSI+Ci0KLTxwPlRlc3QgcGFnZSBm
b3IgPGEgaHJlZj0iaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNTYi
PmJ1ZwotMTUzNTY8L2E+Ci1hbmQgPGEgaHJlZj0iaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjkxMjEiPmJ1ZyAyOTEyMTwvYT48L3A+Ci08cD5Bc3NlcnRpb246IEludm9r
aW5nIHRoZSBnZXRSZXNwb25zZUhlYWRlciBtZXRob2Qgd2hlbiByZWFkeVN0YXRlID49IDIKLShI
RUFERVJTX1JFQ0VJVkVEKSByZXR1cm5zIGEgaGVhZGVyIHZhbHVlIGlmIHRoZSBoZWFkZXIgZXhp
c3RzLjwvcD4KLTxwPkFzc2VydGlvbjogSW52b2tpbmcgdGhlIGdldFJlc3BvbnNlSGVhZGVyIG1l
dGhvZCB3aXRoIHRoZSBwYXJhbWV0ZXIKLSAgICBzYXRpc2Z5aW5nIHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBjYXVzZXMgZ2V0UmVzcG9uc2VIZWFkZXIKLSAgICB0byByZXR1cm4gbnVsbDoKLTxs
aT4xYS4gVGhlIHBhcmFtZXRlciBjYXNlLWluc2Vuc2l0aXZlbHkgbWF0Y2hlcyBTZXQtQ29va2ll
OzwvbGk+Ci08bGk+MWIuIFRoZSBwYXJhbWV0ZXIgY2FzZS1pbnNlbnNpdGl2ZWx5IG1hdGNoZXMg
U2V0LUNvb2tpZTI7PC9saT4KLTxsaT4yLiAgVGhlIHBhcmFtZXRlciBkb2VzIG5vdCBtYXRjaCBh
bnkgaGVhZGVyIGluIHRoZSByZXNwb25zZTs8L2xpPgotPGxpPjNhLiBUaGUgcGFyYW1ldGVyIGlz
IG51bGwgKGl0IGlzIG5vdCBhIHZhbGlkIGhlYWRlciBuYW1lKTs8L2xpPgotPGxpPjNiLiBUaGUg
cGFyYW1ldGVyIGlzICJDb250ZW50LVR5cGU6IiAoaXQgaXMgbm90IGEgdmFsaWQgaGVhZGVyIG5h
bWUpLjwvbGk+Ci0KLTxzY3JpcHQ+Ci0gICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAg
ICAgZG9jdW1lbnQud3JpdGUoIjxwPklmIHRoZSB0ZXN0IHBhc3NlcyBvbmUgc2hvdWxkIHNlZSBc
Ci1iZWxvdyB0aGUgcnVsZXIgdGhlIHRleHQgXCJwYXNzZWRcIiBpbiBhbGwgY2FwaXRhbCBsZXR0
ZXJzLCBvbmNlIGZvciBldmVyeSByZWFkeSBzdGF0ZSAmbHQ7IDIsIFwKLWZvbGxvd2VkIGVhY2gg
dGltZSBieSBhIHNwYWNlIGFuZCB0aGUgcmVhZHlTdGF0ZSBudW1iZXIgYW5kIDYgdGltZXMgZm9y
IGV2ZXJ5IHJlYWR5IHN0YXRlID49IDIuPC9wPlxuXAotPHA+UmVhZHlTdGF0ZSBudW1iZXJzIHNo
b3VsZCBiZSBpbiBhc2NlbmRpbmcgb3JkZXIgMCB0byA0LjwvcD5cblwKLTxwPlJlYWR5U3RhdGUg
bnVtYmVycyBzaG91bGQgYmUgZm9sbG93ZWQgYnkgYSBibGFuaywgdGhlIG5hbWUgb2YgdGhlIGhl
YWRlciB0ZXN0ZWQsIGNvbG9uIGEgc3BhY2UgYW5kIGEgbWVzc2FnZS48L3A+XAotPHA+VGhlIHZh
bHVlIG9mIHRoZSAiICsgaGVhZGVyTmFtZSArICIgaGVhZGVyIHNob3VsZCAgYmUgcHJpbnRlZCBm
b3IgcmVhZHkgc3RhdGUgMi48L3A+Iik7Ci08L3NjcmlwdD4KLSA8aHI+Ci0gPHA+PG9sIGlkPWNv
bnNvbGU+PC9vbD48L3A+Ci08L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc3BvbnNlLWFjY2Vzcy1vbi1lcnJvci1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc3BvbnNl
LWFjY2Vzcy1vbi1lcnJvci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWVhNGI3OTQzOWM1MTRh
NTAxZTgxOWM4OTMzNWY0MmRkZTMxMTJhNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzcG9uc2UtYWNjZXNzLW9uLWVycm9yLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1hNTEh0dHBSZXF1ZXN0OiBlbnN1cmUgdGhhdCByZXNw
b25zZSBnZXR0ZXJzIHByb3Blcmx5IGhhbmRsZSBlcnJvciBjYXNlcyAoc2VlIGJ1ZyAxMjU4NDAp
CisKK1BBU1MgZXJyb3IgdGVzdCAKK1BBU1MgYWJvcnQgdGVzdCAKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNwb25zZS1hY2Nlc3Mtb24tZXJy
b3IuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzcG9uc2Ut
YWNjZXNzLW9uLWVycm9yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTNjN2MyYzkyOWEzMDA5MTg1OTg0MWQ3
NjAxMGYzNzlkMWRkMzZlZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QvcmVzcG9uc2UtYWNjZXNzLW9uLWVycm9yLmh0bWwKQEAgLTAsMCAr
MSw1MSBAQAor77u/PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT5Y
TUxIdHRwUmVxdWVzdDogZW5zdXJlIHRoYXQgcmVzcG9uc2UgZ2V0dGVycyBwcm9wZXJseSBoYW5k
bGUgZXJyb3IgY2FzZXM8L3RpdGxlPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9k
eT4KKyAgICA8ZGl2PlhNTEh0dHBSZXF1ZXN0OiBlbnN1cmUgdGhhdCByZXNwb25zZSBnZXR0ZXJz
IHByb3Blcmx5IGhhbmRsZSBlcnJvciBjYXNlcyAoc2VlIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjU4NDAiPmJ1ZyAxMjU4NDA8L2E+KTwvZGl2Pgor
ICAgIDxkaXYgaWQ9ImxvZyI+PC9kaXY+CisKKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCI+CisgICAgICAgIC8vIFRoZXNlIHR3byB0ZXN0cyBjaGVjayByZXNwb25zZSBnZXR0ZXJz
IHdoZW4gZXJyb3IgZmxhZyBpcyBzZXQgYW5kIHN0YXRlIGlzIERPTkUKKyAgICAgICAgdmFyIHRl
c3QxID0gYXN5bmNfdGVzdCgiZXJyb3IgdGVzdCIpCisgICAgICAgIHRlc3QxLnN0ZXAoZnVuY3Rp
b24oKSB7CisKKyAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKQorICAg
ICAgICAgICAgeGhyLm9uZXJyb3IgPSB0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfcmVzcG9uc2UoeGhyKQorICAgICAgICAg
ICAgICAgIHRlc3QxLmRvbmUoKQorICAgICAgICAgICAgfSkKKyAgICAgICAgICAgIHhoci5vcGVu
KCJHRVQiLCAicmVzb3VyY2VzL2luZmluaXRlLWxvb3AucGhwIiwgdHJ1ZSkKKyAgICAgICAgICAg
IHhoci5zZW5kKCIiKQorICAgICAgICB9KQorCisgICAgICAgIHZhciB0ZXN0MiA9IGFzeW5jX3Rl
c3QoImFib3J0IHRlc3QiKQorICAgICAgICB0ZXN0Mi5zdGVwKGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpCisgICAgICAgICAgICB4aHIudXBs
b2FkLm9ubG9hZGVuZCA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgICAgICB4aHIuYWJvcnQo
KQorICAgICAgICAgICAgfQorICAgICAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IHRl
c3QyLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7CisgICAgICAgICAgICAgICAgaWYgKHhoci5yZWFk
eVN0YXRlID09IHhoci5ET05FKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydF9yZXNwb25z
ZSh4aHIpCisgICAgICAgICAgICAgICAgICAgIHRlc3QyLmRvbmUoKQorICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9KQorICAgICAgICAgICAgeGhyLm9wZW4oIlBPU1QiLCAicmVzb3Vy
Y2VzL3Bvc3QtZWNoby5jZ2kiLCB0cnVlKQorICAgICAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFk
ZXIoIkNvbnRlbnQtVHlwZSIsInRleHQvcGxhaW4iKQorICAgICAgICAgICAgeGhyLnNlbmQoImRh
dGEiKQorICAgICAgICB9KQorICAgICAgICAKKyAgICAgICAgZnVuY3Rpb24gYXNzZXJ0X3Jlc3Bv
bnNlKHhocikgeworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh4aHIuZ2V0QWxsUmVzcG9uc2VI
ZWFkZXJzKCkudHJpbSgpLCAiIiwgImdldEFsbFJlc3BvbnNlSGVhZGVycyBzaG91bGQgcmV0dXJu
IHRoZSBlbXB0eSBzdHJpbmciKQorICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh4aHIuZ2V0UmVz
cG9uc2VIZWFkZXIoIkNvbnRlbnQtVHlwZSIpLCBudWxsLCAiZ2V0UmVzcG9uc2VIZWFkZXIgc2hv
dWxkIHJldHVybiBudWxsIikKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>