<?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>215795</bug_id>
          
          <creation_ts>2020-08-24 21:45:19 -0700</creation_ts>
          <short_desc>Web Inspector: allow DOM breakpoints to be configured</short_desc>
          <delta_ts>2020-10-16 20:15:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>215362</dependson>
    
    <dependson>215363</dependson>
    
    <dependson>215747</dependson>
    
    <dependson>215794</dependson>
          <blocked>217865</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>bburg</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1682573</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-08-24 21:45:19 -0700</bug_when>
    <thetext>This would allow developers to do things like:
 - ignore the first N pauses
 - evaluate JavaScript whenever an attribute of a particular node is changed without pausing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684381</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-31 21:46:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/68119248&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685575</commentid>
    <comment_count>2</comment_count>
      <attachid>407948</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-09-04 00:30:48 -0700</bug_when>
    <thetext>Created attachment 407948
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685576</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-09-04 00:31:38 -0700</bug_when>
    <thetext>This patch modifies the inspector protocol. Please ensure that any frontend changes appropriately use feature checks for new protocol features.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685757</commentid>
    <comment_count>4</comment_count>
      <attachid>407948</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-09-04 10:51:45 -0700</bug_when>
    <thetext>Comment on attachment 407948
Patch

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

&gt; Source/WebCore/inspector/agents/page/PageDOMDebuggerAgent.cpp:284
&gt; +    Vector&lt;Node*&gt; stack({ child });
&gt; +    while (!stack.isEmpty()) {

i think it would actually be better/faster to just iterate each `HashMap` and use `Node::contains` to determine whether to remove</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685765</commentid>
    <comment_count>5</comment_count>
      <attachid>407948</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-09-04 11:13:01 -0700</bug_when>
    <thetext>Comment on attachment 407948
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Controllers/DOMDebuggerManager.js:1026
&gt; +        let stack = [node];
&gt; +        while (stack.length) {

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685768</commentid>
    <comment_count>6</comment_count>
      <attachid>407948</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-09-04 11:14:55 -0700</bug_when>
    <thetext>Comment on attachment 407948
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Controllers/DOMDebuggerManager.js:1058
&gt; +        let stack = [node];
&gt; +        while (stack.length) {

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685770</commentid>
    <comment_count>7</comment_count>
      <attachid>407948</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-09-04 11:18:36 -0700</bug_when>
    <thetext>Comment on attachment 407948
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Models/DOMBreakpoint.js:73
&gt; +            eventName: json.eventName,

oops</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685833</commentid>
    <comment_count>8</comment_count>
      <attachid>407948</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-09-04 13:21:17 -0700</bug_when>
    <thetext>Comment on attachment 407948
Patch

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

r=me, nice work!

&gt; Source/WebCore/inspector/agents/page/PageDOMDebuggerAgent.cpp:-121
&gt; -    if (rootBit &amp; inheritableDOMBreakpointTypesMask) {

Wow this is gross

&gt; Source/WebCore/inspector/agents/page/PageDOMDebuggerAgent.cpp:171
&gt; +static int calculateDistance(Node&amp; child, Node&amp; ancestor)

Ugh, -1 is back. Can we use Optional and nullopt to represent this?

&gt; Source/WebCore/inspector/agents/page/PageDOMDebuggerAgent.cpp:-177
&gt; -    if (hasBreakpoint(&amp;parent, SubtreeModified)) {

Can we do an empty hashmap check here for the fast path?

&gt; Source/WebCore/inspector/agents/page/PageDOMDebuggerAgent.cpp:196
&gt; +    for (auto [breakpointOwner, breakpoint] : m_domSubtreeModifiedBreakpoints) {

Can you explain with a comment or Changelog comment about what the algorithm is? Roughly, &quot;look for the closest DOM node that has subtreeModified breakpoint&quot;.

&gt; Source/WebCore/inspector/agents/page/PageDOMDebuggerAgent.cpp:224
&gt; +    int closestDistance = unrelated;

Can we do an empty hashmap check here for the fast path?

&gt; Source/WebCore/inspector/agents/page/PageDOMDebuggerAgent.cpp:283
&gt; +    Vector&lt;Node*&gt; stack({ child });

Needs high-level description of the algorithm.

&gt; Source/WebCore/inspector/agents/page/PageDOMDebuggerAgent.cpp:297
&gt; +        if (auto* nextSibling = InspectorDOMAgent::innerNextSibling(child))

Nice.

&gt; Source/WebInspectorUI/UserInterface/Controllers/DOMDebuggerManager.js:302
&gt; +                // We should get the target associated with the nodeIdentifier of this breakpoint.

Nit: &quot;we should..&quot; sort of implies that we don&apos;t. Do we? Should this be a FIXME?

&gt; Source/WebInspectorUI/UserInterface/Controllers/DOMDebuggerManager.js:543
&gt; +            this._ignoreDOMBreakpointDOMNodeWillChange = true;

Nit: It would be better to name this after the state being entered/exited, such as &apos;this._clearingDOMBreakpoints&apos;.

&gt; Source/WebInspectorUI/UserInterface/Controllers/DOMDebuggerManager.js:798
&gt; +        // We should get the target associated with the nodeIdentifier of this breakpoint.

Ditto above.

&gt; Source/WebInspectorUI/UserInterface/Controllers/DOMDebuggerManager.js:821
&gt; +        this._restoringBreakpoints = true;

I like this in preference to this._ignoreFooBar.

&gt; Source/WebInspectorUI/UserInterface/Controllers/DOMDebuggerManager.js:822
&gt; +        // We should get the target associated with the nodeIdentifier of this breakpoint.

Ditto above.

&gt; Source/WebInspectorUI/UserInterface/Controllers/DOMDebuggerManager.js:994
&gt; +            this._ignoreDOMBreakpointDOMNodeWillChange = true;

Ditto above comment.

&gt; Source/WebInspectorUI/UserInterface/Controllers/DOMDebuggerManager.js:1019
&gt; +            if (!breakpoint.domNodeIdentifier)

This could be expressed using Array.prototype.filter

&gt; Source/WebInspectorUI/UserInterface/Controllers/DOMDebuggerManager.js:1036
&gt; +                    resolvableBreakpoints.splice(i, 1);

🚧 Mutating while iterating 🚧

Is there a way to avoid this? It just makes me super anxious to do this on purpose.

&gt; Source/WebInspectorUI/UserInterface/Controllers/DOMDebuggerManager.js:1063
&gt; +                this._ignoreDOMBreakpointDOMNodeWillChange = true;

Ditto above comment.

&gt; Source/WebInspectorUI/UserInterface/Models/DOMBreakpoint.js:66
&gt; +        console.assert();

This should have a message to assist in grepping for error messages ;-)

&gt; LayoutTests/inspector/dom-debugger/attribute-modified-style.html:120
&gt; +        testCaseNamePrefix: &quot;Style.&quot;,

So nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685943</commentid>
    <comment_count>9</comment_count>
      <attachid>407948</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-09-04 17:15:17 -0700</bug_when>
    <thetext>Comment on attachment 407948
Patch

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

&gt;&gt; Source/WebCore/inspector/agents/page/PageDOMDebuggerAgent.cpp:-177
&gt;&gt; -    if (hasBreakpoint(&amp;parent, SubtreeModified)) {
&gt; 
&gt; Can we do an empty hashmap check here for the fast path?

it should be pretty fast if the `HashMap` is empty, but i suppose it couldn&apos;t hurt to avoid unnecessary allocations

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/DOMDebuggerManager.js:302
&gt;&gt; +                // We should get the target associated with the nodeIdentifier of this breakpoint.
&gt; 
&gt; Nit: &quot;we should..&quot; sort of implies that we don&apos;t. Do we? Should this be a FIXME?

this is part of the larger &quot;advanced multi-target support all the things&quot; that needs to be done at some point in the future 

right now there is no `WI.Target` associated with a given `WI.DOMNode` because all `WI.DOMNode` exist in the main target (subframes are in-process)

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/DOMDebuggerManager.js:1019
&gt;&gt; +            if (!breakpoint.domNodeIdentifier)
&gt; 
&gt; This could be expressed using Array.prototype.filter

actually no, because `breakpoints` is a `Set` and sadly does not (yet) have any of the manipulation methods like `Array` :(

I could `Array.from(breakpoints).filter`, but that&apos;s two full iterations vs one (although maybe we don&apos;t care because it&apos;s likely never gonna be more than a handful of items)

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/DOMDebuggerManager.js:1036
&gt;&gt; +                    resolvableBreakpoints.splice(i, 1);
&gt; 
&gt; 🚧 Mutating while iterating 🚧
&gt; 
&gt; Is there a way to avoid this? It just makes me super anxious to do this on purpose.

it&apos;s fine because we&apos;re iterating backwards

i could make `breakpoints` back into a `Set` (i don&apos;t think `Iterator` has problems if the item is removed during iteration), but that&apos;s adding yet another full iteration

&gt;&gt; Source/WebInspectorUI/UserInterface/Models/DOMBreakpoint.js:66
&gt;&gt; +        console.assert();
&gt; 
&gt; This should have a message to assist in grepping for error messages ;-)

FYI this is meant to be the equivalent of `ASSERT_NOT_REACHED`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685956</commentid>
    <comment_count>10</comment_count>
      <attachid>408053</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-09-04 17:35:47 -0700</bug_when>
    <thetext>Created attachment 408053
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686110</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-09-05 13:06:26 -0700</bug_when>
    <thetext>Committed r266669: &lt;https://trac.webkit.org/changeset/266669&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 408053.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407948</attachid>
            <date>2020-09-04 00:30:48 -0700</date>
            <delta_ts>2020-09-04 17:35:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215795-20200904003048.patch</filename>
            <type>text/plain</type>
            <size>168833</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDc2Nzg3MjQyNTZkYTBhNmIwMGU4MDBmZGQ2MWU4
MTExMTYwOTdhN2MuLjI5ZWIyZTcyN2Y0NmZmMjAxNDgxZmQ4ZjNjNjRlMWFhNzljOGQzYTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTA5LTAzICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBh
bGxvdyBET00gYnJlYWtwb2ludHMgdG8gYmUgY29uZmlndXJlZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1Nzk1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9jb2wvRE9NRGVi
dWdnZXIuanNvbjoKKyAgICAgICAgQWRkIGFuIGBvcHRpb25zYCBwYXJhbWV0ZXIgdG8gYERPTURl
YnVnZ2VyLnNldERPTUJyZWFrcG9pbnRgIHRvIGFsbG93IGNvbmZpZ3VyYXRpb24uCisKIDIwMjAt
MDktMDMgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IGFsbG93IHVybCBicmVha3BvaW50cyB0byBiZSBjb25maWd1cmVkCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggOTVlMzNiMWE1NDliYjZhNjZkMTRkNzQzM2ZhMDk2NGZiOWIyNWU3YS4uNGUzNDU3ZGE2
YmIwZWMyOWNkMTM2YjNjNDc5YWI4NDQ3ZTJmZWViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3
IEBACisyMDIwLTA5LTAzICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBhbGxvdyBET00gYnJlYWtwb2ludHMgdG8gYmUgY29uZmlndXJl
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1Nzk1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6
IGluc3BlY3Rvci9kb20tZGVidWdnZXIvYXR0cmlidXRlLW1vZGlmaWVkLXN0eWxlLmh0bWwKKyAg
ICAgICAgICAgICAgIGluc3BlY3Rvci9kb20tZGVidWdnZXIvZG9tLWJyZWFrcG9pbnRzLmh0bWwK
KyAgICAgICAgICAgICAgIGluc3BlY3Rvci9kb20tZGVidWdnZXIvZG9tLWJyZWFrcG9pbnQtYXR0
cmlidXRlLW1vZGlmaWVkLmh0bWwKKyAgICAgICAgICAgICAgIGluc3BlY3Rvci9kb20tZGVidWdn
ZXIvZG9tLWJyZWFrcG9pbnQtbm9kZS1yZW1vdmVkLWFuY2VzdG9yLmh0bWwKKyAgICAgICAgICAg
ICAgIGluc3BlY3Rvci9kb20tZGVidWdnZXIvZG9tLWJyZWFrcG9pbnQtbm9kZS1yZW1vdmVkLWRp
cmVjdC5odG1sCisgICAgICAgICAgICAgICBpbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2RvbS1icmVh
a3BvaW50LXN1YnRyZWUtbW9kaWZpZWQtYWRkLmh0bWwKKyAgICAgICAgICAgICAgIGluc3BlY3Rv
ci9kb20tZGVidWdnZXIvZG9tLWJyZWFrcG9pbnQtc3VidHJlZS1tb2RpZmllZC1yZW1vdmUuaHRt
bAorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFnZW50
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VET01EZWJ1Z2dlckFnZW50OjpkaXNhYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2VET01EZWJ1Z2dlckFnZW50OjpzZXRET01CcmVha3BvaW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VET01EZWJ1Z2dlckFnZW50OjpyZW1vdmVET01CcmVh
a3BvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VET01EZWJ1Z2dlckFnZW50OjpmcmFtZURv
Y3VtZW50VXBkYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpjYWxjdWxhdGVEaXN0YW5jZSk6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGFnZURPTURlYnVnZ2VyQWdlbnQ6OndpbGxJbnNlcnRE
T01Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VET01EZWJ1Z2dlckFnZW50Ojp3aWxsUmVt
b3ZlRE9NTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRE9NRGVidWdnZXJBZ2VudDo6ZGlk
UmVtb3ZlRE9NTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRE9NRGVidWdnZXJBZ2VudDo6
d2lsbE1vZGlmeURPTUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURPTURlYnVnZ2VyQWdl
bnQ6OndpbGxJbnZhbGlkYXRlU3R5bGVBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VET01E
ZWJ1Z2dlckFnZW50OjpidWlsZFBhdXNlRGF0YUZvckRPTUJyZWFrcG9pbnQpOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OmRvbVR5cGVGb3JOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OmRvbVR5cGVOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VET01EZWJ1
Z2dlckFnZW50OjpkaWRJbnNlcnRET01Ob2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2VET01EZWJ1Z2dlckFnZW50OjpkZXNjcmlwdGlvbkZvckRPTUV2ZW50KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2VET01EZWJ1Z2dlckFnZW50Ojp1cGRhdGVTdWJ0cmVlQnJl
YWtwb2ludHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGFnZURPTURlYnVnZ2VyQWdl
bnQ6Omhhc0JyZWFrcG9pbnQpOiBEZWxldGVkLgorICAgICAgICBSZXBsYWNlIHRoZSBiaXRtYXNr
IHdpdGggc2VwYXJhdGUgYEhhc2hNYXBgIGZvciBlYWNoIHR5cGUgb2YgRE9NIGJyZWFrcG9pbnQu
IFVzZSB0aGUgY2xvc2VzdAorICAgICAgICBicmVha3BvaW50IHRvIHRoZSBhZGRlZC9yZW1vdmVk
IG5vZGUgd2hlbiBwYXVzaW5nLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIv
V29ya2VyRE9NRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29y
a2VyL1dvcmtlckRPTURlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
RE9NRGVidWdnZXJBZ2VudDo6c2V0RE9NQnJlYWtwb2ludCk6CisKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW5zZXJ0RE9NTm9kZUltcGwpOgorCiAyMDIwLTA5LTAz
ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBhbGxvdyB1cmwgYnJlYWtwb2ludHMgdG8gYmUgY29uZmlndXJlZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9D
aGFuZ2VMb2cKaW5kZXggYTk5N2Y5NmE3NjU2M2Q3MDc5NGNkMjAzMDg4MTBhOGRlNWIxOTVhNC4u
MjdkYjQ5MTMyZTBkYzZkMWQ4NDE0M2EzYTUwN2JmY2E1MDc0NWVjYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNTggQEAKKzIwMjAtMDktMDMgIERldmluIFJvdXNzbyAgPGRy
b3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGFsbG93IERPTSBicmVh
a3BvaW50cyB0byBiZSBjb25maWd1cmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTU3OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NTWFuYWdlci5q
czoKKyAgICAgICAgKFdJLkRPTU1hbmFnZXIucHJvdG90eXBlLl9zZXRDaGlsZE5vZGVzKToKKyAg
ICAgICAgRGlzcGF0Y2ggZXZlbnRzIGZvciBlYWNoIG5ldyBjaGlsZCBub2RlIGFkZGVkIGFuZCBl
YWNoIGV4aXN0aW5nIGNoaWxkIG5vZGUgcmVtb3ZlZCBzbyB0aGF0CisgICAgICAgIGFueSBsaXN0
ZW5lcnMgY2FuIGFsc28ga25vdyB3aGVuIG5ldyBub2RlcyBhcmUgYWRkZWQgdmlhIGEgZnVsbCBj
aGlsZHJlbiBwYXlsb2FkIHVwZGF0ZS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJv
bGxlcnMvRE9NRGVidWdnZXJNYW5hZ2VyLmpzOgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5h
Z2VyKToKKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuYWRkRE9NQnJl
YWtwb2ludCk6CisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLnJlbW92
ZURPTUJyZWFrcG9pbnQpOgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlw
ZS5fZGV0YWNoRE9NQnJlYWtwb2ludHNGb3JGcmFtZSk6IEFkZGVkLgorICAgICAgICAoV0kuRE9N
RGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5fc3BlY3VsYXRpdmVseVJlc29sdmVET01CcmVha3Bv
aW50c0ZvclVSTCk6CisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl9z
cGVjdWxhdGl2ZWx5UmVzb2x2ZURPTUJyZWFrcG9pbnQpOiBBZGRlZC4KKyAgICAgICAgKFdJLkRP
TURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX3Jlc29sdmVET01CcmVha3BvaW50KToKKyAgICAg
ICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX3NldERPTUJyZWFrcG9pbnQpOiBB
ZGRlZC4KKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX3JlbW92ZURP
TUJyZWFrcG9pbnQpOiBBZGRlZC4KKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5wcm90
b3R5cGUuX2hhbmRsZURPTUJyZWFrcG9pbnREaXNhYmxlZFN0YXRlQ2hhbmdlZCk6CisgICAgICAg
IChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl9oYW5kbGVET01CcmVha3BvaW50RWRp
dGFibGVQcm9wZXJ0eUNoYW5nZWQpOiBBZGRlZC4KKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFu
YWdlci5wcm90b3R5cGUuX2hhbmRsZURPTUJyZWFrcG9pbnRBY3Rpb25zQ2hhbmdlZCk6IEFkZGVk
LgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5faGFuZGxlRE9NQnJl
YWtwb2ludERPTU5vZGVXaWxsQ2hhbmdlKTogQWRkZWQuCisgICAgICAgIChXSS5ET01EZWJ1Z2dl
ck1hbmFnZXIucHJvdG90eXBlLl9oYW5kbGVET01CcmVha3BvaW50RE9NTm9kZURpZENoYW5nZSk6
IEFkZGVkLgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5fY2hpbGRG
cmFtZVdhc1JlbW92ZWQpOgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlw
ZS5fbWFpblJlc291cmNlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdl
ci5wcm90b3R5cGUuX25vZGVJbnNlcnRlZCk6CisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFn
ZXIucHJvdG90eXBlLl9ub2RlUmVtb3ZlZCk6CisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFn
ZXIucHJvdG90eXBlLl9kZXRhY2hET01CcmVha3BvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdJ
LkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX2RldGFjaEJyZWFrcG9pbnRzRm9yRnJhbWUp
OiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5fdXBk
YXRlRE9NQnJlYWtwb2ludCk6IERlbGV0ZWQuCisgICAgICAgIFJlY3Vyc2l2ZWx5IHdhbGsgdGhl
IGFkZGVkL3JlbW92ZWQgbm9kZSdzIHN1YnRyZWUgdG8gc2V0L3JlbW92ZSBET00gYnJlYWtwb2lu
dHMuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9ET01CcmVha3BvaW50LmpzOgor
ICAgICAgICAoV0kuRE9NQnJlYWtwb2ludC5kaXNwbGF5TmFtZUZvclR5cGUpOgorICAgICAgICAo
V0kuRE9NQnJlYWtwb2ludC5mcm9tSlNPTik6CisgICAgICAgIChXSS5ET01CcmVha3BvaW50LnBy
b3RvdHlwZS5nZXQgZWRpdGFibGUpOiBBZGRlZC4KKyAgICAgICAgKFdJLkRPTUJyZWFrcG9pbnQu
cHJvdG90eXBlLnNldCBkb21Ob2RlSWRlbnRpZmllcik6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9ET01UcmVlQ29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5ET01UcmVlQ29udGVu
dFZpZXcpOgorICAgICAgICAoV0kuRE9NVHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5faGFuZGxl
RE9NQnJlYWtwb2ludERPTU5vZGVXaWxsQ2hhbmdlKTogQWRkZWQuCisgICAgICAgIChXSS5ET01U
cmVlQ29udGVudFZpZXcucHJvdG90eXBlLl9oYW5kbGVET01CcmVha3BvaW50RE9NTm9kZURpZENo
YW5nZSk6IEFkZGVkLgorICAgICAgICAoV0kuRE9NVHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5f
aGFuZGxlRE9NQnJlYWtwb2ludERPTU5vZGVDaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzOgorICAg
ICAgICAoV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwpOgorICAgICAgICAoV0kuU291
cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlLl91cGRhdGVQYXVzZVJlYXNvblNl
Y3Rpb24pOgorICAgICAgICAoV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90
eXBlLl9oYW5kbGVET01CcmVha3BvaW50RE9NTm9kZVdpbGxDaGFuZ2UpOiBBZGRlZC4KKyAgICAg
ICAgKFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZS5faGFuZGxlRE9N
QnJlYWtwb2ludERPTU5vZGVEaWRDaGFuZ2UpOiBBZGRlZC4KKyAgICAgICAgKFdJLlNvdXJjZXNO
YXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZS5faGFuZGxlRE9NQnJlYWtwb2ludERPTU5v
ZGVDaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAgTGlzdGVuIGZvciB3aGVuIHRoZSBgZG9tTm9k
ZUlkZW50aWZpZXJgIGNoYW5nZXMgYXMgdGhhdCdzIHJlYWxseSB3aGVuIHRoZSBgV0kuRE9NQnJl
YWtwb2ludGAKKyAgICAgICAgaXMgc2V0L3JlbW92ZWQgZnJvbSB0aGUgYmFja2VuZC4KKwogMjAy
MC0wOS0wMyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2Vi
IEluc3BlY3RvcjogYWxsb3cgdXJsIGJyZWFrcG9pbnRzIHRvIGJlIGNvbmZpZ3VyZWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvRE9NRGVidWdn
ZXIuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvRE9NRGVi
dWdnZXIuanNvbgppbmRleCAwNDNmOWJmNTY4NTlhN2UyOTUyMjYxYmMxZTQwMDI4M2JmMzRhODhi
Li45NzFkNWRlMjA0NzRhODIzZjQ0OGFiYTA3M2JhOTRmNmMwMTdiM2JiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0RPTURlYnVnZ2VyLmpzb24K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9ET01EZWJ1Z2dl
ci5qc29uCkBAIC0yMyw3ICsyMyw4IEBACiAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU2V0
cyBicmVha3BvaW50IG9uIHBhcnRpY3VsYXIgb3BlcmF0aW9uIHdpdGggRE9NLiIsCiAgICAgICAg
ICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5vZGVJZCIs
ICIkcmVmIjogIkRPTS5Ob2RlSWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBvZiB0aGUg
bm9kZSB0byBzZXQgYnJlYWtwb2ludCBvbi4iIH0sCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJ0eXBlIiwgIiRyZWYiOiAiRE9NQnJlYWtwb2ludFR5cGUiLCAiZGVzY3JpcHRpb24iOiAiVHlw
ZSBvZiB0aGUgb3BlcmF0aW9uIHRvIHN0b3AgdXBvbi4iIH0KKyAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInR5cGUiLCAiJHJlZiI6ICJET01CcmVha3BvaW50VHlwZSIsICJkZXNjcmlwdGlvbiI6
ICJUeXBlIG9mIHRoZSBvcGVyYXRpb24gdG8gc3RvcCB1cG9uLiIgfSwKKyAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogIm9wdGlvbnMiLCAiJHJlZiI6ICJEZWJ1Z2dlci5CcmVha3BvaW50T3B0aW9u
cyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJPcHRpb25zIHRvIGFwcGx5IHRv
IHRoaXMgYnJlYWtwb2ludCB0byBtb2RpZnkgaXRzIGJlaGF2aW9yLiIgfQogICAgICAgICAgICAg
XQogICAgICAgICB9LAogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IDBhMDgxODA3OThmYzlkZGNj
NWRhNzVjZmUwMzVmNTZkNzZlMTA4NDMuLjFkNjVhNDUyNzU5ZmQwMjUzMjIzMmZmZmJmYjcwMzc2
ZjBhZmVmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC0xNjAsOCArMTYwLDYgQEAgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZEluc2VydERPTU5vZGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
IGluc3RydW0KIHsKICAgICBpZiAoYXV0byogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRz
LnBlcnNpc3RlbnRET01BZ2VudCgpKQogICAgICAgICBkb21BZ2VudC0+ZGlkSW5zZXJ0RE9NTm9k
ZShub2RlKTsKLSAgICBpZiAoYXV0byogcGFnZURPTURlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50
aW5nQWdlbnRzLmVuYWJsZWRQYWdlRE9NRGVidWdnZXJBZ2VudCgpKQotICAgICAgICBwYWdlRE9N
RGVidWdnZXJBZ2VudC0+ZGlkSW5zZXJ0RE9NTm9kZShub2RlKTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndpbGxSZW1vdmVET01Ob2RlSW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBOb2RlJiBub2RlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2Vu
dC5jcHAKaW5kZXggN2Y0ODc1NGFmMTZhODRjODZkMzRkMmRiMmM2ZTE3YWQ3ZmFhYmQyNy4uZGMy
NDhjMTllY2RlZGEwYzkzYTlhZjY0OTM5M2U3ZGNiMDE2MzIzOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2Vy
QWdlbnQuY3BwCkBAIC0zNiw0MCArMzYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKLWVudW0gRE9NQnJlYWtwb2ludFR5cGUgewotICAgIFN1
YnRyZWVNb2RpZmllZCwKLSAgICBBdHRyaWJ1dGVNb2RpZmllZCwKLSAgICBOb2RlUmVtb3ZlZCwK
LX07Ci0KLWNvbnN0IHVpbnQzMl90IGluaGVyaXRhYmxlRE9NQnJlYWtwb2ludFR5cGVzTWFzayA9
ICgxIDw8IFN1YnRyZWVNb2RpZmllZCk7Ci1jb25zdCBpbnQgZG9tQnJlYWtwb2ludERlcml2ZWRU
eXBlU2hpZnQgPSAxNjsKLQotc3RhdGljIGludCBkb21UeXBlRm9yTmFtZShFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgdHlwZVN0cmluZykKLXsKLSAgICBpZiAodHlwZVN0
cmluZyA9PSAic3VidHJlZS1tb2RpZmllZCIpCi0gICAgICAgIHJldHVybiBTdWJ0cmVlTW9kaWZp
ZWQ7Ci0gICAgaWYgKHR5cGVTdHJpbmcgPT0gImF0dHJpYnV0ZS1tb2RpZmllZCIpCi0gICAgICAg
IHJldHVybiBBdHRyaWJ1dGVNb2RpZmllZDsKLSAgICBpZiAodHlwZVN0cmluZyA9PSAibm9kZS1y
ZW1vdmVkIikKLSAgICAgICAgcmV0dXJuIE5vZGVSZW1vdmVkOwotICAgIGVycm9yU3RyaW5nID0g
bWFrZVN0cmluZygiVW5rbm93biBET00gYnJlYWtwb2ludCB0eXBlOiAiLCB0eXBlU3RyaW5nKTsK
LSAgICByZXR1cm4gLTE7Ci19Ci0KLXN0YXRpYyBTdHJpbmcgZG9tVHlwZU5hbWUoaW50IHR5cGUp
Ci17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBTdWJ0cmVlTW9kaWZpZWQ6Ci0gICAg
ICAgIHJldHVybiAic3VidHJlZS1tb2RpZmllZCJfczsKLSAgICBjYXNlIEF0dHJpYnV0ZU1vZGlm
aWVkOgotICAgICAgICByZXR1cm4gImF0dHJpYnV0ZS1tb2RpZmllZCJfczsKLSAgICBjYXNlIE5v
ZGVSZW1vdmVkOgotICAgICAgICByZXR1cm4gIm5vZGUtcmVtb3ZlZCJfczsKLSAgICB9Ci0gICAg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci19Ci0KIFBhZ2VET01EZWJ1Z2dlckFnZW50OjpQYWdlRE9N
RGVidWdnZXJBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0LCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50KiBkZWJ1Z2dlckFnZW50KQogICAgIDogSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudChj
b250ZXh0LCBkZWJ1Z2dlckFnZW50KQogewpAQCAtOTMsMTQgKzU5LDE2IEBAIHZvaWQgUGFnZURP
TURlYnVnZ2VyQWdlbnQ6OmRpc2FibGUoKQogewogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5z
ZXRFbmFibGVkUGFnZURPTURlYnVnZ2VyQWdlbnQobnVsbHB0cik7CiAKLSAgICBtX2RvbUJyZWFr
cG9pbnRzLmNsZWFyKCk7CisgICAgbV9kb21TdWJ0cmVlTW9kaWZpZWRCcmVha3BvaW50cy5jbGVh
cigpOworICAgIG1fZG9tQXR0cmlidXRlTW9kaWZpZWRCcmVha3BvaW50cy5jbGVhcigpOworICAg
IG1fZG9tTm9kZVJlbW92ZWRCcmVha3BvaW50cy5jbGVhcigpOwogCiAgICAgbV9wYXVzZU9uQWxs
QW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludCA9IG51bGxwdHI7CiAKICAgICBJbnNwZWN0b3JET01E
ZWJ1Z2dlckFnZW50OjpkaXNhYmxlKCk7CiB9CiAKLXZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6
OnNldERPTUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBj
b25zdCBTdHJpbmcmIHR5cGVTdHJpbmcpCit2b2lkIFBhZ2VET01EZWJ1Z2dlckFnZW50OjpzZXRE
T01CcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3Qg
U3RyaW5nJiB0eXBlU3RyaW5nLCBjb25zdCBKU09OOjpPYmplY3QqIG9wdGlvbnNQYXlsb2FkKQog
ewogICAgIGF1dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRE
T01BZ2VudCgpOwogICAgIGlmICghZG9tQWdlbnQpIHsKQEAgLTExMiwxNiArODAsMzQgQEAgdm9p
ZCBQYWdlRE9NRGVidWdnZXJBZ2VudDo6c2V0RE9NQnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGludCBub2RlSWQKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGludCB0eXBlID0gZG9tVHlwZUZvck5hbWUoZXJyb3JTdHJpbmcsIHR5cGVTdHJpbmcpOwot
ICAgIGlmICh0eXBlID09IC0xKQorICAgIGF1dG8gdHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6
Okluc3BlY3RvckhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlBy
b3RvY29sOjpET01EZWJ1Z2dlcjo6RE9NQnJlYWtwb2ludFR5cGU+KHR5cGVTdHJpbmcpOworICAg
IGlmICghdHlwZSkgeworICAgICAgICBlcnJvclN0cmluZyA9IG1ha2VTdHJpbmcoIlVua25vd24g
dHlwZTogIl9zLCB0eXBlU3RyaW5nKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1
dG8gYnJlYWtwb2ludCA9IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRlYnVnZ2VyQnJlYWtwb2lu
dEZyb21QYXlsb2FkKGVycm9yU3RyaW5nLCBvcHRpb25zUGF5bG9hZCk7CisgICAgaWYgKCFicmVh
a3BvaW50KQogICAgICAgICByZXR1cm47CiAKLSAgICB1aW50MzJfdCByb290Qml0ID0gMSA8PCB0
eXBlOwotICAgIG1fZG9tQnJlYWtwb2ludHMuc2V0KG5vZGUsIG1fZG9tQnJlYWtwb2ludHMuZ2V0
KG5vZGUpIHwgcm9vdEJpdCk7Ci0gICAgaWYgKHJvb3RCaXQgJiBpbmhlcml0YWJsZURPTUJyZWFr
cG9pbnRUeXBlc01hc2spIHsKLSAgICAgICAgZm9yIChOb2RlKiBjaGlsZCA9IEluc3BlY3RvckRP
TUFnZW50Ojppbm5lckZpcnN0Q2hpbGQobm9kZSk7IGNoaWxkOyBjaGlsZCA9IEluc3BlY3RvckRP
TUFnZW50Ojppbm5lck5leHRTaWJsaW5nKGNoaWxkKSkKLSAgICAgICAgICAgIHVwZGF0ZVN1YnRy
ZWVCcmVha3BvaW50cyhjaGlsZCwgcm9vdEJpdCwgdHJ1ZSk7CisgICAgc3dpdGNoICgqdHlwZSkg
eworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NRGVidWdnZXI6OkRPTUJyZWFrcG9p
bnRUeXBlOjpTdWJ0cmVlTW9kaWZpZWQ6CisgICAgICAgIGlmICghbV9kb21TdWJ0cmVlTW9kaWZp
ZWRCcmVha3BvaW50cy5hZGQobm9kZSwgYnJlYWtwb2ludC5yZWxlYXNlTm9uTnVsbCgpKSkKKyAg
ICAgICAgICAgIGVycm9yU3RyaW5nID0gIkJyZWFrcG9pbnQgZm9yIGdpdmVuIG5vZGUgYW5kIGdp
dmVuIHR5cGUgYWxyZWFkeSBleGlzdHMiX3M7CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2Ug
SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NRGVidWdnZXI6OkRPTUJyZWFrcG9pbnRUeXBlOjpBdHRy
aWJ1dGVNb2RpZmllZDoKKyAgICAgICAgaWYgKCFtX2RvbUF0dHJpYnV0ZU1vZGlmaWVkQnJlYWtw
b2ludHMuYWRkKG5vZGUsIGJyZWFrcG9pbnQucmVsZWFzZU5vbk51bGwoKSkpCisgICAgICAgICAg
ICBlcnJvclN0cmluZyA9ICJCcmVha3BvaW50IGZvciBnaXZlbiBub2RlIGFuZCBnaXZlbiB0eXBl
IGFscmVhZHkgZXhpc3RzIl9zOworICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkRPTURlYnVnZ2VyOjpET01CcmVha3BvaW50VHlwZTo6Tm9kZVJlbW92ZWQ6
CisgICAgICAgIGlmICghbV9kb21Ob2RlUmVtb3ZlZEJyZWFrcG9pbnRzLmFkZChub2RlLCBicmVh
a3BvaW50LnJlbGVhc2VOb25OdWxsKCkpKQorICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiQnJl
YWtwb2ludCBmb3IgZ2l2ZW4gbm9kZSBhbmQgZ2l2ZW4gdHlwZSBhbHJlYWR5IGV4aXN0cyJfczsK
KyAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQog
CiB2b2lkIFBhZ2VET01EZWJ1Z2dlckFnZW50OjpyZW1vdmVET01CcmVha3BvaW50KEVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiB0eXBlU3RyaW5nKQpA
QCAtMTM2LDIxICsxMjIsMzAgQEAgdm9pZCBQYWdlRE9NRGVidWdnZXJBZ2VudDo6cmVtb3ZlRE9N
QnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2QKICAgICBpZiAoIW5v
ZGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGludCB0eXBlID0gZG9tVHlwZUZvck5hbWUoZXJy
b3JTdHJpbmcsIHR5cGVTdHJpbmcpOwotICAgIGlmICh0eXBlID09IC0xKQorICAgIGF1dG8gdHlw
ZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OnBhcnNlRW51bVZhbHVl
RnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpET01EZWJ1Z2dlcjo6RE9NQnJlYWtwb2lu
dFR5cGU+KHR5cGVTdHJpbmcpOworICAgIGlmICghdHlwZSkgeworICAgICAgICBlcnJvclN0cmlu
ZyA9IG1ha2VTdHJpbmcoIlVua25vd24gdHlwZTogIl9zLCB0eXBlU3RyaW5nKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIHN3aXRjaCAoKnR5cGUpIHsKKyAgICBjYXNlIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkRPTURlYnVnZ2VyOjpET01CcmVha3BvaW50VHlwZTo6U3VidHJlZU1vZGlm
aWVkOgorICAgICAgICBpZiAoIW1fZG9tU3VidHJlZU1vZGlmaWVkQnJlYWtwb2ludHMucmVtb3Zl
KG5vZGUpKQorICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiQnJlYWtwb2ludCBmb3IgZ2l2ZW4g
bm9kZSBhbmQgZ2l2ZW4gdHlwZSBtaXNzaW5nIl9zOwogICAgICAgICByZXR1cm47CiAKLSAgICB1
aW50MzJfdCByb290Qml0ID0gMSA8PCB0eXBlOwotICAgIHVpbnQzMl90IG1hc2sgPSBtX2RvbUJy
ZWFrcG9pbnRzLmdldChub2RlKSAmIH5yb290Qml0OwotICAgIGlmIChtYXNrKQotICAgICAgICBt
X2RvbUJyZWFrcG9pbnRzLnNldChub2RlLCBtYXNrKTsKLSAgICBlbHNlCi0gICAgICAgIG1fZG9t
QnJlYWtwb2ludHMucmVtb3ZlKG5vZGUpOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
RE9NRGVidWdnZXI6OkRPTUJyZWFrcG9pbnRUeXBlOjpBdHRyaWJ1dGVNb2RpZmllZDoKKyAgICAg
ICAgaWYgKCFtX2RvbUF0dHJpYnV0ZU1vZGlmaWVkQnJlYWtwb2ludHMucmVtb3ZlKG5vZGUpKQor
ICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiQnJlYWtwb2ludCBmb3IgZ2l2ZW4gbm9kZSBhbmQg
Z2l2ZW4gdHlwZSBtaXNzaW5nIl9zOworICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoKHJvb3RC
aXQgJiBpbmhlcml0YWJsZURPTUJyZWFrcG9pbnRUeXBlc01hc2spICYmICEobWFzayAmIChyb290
Qml0IDw8IGRvbUJyZWFrcG9pbnREZXJpdmVkVHlwZVNoaWZ0KSkpIHsKLSAgICAgICAgZm9yIChO
b2RlKiBjaGlsZCA9IEluc3BlY3RvckRPTUFnZW50Ojppbm5lckZpcnN0Q2hpbGQobm9kZSk7IGNo
aWxkOyBjaGlsZCA9IEluc3BlY3RvckRPTUFnZW50Ojppbm5lck5leHRTaWJsaW5nKGNoaWxkKSkK
LSAgICAgICAgICAgIHVwZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhjaGlsZCwgcm9vdEJpdCwgZmFs
c2UpOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NRGVidWdnZXI6OkRPTUJyZWFr
cG9pbnRUeXBlOjpOb2RlUmVtb3ZlZDoKKyAgICAgICAgaWYgKCFtX2RvbU5vZGVSZW1vdmVkQnJl
YWtwb2ludHMucmVtb3ZlKG5vZGUpKQorICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiQnJlYWtw
b2ludCBmb3IgZ2l2ZW4gbm9kZSBhbmQgZ2l2ZW4gdHlwZSBtaXNzaW5nIl9zOworICAgICAgICBy
ZXR1cm47CiAgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKIHZvaWQgUGFn
ZURPTURlYnVnZ2VyQWdlbnQ6Om1haW5GcmFtZU5hdmlnYXRlZCgpCkBAIC0xNjYsNyArMTYxLDI3
IEBAIHZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6OmZyYW1lRG9jdW1lbnRVcGRhdGVkKEZyYW1l
JiBmcmFtZSkKICAgICBpZiAoIWZyYW1lLmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fZG9tQnJlYWtwb2ludHMuY2xlYXIoKTsKKyAgICBtX2RvbVN1YnRyZWVNb2RpZmll
ZEJyZWFrcG9pbnRzLmNsZWFyKCk7CisgICAgbV9kb21BdHRyaWJ1dGVNb2RpZmllZEJyZWFrcG9p
bnRzLmNsZWFyKCk7CisgICAgbV9kb21Ob2RlUmVtb3ZlZEJyZWFrcG9pbnRzLmNsZWFyKCk7Cit9
CisKK2NvbnN0ZXhwciBpbnQgdW5yZWxhdGVkID0gLTE7CisKK3N0YXRpYyBpbnQgY2FsY3VsYXRl
RGlzdGFuY2UoTm9kZSYgY2hpbGQsIE5vZGUmIGFuY2VzdG9yKQoreworICAgIGludCBkaXN0YW5j
ZSA9IDA7CisKKyAgICBhdXRvKiBjdXJyZW50ID0gJmNoaWxkOworICAgIHdoaWxlIChjdXJyZW50
ICE9ICZhbmNlc3RvcikgeworICAgICAgICArK2Rpc3RhbmNlOworCisgICAgICAgIGN1cnJlbnQg
PSBJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJQYXJlbnROb2RlKGN1cnJlbnQpOworICAgICAgICBp
ZiAoIWN1cnJlbnQpCisgICAgICAgICAgICByZXR1cm4gdW5yZWxhdGVkOworICAgIH0KKworICAg
IHJldHVybiBkaXN0YW5jZTsKIH0KIAogdm9pZCBQYWdlRE9NRGVidWdnZXJBZ2VudDo6d2lsbElu
c2VydERPTU5vZGUoTm9kZSYgcGFyZW50KQpAQCAtMTc0LDIxICsxODksMzEgQEAgdm9pZCBQYWdl
RE9NRGVidWdnZXJBZ2VudDo6d2lsbEluc2VydERPTU5vZGUoTm9kZSYgcGFyZW50KQogICAgIGlm
ICghbV9kZWJ1Z2dlckFnZW50LT5icmVha3BvaW50c0FjdGl2ZSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAoaGFzQnJlYWtwb2ludCgmcGFyZW50LCBTdWJ0cmVlTW9kaWZpZWQpKSB7Ci0g
ICAgICAgIFJlZjxKU09OOjpPYmplY3Q+IGV2ZW50RGF0YSA9IEpTT046Ok9iamVjdDo6Y3JlYXRl
KCk7Ci0gICAgICAgIGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQocGFyZW50LCBTdWJ0cmVlTW9kaWZp
ZWQsIHRydWUsIGV2ZW50RGF0YS5nZXQoKSk7Ci0gICAgICAgIG1fZGVidWdnZXJBZ2VudC0+YnJl
YWtQcm9ncmFtKEluc3BlY3Rvcjo6RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6
RE9NLCBXVEZNb3ZlKGV2ZW50RGF0YSkpOwotICAgIH0KLX0KKyAgICBpbnQgY2xvc2VzdERpc3Rh
bmNlID0gdW5yZWxhdGVkOworICAgIFJlZlB0cjxKU0M6OkJyZWFrcG9pbnQ+IGNsb3Nlc3RCcmVh
a3BvaW50OworICAgIE5vZGUqIGNsb3Nlc3RCcmVha3BvaW50T3duZXIgPSBudWxscHRyOwogCi12
b2lkIFBhZ2VET01EZWJ1Z2dlckFnZW50OjpkaWRJbnNlcnRET01Ob2RlKE5vZGUmIG5vZGUpCi17
Ci0gICAgaWYgKG1fZG9tQnJlYWtwb2ludHMuc2l6ZSgpKSB7Ci0gICAgICAgIHVpbnQzMl90IG1h
c2sgPSBtX2RvbUJyZWFrcG9pbnRzLmdldChJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJQYXJlbnRO
b2RlKCZub2RlKSk7Ci0gICAgICAgIHVpbnQzMl90IGluaGVyaXRhYmxlVHlwZXNNYXNrID0gKG1h
c2sgfCAobWFzayA+PiBkb21CcmVha3BvaW50RGVyaXZlZFR5cGVTaGlmdCkpICYgaW5oZXJpdGFi
bGVET01CcmVha3BvaW50VHlwZXNNYXNrOwotICAgICAgICBpZiAoaW5oZXJpdGFibGVUeXBlc01h
c2spCi0gICAgICAgICAgICB1cGRhdGVTdWJ0cmVlQnJlYWtwb2ludHMoJm5vZGUsIGluaGVyaXRh
YmxlVHlwZXNNYXNrLCB0cnVlKTsKKyAgICBmb3IgKGF1dG8gW2JyZWFrcG9pbnRPd25lciwgYnJl
YWtwb2ludF0gOiBtX2RvbVN1YnRyZWVNb2RpZmllZEJyZWFrcG9pbnRzKSB7CisgICAgICAgIGlu
dCBkaXN0YW5jZSA9IGNhbGN1bGF0ZURpc3RhbmNlKHBhcmVudCwgKmJyZWFrcG9pbnRPd25lcik7
CisgICAgICAgIGlmIChkaXN0YW5jZSA9PSB1bnJlbGF0ZWQpCisgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICBpZiAoY2xvc2VzdERpc3RhbmNlID09IHVucmVsYXRlZCB8fCBkaXN0YW5j
ZSA8IGNsb3Nlc3REaXN0YW5jZSkgeworICAgICAgICAgICAgY2xvc2VzdEJyZWFrcG9pbnQgPSBi
cmVha3BvaW50LmNvcHlSZWYoKTsKKyAgICAgICAgICAgIGNsb3Nlc3RCcmVha3BvaW50T3duZXIg
PSBicmVha3BvaW50T3duZXI7CisgICAgICAgIH0KICAgICB9CisKKyAgICBpZiAoIWNsb3Nlc3RC
cmVha3BvaW50KQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoY2xvc2VzdEJyZWFrcG9p
bnRPd25lcik7CisKKyAgICBhdXRvIHBhdXNlRGF0YSA9IGJ1aWxkUGF1c2VEYXRhRm9yRE9NQnJl
YWtwb2ludChJbnNwZWN0b3I6OlByb3RvY29sOjpET01EZWJ1Z2dlcjo6RE9NQnJlYWtwb2ludFR5
cGU6OlN1YnRyZWVNb2RpZmllZCwgKmNsb3Nlc3RCcmVha3BvaW50T3duZXIpOworICAgIHBhdXNl
RGF0YS0+c2V0Qm9vbGVhbigiaW5zZXJ0aW9uIiwgdHJ1ZSk7CisgICAgLy8gRklYTUU6IDxodHRw
czovL3dlYmtpdC5vcmcvYi8yMTM0OTk+IFdlYiBJbnNwZWN0b3I6IGFsbG93IERPTSBub2RlcyB0
byBiZSBpbnN0cnVtZW50ZWQgYXQgYW55IHBvaW50LCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhl
IG1haW4gZG9jdW1lbnQgaGFzIGFsc28gYmVlbiBpbnN0cnVtZW50ZWQKKyAgICAvLyBJbmNsdWRl
IHRoZSBuZXcgY2hpbGQgbm9kZSBJRCBzbyB0aGUgZnJvbnRlbmQgY2FuIHNob3cgdGhlIG5vZGUg
dGhhdCdzIGFib3V0IHRvIGJlIGluc2VydGVkLgorICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQ
cm9ncmFtKEluc3BlY3Rvcjo6RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RE9N
LCBXVEZNb3ZlKHBhdXNlRGF0YSksIFdURk1vdmUoY2xvc2VzdEJyZWFrcG9pbnQpKTsKIH0KIAog
dm9pZCBQYWdlRE9NRGVidWdnZXJBZ2VudDo6d2lsbFJlbW92ZURPTU5vZGUoTm9kZSYgbm9kZSkK
QEAgLTE5Niw1MSArMjIxLDgxIEBAIHZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6OndpbGxSZW1v
dmVET01Ob2RlKE5vZGUmIG5vZGUpCiAgICAgaWYgKCFtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrcG9p
bnRzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChoYXNCcmVha3BvaW50KCZu
b2RlLCBOb2RlUmVtb3ZlZCkpIHsKLSAgICAgICAgYXV0byBldmVudERhdGEgPSBKU09OOjpPYmpl
Y3Q6OmNyZWF0ZSgpOwotICAgICAgICBkZXNjcmlwdGlvbkZvckRPTUV2ZW50KG5vZGUsIE5vZGVS
ZW1vdmVkLCBmYWxzZSwgZXZlbnREYXRhLmdldCgpKTsKLSAgICAgICAgbV9kZWJ1Z2dlckFnZW50
LT5icmVha1Byb2dyYW0oSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVh
c29uOjpET00sIFdURk1vdmUoZXZlbnREYXRhKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Cisg
ICAgaW50IGNsb3Nlc3REaXN0YW5jZSA9IHVucmVsYXRlZDsKKyAgICBSZWZQdHI8SlNDOjpCcmVh
a3BvaW50PiBjbG9zZXN0QnJlYWtwb2ludDsKKyAgICBPcHRpb25hbDxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpET01EZWJ1Z2dlcjo6RE9NQnJlYWtwb2ludFR5cGU+IGNsb3Nlc3RCcmVha3BvaW50VHlw
ZTsKKyAgICBOb2RlKiBjbG9zZXN0QnJlYWtwb2ludE93bmVyID0gbnVsbHB0cjsKIAotICAgIHVp
bnQzMl90IHJvb3RCaXQgPSAxIDw8IE5vZGVSZW1vdmVkOwotICAgIHVpbnQzMl90IGRlcml2ZWRC
aXQgPSByb290Qml0IDw8IGRvbUJyZWFrcG9pbnREZXJpdmVkVHlwZVNoaWZ0OwotICAgIHVpbnQz
Ml90IG1hdGNoQml0ID0gcm9vdEJpdCB8IGRlcml2ZWRCaXQ7Ci0gICAgZm9yIChhdXRvJiBbbm9k
ZVdpdGhCcmVha3BvaW50LCBicmVha3BvaW50VHlwZXNdIDogbV9kb21CcmVha3BvaW50cykgewot
ICAgICAgICBpZiAobm9kZS5jb250YWlucyhub2RlV2l0aEJyZWFrcG9pbnQpICYmIChicmVha3Bv
aW50VHlwZXMgJiBtYXRjaEJpdCkpIHsKLSAgICAgICAgICAgIGF1dG8gZXZlbnREYXRhID0gSlNP
Tjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQo
Km5vZGVXaXRoQnJlYWtwb2ludCwgTm9kZVJlbW92ZWQsIGZhbHNlLCBldmVudERhdGEuZ2V0KCkp
OwotICAgICAgICAgICAgaWYgKGF1dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRz
LnBlcnNpc3RlbnRET01BZ2VudCgpKQotICAgICAgICAgICAgICAgIGV2ZW50RGF0YS0+c2V0SW50
ZWdlcigidGFyZ2V0Tm9kZUlkIl9zLCBkb21BZ2VudC0+cHVzaE5vZGVUb0Zyb250ZW5kKCZub2Rl
KSk7Ci0gICAgICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShJbnNwZWN0b3I6
OkRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkRPTSwgV1RGTW92ZShldmVudERh
dGEpKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICBmb3IgKGF1dG8gW2JyZWFrcG9pbnRPd25l
ciwgYnJlYWtwb2ludF0gOiBtX2RvbU5vZGVSZW1vdmVkQnJlYWtwb2ludHMpIHsKKyAgICAgICAg
aW50IGRpc3RhbmNlID0gY2FsY3VsYXRlRGlzdGFuY2UoKmJyZWFrcG9pbnRPd25lciwgbm9kZSk7
CisgICAgICAgIGlmIChkaXN0YW5jZSA9PSB1bnJlbGF0ZWQpCisgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICBpZiAoY2xvc2VzdERpc3RhbmNlID09IHVucmVsYXRlZCB8fCBkaXN0YW5j
ZSA8IGNsb3Nlc3REaXN0YW5jZSkgeworICAgICAgICAgICAgY2xvc2VzdEJyZWFrcG9pbnQgPSBi
cmVha3BvaW50LmNvcHlSZWYoKTsKKyAgICAgICAgICAgIGNsb3Nlc3RCcmVha3BvaW50VHlwZSA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTURlYnVnZ2VyOjpET01CcmVha3BvaW50VHlwZTo6Tm9k
ZVJlbW92ZWQ7CisgICAgICAgICAgICBjbG9zZXN0QnJlYWtwb2ludE93bmVyID0gYnJlYWtwb2lu
dE93bmVyOwogICAgICAgICB9CiAgICAgfQogCi0gICAgYXV0byogcGFyZW50Tm9kZSA9IEluc3Bl
Y3RvckRPTUFnZW50Ojppbm5lclBhcmVudE5vZGUoJm5vZGUpOwotICAgIGlmIChwYXJlbnROb2Rl
ICYmIGhhc0JyZWFrcG9pbnQocGFyZW50Tm9kZSwgU3VidHJlZU1vZGlmaWVkKSkgewotICAgICAg
ICBhdXRvIGV2ZW50RGF0YSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgIGRlc2Ny
aXB0aW9uRm9yRE9NRXZlbnQobm9kZSwgU3VidHJlZU1vZGlmaWVkLCBmYWxzZSwgZXZlbnREYXRh
LmdldCgpKTsKLSAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oSW5zcGVjdG9y
OjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpET00sIFdURk1vdmUoZXZlbnRE
YXRhKSk7Ci0gICAgICAgIHJldHVybjsKKyAgICBpZiAoIWNsb3Nlc3RCcmVha3BvaW50KSB7Cisg
ICAgICAgIGZvciAoYXV0byBbYnJlYWtwb2ludE93bmVyLCBicmVha3BvaW50XSA6IG1fZG9tU3Vi
dHJlZU1vZGlmaWVkQnJlYWtwb2ludHMpIHsKKyAgICAgICAgICAgIGludCBkaXN0YW5jZSA9IGNh
bGN1bGF0ZURpc3RhbmNlKG5vZGUsICpicmVha3BvaW50T3duZXIpOworICAgICAgICAgICAgaWYg
KGRpc3RhbmNlID09IHVucmVsYXRlZCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICAgICAgaWYgKGNsb3Nlc3REaXN0YW5jZSA9PSB1bnJlbGF0ZWQgfHwgZGlzdGFuY2UgPCBj
bG9zZXN0RGlzdGFuY2UpIHsKKyAgICAgICAgICAgICAgICBjbG9zZXN0QnJlYWtwb2ludCA9IGJy
ZWFrcG9pbnQuY29weVJlZigpOworICAgICAgICAgICAgICAgIGNsb3Nlc3RCcmVha3BvaW50VHlw
ZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTURlYnVnZ2VyOjpET01CcmVha3BvaW50VHlwZTo6
U3VidHJlZU1vZGlmaWVkOworICAgICAgICAgICAgICAgIGNsb3Nlc3RCcmVha3BvaW50T3duZXIg
PSBicmVha3BvaW50T3duZXI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CisKKyAg
ICBpZiAoIWNsb3Nlc3RCcmVha3BvaW50KQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQo
Y2xvc2VzdEJyZWFrcG9pbnRPd25lcik7CisKKyAgICBhdXRvIHBhdXNlRGF0YSA9IGJ1aWxkUGF1
c2VEYXRhRm9yRE9NQnJlYWtwb2ludCgqY2xvc2VzdEJyZWFrcG9pbnRUeXBlLCAqY2xvc2VzdEJy
ZWFrcG9pbnRPd25lcik7CisgICAgaWYgKGF1dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5n
QWdlbnRzLnBlcnNpc3RlbnRET01BZ2VudCgpKSB7CisgICAgICAgIGlmICgmbm9kZSAhPSBjbG9z
ZXN0QnJlYWtwb2ludE93bmVyKSB7CisgICAgICAgICAgICBpZiAoYXV0byB0YXJnZXROb2RlSWQg
PSBkb21BZ2VudC0+cHVzaE5vZGVUb0Zyb250ZW5kKCZub2RlKSkKKyAgICAgICAgICAgICAgICBw
YXVzZURhdGEtPnNldEludGVnZXIoInRhcmdldE5vZGVJZCIsIHRhcmdldE5vZGVJZCk7CisgICAg
ICAgIH0KKyAgICB9CisgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oSW5zcGVjdG9y
OjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpET00sIFdURk1vdmUocGF1c2VE
YXRhKSwgV1RGTW92ZShjbG9zZXN0QnJlYWtwb2ludCkpOwogfQogCiB2b2lkIFBhZ2VET01EZWJ1
Z2dlckFnZW50OjpkaWRSZW1vdmVET01Ob2RlKE5vZGUmIG5vZGUpCiB7Ci0gICAgaWYgKG1fZG9t
QnJlYWtwb2ludHMuc2l6ZSgpKSB7Ci0gICAgICAgIC8vIFJlbW92ZSBzdWJ0cmVlIGJyZWFrcG9p
bnRzLgotICAgICAgICBtX2RvbUJyZWFrcG9pbnRzLnJlbW92ZSgmbm9kZSk7Ci0gICAgICAgIFZl
Y3RvcjxOb2RlKj4gc3RhY2soMSwgSW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVyRmlyc3RDaGlsZCgm
bm9kZSkpOwotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBOb2RlKiBub2RlID0gc3RhY2subGFz
dCgpOwotICAgICAgICAgICAgc3RhY2sucmVtb3ZlTGFzdCgpOwotICAgICAgICAgICAgaWYgKCFu
b2RlKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgbV9kb21CcmVha3Bv
aW50cy5yZW1vdmUobm9kZSk7Ci0gICAgICAgICAgICBzdGFjay5hcHBlbmQoSW5zcGVjdG9yRE9N
QWdlbnQ6OmlubmVyRmlyc3RDaGlsZChub2RlKSk7Ci0gICAgICAgICAgICBzdGFjay5hcHBlbmQo
SW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVyTmV4dFNpYmxpbmcobm9kZSkpOwotICAgICAgICB9IHdo
aWxlICghc3RhY2suaXNFbXB0eSgpKTsKKyAgICBpZiAobV9kb21TdWJ0cmVlTW9kaWZpZWRCcmVh
a3BvaW50cy5pc0VtcHR5KCkgJiYgbV9kb21BdHRyaWJ1dGVNb2RpZmllZEJyZWFrcG9pbnRzLmlz
RW1wdHkoKSAmJiBtX2RvbU5vZGVSZW1vdmVkQnJlYWtwb2ludHMuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX2RvbVN1YnRyZWVNb2RpZmllZEJyZWFrcG9pbnRzLnJlbW92ZSgm
bm9kZSk7CisgICAgbV9kb21BdHRyaWJ1dGVNb2RpZmllZEJyZWFrcG9pbnRzLnJlbW92ZSgmbm9k
ZSk7CisgICAgbV9kb21Ob2RlUmVtb3ZlZEJyZWFrcG9pbnRzLnJlbW92ZSgmbm9kZSk7CisKKyAg
ICBhdXRvKiBjaGlsZCA9IEluc3BlY3RvckRPTUFnZW50Ojppbm5lckZpcnN0Q2hpbGQoJm5vZGUp
OworICAgIGlmICghY2hpbGQpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxOb2RlKj4g
c3RhY2soeyBjaGlsZCB9KTsKKyAgICB3aGlsZSAoIXN0YWNrLmlzRW1wdHkoKSkgeworICAgICAg
ICBjaGlsZCA9IHN0YWNrLnRha2VMYXN0KCk7CisKKyAgICAgICAgbV9kb21TdWJ0cmVlTW9kaWZp
ZWRCcmVha3BvaW50cy5yZW1vdmUoY2hpbGQpOworICAgICAgICBtX2RvbUF0dHJpYnV0ZU1vZGlm
aWVkQnJlYWtwb2ludHMucmVtb3ZlKGNoaWxkKTsKKyAgICAgICAgbV9kb21Ob2RlUmVtb3ZlZEJy
ZWFrcG9pbnRzLnJlbW92ZShjaGlsZCk7CisKKyAgICAgICAgaWYgKG1fZG9tU3VidHJlZU1vZGlm
aWVkQnJlYWtwb2ludHMuaXNFbXB0eSgpICYmIG1fZG9tQXR0cmlidXRlTW9kaWZpZWRCcmVha3Bv
aW50cy5pc0VtcHR5KCkgJiYgbV9kb21Ob2RlUmVtb3ZlZEJyZWFrcG9pbnRzLmlzRW1wdHkoKSkK
KyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGlmIChhdXRvKiBmaXJzdENoaWxkID0gSW5z
cGVjdG9yRE9NQWdlbnQ6OmlubmVyRmlyc3RDaGlsZChjaGlsZCkpCisgICAgICAgICAgICBzdGFj
ay5hcHBlbmQoZmlyc3RDaGlsZCk7CisKKyAgICAgICAgaWYgKGF1dG8qIG5leHRTaWJsaW5nID0g
SW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVyTmV4dFNpYmxpbmcoY2hpbGQpKQorICAgICAgICAgICAg
c3RhY2suYXBwZW5kKG5leHRTaWJsaW5nKTsKICAgICB9CiB9CiAKQEAgLTI0OSwxMSArMzA0LDEy
IEBAIHZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6OndpbGxNb2RpZnlET01BdHRyKEVsZW1lbnQm
IGVsZW1lbnQpCiAgICAgaWYgKCFtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrcG9pbnRzQWN0aXZlKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChoYXNCcmVha3BvaW50KCZlbGVtZW50LCBBdHRy
aWJ1dGVNb2RpZmllZCkpIHsKLSAgICAgICAgUmVmPEpTT046Ok9iamVjdD4gZXZlbnREYXRhID0g
SlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgZGVzY3JpcHRpb25Gb3JET01FdmVudChl
bGVtZW50LCBBdHRyaWJ1dGVNb2RpZmllZCwgZmFsc2UsIGV2ZW50RGF0YS5nZXQoKSk7Ci0gICAg
ICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKEluc3BlY3Rvcjo6RGVidWdnZXJGcm9u
dGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RE9NLCBXVEZNb3ZlKGV2ZW50RGF0YSkpOwotICAgIH0K
KyAgICBhdXRvIGl0ID0gbV9kb21BdHRyaWJ1dGVNb2RpZmllZEJyZWFrcG9pbnRzLmZpbmQoJmVs
ZW1lbnQpOworICAgIGlmIChpdCA9PSBtX2RvbUF0dHJpYnV0ZU1vZGlmaWVkQnJlYWtwb2ludHMu
ZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gcGF1c2VEYXRhID0gYnVpbGRQYXVz
ZURhdGFGb3JET01CcmVha3BvaW50KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTURlYnVnZ2VyOjpE
T01CcmVha3BvaW50VHlwZTo6QXR0cmlidXRlTW9kaWZpZWQsIGVsZW1lbnQpOworICAgIG1fZGVi
dWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKEluc3BlY3Rvcjo6RGVidWdnZXJGcm9udGVuZERpc3Bh
dGNoZXI6OlJlYXNvbjo6RE9NLCBXVEZNb3ZlKHBhdXNlRGF0YSksIGl0LT52YWx1ZS5jb3B5UmVm
KCkpOwogfQogCiB2b2lkIFBhZ2VET01EZWJ1Z2dlckFnZW50Ojp3aWxsRmlyZUFuaW1hdGlvbkZy
YW1lKCkKQEAgLTI4NSwxMSArMzQxLDEyIEBAIHZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6Ondp
bGxJbnZhbGlkYXRlU3R5bGVBdHRyKEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgaWYgKCFtX2RlYnVn
Z2VyQWdlbnQtPmJyZWFrcG9pbnRzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
IChoYXNCcmVha3BvaW50KCZlbGVtZW50LCBBdHRyaWJ1dGVNb2RpZmllZCkpIHsKLSAgICAgICAg
UmVmPEpTT046Ok9iamVjdD4gZXZlbnREYXRhID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAg
ICAgICAgZGVzY3JpcHRpb25Gb3JET01FdmVudChlbGVtZW50LCBBdHRyaWJ1dGVNb2RpZmllZCwg
ZmFsc2UsIGV2ZW50RGF0YS5nZXQoKSk7Ci0gICAgICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQ
cm9ncmFtKEluc3BlY3Rvcjo6RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RE9N
LCBXVEZNb3ZlKGV2ZW50RGF0YSkpOwotICAgIH0KKyAgICBhdXRvIGl0ID0gbV9kb21BdHRyaWJ1
dGVNb2RpZmllZEJyZWFrcG9pbnRzLmZpbmQoJmVsZW1lbnQpOworICAgIGlmIChpdCA9PSBtX2Rv
bUF0dHJpYnV0ZU1vZGlmaWVkQnJlYWtwb2ludHMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGF1dG8gcGF1c2VEYXRhID0gYnVpbGRQYXVzZURhdGFGb3JET01CcmVha3BvaW50KEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRPTURlYnVnZ2VyOjpET01CcmVha3BvaW50VHlwZTo6QXR0cmlidXRl
TW9kaWZpZWQsIGVsZW1lbnQpOworICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKElu
c3BlY3Rvcjo6RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RE9NLCBXVEZNb3Zl
KHBhdXNlRGF0YSksIGl0LT52YWx1ZS5jb3B5UmVmKCkpOwogfQogCiB2b2lkIFBhZ2VET01EZWJ1
Z2dlckFnZW50OjpzZXRBbmltYXRpb25GcmFtZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBSZWZQdHI8SlNDOjpCcmVha3BvaW50PiYmIGJyZWFrcG9pbnQpCkBAIC0zMDIsNjgg
KzM1OSwxOCBAQCB2b2lkIFBhZ2VET01EZWJ1Z2dlckFnZW50OjpzZXRBbmltYXRpb25GcmFtZUJy
ZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLAogICAgIG1fcGF1c2VPbkFsbEFuaW1h
dGlvbkZyYW1lc0JyZWFrcG9pbnQgPSBXVEZNb3ZlKGJyZWFrcG9pbnQpOwogfQogCi12b2lkIFBh
Z2VET01EZWJ1Z2dlckFnZW50OjpkZXNjcmlwdGlvbkZvckRPTUV2ZW50KE5vZGUmIHRhcmdldCwg
aW50IGJyZWFrcG9pbnRUeXBlLCBib29sIGluc2VydGlvbiwgSlNPTjo6T2JqZWN0JiBkZXNjcmlw
dGlvbikKK1JlZjxKU09OOjpPYmplY3Q+IFBhZ2VET01EZWJ1Z2dlckFnZW50OjpidWlsZFBhdXNl
RGF0YUZvckRPTUJyZWFrcG9pbnQoSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NRGVidWdnZXI6OkRP
TUJyZWFrcG9pbnRUeXBlIGJyZWFrcG9pbnRUeXBlLCBOb2RlJiBicmVha3BvaW50T3duZXIpCiB7
CiAgICAgQVNTRVJUKG1fZGVidWdnZXJBZ2VudC0+YnJlYWtwb2ludHNBY3RpdmUoKSk7Ci0gICAg
QVNTRVJUKGhhc0JyZWFrcG9pbnQoJnRhcmdldCwgYnJlYWtwb2ludFR5cGUpKTsKKyAgICBBU1NF
UlQobV9kb21TdWJ0cmVlTW9kaWZpZWRCcmVha3BvaW50cy5jb250YWlucygmYnJlYWtwb2ludE93
bmVyKSB8fCBtX2RvbUF0dHJpYnV0ZU1vZGlmaWVkQnJlYWtwb2ludHMuY29udGFpbnMoJmJyZWFr
cG9pbnRPd25lcikgfHwgbV9kb21Ob2RlUmVtb3ZlZEJyZWFrcG9pbnRzLmNvbnRhaW5zKCZicmVh
a3BvaW50T3duZXIpKTsKIAotICAgIGF1dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdl
bnRzLnBlcnNpc3RlbnRET01BZ2VudCgpOwotCi0gICAgTm9kZSogYnJlYWtwb2ludE93bmVyID0g
JnRhcmdldDsKLSAgICBpZiAoKDEgPDwgYnJlYWtwb2ludFR5cGUpICYgaW5oZXJpdGFibGVET01C
cmVha3BvaW50VHlwZXNNYXNrKSB7Ci0gICAgICAgIGlmIChkb21BZ2VudCkgewotICAgICAgICAg
ICAgLy8gRm9yIGluaGVyaXRhYmxlIGJyZWFrcG9pbnQgdHlwZXMsIHRhcmdldCBub2RlIGlzbid0
IGFsd2F5cyB0aGUgc2FtZSBhcyB0aGUgbm9kZSB0aGF0IG93bnMgYSBicmVha3BvaW50LgotICAg
ICAgICAgICAgLy8gVGFyZ2V0IG5vZGUgbWF5IGJlIHVua25vd24gdG8gZnJvbnRlbmQsIHNvIHdl
IG5lZWQgdG8gcHVzaCBpdCBmaXJzdC4KLSAgICAgICAgICAgIGRlc2NyaXB0aW9uLnNldEludGVn
ZXIoInRhcmdldE5vZGVJZCJfcywgZG9tQWdlbnQtPnB1c2hOb2RlVG9Gcm9udGVuZCgmdGFyZ2V0
KSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBGaW5kIGJyZWFrcG9pbnQgb3duZXIgbm9kZS4K
LSAgICAgICAgaWYgKCFpbnNlcnRpb24pCi0gICAgICAgICAgICBicmVha3BvaW50T3duZXIgPSBJ
bnNwZWN0b3JET01BZ2VudDo6aW5uZXJQYXJlbnROb2RlKCZ0YXJnZXQpOwotICAgICAgICBBU1NF
UlQoYnJlYWtwb2ludE93bmVyKTsKLSAgICAgICAgd2hpbGUgKCEobV9kb21CcmVha3BvaW50cy5n
ZXQoYnJlYWtwb2ludE93bmVyKSAmICgxIDw8IGJyZWFrcG9pbnRUeXBlKSkpIHsKLSAgICAgICAg
ICAgIE5vZGUqIHBhcmVudE5vZGUgPSBJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJQYXJlbnROb2Rl
KGJyZWFrcG9pbnRPd25lcik7Ci0gICAgICAgICAgICBpZiAoIXBhcmVudE5vZGUpCi0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBicmVha3BvaW50T3duZXIgPSBwYXJlbnROb2Rl
OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGJyZWFrcG9pbnRUeXBlID09IFN1YnRyZWVNb2Rp
ZmllZCkKLSAgICAgICAgICAgIGRlc2NyaXB0aW9uLnNldEJvb2xlYW4oImluc2VydGlvbiIsIGlu
c2VydGlvbik7CisgICAgYXV0byBwYXVzZURhdGEgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwor
ICAgIHBhdXNlRGF0YS0+c2V0U3RyaW5nKCJ0eXBlIiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5z
cGVjdG9ySGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoYnJlYWtwb2ludFR5cGUpKTsKKyAg
ICBpZiAoYXV0byogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudERP
TUFnZW50KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gYnJlYWtwb2ludE93bmVyTm9kZUlkID0gZG9t
QWdlbnQtPnB1c2hOb2RlVG9Gcm9udGVuZCgmYnJlYWtwb2ludE93bmVyKSkKKyAgICAgICAgICAg
IHBhdXNlRGF0YS0+c2V0SW50ZWdlcigibm9kZUlkIiwgYnJlYWtwb2ludE93bmVyTm9kZUlkKTsK
ICAgICB9Ci0KLSAgICBpZiAoZG9tQWdlbnQpIHsKLSAgICAgICAgaW50IGJyZWFrcG9pbnRPd25l
ck5vZGVJZCA9IGRvbUFnZW50LT5ib3VuZE5vZGVJZChicmVha3BvaW50T3duZXIpOwotICAgICAg
ICBBU1NFUlQoYnJlYWtwb2ludE93bmVyTm9kZUlkKTsKLSAgICAgICAgZGVzY3JpcHRpb24uc2V0
SW50ZWdlcigibm9kZUlkIiwgYnJlYWtwb2ludE93bmVyTm9kZUlkKTsKLSAgICB9Ci0KLSAgICBk
ZXNjcmlwdGlvbi5zZXRTdHJpbmcoInR5cGUiLCBkb21UeXBlTmFtZShicmVha3BvaW50VHlwZSkp
OwotfQotCi12b2lkIFBhZ2VET01EZWJ1Z2dlckFnZW50Ojp1cGRhdGVTdWJ0cmVlQnJlYWtwb2lu
dHMoTm9kZSogbm9kZSwgdWludDMyX3Qgcm9vdE1hc2ssIGJvb2wgc2V0KQotewotICAgIHVpbnQz
Ml90IG9sZE1hc2sgPSBtX2RvbUJyZWFrcG9pbnRzLmdldChub2RlKTsKLSAgICB1aW50MzJfdCBk
ZXJpdmVkTWFzayA9IHJvb3RNYXNrIDw8IGRvbUJyZWFrcG9pbnREZXJpdmVkVHlwZVNoaWZ0Owot
ICAgIHVpbnQzMl90IG5ld01hc2sgPSBzZXQgPyBvbGRNYXNrIHwgZGVyaXZlZE1hc2sgOiBvbGRN
YXNrICYgfmRlcml2ZWRNYXNrOwotICAgIGlmIChuZXdNYXNrKQotICAgICAgICBtX2RvbUJyZWFr
cG9pbnRzLnNldChub2RlLCBuZXdNYXNrKTsKLSAgICBlbHNlCi0gICAgICAgIG1fZG9tQnJlYWtw
b2ludHMucmVtb3ZlKG5vZGUpOwotCi0gICAgdWludDMyX3QgbmV3Um9vdE1hc2sgPSByb290TWFz
ayAmIH5uZXdNYXNrOwotICAgIGlmICghbmV3Um9vdE1hc2spCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGZvciAoTm9kZSogY2hpbGQgPSBJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJGaXJzdENoaWxk
KG5vZGUpOyBjaGlsZDsgY2hpbGQgPSBJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJOZXh0U2libGlu
ZyhjaGlsZCkpCi0gICAgICAgIHVwZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhjaGlsZCwgbmV3Um9v
dE1hc2ssIHNldCk7Ci19Ci0KLWJvb2wgUGFnZURPTURlYnVnZ2VyQWdlbnQ6Omhhc0JyZWFrcG9p
bnQoTm9kZSogbm9kZSwgaW50IHR5cGUpCi17Ci0gICAgdWludDMyX3Qgcm9vdEJpdCA9IDEgPDwg
dHlwZTsKLSAgICB1aW50MzJfdCBkZXJpdmVkQml0ID0gcm9vdEJpdCA8PCBkb21CcmVha3BvaW50
RGVyaXZlZFR5cGVTaGlmdDsKLSAgICByZXR1cm4gbV9kb21CcmVha3BvaW50cy5nZXQobm9kZSkg
JiAocm9vdEJpdCB8IGRlcml2ZWRCaXQpOworICAgIHJldHVybiBwYXVzZURhdGE7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFnZW50LmgKaW5kZXggYmE0ZWY2MDIz
ZGFiMzA4YjFhZDUxYmQ4NjI0OTBiYWI1NzBhMWEyZi4uYWQwMWM2NzdlNWQyMjI1YTA2NWNmMDEw
NDUxNTY5YjE3OTRkNjlhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFnZW50LmgKQEAgLTI3LDYgKzI3LDcg
QEAKIAogI2luY2x1ZGUgIkluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaCIKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9CcmVha3BvaW50Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5z
cGVjdG9yUHJvdG9jb2xPYmplY3RzLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC00NSwxNCArNDYsMTMgQEAgcHVibGljOgogICAgIGJvb2wgZW5h
YmxlZCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gRE9NRGVidWdnZXJCYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXIKLSAgICB2b2lkIHNldERPTUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBpbnQg
bm9kZUlkLCBjb25zdCBTdHJpbmcmIHR5cGUpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0RE9NQnJl
YWtwb2ludChFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zKSBvdmVycmlkZTsKICAgICB2b2lkIHJlbW92ZURPTUJy
ZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHR5cGUpIG92
ZXJyaWRlOwogCiAgICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uCiAgICAgdm9pZCBtYWlu
RnJhbWVOYXZpZ2F0ZWQoKSBmaW5hbDsKICAgICB2b2lkIGZyYW1lRG9jdW1lbnRVcGRhdGVkKEZy
YW1lJik7CiAgICAgdm9pZCB3aWxsSW5zZXJ0RE9NTm9kZShOb2RlJiBwYXJlbnQpOwotICAgIHZv
aWQgZGlkSW5zZXJ0RE9NTm9kZShOb2RlJik7CiAgICAgdm9pZCB3aWxsUmVtb3ZlRE9NTm9kZShO
b2RlJik7CiAgICAgdm9pZCBkaWRSZW1vdmVET01Ob2RlKE5vZGUmKTsKICAgICB2b2lkIHdpbGxN
b2RpZnlET01BdHRyKEVsZW1lbnQmKTsKQEAgLTY2LDEyICs2NiwxMSBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBzZXRBbmltYXRpb25GcmFtZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBSZWZQdHI8
SlNDOjpCcmVha3BvaW50PiYmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZGVzY3JpcHRpb25Gb3JE
T01FdmVudChOb2RlJiwgaW50IGJyZWFrcG9pbnRUeXBlLCBib29sIGluc2VydGlvbiwgSlNPTjo6
T2JqZWN0JiBkZXNjcmlwdGlvbik7Ci0gICAgdm9pZCB1cGRhdGVTdWJ0cmVlQnJlYWtwb2ludHMo
Tm9kZSosIHVpbnQzMl90IHJvb3RNYXNrLCBib29sIHNldCk7Ci0gICAgYm9vbCBjaGVja1N1YnRy
ZWVGb3JOb2RlUmVtb3ZlZChOb2RlKik7Ci0gICAgYm9vbCBoYXNCcmVha3BvaW50KE5vZGUqLCBp
bnQgdHlwZSk7CisgICAgUmVmPEpTT046Ok9iamVjdD4gYnVpbGRQYXVzZURhdGFGb3JET01CcmVh
a3BvaW50KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTURlYnVnZ2VyOjpET01CcmVha3BvaW50VHlw
ZSwgTm9kZSYgYnJlYWtwb2ludE93bmVyKTsKIAotICAgIEhhc2hNYXA8Tm9kZSosIHVpbnQzMl90
PiBtX2RvbUJyZWFrcG9pbnRzOworICAgIEhhc2hNYXA8Tm9kZSosIFJlZjxKU0M6OkJyZWFrcG9p
bnQ+PiBtX2RvbVN1YnRyZWVNb2RpZmllZEJyZWFrcG9pbnRzOworICAgIEhhc2hNYXA8Tm9kZSos
IFJlZjxKU0M6OkJyZWFrcG9pbnQ+PiBtX2RvbUF0dHJpYnV0ZU1vZGlmaWVkQnJlYWtwb2ludHM7
CisgICAgSGFzaE1hcDxOb2RlKiwgUmVmPEpTQzo6QnJlYWtwb2ludD4+IG1fZG9tTm9kZVJlbW92
ZWRCcmVha3BvaW50czsKIAogICAgIFJlZlB0cjxKU0M6OkJyZWFrcG9pbnQ+IG1fcGF1c2VPbkFs
bEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRE9NRGVidWdnZXJBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJET01EZWJ1Z2dlckFn
ZW50LmNwcAppbmRleCAxNDc2ZmJjODE5NjM1N2Q5MTJiYzgyYTNjMzU0ZTgzYTk0YTQ2MTU3Li5i
ZDVkOGE4MzRlYWU4NjMzMGZjYjk3MmM1OTJkNWY3MGE3ZTczMDRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJET01EZWJ1Z2dlckFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJE
T01EZWJ1Z2dlckFnZW50LmNwcApAQCAtMzcsNyArMzcsNyBAQCBXb3JrZXJET01EZWJ1Z2dlckFn
ZW50OjpXb3JrZXJET01EZWJ1Z2dlckFnZW50KFdvcmtlckFnZW50Q29udGV4dCYgY29udGV4dCwg
SW5zcAogCiBXb3JrZXJET01EZWJ1Z2dlckFnZW50Ojp+V29ya2VyRE9NRGVidWdnZXJBZ2VudCgp
ID0gZGVmYXVsdDsKIAotdm9pZCBXb3JrZXJET01EZWJ1Z2dlckFnZW50OjpzZXRET01CcmVha3Bv
aW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IC8qIG5vZGVJZCAqLywgY29uc3QgU3Ry
aW5nJiAvKiB0eXBlU3RyaW5nICovKQordm9pZCBXb3JrZXJET01EZWJ1Z2dlckFnZW50OjpzZXRE
T01CcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IC8qIG5vZGVJZCAqLywg
Y29uc3QgU3RyaW5nJiAvKiB0eXBlU3RyaW5nICovLCBjb25zdCBKU09OOjpPYmplY3QqIC8qIG9w
dGlvbnNQYXlsb2FkICovKQogewogICAgIGVycm9yU3RyaW5nID0gIk5vdCBzdXBwb3J0ZWQiX3M7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9X
b3JrZXJET01EZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L3dvcmtlci9Xb3JrZXJET01EZWJ1Z2dlckFnZW50LmgKaW5kZXggZGFkMThmNWMwZWM4YWEzYmM4
YjRmNzhhZGZmNGU5MDhmZGQ4M2RmYS4uODZlYjkzZjVlMTk3NTUxYmJkMjA5Njk2NTc5YzcwODk0
ZDU4YzIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3Jr
ZXIvV29ya2VyRE9NRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvd29ya2VyL1dvcmtlckRPTURlYnVnZ2VyQWdlbnQuaApAQCAtMzksNyArMzksNyBA
QCBwdWJsaWM6CiAgICAgfldvcmtlckRPTURlYnVnZ2VyQWdlbnQoKSBvdmVycmlkZTsKIAogICAg
IC8vIERPTURlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyCi0gICAgdm9pZCBzZXRET01C
cmVha3BvaW50KEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiB0eXBlKSBv
dmVycmlkZTsKKyAgICB2b2lkIHNldERPTUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBpbnQgbm9k
ZUlkLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IEpTT046Ok9iamVjdCogb3B0aW9ucykgb3Zl
cnJpZGU7CiAgICAgdm9pZCByZW1vdmVET01CcmVha3BvaW50KEVycm9yU3RyaW5nJiwgaW50IG5v
ZGVJZCwgY29uc3QgU3RyaW5nJiB0eXBlKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTURl
YnVnZ2VyTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Nv
bnRyb2xsZXJzL0RPTURlYnVnZ2VyTWFuYWdlci5qcwppbmRleCBjODg2YmYxOGJiMWJlMWFmMTY3
OTZhYzQ4YzE2MDFmYTliZTk5MWIwLi45NGFhNDhlYjBiZGM3NGNjZjg1ZmQ1ZDUyNWU1MzJhNzc0
MTUyN2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9D
b250cm9sbGVycy9ET01EZWJ1Z2dlck1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NRGVidWdnZXJNYW5hZ2VyLmpzCkBAIC0z
MSw2ICszMSw3IEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFu
YWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgICAgIHRoaXMuX2RvbUJyZWFrcG9pbnRVUkxN
YXAgPSBuZXcgTXVsdGltYXA7CiAgICAgICAgIHRoaXMuX2RvbUJyZWFrcG9pbnRGcmFtZUlkZW50
aWZpZXJNYXAgPSBuZXcgTWFwOworICAgICAgICB0aGlzLl9pZ25vcmVET01CcmVha3BvaW50RE9N
Tm9kZVdpbGxDaGFuZ2UgPSBmYWxzZTsKIAogICAgICAgICB0aGlzLl9saXN0ZW5lckJyZWFrcG9p
bnRzID0gW107CiAgICAgICAgIHRoaXMuX2FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQgPSBu
dWxsOwpAQCAtNDIsNiArNDMsMTIgQEAgV0kuRE9NRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9N
RGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuX2FsbFJlcXVl
c3RzQnJlYWtwb2ludCA9IG51bGw7CiAKICAgICAgICAgV0kuRE9NQnJlYWtwb2ludC5hZGRFdmVu
dExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZURpZENoYW5nZSwgdGhp
cy5faGFuZGxlRE9NQnJlYWtwb2ludERpc2FibGVkU3RhdGVDaGFuZ2VkLCB0aGlzKTsKKyAgICAg
ICAgV0kuRE9NQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQu
Q29uZGl0aW9uRGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVET01CcmVha3BvaW50RWRpdGFibGVQcm9w
ZXJ0eUNoYW5nZWQsIHRoaXMpOworICAgICAgICBXSS5ET01CcmVha3BvaW50LmFkZEV2ZW50TGlz
dGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5JZ25vcmVDb3VudERpZENoYW5nZSwgdGhpcy5faGFu
ZGxlRE9NQnJlYWtwb2ludEVkaXRhYmxlUHJvcGVydHlDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAg
V0kuRE9NQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQXV0
b0NvbnRpbnVlRGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVET01CcmVha3BvaW50RWRpdGFibGVQcm9w
ZXJ0eUNoYW5nZWQsIHRoaXMpOworICAgICAgICBXSS5ET01CcmVha3BvaW50LmFkZEV2ZW50TGlz
dGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5BY3Rpb25zRGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVE
T01CcmVha3BvaW50QWN0aW9uc0NoYW5nZWQsIHRoaXMpOworICAgICAgICBXSS5ET01CcmVha3Bv
aW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NQnJlYWtwb2ludC5FdmVudC5ET01Ob2RlV2lsbENo
YW5nZSwgdGhpcy5faGFuZGxlRE9NQnJlYWtwb2ludERPTU5vZGVXaWxsQ2hhbmdlLCB0aGlzKTsK
KyAgICAgICAgV0kuRE9NQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkRPTUJyZWFrcG9p
bnQuRXZlbnQuRE9NTm9kZURpZENoYW5nZSwgdGhpcy5faGFuZGxlRE9NQnJlYWtwb2ludERPTU5v
ZGVEaWRDaGFuZ2UsIHRoaXMpOwogCiAgICAgICAgIFdJLkV2ZW50QnJlYWtwb2ludC5hZGRFdmVu
dExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZURpZENoYW5nZSwgdGhp
cy5faGFuZGxlRXZlbnRCcmVha3BvaW50RGlzYWJsZWRTdGF0ZUNoYW5nZWQsIHRoaXMpOwogICAg
ICAgICBXSS5FdmVudEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2
ZW50LkNvbmRpdGlvbkRpZENoYW5nZSwgdGhpcy5faGFuZGxlRXZlbnRCcmVha3BvaW50RWRpdGFi
bGVQcm9wZXJ0eUNoYW5nZWQsIHRoaXMpOwpAQCAtMjc5LDIwICsyODYsMjkgQEAgV0kuRE9NRGVi
dWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0
CiAKICAgICBhZGRET01CcmVha3BvaW50KGJyZWFrcG9pbnQpCiAgICAgewotICAgICAgICBjb25z
b2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuRE9NQnJlYWtwb2ludCk7CisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5ET01CcmVha3BvaW50
LCBicmVha3BvaW50KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludC51cmwsIGJy
ZWFrcG9pbnQpOwogICAgICAgICBpZiAoIWJyZWFrcG9pbnQgfHwgIWJyZWFrcG9pbnQudXJsKQog
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChicmVha3BvaW50LnNwZWNpYWwpIHsK
LSAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTURlYnVnZ2Vy
TWFuYWdlci5FdmVudC5ET01CcmVha3BvaW50QWRkZWQsIHticmVha3BvaW50fSk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgY29uc29sZS5hc3NlcnQoIWJyZWFrcG9p
bnQuc3BlY2lhbCwgYnJlYWtwb2ludCk7CiAKICAgICAgICAgdGhpcy5fZG9tQnJlYWtwb2ludFVS
TE1hcC5hZGQoYnJlYWtwb2ludC51cmwsIGJyZWFrcG9pbnQpOwogCi0gICAgICAgIGlmIChicmVh
a3BvaW50LmRvbU5vZGVJZGVudGlmaWVyKQorICAgICAgICBpZiAoYnJlYWtwb2ludC5kb21Ob2Rl
SWRlbnRpZmllcikgewogICAgICAgICAgICAgdGhpcy5fcmVzb2x2ZURPTUJyZWFrcG9pbnQoYnJl
YWtwb2ludCwgYnJlYWtwb2ludC5kb21Ob2RlSWRlbnRpZmllcik7CiAKKyAgICAgICAgICAgIGlm
ICghYnJlYWtwb2ludC5kaXNhYmxlZCkgeworICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBn
ZXQgdGhlIHRhcmdldCBhc3NvY2lhdGVkIHdpdGggdGhlIG5vZGVJZGVudGlmaWVyIG9mIHRoaXMg
YnJlYWtwb2ludC4KKyAgICAgICAgICAgICAgICBsZXQgdGFyZ2V0ID0gV0kuYXNzdW1pbmdNYWlu
VGFyZ2V0KCk7CisgICAgICAgICAgICAgICAgaWYgKHRhcmdldCkKKyAgICAgICAgICAgICAgICAg
ICAgdGhpcy5fc2V0RE9NQnJlYWtwb2ludChicmVha3BvaW50LCB0YXJnZXQpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkUHJvYmVzRm9yQnJlYWtw
b2ludChicmVha3BvaW50KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0aGlzLl9zcGVj
dWxhdGl2ZWx5UmVzb2x2ZURPTUJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CisKICAgICAgICAgdGhp
cy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkRP
TUJyZWFrcG9pbnRBZGRlZCwge2JyZWFrcG9pbnR9KTsKIAogICAgICAgICBpZiAoIXRoaXMuX3Jl
c3RvcmluZ0JyZWFrcG9pbnRzKQpAQCAtMzAxLDMwICszMTcsMzkgQEAgV0kuRE9NRGVidWdnZXJN
YW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAg
ICByZW1vdmVET01CcmVha3BvaW50KGJyZWFrcG9pbnQpCiAgICAgewotICAgICAgICBjb25zb2xl
LmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuRE9NQnJlYWtwb2ludCk7Ci0gICAgICAg
IGlmICghYnJlYWtwb2ludCkKKyAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0
YW5jZW9mIFdJLkRPTUJyZWFrcG9pbnQsIGJyZWFrcG9pbnQpOworICAgICAgICBjb25zb2xlLmFz
c2VydChicmVha3BvaW50LnVybCwgYnJlYWtwb2ludCk7CisgICAgICAgIGlmICghYnJlYWtwb2lu
dCB8fCAhYnJlYWtwb2ludC51cmwpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYg
KGJyZWFrcG9pbnQuc3BlY2lhbCkgewotICAgICAgICAgICAgYnJlYWtwb2ludC5kaXNhYmxlZCA9
IHRydWU7Ci0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01E
ZWJ1Z2dlck1hbmFnZXIuRXZlbnQuRE9NQnJlYWtwb2ludFJlbW92ZWQsIHticmVha3BvaW50fSk7
Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFicmVha3BvaW50
LnNwZWNpYWwsIGJyZWFrcG9pbnQpOworCisgICAgICAgIC8vIERpc2FibGUgdGhlIGJyZWFrcG9p
bnQgZmlyc3QsIHNvIHJlbW92aW5nIGFjdGlvbnMgZG9lc24ndCByZS1hZGQgdGhlIGJyZWFrcG9p
bnQuCisgICAgICAgIGJyZWFrcG9pbnQuZGlzYWJsZWQgPSB0cnVlOworICAgICAgICBicmVha3Bv
aW50LmNsZWFyQWN0aW9ucygpOworCisgICAgICAgIGlmIChicmVha3BvaW50LmRvbU5vZGVJZGVu
dGlmaWVyKSB7CisgICAgICAgICAgICBsZXQgbm9kZSA9IFdJLmRvbU1hbmFnZXIubm9kZUZvcklk
KGJyZWFrcG9pbnQuZG9tTm9kZUlkZW50aWZpZXIpOworICAgICAgICAgICAgY29uc29sZS5hc3Nl
cnQobm9kZSwgIk1pc3NpbmcgRE9NIG5vZGUgZm9yIGJyZWFrcG9pbnQuIiwgYnJlYWtwb2ludCk7
CisgICAgICAgICAgICBpZiAobm9kZT8uZnJhbWUpIHsKKyAgICAgICAgICAgICAgICBsZXQgZnJh
bWVJZGVudGlmaWVyID0gbm9kZS5mcmFtZS5pZDsKKyAgICAgICAgICAgICAgICBsZXQgZG9tQnJl
YWtwb2ludE5vZGVJZGVudGlmaWVyTWFwID0gdGhpcy5fZG9tQnJlYWtwb2ludEZyYW1lSWRlbnRp
Zmllck1hcC5nZXQoZnJhbWVJZGVudGlmaWVyKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmFz
c2VydChkb21CcmVha3BvaW50Tm9kZUlkZW50aWZpZXJNYXAsICJNaXNzaW5nIERPTSBicmVha3Bv
aW50cyBmb3Igbm9kZSBwYXJlbnQgZnJhbWUuIiwgbm9kZSk7CisgICAgICAgICAgICAgICAgaWYg
KGRvbUJyZWFrcG9pbnROb2RlSWRlbnRpZmllck1hcCkgeworICAgICAgICAgICAgICAgICAgICBk
b21CcmVha3BvaW50Tm9kZUlkZW50aWZpZXJNYXAuZGVsZXRlKGJyZWFrcG9pbnQuZG9tTm9kZUlk
ZW50aWZpZXIsIGJyZWFrcG9pbnQpOworCisgICAgICAgICAgICAgICAgICAgIGlmICghZG9tQnJl
YWtwb2ludE5vZGVJZGVudGlmaWVyTWFwLnNpemUpCisgICAgICAgICAgICAgICAgICAgICAgICB0
aGlzLl9kb21CcmVha3BvaW50RnJhbWVJZGVudGlmaWVyTWFwLmRlbGV0ZShmcmFtZUlkZW50aWZp
ZXIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAg
ICAgIHRoaXMuX2RldGFjaERPTUJyZWFrcG9pbnQoYnJlYWtwb2ludCk7Ci0KICAgICAgICAgdGhp
cy5fZG9tQnJlYWtwb2ludFVSTE1hcC5kZWxldGUoYnJlYWtwb2ludC51cmwpOwogCi0gICAgICAg
IGlmICghYnJlYWtwb2ludC5kaXNhYmxlZCkgewotICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIGdl
dCB0aGUgdGFyZ2V0IGFzc29jaWF0ZWQgd2l0aCB0aGUgbm9kZUlkZW50aWZpZXIgb2YgdGhpcyBi
cmVha3BvaW50LgotICAgICAgICAgICAgbGV0IHRhcmdldCA9IFdJLmFzc3VtaW5nTWFpblRhcmdl
dCgpOwotICAgICAgICAgICAgdGFyZ2V0LkRPTURlYnVnZ2VyQWdlbnQucmVtb3ZlRE9NQnJlYWtw
b2ludChicmVha3BvaW50LmRvbU5vZGVJZGVudGlmaWVyLCBicmVha3BvaW50LnR5cGUpOwotICAg
ICAgICB9CisgICAgICAgIGJyZWFrcG9pbnQuZG9tTm9kZUlkZW50aWZpZXIgPSBudWxsOwogCiAg
ICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTURlYnVnZ2VyTWFuYWdl
ci5FdmVudC5ET01CcmVha3BvaW50UmVtb3ZlZCwge2JyZWFrcG9pbnR9KTsKIAotICAgICAgICBi
cmVha3BvaW50LmRvbU5vZGVJZGVudGlmaWVyID0gbnVsbDsKLQogICAgICAgICBpZiAoIXRoaXMu
X3Jlc3RvcmluZ0JyZWFrcG9pbnRzKQogICAgICAgICAgICAgV0kub2JqZWN0U3RvcmVzLmRvbUJy
ZWFrcG9pbnRzLmRlbGV0ZU9iamVjdChicmVha3BvaW50KTsKICAgICB9CkBAIC01MDksMzYgKzUz
NCwyMCBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIg
ZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9kZXRhY2hET01CcmVh
a3BvaW50KGJyZWFrcG9pbnQpCi0gICAgewotICAgICAgICBsZXQgbm9kZUlkZW50aWZpZXIgPSBi
cmVha3BvaW50LmRvbU5vZGVJZGVudGlmaWVyOwotICAgICAgICBsZXQgbm9kZSA9IFdJLmRvbU1h
bmFnZXIubm9kZUZvcklkKG5vZGVJZGVudGlmaWVyKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQo
bm9kZSwgIk1pc3NpbmcgRE9NIG5vZGUgZm9yIGJyZWFrcG9pbnQuIiwgYnJlYWtwb2ludCk7Ci0g
ICAgICAgIGlmICghbm9kZSB8fCAhbm9kZS5mcmFtZSkKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBsZXQgZnJhbWVJZGVudGlmaWVyID0gbm9kZS5mcmFtZS5pZDsKLSAgICAgICAgbGV0
IGRvbUJyZWFrcG9pbnROb2RlSWRlbnRpZmllck1hcCA9IHRoaXMuX2RvbUJyZWFrcG9pbnRGcmFt
ZUlkZW50aWZpZXJNYXAuZ2V0KGZyYW1lSWRlbnRpZmllcik7Ci0gICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KGRvbUJyZWFrcG9pbnROb2RlSWRlbnRpZmllck1hcCwgIk1pc3NpbmcgRE9NIGJyZWFrcG9p
bnRzIGZvciBub2RlIHBhcmVudCBmcmFtZS4iLCBub2RlKTsKLSAgICAgICAgaWYgKCFkb21CcmVh
a3BvaW50Tm9kZUlkZW50aWZpZXJNYXApCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
ZG9tQnJlYWtwb2ludE5vZGVJZGVudGlmaWVyTWFwLmRlbGV0ZShub2RlSWRlbnRpZmllciwgYnJl
YWtwb2ludCk7Ci0KLSAgICAgICAgaWYgKCFkb21CcmVha3BvaW50Tm9kZUlkZW50aWZpZXJNYXAu
c2l6ZSkKLSAgICAgICAgICAgIHRoaXMuX2RvbUJyZWFrcG9pbnRGcmFtZUlkZW50aWZpZXJNYXAu
ZGVsZXRlKGZyYW1lSWRlbnRpZmllcik7Ci0gICAgfQotCi0gICAgX2RldGFjaEJyZWFrcG9pbnRz
Rm9yRnJhbWUoZnJhbWUpCisgICAgX2RldGFjaERPTUJyZWFrcG9pbnRzRm9yRnJhbWUoZnJhbWUp
CiAgICAgewogICAgICAgICBsZXQgZG9tQnJlYWtwb2ludE5vZGVJZGVudGlmaWVyTWFwID0gdGhp
cy5fZG9tQnJlYWtwb2ludEZyYW1lSWRlbnRpZmllck1hcC5nZXQoZnJhbWUuaWQpOwotICAgICAg
ICBpZiAoIWRvbUJyZWFrcG9pbnROb2RlSWRlbnRpZmllck1hcCkKLSAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgaWYgKGRvbUJyZWFrcG9pbnROb2RlSWRlbnRpZmllck1hcCkgeworICAgICAg
ICAgICAgdGhpcy5fZG9tQnJlYWtwb2ludEZyYW1lSWRlbnRpZmllck1hcC5kZWxldGUoZnJhbWUu
aWQpOwogCi0gICAgICAgIHRoaXMuX2RvbUJyZWFrcG9pbnRGcmFtZUlkZW50aWZpZXJNYXAuZGVs
ZXRlKGZyYW1lLmlkKTsKKyAgICAgICAgICAgIHRoaXMuX2lnbm9yZURPTUJyZWFrcG9pbnRET01O
b2RlV2lsbENoYW5nZSA9IHRydWU7CisgICAgICAgICAgICBmb3IgKGxldCBicmVha3BvaW50IG9m
IGRvbUJyZWFrcG9pbnROb2RlSWRlbnRpZmllck1hcC52YWx1ZXMoKSkKKyAgICAgICAgICAgICAg
ICBicmVha3BvaW50LmRvbU5vZGVJZGVudGlmaWVyID0gbnVsbDsKKyAgICAgICAgICAgIHRoaXMu
X2lnbm9yZURPTUJyZWFrcG9pbnRET01Ob2RlV2lsbENoYW5nZSA9IGZhbHNlOworICAgICAgICB9
CiAKLSAgICAgICAgZm9yIChsZXQgYnJlYWtwb2ludCBvZiBkb21CcmVha3BvaW50Tm9kZUlkZW50
aWZpZXJNYXAudmFsdWVzKCkpCi0gICAgICAgICAgICBicmVha3BvaW50LmRvbU5vZGVJZGVudGlm
aWVyID0gbnVsbDsKKyAgICAgICAgZm9yIChsZXQgY2hpbGRGcmFtZSBvZiBmcmFtZS5jaGlsZEZy
YW1lQ29sbGVjdGlvbikKKyAgICAgICAgICAgIHRoaXMuX2RldGFjaERPTUJyZWFrcG9pbnRzRm9y
RnJhbWUoY2hpbGRGcmFtZSk7CiAgICAgfQogCiAgICAgX3NwZWN1bGF0aXZlbHlSZXNvbHZlRE9N
QnJlYWtwb2ludHNGb3JVUkwodXJsKQpAQCAtNTQ3LDI3ICs1NTYsMzEgQEAgV0kuRE9NRGVidWdn
ZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAg
ICAgICAgIGlmICghZG9tQnJlYWtwb2ludHMpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgZm9yIChsZXQgYnJlYWtwb2ludCBvZiBkb21CcmVha3BvaW50cykgewotICAgICAgICAgICAg
aWYgKGJyZWFrcG9pbnQuZG9tTm9kZUlkZW50aWZpZXIpCi0gICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIGZvciAobGV0IGJyZWFrcG9pbnQgb2YgZG9tQnJlYWtwb2ludHMpCisgICAg
ICAgICAgICB0aGlzLl9zcGVjdWxhdGl2ZWx5UmVzb2x2ZURPTUJyZWFrcG9pbnQoYnJlYWtwb2lu
dCk7CisgICAgfQogCi0gICAgICAgICAgICBXSS5kb21NYW5hZ2VyLnB1c2hOb2RlQnlQYXRoVG9G
cm9udGVuZChicmVha3BvaW50LnBhdGgsIChub2RlSWRlbnRpZmllcikgPT4gewotICAgICAgICAg
ICAgICAgIGlmIChicmVha3BvaW50LmRvbU5vZGVJZGVudGlmaWVyKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIC8vIFRoaXMgYnJlYWtwb2ludCBtYXkgaGF2ZSBiZWVuIHJlc29sdmVkIGJ5IGEgbm9k
ZSBiZWluZyBpbnNlcnRlZCBiZWZvcmUgdGhpcwotICAgICAgICAgICAgICAgICAgICAvLyBjYWxs
YmFjayBpcyBpbnZva2VkLiAgSWYgc28sIHRoZSBgbm9kZUlkZW50aWZpZXJgIHNob3VsZCBtYXRj
aCwgc28gZG9uJ3QgdHJ5Ci0gICAgICAgICAgICAgICAgICAgIC8vIHRvIHJlc29sdmUgaXQgYWdh
aW4gYXMgaXQgd291bGQndmUgYWxyZWFkeSBiZWVuIHJlc29sdmVkLgotICAgICAgICAgICAgICAg
ICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50LmRvbU5vZGVJZGVudGlmaWVyID09PSBub2Rl
SWRlbnRpZmllcik7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAg
ICB9CisgICAgX3NwZWN1bGF0aXZlbHlSZXNvbHZlRE9NQnJlYWtwb2ludChicmVha3BvaW50KQor
ICAgIHsKKyAgICAgICAgaWYgKGJyZWFrcG9pbnQuZG9tTm9kZUlkZW50aWZpZXIpCisgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgICAgICAgICBpZiAoIW5vZGVJZGVudGlmaWVyKQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIFdJLmRvbU1hbmFnZXIucHVzaE5vZGVC
eVBhdGhUb0Zyb250ZW5kKGJyZWFrcG9pbnQucGF0aCwgKG5vZGVJZGVudGlmaWVyKSA9PiB7Cisg
ICAgICAgICAgICBpZiAoIW5vZGVJZGVudGlmaWVyKQorICAgICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICAgICAgICAgIHRoaXMuX3Jlc3RvcmluZ0JyZWFrcG9pbnRzID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICB0aGlzLl9yZXNvbHZlRE9NQnJlYWtwb2ludChicmVha3BvaW50LCBub2Rl
SWRlbnRpZmllcik7Ci0gICAgICAgICAgICAgICAgdGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMg
PSBmYWxzZTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9CisgICAgICAgICAgICBpZiAoYnJl
YWtwb2ludC5kb21Ob2RlSWRlbnRpZmllcikgeworICAgICAgICAgICAgICAgIC8vIFRoaXMgYnJl
YWtwb2ludCBtYXkgaGF2ZSBiZWVuIHJlc29sdmVkIGJ5IGEgbm9kZSBiZWluZyBpbnNlcnRlZCBi
ZWZvcmUgdGhpcworICAgICAgICAgICAgICAgIC8vIGNhbGxiYWNrIGlzIGludm9rZWQuICBJZiBz
bywgdGhlIGBub2RlSWRlbnRpZmllcmAgc2hvdWxkIG1hdGNoLCBzbyBkb24ndCB0cnkKKyAgICAg
ICAgICAgICAgICAvLyB0byByZXNvbHZlIGl0IGFnYWluIGFzIGl0IHdvdWxkJ3ZlIGFscmVhZHkg
YmVlbiByZXNvbHZlZC4KKyAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50
LmRvbU5vZGVJZGVudGlmaWVyID09PSBub2RlSWRlbnRpZmllcik7CisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0aGlzLl9yZXN0b3JpbmdCcmVh
a3BvaW50cyA9IHRydWU7CisgICAgICAgICAgICB0aGlzLl9yZXNvbHZlRE9NQnJlYWtwb2ludChi
cmVha3BvaW50LCBub2RlSWRlbnRpZmllcik7CisgICAgICAgICAgICB0aGlzLl9yZXN0b3JpbmdC
cmVha3BvaW50cyA9IGZhbHNlOworICAgICAgICB9KTsKICAgICB9CiAKICAgICBfcmVzb2x2ZURP
TUJyZWFrcG9pbnQoYnJlYWtwb2ludCwgbm9kZUlkZW50aWZpZXIpCkBAIC01ODcsMzUgKzYwMCwz
OCBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0
ZW5kcyBXSS5PYmplY3QKICAgICAgICAgZG9tQnJlYWtwb2ludE5vZGVJZGVudGlmaWVyTWFwLmFk
ZChub2RlSWRlbnRpZmllciwgYnJlYWtwb2ludCk7CiAKICAgICAgICAgYnJlYWtwb2ludC5kb21O
b2RlSWRlbnRpZmllciA9IG5vZGVJZGVudGlmaWVyOwotCi0gICAgICAgIGlmICghYnJlYWtwb2lu
dC5kaXNhYmxlZCkgewotICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIGdldCB0aGUgdGFyZ2V0IGFz
c29jaWF0ZWQgd2l0aCB0aGUgbm9kZUlkZW50aWZpZXIgb2YgdGhpcyBicmVha3BvaW50LgotICAg
ICAgICAgICAgbGV0IHRhcmdldCA9IFdJLmFzc3VtaW5nTWFpblRhcmdldCgpOwotICAgICAgICAg
ICAgaWYgKHRhcmdldCkKLSAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVET01CcmVha3BvaW50
KGJyZWFrcG9pbnQsIHRhcmdldCk7Ci0gICAgICAgIH0KICAgICB9CiAKLSAgICBfdXBkYXRlRE9N
QnJlYWtwb2ludChicmVha3BvaW50LCB0YXJnZXQpCisgICAgX3NldERPTUJyZWFrcG9pbnQoYnJl
YWtwb2ludCwgdGFyZ2V0KQogICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGFyZ2V0LnR5
cGUgIT09IFdJLlRhcmdldFR5cGUuV29ya2VyLCAiV29ya2VyIHRhcmdldHMgZG8gbm90IHN1cHBv
cnQgRE9NIGJyZWFrcG9pbnRzIik7Ci0gICAgICAgIGlmICh0YXJnZXQudHlwZSA9PT0gV0kuVGFy
Z2V0VHlwZS5Xb3JrZXIpCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFicmVha3BvaW50LmRpc2Fi
bGVkLCBicmVha3BvaW50KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludC5kb21O
b2RlSWRlbnRpZmllciwgYnJlYWtwb2ludCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRhcmdl
dC50eXBlICE9PSBXSS5UYXJnZXRUeXBlLldvcmtlciwgIldvcmtlciB0YXJnZXRzIGRvIG5vdCBz
dXBwb3J0IERPTSBicmVha3BvaW50cyIsIHRhcmdldCk7CisKKyAgICAgICAgLy8gQ09NUEFUSUJJ
TElUWSAoaU9TIDEwLjMpOiBET01EZWJ1Z2dlci5zZXRET01CcmVha3BvaW50IGRpZCBub3QgZXhp
c3QgeWV0LgorICAgICAgICBpZiAoIXRhcmdldC5oYXNDb21tYW5kKCJET01EZWJ1Z2dlci5zZXRE
T01CcmVha3BvaW50IikpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKCF0YXJn
ZXQuaGFzQ29tbWFuZCgiRE9NRGVidWdnZXIuc2V0RE9NQnJlYWtwb2ludCIpIHx8ICF0YXJnZXQu
aGFzQ29tbWFuZCgiRE9NRGVidWdnZXIucmVtb3ZlRE9NQnJlYWtwb2ludCIpKQorICAgICAgICBp
ZiAoIXRoaXMuX3Jlc3RvcmluZ0JyZWFrcG9pbnRzICYmICFXSS5kZWJ1Z2dlck1hbmFnZXIuYnJl
YWtwb2ludHNEaXNhYmxlZFRlbXBvcmFyaWx5KQorICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5h
Z2VyLmJyZWFrcG9pbnRzRW5hYmxlZCA9IHRydWU7CisKKyAgICAgICAgdGFyZ2V0LkRPTURlYnVn
Z2VyQWdlbnQuc2V0RE9NQnJlYWtwb2ludC5pbnZva2UoeworICAgICAgICAgICAgbm9kZUlkOiBi
cmVha3BvaW50LmRvbU5vZGVJZGVudGlmaWVyLAorICAgICAgICAgICAgdHlwZTogYnJlYWtwb2lu
dC50eXBlLAorICAgICAgICAgICAgb3B0aW9uczogYnJlYWtwb2ludC5vcHRpb25zVG9Qcm90b2Nv
bCgpLAorICAgICAgICB9KTsKKyAgICB9CisKKyAgICBfcmVtb3ZlRE9NQnJlYWtwb2ludChicmVh
a3BvaW50LCB0YXJnZXQpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50
LmRvbU5vZGVJZGVudGlmaWVyLCBicmVha3BvaW50KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQo
dGFyZ2V0LnR5cGUgIT09IFdJLlRhcmdldFR5cGUuV29ya2VyLCAiV29ya2VyIHRhcmdldHMgZG8g
bm90IHN1cHBvcnQgRE9NIGJyZWFrcG9pbnRzIiwgdGFyZ2V0KTsKKworICAgICAgICAvLyBDT01Q
QVRJQklMSVRZIChpT1MgMTAuMyk6IERPTURlYnVnZ2VyLnJlbW92ZURPTUJyZWFrcG9pbnQgZGlk
IG5vdCBleGlzdCB5ZXQuCisgICAgICAgIGlmICghdGFyZ2V0Lmhhc0NvbW1hbmQoIkRPTURlYnVn
Z2VyLnJlbW92ZURPTUJyZWFrcG9pbnQiKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICBpZiAoIWJyZWFrcG9pbnQuZG9tTm9kZUlkZW50aWZpZXIpCi0gICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgaWYgKGJyZWFrcG9pbnQuZGlzYWJsZWQpCi0gICAgICAgICAgICB0YXJnZXQu
RE9NRGVidWdnZXJBZ2VudC5yZW1vdmVET01CcmVha3BvaW50KGJyZWFrcG9pbnQuZG9tTm9kZUlk
ZW50aWZpZXIsIGJyZWFrcG9pbnQudHlwZSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAg
aWYgKCF0aGlzLl9yZXN0b3JpbmdCcmVha3BvaW50cyAmJiAhV0kuZGVidWdnZXJNYW5hZ2VyLmJy
ZWFrcG9pbnRzRGlzYWJsZWRUZW1wb3JhcmlseSkKLSAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dl
ck1hbmFnZXIuYnJlYWtwb2ludHNFbmFibGVkID0gdHJ1ZTsKLQotICAgICAgICAgICAgdGFyZ2V0
LkRPTURlYnVnZ2VyQWdlbnQuc2V0RE9NQnJlYWtwb2ludChicmVha3BvaW50LmRvbU5vZGVJZGVu
dGlmaWVyLCBicmVha3BvaW50LnR5cGUpOwotICAgICAgICB9CisgICAgICAgIHRhcmdldC5ET01E
ZWJ1Z2dlckFnZW50LnJlbW92ZURPTUJyZWFrcG9pbnQoYnJlYWtwb2ludC5kb21Ob2RlSWRlbnRp
ZmllciwgYnJlYWtwb2ludC50eXBlKTsKICAgICB9CiAKICAgICBfY29tbWFuZEFyZ3VtZW50c0Zv
ckV2ZW50QnJlYWtwb2ludChicmVha3BvaW50KQpAQCAtNzcyLDEyICs3ODgsOTQgQEAgV0kuRE9N
RGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2Jq
ZWN0CiAgICAgX2hhbmRsZURPTUJyZWFrcG9pbnREaXNhYmxlZFN0YXRlQ2hhbmdlZChldmVudCkK
ICAgICB7CiAgICAgICAgIGxldCBicmVha3BvaW50ID0gZXZlbnQudGFyZ2V0OwotICAgICAgICBs
ZXQgdGFyZ2V0ID0gV0kuYXNzdW1pbmdNYWluVGFyZ2V0KCk7Ci0gICAgICAgIGlmICh0YXJnZXQp
Ci0gICAgICAgICAgICB0aGlzLl91cGRhdGVET01CcmVha3BvaW50KGJyZWFrcG9pbnQsIHRhcmdl
dCk7CiAKICAgICAgICAgaWYgKCF0aGlzLl9yZXN0b3JpbmdCcmVha3BvaW50cykKICAgICAgICAg
ICAgIFdJLm9iamVjdFN0b3Jlcy5kb21CcmVha3BvaW50cy5wdXRPYmplY3QoYnJlYWtwb2ludCk7
CisKKyAgICAgICAgaWYgKCFicmVha3BvaW50LmRvbU5vZGVJZGVudGlmaWVyKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIC8vIFdlIHNob3VsZCBnZXQgdGhlIHRhcmdldCBhc3NvY2lh
dGVkIHdpdGggdGhlIG5vZGVJZGVudGlmaWVyIG9mIHRoaXMgYnJlYWtwb2ludC4KKyAgICAgICAg
bGV0IHRhcmdldCA9IFdJLmFzc3VtaW5nTWFpblRhcmdldCgpOworICAgICAgICBpZiAodGFyZ2V0
KSB7CisgICAgICAgICAgICBpZiAoYnJlYWtwb2ludC5kaXNhYmxlZCkKKyAgICAgICAgICAgICAg
ICB0aGlzLl9yZW1vdmVET01CcmVha3BvaW50KGJyZWFrcG9pbnQsIHRhcmdldCk7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGhpcy5fc2V0RE9NQnJlYWtwb2ludChicmVha3Bv
aW50LCB0YXJnZXQpOworICAgICAgICB9CisgICAgfQorCisgICAgX2hhbmRsZURPTUJyZWFrcG9p
bnRFZGl0YWJsZVByb3BlcnR5Q2hhbmdlZChldmVudCkKKyAgICB7CisgICAgICAgIGxldCBicmVh
a3BvaW50ID0gZXZlbnQudGFyZ2V0OworCisgICAgICAgIGlmICghdGhpcy5fcmVzdG9yaW5nQnJl
YWtwb2ludHMpCisgICAgICAgICAgICBXSS5vYmplY3RTdG9yZXMuZG9tQnJlYWtwb2ludHMucHV0
T2JqZWN0KGJyZWFrcG9pbnQpOworCisgICAgICAgIGlmICghYnJlYWtwb2ludC5kb21Ob2RlSWRl
bnRpZmllcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoYnJlYWtwb2ludC5k
aXNhYmxlZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9yZXN0b3JpbmdC
cmVha3BvaW50cyA9IHRydWU7CisgICAgICAgIC8vIFdlIHNob3VsZCBnZXQgdGhlIHRhcmdldCBh
c3NvY2lhdGVkIHdpdGggdGhlIG5vZGVJZGVudGlmaWVyIG9mIHRoaXMgYnJlYWtwb2ludC4KKyAg
ICAgICAgbGV0IHRhcmdldCA9IFdJLmFzc3VtaW5nTWFpblRhcmdldCgpOworICAgICAgICBpZiAo
dGFyZ2V0KSB7CisgICAgICAgICAgICAvLyBDbGVhciB0aGUgb2xkIGJyZWFrcG9pbnQgZnJvbSB0
aGUgYmFja2VuZCBiZWZvcmUgc2V0dGluZyB0aGUgbmV3IG9uZS4KKyAgICAgICAgICAgIHRoaXMu
X3JlbW92ZURPTUJyZWFrcG9pbnQoYnJlYWtwb2ludCwgdGFyZ2V0KTsKKyAgICAgICAgICAgIHRo
aXMuX3NldERPTUJyZWFrcG9pbnQoYnJlYWtwb2ludCwgdGFyZ2V0KTsKKyAgICAgICAgfQorICAg
ICAgICB0aGlzLl9yZXN0b3JpbmdCcmVha3BvaW50cyA9IGZhbHNlOworICAgIH0KKworICAgIF9o
YW5kbGVET01CcmVha3BvaW50QWN0aW9uc0NoYW5nZWQoZXZlbnQpCisgICAgeworICAgICAgICBs
ZXQgYnJlYWtwb2ludCA9IGV2ZW50LnRhcmdldDsKKworICAgICAgICB0aGlzLl9oYW5kbGVET01C
cmVha3BvaW50RWRpdGFibGVQcm9wZXJ0eUNoYW5nZWQoZXZlbnQpOworCisgICAgICAgIGlmICgh
YnJlYWtwb2ludC5kb21Ob2RlSWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIudXBkYXRlUHJvYmVzRm9yQnJlYWtwb2ludChicmVha3Bv
aW50KTsKKyAgICB9CisKKyAgICBfaGFuZGxlRE9NQnJlYWtwb2ludERPTU5vZGVXaWxsQ2hhbmdl
KGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2lnbm9yZURPTUJyZWFrcG9pbnRET01O
b2RlV2lsbENoYW5nZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBsZXQgYnJlYWtw
b2ludCA9IGV2ZW50LnRhcmdldDsKKworICAgICAgICBpZiAoIWJyZWFrcG9pbnQuZG9tTm9kZUlk
ZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKCFicmVha3BvaW50
LmRpc2FibGVkKSB7CisgICAgICAgICAgICAvLyBXZSBzaG91bGQgZ2V0IHRoZSB0YXJnZXQgYXNz
b2NpYXRlZCB3aXRoIHRoZSBub2RlSWRlbnRpZmllciBvZiB0aGlzIGJyZWFrcG9pbnQuCisgICAg
ICAgICAgICBsZXQgdGFyZ2V0ID0gV0kuYXNzdW1pbmdNYWluVGFyZ2V0KCk7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0KQorICAgICAgICAgICAgICAgIHRoaXMuX3JlbW92ZURPTUJyZWFrcG9pbnQo
YnJlYWtwb2ludCwgdGFyZ2V0KTsKKyAgICAgICAgfQorCisgICAgICAgIFdJLmRlYnVnZ2VyTWFu
YWdlci5yZW1vdmVQcm9iZXNGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpOworICAgIH0KKworICAg
IF9oYW5kbGVET01CcmVha3BvaW50RE9NTm9kZURpZENoYW5nZShldmVudCkKKyAgICB7CisgICAg
ICAgIGxldCBicmVha3BvaW50ID0gZXZlbnQudGFyZ2V0OworCisgICAgICAgIGlmICghYnJlYWtw
b2ludC5kb21Ob2RlSWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBp
ZiAoIWJyZWFrcG9pbnQuZGlzYWJsZWQpIHsKKyAgICAgICAgICAgIC8vIFdlIHNob3VsZCBnZXQg
dGhlIHRhcmdldCBhc3NvY2lhdGVkIHdpdGggdGhlIG5vZGVJZGVudGlmaWVyIG9mIHRoaXMgYnJl
YWtwb2ludC4KKyAgICAgICAgICAgIGxldCB0YXJnZXQgPSBXSS5hc3N1bWluZ01haW5UYXJnZXQo
KTsKKyAgICAgICAgICAgIGlmICh0YXJnZXQpCisgICAgICAgICAgICAgICAgdGhpcy5fc2V0RE9N
QnJlYWtwb2ludChicmVha3BvaW50LCB0YXJnZXQpOworICAgICAgICB9CisKKyAgICAgICAgV0ku
ZGVidWdnZXJNYW5hZ2VyLmFkZFByb2Jlc0ZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CiAgICAg
fQogCiAgICAgX2hhbmRsZUV2ZW50QnJlYWtwb2ludERpc2FibGVkU3RhdGVDaGFuZ2VkKGV2ZW50
KQpAQCAtODgxLDcgKzk3OSw3IEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURl
YnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgIF9jaGlsZEZyYW1lV2FzUmVtb3Zl
ZChldmVudCkKICAgICB7CiAgICAgICAgIGxldCBmcmFtZSA9IGV2ZW50LmRhdGEuY2hpbGRGcmFt
ZTsKLSAgICAgICAgdGhpcy5fZGV0YWNoQnJlYWtwb2ludHNGb3JGcmFtZShmcmFtZSk7CisgICAg
ICAgIHRoaXMuX2RldGFjaERPTUJyZWFrcG9pbnRzRm9yRnJhbWUoZnJhbWUpOwogICAgIH0KIAog
ICAgIF9tYWluRnJhbWVEaWRDaGFuZ2UoZXZlbnQpCkBAIC04OTMsMTIgKzk5MSwxNCBAQCBXSS5E
T01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5P
YmplY3QKICAgICB7CiAgICAgICAgIGxldCBmcmFtZSA9IGV2ZW50LnRhcmdldDsKICAgICAgICAg
aWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkpIHsKKyAgICAgICAgICAgIHRoaXMuX2lnbm9yZURPTUJy
ZWFrcG9pbnRET01Ob2RlV2lsbENoYW5nZSA9IHRydWU7CiAgICAgICAgICAgICBmb3IgKGxldCBi
cmVha3BvaW50IG9mIHRoaXMuX2RvbUJyZWFrcG9pbnRVUkxNYXAudmFsdWVzKCkpCiAgICAgICAg
ICAgICAgICAgYnJlYWtwb2ludC5kb21Ob2RlSWRlbnRpZmllciA9IG51bGw7CisgICAgICAgICAg
ICB0aGlzLl9pZ25vcmVET01CcmVha3BvaW50RE9NTm9kZVdpbGxDaGFuZ2UgPSBmYWxzZTsKIAog
ICAgICAgICAgICAgdGhpcy5fZG9tQnJlYWtwb2ludEZyYW1lSWRlbnRpZmllck1hcC5jbGVhcigp
OwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHRoaXMuX2RldGFjaEJyZWFrcG9pbnRzRm9y
RnJhbWUoZnJhbWUpOworICAgICAgICAgICAgdGhpcy5fZGV0YWNoRE9NQnJlYWtwb2ludHNGb3JG
cmFtZShmcmFtZSk7CiAKICAgICAgICAgdGhpcy5fc3BlY3VsYXRpdmVseVJlc29sdmVET01CcmVh
a3BvaW50c0ZvclVSTChmcmFtZS51cmwpOwogICAgIH0KQEAgLTkxNCwxNiArMTAxNCwzMyBAQCBX
SS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBX
SS5PYmplY3QKICAgICAgICAgaWYgKCFicmVha3BvaW50cykKICAgICAgICAgICAgIHJldHVybjsK
IAorICAgICAgICBsZXQgcmVzb2x2YWJsZUJyZWFrcG9pbnRzID0gW107CiAgICAgICAgIGZvciAo
bGV0IGJyZWFrcG9pbnQgb2YgYnJlYWtwb2ludHMpIHsKLSAgICAgICAgICAgIGlmIChicmVha3Bv
aW50LmRvbU5vZGVJZGVudGlmaWVyKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgaWYgKCFicmVha3BvaW50LmRvbU5vZGVJZGVudGlmaWVyKQorICAgICAgICAgICAgICAg
IHJlc29sdmFibGVCcmVha3BvaW50cy5wdXNoKGJyZWFrcG9pbnQpOworICAgICAgICB9CisgICAg
ICAgIGlmICghcmVzb2x2YWJsZUJyZWFrcG9pbnRzLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnQucGF0aCAhPT0gbm9kZS5wYXRoKCkpCi0g
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGxldCBzdGFjayA9IFtub2RlXTsKKyAg
ICAgICAgd2hpbGUgKHN0YWNrLmxlbmd0aCkgeworICAgICAgICAgICAgbGV0IGNoaWxkID0gc3Rh
Y2sucG9wKCk7CisgICAgICAgICAgICBsZXQgcGF0aCA9IGNoaWxkLnBhdGgoKTsKIAotICAgICAg
ICAgICAgdGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMgPSB0cnVlOwotICAgICAgICAgICAgdGhp
cy5fcmVzb2x2ZURPTUJyZWFrcG9pbnQoYnJlYWtwb2ludCwgbm9kZS5pZCk7Ci0gICAgICAgICAg
ICB0aGlzLl9yZXN0b3JpbmdCcmVha3BvaW50cyA9IGZhbHNlOworICAgICAgICAgICAgZm9yIChs
ZXQgaSA9IHJlc29sdmFibGVCcmVha3BvaW50cy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkgewor
ICAgICAgICAgICAgICAgIGlmIChyZXNvbHZhYmxlQnJlYWtwb2ludHNbaV0ucGF0aCA9PT0gcGF0
aCkgeworICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZXN0b3JpbmdCcmVha3BvaW50cyA9IHRy
dWU7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Jlc29sdmVET01CcmVha3BvaW50KHJlc29s
dmFibGVCcmVha3BvaW50c1tpXSwgY2hpbGQuaWQpOworICAgICAgICAgICAgICAgICAgICB0aGlz
Ll9yZXN0b3JpbmdCcmVha3BvaW50cyA9IGZhbHNlOworCisgICAgICAgICAgICAgICAgICAgIHJl
c29sdmFibGVCcmVha3BvaW50cy5zcGxpY2UoaSwgMSk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFyZXNvbHZhYmxlQnJlYWtwb2ludHMubGVuZ3Ro
KQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBpZiAoY2hpbGQuY2hpbGRy
ZW4/Lmxlbmd0aCkKKyAgICAgICAgICAgICAgICBzdGFjay5wdXNoQWxsKGNoaWxkLmNoaWxkcmVu
KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtOTM3LDE3ICsxMDU0LDI3IEBAIFdJLkRPTURlYnVn
Z2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAog
ICAgICAgICBpZiAoIWRvbUJyZWFrcG9pbnROb2RlSWRlbnRpZmllck1hcCkKICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICBsZXQgYnJlYWtwb2ludHMgPSBkb21CcmVha3BvaW50Tm9kZUlk
ZW50aWZpZXJNYXAuZ2V0KG5vZGUuaWQpOwotICAgICAgICBpZiAoIWJyZWFrcG9pbnRzKQotICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBsZXQgc3RhY2sgPSBbbm9kZV07CisgICAgICAgIHdo
aWxlIChzdGFjay5sZW5ndGgpIHsKKyAgICAgICAgICAgIGxldCBjaGlsZCA9IHN0YWNrLnBvcCgp
OwogCi0gICAgICAgIGRvbUJyZWFrcG9pbnROb2RlSWRlbnRpZmllck1hcC5kZWxldGUobm9kZS5p
ZCk7CisgICAgICAgICAgICBsZXQgYnJlYWtwb2ludHMgPSBkb21CcmVha3BvaW50Tm9kZUlkZW50
aWZpZXJNYXAuZ2V0KGNoaWxkLmlkKTsKKyAgICAgICAgICAgIGlmIChicmVha3BvaW50cykgewor
ICAgICAgICAgICAgICAgIHRoaXMuX2lnbm9yZURPTUJyZWFrcG9pbnRET01Ob2RlV2lsbENoYW5n
ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgZm9yIChsZXQgYnJlYWtwb2ludCBvZiBicmVha3Bv
aW50cykKKyAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludC5kb21Ob2RlSWRlbnRpZmllciA9
IG51bGw7CisgICAgICAgICAgICAgICAgdGhpcy5faWdub3JlRE9NQnJlYWtwb2ludERPTU5vZGVX
aWxsQ2hhbmdlID0gZmFsc2U7CisgICAgICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFkb21CcmVh
a3BvaW50Tm9kZUlkZW50aWZpZXJNYXAuc2l6ZSkKLSAgICAgICAgICAgIHRoaXMuX2RvbUJyZWFr
cG9pbnRGcmFtZUlkZW50aWZpZXJNYXAuZGVsZXRlKG5vZGUuZnJhbWUuaWQpOworICAgICAgICAg
ICAgZG9tQnJlYWtwb2ludE5vZGVJZGVudGlmaWVyTWFwLmRlbGV0ZShub2RlLmlkKTsKKyAgICAg
ICAgICAgIGlmICghZG9tQnJlYWtwb2ludE5vZGVJZGVudGlmaWVyTWFwLnNpemUpIHsKKyAgICAg
ICAgICAgICAgICB0aGlzLl9kb21CcmVha3BvaW50RnJhbWVJZGVudGlmaWVyTWFwLmRlbGV0ZShu
b2RlLmZyYW1lLmlkKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KIAot
ICAgICAgICBmb3IgKGxldCBicmVha3BvaW50IG9mIGJyZWFrcG9pbnRzKQotICAgICAgICAgICAg
YnJlYWtwb2ludC5kb21Ob2RlSWRlbnRpZmllciA9IG51bGw7CisgICAgICAgICAgICBpZiAoY2hp
bGQuY2hpbGRyZW4/Lmxlbmd0aCkKKyAgICAgICAgICAgICAgICBzdGFjay5wdXNoQWxsKGNoaWxk
LmNoaWxkcmVuKTsKKyAgICAgICAgfQogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTU1hbmFnZXIuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01NYW5hZ2Vy
LmpzCmluZGV4IGZmN2UyMTE3MzJlNGQzYzEzZGViYTY1NGE1MmI2ZmZkY2FhM2VhNjQuLjQ1ZmRj
YTg3NzEyNmVmZWVlNjViY2UzYmZkMGIzYzNmNDA0MTBlZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTU1hbmFnZXIuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NTWFu
YWdlci5qcwpAQCAtMzgwLDcgKzM4MCwxNiBAQCBXSS5ET01NYW5hZ2VyID0gY2xhc3MgRE9NTWFu
YWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB9CiAKICAgICAgICAgdmFyIHBhcmVudCA9
IHRoaXMuX2lkVG9ET01Ob2RlW3BhcmVudElkXTsKKworICAgICAgICBpZiAocGFyZW50LmNoaWxk
cmVuKSB7CisgICAgICAgICAgICBmb3IgKGxldCBub2RlIG9mIHBhcmVudC5jaGlsZHJlbikKKyAg
ICAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01NYW5hZ2Vy
LkV2ZW50Lk5vZGVSZW1vdmVkLCB7bm9kZSwgcGFyZW50fSk7CisgICAgICAgIH0KKwogICAgICAg
ICBwYXJlbnQuX3NldENoaWxkcmVuUGF5bG9hZChwYXlsb2Fkcyk7CisKKyAgICAgICAgZm9yIChs
ZXQgbm9kZSBvZiBwYXJlbnQuY2hpbGRyZW4pCisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXSS5ET01NYW5hZ2VyLkV2ZW50Lk5vZGVJbnNlcnRlZCwge25vZGUsIHBh
cmVudH0pOwogICAgIH0KIAogICAgIF9jaGlsZE5vZGVDb3VudFVwZGF0ZWQobm9kZUlkLCBuZXdW
YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01v
ZGVscy9ET01CcmVha3BvaW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL0RPTUJyZWFrcG9pbnQuanMKaW5kZXggM2VkYTJmOGZkMGYxYWU1OTZhNDZhNzZm
NDZkYmQzYTEzM2YyZjhhYS4uY2ZmODAwOWFhM2ZiNzA3ZTI0Yzc0ZDQ2YmI0NGE5OTYzNTIzNTY2
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L0RPTUJyZWFrcG9pbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL0RPTUJyZWFrcG9pbnQuanMKQEAgLTI1LDEyICsyNSwxMiBAQAogCiBXSS5ET01C
cmVha3BvaW50ID0gY2xhc3MgRE9NQnJlYWtwb2ludCBleHRlbmRzIFdJLkJyZWFrcG9pbnQKIHsK
LSAgICBjb25zdHJ1Y3Rvcihkb21Ob2RlT3JJbmZvLCB0eXBlLCB7ZGlzYWJsZWR9ID0ge30pCisg
ICAgY29uc3RydWN0b3IoZG9tTm9kZU9ySW5mbywgdHlwZSwge2Rpc2FibGVkLCBhY3Rpb25zLCBj
b25kaXRpb24sIGlnbm9yZUNvdW50LCBhdXRvQ29udGludWV9ID0ge30pCiAgICAgewogICAgICAg
ICBjb25zb2xlLmFzc2VydChkb21Ob2RlT3JJbmZvIGluc3RhbmNlb2YgV0kuRE9NTm9kZSB8fCB0
eXBlb2YgZG9tTm9kZU9ySW5mbyA9PT0gIm9iamVjdCIsIGRvbU5vZGVPckluZm8pOwogICAgICAg
ICBjb25zb2xlLmFzc2VydChPYmplY3QudmFsdWVzKFdJLkRPTUJyZWFrcG9pbnQuVHlwZSkuaW5j
bHVkZXModHlwZSksIHR5cGUpOwogCi0gICAgICAgIHN1cGVyKHtkaXNhYmxlZH0pOworICAgICAg
ICBzdXBlcih7ZGlzYWJsZWQsIGFjdGlvbnMsIGNvbmRpdGlvbiwgaWdub3JlQ291bnQsIGF1dG9D
b250aW51ZX0pOwogCiAgICAgICAgIGlmIChkb21Ob2RlT3JJbmZvIGluc3RhbmNlb2YgV0kuRE9N
Tm9kZSkgewogICAgICAgICAgICAgdGhpcy5fZG9tTm9kZUlkZW50aWZpZXIgPSBkb21Ob2RlT3JJ
bmZvLmlkOwpAQCAtNjMsMTQgKzYzLDE5IEBAIFdJLkRPTUJyZWFrcG9pbnQgPSBjbGFzcyBET01C
cmVha3BvaW50IGV4dGVuZHMgV0kuQnJlYWtwb2ludAogICAgICAgICAgICAgcmV0dXJuIFdJLlVJ
U3RyaW5nKCJOb2RlIFJlbW92ZWQiLCAiTm9kZSBSZW1vdmVkIEAgRE9NIEJyZWFrcG9pbnQiLCAi
QSBzdWJtZW51IGl0ZW0gb2YgJ0JyZWFrIE9uJyB0aGF0IGJyZWFrcyAocGF1c2VzKSBiZWZvcmUg
RE9NIG5vZGUgaXMgcmVtb3ZlZCIpOwogICAgICAgICB9CiAKLSAgICAgICAgY29uc29sZS5lcnJv
cigpOworICAgICAgICBjb25zb2xlLmFzc2VydCgpOwogICAgICAgICByZXR1cm4gV0kuVUlTdHJp
bmcoIkRPTSIpOwogICAgIH0KIAogICAgIHN0YXRpYyBmcm9tSlNPTihqc29uKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIG5ldyBXSS5ET01CcmVha3BvaW50KGpzb24sIGpzb24udHlwZSwgeworICAg
ICAgICAgICAgZXZlbnROYW1lOiBqc29uLmV2ZW50TmFtZSwKICAgICAgICAgICAgIGRpc2FibGVk
OiBqc29uLmRpc2FibGVkLAorICAgICAgICAgICAgY29uZGl0aW9uOiBqc29uLmNvbmRpdGlvbiwK
KyAgICAgICAgICAgIGFjdGlvbnM6IGpzb24uYWN0aW9ucz8ubWFwKChhY3Rpb25KU09OKSA9PiBX
SS5CcmVha3BvaW50QWN0aW9uLmZyb21KU09OKGFjdGlvbkpTT04pKSB8fCBbXSwKKyAgICAgICAg
ICAgIGlnbm9yZUNvdW50OiBqc29uLmlnbm9yZUNvdW50LAorICAgICAgICAgICAgYXV0b0NvbnRp
bnVlOiBqc29uLmF1dG9Db250aW51ZSwKICAgICAgICAgfSk7CiAgICAgfQogCkBAIC04NSwyMyAr
OTAsMjYgQEAgV0kuRE9NQnJlYWtwb2ludCA9IGNsYXNzIERPTUJyZWFrcG9pbnQgZXh0ZW5kcyBX
SS5CcmVha3BvaW50CiAgICAgICAgIHJldHVybiBXSS5ET01CcmVha3BvaW50LmRpc3BsYXlOYW1l
Rm9yVHlwZSh0aGlzLl90eXBlKTsKICAgICB9CiAKKyAgICBnZXQgZWRpdGFibGUoKQorICAgIHsK
KyAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDE0KTogRE9NRGVidWdnZXIuc2V0RE9NQnJl
YWtwb2ludCBkaWQgbm90IGhhdmUgYW4gIm9wdGlvbnMiIHBhcmFtZXRlciB5ZXQuCisgICAgICAg
IHJldHVybiBJbnNwZWN0b3JCYWNrZW5kLmhhc0NvbW1hbmQoIkRPTURlYnVnZ2VyLnNldERPTUJy
ZWFrcG9pbnQiLCAib3B0aW9ucyIpOworICAgIH0KKwogICAgIGdldCBkb21Ob2RlSWRlbnRpZmll
cigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZG9tTm9kZUlkZW50aWZpZXI7CiAgICAg
fQogCi0gICAgc2V0IGRvbU5vZGVJZGVudGlmaWVyKG5vZGVJZGVudGlmaWVyKQorICAgIHNldCBk
b21Ob2RlSWRlbnRpZmllcihkb21Ob2RlSWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIGlmICh0
aGlzLl9kb21Ob2RlSWRlbnRpZmllciA9PT0gbm9kZUlkZW50aWZpZXIpCisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KCF0aGlzLl9kb21Ob2RlSWRlbnRpZmllciAhPT0gIWRvbU5vZGVJZGVudGlmaWVy
LCAiZG9tTm9kZUlkZW50aWZpZXIgc2hvdWxkIG5vdCBjaGFuZ2Ugb25jZSBzZXQiKTsKKyAgICAg
ICAgaWYgKCF0aGlzLl9kb21Ob2RlSWRlbnRpZmllciA9PT0gIWRvbU5vZGVJZGVudGlmaWVyKQog
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGxldCBkYXRhID0ge307Ci0gICAgICAgIGlm
ICghbm9kZUlkZW50aWZpZXIpCi0gICAgICAgICAgICBkYXRhLm9sZE5vZGVJZGVudGlmaWVyID0g
dGhpcy5fZG9tTm9kZUlkZW50aWZpZXI7Ci0KLSAgICAgICAgdGhpcy5fZG9tTm9kZUlkZW50aWZp
ZXIgPSBub2RlSWRlbnRpZmllcjsKLQotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXSS5ET01CcmVha3BvaW50LkV2ZW50LkRPTU5vZGVDaGFuZ2VkLCBkYXRhKTsKKyAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NQnJlYWtwb2ludC5FdmVudC5E
T01Ob2RlV2lsbENoYW5nZSk7CisgICAgICAgIHRoaXMuX2RvbU5vZGVJZGVudGlmaWVyID0gZG9t
Tm9kZUlkZW50aWZpZXI7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJ
LkRPTUJyZWFrcG9pbnQuRXZlbnQuRE9NTm9kZURpZENoYW5nZSk7CiAgICAgfQogCiAgICAgcmVt
b3ZlKCkKQEAgLTEzNyw3ICsxNDUsOCBAQCBXSS5ET01CcmVha3BvaW50LlR5cGUgPSB7CiB9Owog
CiBXSS5ET01CcmVha3BvaW50LkV2ZW50ID0gewotICAgIERPTU5vZGVDaGFuZ2VkOiAiZG9tLWJy
ZWFrcG9pbnQtZG9tLW5vZGUtY2hhbmdlZCIsCisgICAgRE9NTm9kZURpZENoYW5nZTogImRvbS1i
cmVha3BvaW50LWRvbS1ub2RlLWRpZC1jaGFuZ2UiLAorICAgIERPTU5vZGVXaWxsQ2hhbmdlOiAi
ZG9tLWJyZWFrcG9pbnQtZG9tLW5vZGUtd2lsbC1jaGFuZ2UiLAogfTsKIAogV0kuRE9NQnJlYWtw
b2ludC5SZWZlcmVuY2VQYWdlID0gV0kuUmVmZXJlbmNlUGFnZS5ET01CcmVha3BvaW50czsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRy
ZWVDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0RPTVRyZWVDb250ZW50Vmlldy5qcwppbmRleCBmNTNiMWY0NTQ1ZmE4NmQ4YjFjMjJlNDVi
ZjZkMTNlM2RlZDY0ODAwLi5lOGQzODE4ODNkNjk3YWM2OTBjMzRjMTgwNmU2NThjMjI5ZjlmMDMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9E
T01UcmVlQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvRE9NVHJlZUNvbnRlbnRWaWV3LmpzCkBAIC05Niw3ICs5Niw4IEBAIFdJLkRP
TVRyZWVDb250ZW50VmlldyA9IGNsYXNzIERPTVRyZWVDb250ZW50VmlldyBleHRlbmRzIFdJLkNv
bnRlbnRWaWV3CiAgICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0
ZW5lcihXSS5ET01EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuRE9NQnJlYWtwb2ludFJlbW92ZWQsIHRo
aXMuX2RvbUJyZWFrcG9pbnRBZGRlZE9yUmVtb3ZlZCwgdGhpcyk7CiAKICAgICAgICAgICAgIFdJ
LkRPTUJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkRpc2Fi
bGVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMuX2hhbmRsZURPTUJyZWFrcG9pbnREaXNhYmxlZFN0YXRl
Q2hhbmdlZCwgdGhpcyk7Ci0gICAgICAgICAgICBXSS5ET01CcmVha3BvaW50LmFkZEV2ZW50TGlz
dGVuZXIoV0kuRE9NQnJlYWtwb2ludC5FdmVudC5ET01Ob2RlQ2hhbmdlZCwgdGhpcy5faGFuZGxl
RE9NQnJlYWtwb2ludERPTU5vZGVDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgICAgIFdJLkRPTUJy
ZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01CcmVha3BvaW50LkV2ZW50LkRPTU5vZGVX
aWxsQ2hhbmdlLCB0aGlzLl9oYW5kbGVET01CcmVha3BvaW50RE9NTm9kZVdpbGxDaGFuZ2UsIHRo
aXMpOworICAgICAgICAgICAgV0kuRE9NQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkRP
TUJyZWFrcG9pbnQuRXZlbnQuRE9NTm9kZURpZENoYW5nZSwgdGhpcy5faGFuZGxlRE9NQnJlYWtw
b2ludERPTU5vZGVEaWRDaGFuZ2UsIHRoaXMpOwogCiAgICAgICAgICAgICB0aGlzLl9icmVha3Bv
aW50c0VuYWJsZWREaWRDaGFuZ2UoKTsKICAgICAgICAgfQpAQCAtNzYyLDExICs3NjMsMTYgQEAg
V0kuRE9NVHJlZUNvbnRlbnRWaWV3ID0gY2xhc3MgRE9NVHJlZUNvbnRlbnRWaWV3IGV4dGVuZHMg
V0kuQ29udGVudFZpZXcKICAgICAgICAgdGhpcy5fdXBkYXRlQnJlYWtwb2ludFN0YXR1cyhicmVh
a3BvaW50LmRvbU5vZGVJZGVudGlmaWVyKTsKICAgICB9CiAKLSAgICBfaGFuZGxlRE9NQnJlYWtw
b2ludERPTU5vZGVDaGFuZ2VkKGV2ZW50KQorICAgIF9oYW5kbGVET01CcmVha3BvaW50RE9NTm9k
ZVdpbGxDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICBsZXQgYnJlYWtwb2ludCA9IGV2ZW50
LnRhcmdldDsKLSAgICAgICAgbGV0IG5vZGVJZGVudGlmaWVyID0gYnJlYWtwb2ludC5kb21Ob2Rl
SWRlbnRpZmllciB8fCBldmVudC5kYXRhLm9sZE5vZGVJZGVudGlmaWVyOwotICAgICAgICB0aGlz
Ll91cGRhdGVCcmVha3BvaW50U3RhdHVzKG5vZGVJZGVudGlmaWVyKTsKKyAgICAgICAgdGhpcy5f
dXBkYXRlQnJlYWtwb2ludFN0YXR1cyhicmVha3BvaW50LmRvbU5vZGVJZGVudGlmaWVyKTsKKyAg
ICB9CisKKyAgICBfaGFuZGxlRE9NQnJlYWtwb2ludERPTU5vZGVEaWRDaGFuZ2UoZXZlbnQpCisg
ICAgeworICAgICAgICBsZXQgYnJlYWtwb2ludCA9IGV2ZW50LnRhcmdldDsKKyAgICAgICAgdGhp
cy5fdXBkYXRlQnJlYWtwb2ludFN0YXR1cyhicmVha3BvaW50LmRvbU5vZGVJZGVudGlmaWVyKTsK
ICAgICB9CiAKICAgICBfdXBkYXRlQnJlYWtwb2ludFN0YXR1cyhub2RlSWRlbnRpZmllcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJj
ZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanMKaW5kZXggYmRi
MDdmNTE3YzgzNDQxN2E2NDQwYjE5OGRmYmQ1NjFjMzFlMWMyYS4uYjYwODI3NjY0OGFkNzU1NWZi
NDIxNWVhMmMyYmEyOTNjNTJlMWU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlc05hdmln
YXRpb25TaWRlYmFyUGFuZWwuanMKQEAgLTMyOCw3ICszMjgsOCBAQCBXSS5Tb3VyY2VzTmF2aWdh
dGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4
dGVuZHMgVwogICAgICAgICBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVy
KFdJLkphdmFTY3JpcHRCcmVha3BvaW50LkV2ZW50LkRpc3BsYXlMb2NhdGlvbkRpZENoYW5nZSwg
dGhpcy5faGFuZGxlRGVidWdnZXJPYmplY3REaXNwbGF5TG9jYXRpb25EaWRDaGFuZ2UsIHRoaXMp
OwogICAgICAgICBXSS5Jc3N1ZU1lc3NhZ2UuYWRkRXZlbnRMaXN0ZW5lcihXSS5Jc3N1ZU1lc3Nh
Z2UuRXZlbnQuRGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVEZWJ1Z2dlck9i
amVjdERpc3BsYXlMb2NhdGlvbkRpZENoYW5nZSwgdGhpcyk7CiAKLSAgICAgICAgV0kuRE9NQnJl
YWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkRPTUJyZWFrcG9pbnQuRXZlbnQuRE9NTm9kZUNo
YW5nZWQsIHRoaXMuX2hhbmRsZURPTUJyZWFrcG9pbnRET01Ob2RlQ2hhbmdlZCwgdGhpcyk7Cisg
ICAgICAgIFdJLkRPTUJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01CcmVha3BvaW50
LkV2ZW50LkRPTU5vZGVXaWxsQ2hhbmdlLCB0aGlzLl9oYW5kbGVET01CcmVha3BvaW50RE9NTm9k
ZVdpbGxDaGFuZ2UsIHRoaXMpOworICAgICAgICBXSS5ET01CcmVha3BvaW50LmFkZEV2ZW50TGlz
dGVuZXIoV0kuRE9NQnJlYWtwb2ludC5FdmVudC5ET01Ob2RlRGlkQ2hhbmdlLCB0aGlzLl9oYW5k
bGVET01CcmVha3BvaW50RE9NTm9kZURpZENoYW5nZSwgdGhpcyk7CiAKICAgICAgICAgV0kuY29u
c29sZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdlci5FdmVudC5Jc3N1
ZUFkZGVkLCB0aGlzLl9oYW5kbGVDb25zb2xlSXNzdWVBZGRlZCwgdGhpcyk7CiAgICAgICAgIFdJ
LmNvbnNvbGVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQu
Q2xlYXJlZCwgdGhpcy5faGFuZGxlQ29uc29sZUNsZWFyZWQsIHRoaXMpOwpAQCAtMTY3MSw2ICsx
NjcyLDcgQEAgV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBTb3VyY2Vz
TmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFcKIAogICAgICAgICAgICAgaWYgKHBhdXNl
RGF0YS50YXJnZXROb2RlSWQpIHsKICAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChkb21C
cmVha3BvaW50LnR5cGUgPT09IFdJLkRPTUJyZWFrcG9pbnQuVHlwZS5TdWJ0cmVlTW9kaWZpZWQg
fHwgZG9tQnJlYWtwb2ludC50eXBlID09PSBXSS5ET01CcmVha3BvaW50LlR5cGUuTm9kZVJlbW92
ZWQpOworICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHBhdXNlRGF0YS50YXJnZXROb2Rl
SWQgIT09IGRvbUJyZWFrcG9pbnQuZG9tTm9kZUlkZW50aWZpZXIsIHBhdXNlRGF0YS50YXJnZXRO
b2RlSWQsIGRvbUJyZWFrcG9pbnQpOwogICAgICAgICAgICAgICAgIHVwZGF0ZVRhcmdldERlc2Ny
aXB0aW9uKHBhdXNlRGF0YS50YXJnZXROb2RlSWQpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChw
YXVzZURhdGEudGFyZ2V0Tm9kZSkgeyAvLyBDT01QQVRJQklMSVRZIChpT1MgMTMpOiBgdGFyZ2V0
Tm9kZWAgd2FzIHJlbmFtZWQgdG8gYHRhcmdldE5vZGVJZGAgYW5kIHdhcyBjaGFuZ2VkIGZyb20g
YSBgUnVudGltZS5SZW1vdGVPYmplY3RgIHRvIGEgYERPTS5Ob2RlSWRgLgogICAgICAgICAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KGRvbUJyZWFrcG9pbnQudHlwZSA9PT0gV0kuRE9NQnJlYWtwb2lu
dC5UeXBlLlN1YnRyZWVNb2RpZmllZCk7CkBAIC0yMzgxLDEzICsyMzgzLDE2IEBAIFdJLlNvdXJj
ZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFy
UGFuZWwgZXh0ZW5kcyBXCiAgICAgICAgICAgICBuZXdEZWJ1Z2dlclRyZWVFbGVtZW50LnJldmVh
bEFuZFNlbGVjdCh0cnVlLCBmYWxzZSwgdHJ1ZSk7CiAgICAgfQogCi0gICAgX2hhbmRsZURPTUJy
ZWFrcG9pbnRET01Ob2RlQ2hhbmdlZChldmVudCkKKyAgICBfaGFuZGxlRE9NQnJlYWtwb2ludERP
TU5vZGVXaWxsQ2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBl
dmVudC50YXJnZXQ7Ci0gICAgICAgIGlmIChicmVha3BvaW50LmRvbU5vZGVJZGVudGlmaWVyKQot
ICAgICAgICAgICAgdGhpcy5fYWRkQnJlYWtwb2ludChicmVha3BvaW50KTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgdGhpcy5fcmVtb3ZlQnJlYWtwb2ludChicmVha3BvaW50KTsKKyAgICAg
ICAgdGhpcy5fcmVtb3ZlQnJlYWtwb2ludChicmVha3BvaW50KTsKKyAgICB9CisKKyAgICBfaGFu
ZGxlRE9NQnJlYWtwb2ludERPTU5vZGVEaWRDaGFuZ2UoZXZlbnQpCisgICAgeworICAgICAgICBs
ZXQgYnJlYWtwb2ludCA9IGV2ZW50LnRhcmdldDsKKyAgICAgICAgdGhpcy5fYWRkQnJlYWtwb2lu
dChicmVha3BvaW50KTsKICAgICB9CiAKICAgICBfaGFuZGxlQ29uc29sZUlzc3VlQWRkZWQoZXZl
bnQpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggNzc3ZGUxOTUzNTY5ODYzOTFkNmYwNjU5NmQyZThkN2YyY2Y2YWI3Ny4uNWQz
NWY5MDM0NmQxZTQ0OWUyNDFjNTdiNTliM2IzZDhhZjQ1NjNmYiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0
IEBACisyMDIwLTA5LTAzICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBhbGxvdyBET00gYnJlYWtwb2ludHMgdG8gYmUgY29uZmlndXJl
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1Nzk1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZGVidWdnZXIvcmVzb3VyY2VzL2JyZWFrcG9pbnQtb3B0aW9ucy11dGlsaXRpZXMuanM6
CisgICAgICAgIChUZXN0UGFnZS5yZWdpc3RlckluaXRpYWxpemVyLkluc3BlY3RvclRlc3QuQnJl
YWtwb2ludE9wdGlvbnMuYWRkVGVzdENhc2VzKToKKworICAgICAgICAqIGluc3BlY3Rvci9kb20t
ZGVidWdnZXIvcmVzb3VyY2VzL2RvbS1icmVha3BvaW50LXV0aWxpdGllcy5qczogQWRkZWQuCisg
ICAgICAgIChUZXN0UGFnZS5yZWdpc3RlckluaXRpYWxpemVyLkluc3BlY3RvclRlc3QuRE9NQnJl
YWtwb2ludC50ZWFyZG93bik6CisgICAgICAgIChUZXN0UGFnZS5yZWdpc3RlckluaXRpYWxpemVy
Lkluc3BlY3RvclRlc3QuRE9NQnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KToKKyAgICAgICAg
KFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIuSW5zcGVjdG9yVGVzdC5ET01CcmVha3BvaW50
LmFkZEJyZWFrcG9pbnQpOgorICAgICAgICAoVGVzdFBhZ2UucmVnaXN0ZXJJbml0aWFsaXplci5J
bnNwZWN0b3JUZXN0LkRPTUJyZWFrcG9pbnQuYXdhaXRRdWVyeVNlbGVjdG9yKToKKworICAgICAg
ICAqIGluc3BlY3Rvci9kb20tZGVidWdnZXIvYXR0cmlidXRlLW1vZGlmaWVkLXN0eWxlLmh0bWw6
CisgICAgICAgICogaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9hdHRyaWJ1dGUtbW9kaWZpZWQtc3R5
bGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kb20tZGVidWdnZXIvZG9tLWJy
ZWFrcG9pbnRzLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9kb20tYnJl
YWtwb2ludHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kb20tZGVidWdnZXIv
ZG9tLWJyZWFrcG9pbnQtYXR0cmlidXRlLW1vZGlmaWVkLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGluc3BlY3Rvci9kb20tZGVidWdnZXIvZG9tLWJyZWFrcG9pbnQtYXR0cmlidXRlLW1vZGlmaWVk
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9k
b20tYnJlYWtwb2ludC1ub2RlLXJlbW92ZWQtYW5jZXN0b3IuaHRtbDogQWRkZWQuCisgICAgICAg
ICogaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9kb20tYnJlYWtwb2ludC1ub2RlLXJlbW92ZWQtYW5j
ZXN0b3ItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tLWRlYnVn
Z2VyL2RvbS1icmVha3BvaW50LW5vZGUtcmVtb3ZlZC1kaXJlY3QuaHRtbDogQWRkZWQuCisgICAg
ICAgICogaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9kb20tYnJlYWtwb2ludC1ub2RlLXJlbW92ZWQt
ZGlyZWN0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2RvbS1kZWJ1
Z2dlci9kb20tYnJlYWtwb2ludC1zdWJ0cmVlLW1vZGlmaWVkLWFkZC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBpbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2RvbS1icmVha3BvaW50LXN1YnRyZWUtbW9k
aWZpZWQtcmVtb3ZlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Rv
bS1kZWJ1Z2dlci9kb20tYnJlYWtwb2ludC1zdWJ0cmVlLW1vZGlmaWVkLXJlbW92ZS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2RvbS1icmVha3BvaW50LXN1
YnRyZWUtbW9kaWZpZWQtYWRkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMjAtMDktMDMgIERl
dmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6
IGFsbG93IHVybCBicmVha3BvaW50cyB0byBiZSBjb25maWd1cmVkCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcmVzb3VyY2VzL2JyZWFrcG9pbnQtb3B0aW9ucy11
dGlsaXRpZXMuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcmVzb3VyY2VzL2Jy
ZWFrcG9pbnQtb3B0aW9ucy11dGlsaXRpZXMuanMKaW5kZXggMmRmNmRhMjhiMTEzYWQ2ZGI3Zjdm
OTE2MjYyNTM0MmQyMDAxOGI1YS4uODM1M2YyNDUwNTQ1YWJmNjhkOGU2YTVjZDhkYmQ1OTk3ZjJm
YjM1NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Jlc291cmNl
cy9icmVha3BvaW50LW9wdGlvbnMtdXRpbGl0aWVzLmpzCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9yZXNvdXJjZXMvYnJlYWtwb2ludC1vcHRpb25zLXV0aWxpdGllcy5qcwpA
QCAtMSw3ICsxLDcgQEAKIFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIoKCkgPT4gewogICAg
IEluc3BlY3RvclRlc3QuQnJlYWtwb2ludE9wdGlvbnMgPSB7fTsKIAotICAgIEluc3BlY3RvclRl
c3QuQnJlYWtwb2ludE9wdGlvbnMuYWRkVGVzdENhc2VzID0gZnVuY3Rpb24oc3VpdGUsIHt0ZXN0
Q2FzZU5hbWVQcmVmaXgsIGNyZWF0ZUJyZWFrcG9pbnQsIHRyaWdnZXJCcmVha3BvaW50fSkgewor
ICAgIEluc3BlY3RvclRlc3QuQnJlYWtwb2ludE9wdGlvbnMuYWRkVGVzdENhc2VzID0gZnVuY3Rp
b24oc3VpdGUsIHt0ZXN0Q2FzZU5hbWVQcmVmaXgsIGNyZWF0ZUJyZWFrcG9pbnQsIHRyaWdnZXJC
cmVha3BvaW50LCBza2lwfSkgewogICAgICAgICB0ZXN0Q2FzZU5hbWVQcmVmaXggPz89ICIiOwog
CiAgICAgICAgIGZ1bmN0aW9uIHJlbW92ZUJyZWFrcG9pbnQoYnJlYWtwb2ludCkgewpAQCAtNDIs
NyArNDIsNyBAQCBUZXN0UGFnZS5yZWdpc3RlckluaXRpYWxpemVyKCgpID0+IHsKICAgICAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CiAKICAgICAgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5sb2coIlRyaWdnZXJpbmcgYnJlYWtwb2ludC4uLiIpOwotICAgICAg
ICAgICAgICAgICAgICBhd2FpdCB0cmlnZ2VyQnJlYWtwb2ludCgpOworICAgICAgICAgICAgICAg
ICAgICBhd2FpdCB0cmlnZ2VyQnJlYWtwb2ludChicmVha3BvaW50KTsKIAogICAgICAgICAgICAg
ICAgICAgICBpZiAoaSA8PSAyKQogICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RFcXVhbChwYXVzZUNvdW50LCAwLCAiU2hvdWxkIG5vdCBwYXVzZS4iKTsKQEAgLTU2
LDQxICs1Niw0MyBAQCBUZXN0UGFnZS5yZWdpc3RlckluaXRpYWxpemVyKCgpID0+IHsKICAgICAg
ICAgICAgIH0sCiAgICAgICAgIH0pOwogCi0gICAgICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKLSAg
ICAgICAgICAgIG5hbWU6IHN1aXRlLm5hbWUgKyAiLiIgKyB0ZXN0Q2FzZU5hbWVQcmVmaXggKyAi
T3B0aW9ucy5JZ25vcmVDb3VudCIsCi0gICAgICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRo
YXQgdGhlIGRlYnVnZ2VyIHdpbGwgbm90IHBhdXNlIHVubGVzcyB0aGUgYnJlYWtwb2ludCBpcyBo
aXQgYXQgbGVhc3QgYXMgbWFueSB0aW1lcyBhcyBpdCdzIGBpZ25vcmVDb3VudGAuIiwKLSAgICAg
ICAgICAgIGFzeW5jIHRlc3QoKSB7Ci0gICAgICAgICAgICAgICAgbGV0IHBhdXNlQ291bnQgPSAw
OworICAgICAgICBpZiAoIXNraXA/Lmlnbm9yZUNvdW50KSB7CisgICAgICAgICAgICBzdWl0ZS5h
ZGRUZXN0Q2FzZSh7CisgICAgICAgICAgICAgICAgbmFtZTogc3VpdGUubmFtZSArICIuIiArIHRl
c3RDYXNlTmFtZVByZWZpeCArICJPcHRpb25zLklnbm9yZUNvdW50IiwKKyAgICAgICAgICAgICAg
ICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgdGhlIGRlYnVnZ2VyIHdpbGwgbm90IHBhdXNlIHVu
bGVzcyB0aGUgYnJlYWtwb2ludCBpcyBoaXQgYXQgbGVhc3QgYXMgbWFueSB0aW1lcyBhcyBpdCdz
IGBpZ25vcmVDb3VudGAuIiwKKyAgICAgICAgICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAg
ICAgICAgICAgICAgICBsZXQgcGF1c2VDb3VudCA9IDA7CiAKLSAgICAgICAgICAgICAgICBsZXQg
cGF1c2VkTGlzdGVuZXIgPSBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5E
ZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCAoZXZlbnQpID0+IHsKLSAgICAgICAgICAgICAg
ICAgICAgKytwYXVzZUNvdW50OwotICAgICAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFn
ZXIucmVzdW1lKCk7Ci0gICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIGxl
dCBwYXVzZWRMaXN0ZW5lciA9IFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJ
LkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIChldmVudCkgPT4geworICAgICAgICAgICAg
ICAgICAgICAgICAgKytwYXVzZUNvdW50OworICAgICAgICAgICAgICAgICAgICAgICAgV0kuZGVi
dWdnZXJNYW5hZ2VyLnJlc3VtZSgpOworICAgICAgICAgICAgICAgICAgICB9KTsKIAotICAgICAg
ICAgICAgICAgIGxldCBicmVha3BvaW50ID0gYXdhaXQgY3JlYXRlQnJlYWtwb2ludCgpOworICAg
ICAgICAgICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IGF3YWl0IGNyZWF0ZUJyZWFrcG9pbnQo
KTsKIAotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubmV3bGluZSgpOwotCi0gICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlNldHRpbmcgaWdub3JlQ291bnQgdG8gJzInLi4u
Iik7Ci0gICAgICAgICAgICAgICAgYnJlYWtwb2ludC5pZ25vcmVDb3VudCA9IDI7Ci0KLSAgICAg
ICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PTQ7ICsraSkgewogICAgICAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKIAotICAgICAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBicmVha3BvaW50Li4uIik7Ci0gICAgICAgICAgICAg
ICAgICAgIGF3YWl0IHRyaWdnZXJCcmVha3BvaW50KCk7CisgICAgICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QubG9nKCJTZXR0aW5nIGlnbm9yZUNvdW50IHRvICcyJy4uLiIpOworICAgICAg
ICAgICAgICAgICAgICBicmVha3BvaW50Lmlnbm9yZUNvdW50ID0gMjsKIAotICAgICAgICAgICAg
ICAgICAgICBpZiAoaSA8PSAyKQotICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RFcXVhbChwYXVzZUNvdW50LCAwLCAiU2hvdWxkIG5vdCBwYXVzZS4iKTsKLSAgICAg
ICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RFcXVhbChwYXVzZUNvdW50LCBpIC0gMiwgIlNob3VsZCBwYXVzZS4iKTsKLSAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9NDsg
KytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsK
IAotICAgICAgICAgICAgICAgIHJlbW92ZUJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBicmVha3BvaW50
Li4uIik7CisgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0cmlnZ2VyQnJlYWtwb2ludChi
cmVha3BvaW50KTsKIAotICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVF
dmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIHBhdXNlZExpc3Rl
bmVyKTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGkgPD0gMikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmV4cGVjdEVxdWFsKHBhdXNlQ291bnQsIDAsICJTaG91bGQgbm90IHBhdXNlLiIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0RXF1YWwocGF1c2VDb3VudCwgaSAtIDIsICJTaG91bGQgcGF1c2UuIik7
CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICByZW1vdmVCcmVh
a3BvaW50KGJyZWFrcG9pbnQpOworCisgICAgICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFu
YWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQs
IHBhdXNlZExpc3RlbmVyKTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgfSk7Cisg
ICAgICAgIH0KIAogICAgICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CiAgICAgICAgICAgICBuYW1l
OiBzdWl0ZS5uYW1lICsgIi4iICsgdGVzdENhc2VOYW1lUHJlZml4ICsgIk9wdGlvbnMuQWN0aW9u
LkxvZyIsCkBAIC0xMzMsNyArMTM1LDcgQEAgVGVzdFBhZ2UucmVnaXN0ZXJJbml0aWFsaXplcigo
KSA9PiB7CiAgICAgICAgICAgICAgICAgICAgIH0pOwogCiAgICAgICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QubG9nKCJUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4iKTsKLSAgICAgICAgICAg
ICAgICAgICAgYXdhaXQgdHJpZ2dlckJyZWFrcG9pbnQoKTsKKyAgICAgICAgICAgICAgICAgICAg
YXdhaXQgdHJpZ2dlckJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CiAKICAgICAgICAgICAgICAgICAg
ICAgV0kuY29uc29sZU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdl
ci5FdmVudC5NZXNzYWdlQWRkZWQsIG1lc3NhZ2VBZGRlZExpc3RlbmVyKTsKIApAQCAtMTg2LDcg
KzE4OCw3IEBAIFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIoKCkgPT4gewogICAgICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKIAogICAgICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBicmVha3BvaW50Li4uIik7Ci0gICAgICAg
ICAgICAgICAgICAgIGF3YWl0IHRyaWdnZXJCcmVha3BvaW50KCk7CisgICAgICAgICAgICAgICAg
ICAgIGF3YWl0IHRyaWdnZXJCcmVha3BvaW50KGJyZWFrcG9pbnQpOwogCiAgICAgICAgICAgICAg
ICAgICAgIGxldCBicmVha3BvaW50QWN0aW9uRXZhbHVhdGVSZXN1bHQgPSBhd2FpdCBJbnNwZWN0
b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGB3aW5kb3cuQlJFQUtQT0lOVF9BQ1RJT05fRVZBTFVBVEVg
KTsKICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChicmVha3Bv
aW50QWN0aW9uRXZhbHVhdGVSZXN1bHQsIGksICJTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFj
dGlvbi4iKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIv
YXR0cmlidXRlLW1vZGlmaWVkLXN0eWxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kb20tZGVidWdnZXIvYXR0cmlidXRlLW1vZGlmaWVkLXN0eWxlLWV4cGVjdGVkLnR4dApp
bmRleCA0Mzk3NTQ2NmJhZGJhNGU5YzMwNmYwODRiMmU4YTEyNWEzOGMxZTIyLi4xMTA3OTkyZWFk
ODNiODNkOTQwYzAxYjM0YjVmOTM1YzI3MjMzZjUzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2F0dHJpYnV0ZS1tb2RpZmllZC1zdHlsZS1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9hdHRyaWJ1dGUtbW9k
aWZpZWQtc3R5bGUtZXhwZWN0ZWQudHh0CkBAIC0xLDEwICsxLDEzIEBACitDT05TT0xFIE1FU1NB
R0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyAxCitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQg
QUNUSU9OIExPRyAyCitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyAzCitD
T05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyA0CiBUZXN0cyBmdW5jdGlvbmFs
aXR5IG9mIGF0dHJpYnV0ZSBtb2RpZmllZCBET00gYnJlYWtwb2ludHMgd2hlbiBtb2RpZnlpbmcg
dGhlIGlubGluZSBzdHlsZSBhdHRyaWJ1dGUuCiAKLUFkZGluZyBhdHRyaWJ1dGUgbW9kaWZpZWQg
YnJlYWtwb2ludCB0byAjdGVzdC4uLgotUEFTUzogQWRkZWQgYXR0cmlidXRlIG1vZGlmaWVkIGJy
ZWFrcG9pbnQgdG8gI3Rlc3QuCiAKLT09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogRE9NQnJlYWtwb2lu
dHMuQXR0cmlidXRlTW9kaWZpZWQuU3R5bGUKLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01CcmVh
a3BvaW50cy5BdHRyaWJ1dGVNb2RpZmllZC5TdHlsZS5BZGQKKz09IFJ1bm5pbmcgdGVzdCBzdWl0
ZTogRE9NQnJlYWtwb2ludC5BdHRyaWJ1dGVNb2RpZmllZAorLS0gUnVubmluZyB0ZXN0IGNhc2U6
IERPTUJyZWFrcG9pbnQuQXR0cmlidXRlTW9kaWZpZWQuU3R5bGUuQWRkCitBZGRpbmcgImF0dHJp
YnV0ZS1tb2RpZmllZDoxLEhUTUwsMSxCT0RZLDEsRElWIiBET00gQnJlYWtwb2ludC4uLgogR2V0
dGluZyAnZGlzcGxheScuLi4KIFBBU1M6ICdkaXNwbGF5JyBzaG91bGQgaGF2ZSB0aGUgdmFsdWUg
JycuCiBTZXR0aW5nICdkaXNwbGF5OiBub25lOycuLi4KQEAgLTE0LDggKzE3LDEwIEBAIFBBU1M6
ICdkaXNwbGF5JyBzaG91bGQgaGF2ZSB0aGUgdmFsdWUgJycuCiBQQVNTOiBSZXN1bWVkLgogR2V0
dGluZyAnZGlzcGxheScuLi4KIFBBU1M6ICdkaXNwbGF5JyBzaG91bGQgaGF2ZSB0aGUgdmFsdWUg
J25vbmUnLgorLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgogCi0tLSBSdW5uaW5nIHRlc3QgY2Fz
ZTogRE9NQnJlYWtwb2ludHMuQXR0cmlidXRlTW9kaWZpZWQuU3R5bGUuUmVwbGFjZVNhbWUKKy0t
IFJ1bm5pbmcgdGVzdCBjYXNlOiBET01CcmVha3BvaW50LkF0dHJpYnV0ZU1vZGlmaWVkLlN0eWxl
LlJlcGxhY2VTYW1lCitBZGRpbmcgImF0dHJpYnV0ZS1tb2RpZmllZDoxLEhUTUwsMSxCT0RZLDEs
RElWIiBET00gQnJlYWtwb2ludC4uLgogR2V0dGluZyAnZGlzcGxheScuLi4KIFBBU1M6ICdkaXNw
bGF5JyBzaG91bGQgaGF2ZSB0aGUgdmFsdWUgJ25vbmUnLgogU2V0dGluZyAnZGlzcGxheTogbm9u
ZTsnLi4uCkBAIC0yNSw4ICszMCwxMCBAQCBQQVNTOiAnZGlzcGxheScgc2hvdWxkIGhhdmUgdGhl
IHZhbHVlICdub25lJy4KIFBBU1M6IFJlc3VtZWQuCiBHZXR0aW5nICdkaXNwbGF5Jy4uLgogUEFT
UzogJ2Rpc3BsYXknIHNob3VsZCBoYXZlIHRoZSB2YWx1ZSAnbm9uZScuCistLSBSdW5uaW5nIHRl
c3QgdGVhcmRvd24uCiAKLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01CcmVha3BvaW50cy5BdHRy
aWJ1dGVNb2RpZmllZC5TdHlsZS5SZXBsYWNlRGlmZmVyZW50CistLSBSdW5uaW5nIHRlc3QgY2Fz
ZTogRE9NQnJlYWtwb2ludC5BdHRyaWJ1dGVNb2RpZmllZC5TdHlsZS5SZXBsYWNlRGlmZmVyZW50
CitBZGRpbmcgImF0dHJpYnV0ZS1tb2RpZmllZDoxLEhUTUwsMSxCT0RZLDEsRElWIiBET00gQnJl
YWtwb2ludC4uLgogR2V0dGluZyAnZGlzcGxheScuLi4KIFBBU1M6ICdkaXNwbGF5JyBzaG91bGQg
aGF2ZSB0aGUgdmFsdWUgJ25vbmUnLgogU2V0dGluZyAnZGlzcGxheTogYmxvY2s7Jy4uLgpAQCAt
MzYsOCArNDMsMTAgQEAgUEFTUzogJ2Rpc3BsYXknIHNob3VsZCBoYXZlIHRoZSB2YWx1ZSAnbm9u
ZScuCiBQQVNTOiBSZXN1bWVkLgogR2V0dGluZyAnZGlzcGxheScuLi4KIFBBU1M6ICdkaXNwbGF5
JyBzaG91bGQgaGF2ZSB0aGUgdmFsdWUgJ2Jsb2NrJy4KKy0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93
bi4KIAotLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTUJyZWFrcG9pbnRzLkF0dHJpYnV0ZU1vZGlm
aWVkLlN0eWxlLlJlbW92ZQorLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTUJyZWFrcG9pbnQuQXR0
cmlidXRlTW9kaWZpZWQuU3R5bGUuUmVtb3ZlCitBZGRpbmcgImF0dHJpYnV0ZS1tb2RpZmllZDox
LEhUTUwsMSxCT0RZLDEsRElWIiBET00gQnJlYWtwb2ludC4uLgogR2V0dGluZyAnZGlzcGxheScu
Li4KIFBBU1M6ICdkaXNwbGF5JyBzaG91bGQgaGF2ZSB0aGUgdmFsdWUgJ2Jsb2NrJy4KIFJlbW92
aW5nICdkaXNwbGF5Jy4uLgpAQCAtNDcsOCArNTYsMTAgQEAgUEFTUzogJ2Rpc3BsYXknIHNob3Vs
ZCBoYXZlIHRoZSB2YWx1ZSAnYmxvY2snLgogUEFTUzogUmVzdW1lZC4KIEdldHRpbmcgJ2Rpc3Bs
YXknLi4uCiBQQVNTOiAnZGlzcGxheScgc2hvdWxkIGhhdmUgdGhlIHZhbHVlICcnLgorLS0gUnVu
bmluZyB0ZXN0IHRlYXJkb3duLgogCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NQnJlYWtwb2lu
dHMuQXR0cmlidXRlTW9kaWZpZWQuU3R5bGUuVGV4dAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IERP
TUJyZWFrcG9pbnQuQXR0cmlidXRlTW9kaWZpZWQuU3R5bGUuVGV4dAorQWRkaW5nICJhdHRyaWJ1
dGUtbW9kaWZpZWQ6MSxIVE1MLDEsQk9EWSwxLERJViIgRE9NIEJyZWFrcG9pbnQuLi4KIEdldHRp
bmcgJ2Rpc3BsYXknLi4uCiBQQVNTOiAnZGlzcGxheScgc2hvdWxkIGhhdmUgdGhlIHZhbHVlICcn
LgogU2V0dGluZyBzdHlsZSB0ZXh0IHRvICcnLi4uCkBAIC01OCw0ICs2OSw5NyBAQCBQQVNTOiAn
ZGlzcGxheScgc2hvdWxkIGhhdmUgdGhlIHZhbHVlICcnLgogUEFTUzogUmVzdW1lZC4KIEdldHRp
bmcgJ2Rpc3BsYXknLi4uCiBQQVNTOiAnZGlzcGxheScgc2hvdWxkIGhhdmUgdGhlIHZhbHVlICdu
b25lJy4KKy0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6
IERPTUJyZWFrcG9pbnQuQXR0cmlidXRlTW9kaWZpZWQuU3R5bGUuT3B0aW9ucy5Db25kaXRpb24K
K0FkZGluZyAiYXR0cmlidXRlLW1vZGlmaWVkOjEsSFRNTCwxLEJPRFksMSxESVYiIERPTSBCcmVh
a3BvaW50Li4uCisKK1NldHRpbmcgY29uZGl0aW9uIHRvICdmYWxzZScuLi4KKworVHJpZ2dlcmlu
ZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitUcmlnZ2VyaW5nIGJy
ZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1NldHRpbmcgY29uZGl0aW9u
IHRvICd0cnVlJy4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBw
YXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisK
Ky0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01CcmVha3BvaW50LkF0dHJpYnV0ZU1vZGlmaWVkLlN0
eWxlLk9wdGlvbnMuSWdub3JlQ291bnQKK0FkZGluZyAiYXR0cmlidXRlLW1vZGlmaWVkOjEsSFRN
TCwxLEJPRFksMSxESVYiIERPTSBCcmVha3BvaW50Li4uCisKK1NldHRpbmcgaWdub3JlQ291bnQg
dG8gJzInLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBw
YXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNl
LgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworVHJp
Z2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKKy0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBET01CcmVha3BvaW50LkF0dHJpYnV0ZU1vZGlmaWVkLlN0eWxlLk9wdGlvbnMu
QWN0aW9uLkxvZworQWRkaW5nICJhdHRyaWJ1dGUtbW9kaWZpZWQ6MSxIVE1MLDEsQk9EWSwxLERJ
ViIgRE9NIEJyZWFrcG9pbnQuLi4KKworQWRkaW5nIGxvZyBhY3Rpb24uLi4KKworVHJpZ2dlcmlu
ZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4K
K1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBsb2cgYWN0aW9uLi4uCisKK1RyaWdnZXJp
bmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24u
CitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcgbG9nIGFjdGlvbi4uLgorRW5hYmxpbmcg
YXV0by1jb250aW51ZS4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3Vs
ZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKwor
RWRpdGluZyBsb2cgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzog
U2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNl
LgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NQnJlYWtwb2ludC5BdHRyaWJ1dGVNb2RpZmll
ZC5TdHlsZS5PcHRpb25zLkFjdGlvbnMuRXZhbHVhdGUKK0FkZGluZyAiYXR0cmlidXRlLW1vZGlm
aWVkOjEsSFRNTCwxLEJPRFksMSxESVYiIERPTSBCcmVha3BvaW50Li4uCisKK0FkZGluZyBldmFs
dWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQg
ZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGlu
ZyBldmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBT
aG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKwor
RWRpdGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KK0VuYWJsaW5nIGF1dG8tY29udGludWUuLi4KKwor
VHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50
IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK0VkaXRpbmcgZXZhbHVhdGUgYWN0
aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUg
YnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2F0dHJpYnV0ZS1tb2RpZmllZC1z
dHlsZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9hdHRyaWJ1dGUt
bW9kaWZpZWQtc3R5bGUuaHRtbAppbmRleCBjNmU1ZDQ1OGZkZTE2YWNlY2U2YmRkZDZjYjY0OGUw
NmMxOTE1NjY1Li5mMDA1MjFiZDZiZDQ3Y2MxM2EwZDgxYzY1NTFhNDU2Y2MzY2NjMTUwIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2F0dHJpYnV0ZS1tb2Rp
ZmllZC1zdHlsZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIv
YXR0cmlidXRlLW1vZGlmaWVkLXN0eWxlLmh0bWwKQEAgLTIsNyArMiw5IEBACiA8aHRtbD4KIDxo
ZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9p
bnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZGVidWdnZXIvcmVz
b3VyY2VzL2JyZWFrcG9pbnQtb3B0aW9ucy11dGlsaXRpZXMuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9Ii4uL2RlYnVnZ2VyL3Jlc291cmNlcy9sb2ctYWN0aXZlLXN0YWNrLXRyYWNlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZG9tLWJyZWFrcG9pbnQtdXRpbGl0aWVz
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGdldFByb3BlcnR5KG5hbWUpIHsK
QEAgLTIwLDkgKzIyLDcgQEAgZnVuY3Rpb24gc2V0UHJvcGVydHkobmFtZSwgdmFsdWUpIHsKIAog
ZnVuY3Rpb24gdGVzdCgpCiB7Ci0gICAgSW5zcGVjdG9yVGVzdC5kZWJ1ZygpOwotCi0gICAgbGV0
IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJET01CcmVha3BvaW50cy5B
dHRyaWJ1dGVNb2RpZmllZC5TdHlsZSIpOworICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3Qu
Y3JlYXRlQXN5bmNTdWl0ZSgiRE9NQnJlYWtwb2ludC5BdHRyaWJ1dGVNb2RpZmllZCIpOwogCiAg
ICAgYXN5bmMgZnVuY3Rpb24gY2hlY2tQcm9wZXJ0eVZhbHVlKG5hbWUsIGV4cGVjdGVkVmFsdWUp
IHsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYEdldHRpbmcgJyR7bmFtZX0nLi4uYCk7CkBA
IC0zNCw2ICszNCw5IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBzdWl0ZS5hZGRUZXN0Q2Fz
ZSh7CiAgICAgICAgICAgICBuYW1lLAogICAgICAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAg
ICAgICAgICAgICBsZXQgbm9kZSA9IGF3YWl0IEluc3BlY3RvclRlc3QuRE9NQnJlYWtwb2ludC5h
d2FpdFF1ZXJ5U2VsZWN0b3IoIiN0ZXN0Iik7CisgICAgICAgICAgICAgICAgYXdhaXQgSW5zcGVj
dG9yVGVzdC5ET01CcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQobm9kZSwgV0kuRE9NQnJlYWtw
b2ludC5UeXBlLkF0dHJpYnV0ZU1vZGlmaWVkKTsKKwogICAgICAgICAgICAgICAgIGF3YWl0IGNo
ZWNrUHJvcGVydHlWYWx1ZShwcm9wZXJ0eU5hbWUsIHByb3BlcnR5VmFsdWVCZWZvcmUpOwogCiAg
ICAgICAgICAgICAgICAgbGV0IHBhdXNlZFByb21pc2UgPSBXSS5kZWJ1Z2dlck1hbmFnZXIuYXdh
aXRFdmVudChXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkKTsKQEAgLTU2LDM3ICs1OSw0
MSBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgICAgICAgICAgICAgIGF3YWl0IGNoZWNrUHJvcGVy
dHlWYWx1ZShwcm9wZXJ0eU5hbWUsIHByb3BlcnR5VmFsdWVBZnRlcik7CiAgICAgICAgICAgICB9
LAorICAgICAgICAgICAgdGVhcmRvd246IEluc3BlY3RvclRlc3QuRE9NQnJlYWtwb2ludC50ZWFy
ZG93biwKICAgICAgICAgfSk7CiAgICAgfQogCiAgICAgYWRkVGVzdENhc2UoewotICAgICAgICBu
YW1lOiAiRE9NQnJlYWtwb2ludHMuQXR0cmlidXRlTW9kaWZpZWQuU3R5bGUuQWRkIiwKKyAgICAg
ICAgbmFtZTogIkRPTUJyZWFrcG9pbnQuQXR0cmlidXRlTW9kaWZpZWQuU3R5bGUuQWRkIiwKICAg
ICAgICAgcHJvcGVydHlOYW1lOiAiZGlzcGxheSIsCiAgICAgICAgIHByb3BlcnR5VmFsdWVCZWZv
cmU6ICIiLAogICAgICAgICBwcm9wZXJ0eVZhbHVlQWZ0ZXI6ICJub25lIiwKICAgICB9KTsKICAg
ICBhZGRUZXN0Q2FzZSh7Ci0gICAgICAgIG5hbWU6ICJET01CcmVha3BvaW50cy5BdHRyaWJ1dGVN
b2RpZmllZC5TdHlsZS5SZXBsYWNlU2FtZSIsCisgICAgICAgIG5hbWU6ICJET01CcmVha3BvaW50
LkF0dHJpYnV0ZU1vZGlmaWVkLlN0eWxlLlJlcGxhY2VTYW1lIiwKICAgICAgICAgcHJvcGVydHlO
YW1lOiAiZGlzcGxheSIsCiAgICAgICAgIHByb3BlcnR5VmFsdWVCZWZvcmU6ICJub25lIiwKICAg
ICAgICAgcHJvcGVydHlWYWx1ZUFmdGVyOiAibm9uZSIsCiAgICAgfSk7CiAgICAgYWRkVGVzdENh
c2UoewotICAgICAgICBuYW1lOiAiRE9NQnJlYWtwb2ludHMuQXR0cmlidXRlTW9kaWZpZWQuU3R5
bGUuUmVwbGFjZURpZmZlcmVudCIsCisgICAgICAgIG5hbWU6ICJET01CcmVha3BvaW50LkF0dHJp
YnV0ZU1vZGlmaWVkLlN0eWxlLlJlcGxhY2VEaWZmZXJlbnQiLAogICAgICAgICBwcm9wZXJ0eU5h
bWU6ICJkaXNwbGF5IiwKICAgICAgICAgcHJvcGVydHlWYWx1ZUJlZm9yZTogIm5vbmUiLAogICAg
ICAgICBwcm9wZXJ0eVZhbHVlQWZ0ZXI6ICJibG9jayIsCiAgICAgfSk7CiAgICAgYWRkVGVzdENh
c2UoewotICAgICAgICBuYW1lOiAiRE9NQnJlYWtwb2ludHMuQXR0cmlidXRlTW9kaWZpZWQuU3R5
bGUuUmVtb3ZlIiwKKyAgICAgICAgbmFtZTogIkRPTUJyZWFrcG9pbnQuQXR0cmlidXRlTW9kaWZp
ZWQuU3R5bGUuUmVtb3ZlIiwKICAgICAgICAgcHJvcGVydHlOYW1lOiAiZGlzcGxheSIsCiAgICAg
ICAgIHByb3BlcnR5VmFsdWVCZWZvcmU6ICJibG9jayIsCiAgICAgICAgIHByb3BlcnR5VmFsdWVB
ZnRlcjogIiIsCiAgICAgfSk7CiAKICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Ci0gICAgICAgIG5h
bWU6ICJET01CcmVha3BvaW50cy5BdHRyaWJ1dGVNb2RpZmllZC5TdHlsZS5UZXh0IiwKKyAgICAg
ICAgbmFtZTogIkRPTUJyZWFrcG9pbnQuQXR0cmlidXRlTW9kaWZpZWQuU3R5bGUuVGV4dCIsCiAg
ICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgbm9kZSA9IGF3YWl0IEluc3Bl
Y3RvclRlc3QuRE9NQnJlYWtwb2ludC5hd2FpdFF1ZXJ5U2VsZWN0b3IoIiN0ZXN0Iik7CisgICAg
ICAgICAgICBhd2FpdCBJbnNwZWN0b3JUZXN0LkRPTUJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2lu
dChub2RlLCBXSS5ET01CcmVha3BvaW50LlR5cGUuQXR0cmlidXRlTW9kaWZpZWQpOworCiAgICAg
ICAgICAgICBhd2FpdCBjaGVja1Byb3BlcnR5VmFsdWUoImRpc3BsYXkiLCAiIik7CiAKICAgICAg
ICAgICAgIGxldCBwYXVzZWRQcm9taXNlID0gV0kuZGVidWdnZXJNYW5hZ2VyLmF3YWl0RXZlbnQo
V0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCk7CkBAIC0xMDYsMzcgKzExMywyMSBAQCBm
dW5jdGlvbiB0ZXN0KCkKIAogICAgICAgICAgICAgYXdhaXQgY2hlY2tQcm9wZXJ0eVZhbHVlKCJk
aXNwbGF5IiwgIm5vbmUiKTsKICAgICAgICAgfSwKKyAgICAgICAgdGVhcmRvd246IEluc3BlY3Rv
clRlc3QuRE9NQnJlYWtwb2ludC50ZWFyZG93biwKICAgICB9KTsKIAotICAgIFdJLmRvbU1hbmFn
ZXIucmVxdWVzdERvY3VtZW50KChkb2N1bWVudE5vZGUpID0+IHsKLSAgICAgICAgaWYgKCFkb2N1
bWVudE5vZGUpIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZmFpbCgiTWlzc2luZyBkb2N1
bWVudCBub2RlIik7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgZG9jdW1lbnROb2RlLnF1
ZXJ5U2VsZWN0b3IoIiN0ZXN0IiwgYXN5bmMgKG5vZGVJZCkgPT4gewotICAgICAgICAgICAgbGV0
IHRlc3ROb2RlID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKTsKLSAgICAgICAgICAg
IGlmICghdGVzdE5vZGUpIHsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmZhaWwoIk1p
c3NpbmcgI3Rlc3Qgbm9kZSIpOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxl
dGVUZXN0KCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBsZXQgcHJvbWlzZSA9IFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hd2FpdEV2ZW50KFdJ
LkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudC5ET01CcmVha3BvaW50QWRkZWQpCi0gICAgICAgICAg
ICAudGhlbigoZXZlbnQpID0+IHsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3Mo
IkFkZGVkIGF0dHJpYnV0ZSBtb2RpZmllZCBicmVha3BvaW50IHRvICN0ZXN0LiIpOwotICAgICAg
ICAgICAgfSk7Ci0KLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJBZGRpbmcgYXR0cmli
dXRlIG1vZGlmaWVkIGJyZWFrcG9pbnQgdG8gI3Rlc3QuLi4iKTsKLSAgICAgICAgICAgIFdJLmRv
bURlYnVnZ2VyTWFuYWdlci5hZGRET01CcmVha3BvaW50KG5ldyBXSS5ET01CcmVha3BvaW50KHRl
c3ROb2RlLCBXSS5ET01CcmVha3BvaW50LlR5cGUuQXR0cmlidXRlTW9kaWZpZWQpKTsKLSAgICAg
ICAgICAgIGF3YWl0IHByb21pc2U7Ci0KLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0
KCFXSS5kZWJ1Z2dlck1hbmFnZXIucGF1c2VkLCAiU2hvdWxkIG5vdCBiZSBwYXVzZWQuIik7Ci0K
LSAgICAgICAgICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOwotICAgICAgICB9KTsK
KyAgICBJbnNwZWN0b3JUZXN0LkJyZWFrcG9pbnRPcHRpb25zLmFkZFRlc3RDYXNlcyhzdWl0ZSwg
eworICAgICAgICB0ZXN0Q2FzZU5hbWVQcmVmaXg6ICJTdHlsZS4iLAorICAgICAgICBhc3luYyBj
cmVhdGVCcmVha3BvaW50KCkgeworICAgICAgICAgICAgbGV0IG5vZGUgPSBhd2FpdCBJbnNwZWN0
b3JUZXN0LkRPTUJyZWFrcG9pbnQuYXdhaXRRdWVyeVNlbGVjdG9yKCIjdGVzdCIpOworICAgICAg
ICAgICAgcmV0dXJuIEluc3BlY3RvclRlc3QuRE9NQnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50
KG5vZGUsIFdJLkRPTUJyZWFrcG9pbnQuVHlwZS5BdHRyaWJ1dGVNb2RpZmllZCk7CisgICAgICAg
IH0sCisgICAgICAgIGFzeW5jIHRyaWdnZXJCcmVha3BvaW50KGJyZWFrcG9pbnQpIHsKKyAgICAg
ICAgICAgIHJldHVybiBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGBzZXRQcm9wZXJ0eSgi
LS10ZXN0IiwgTWF0aC5yYW5kb20oKSlgKTsKKyAgICAgICAgfSwKICAgICB9KTsKKworICAgIHN1
aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOwogfQogPC9zY3JpcHQ+CiA8L2hlYWQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2RvbS1icmVha3BvaW50
LWF0dHJpYnV0ZS1tb2RpZmllZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZG9tLWRlYnVnZ2VyL2RvbS1icmVha3BvaW50LWF0dHJpYnV0ZS1tb2RpZmllZC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjg2NGM3NGM5YjI4YjVjOWRiOTZhYjA5MTgwMjg0M2JmYWUzZWE2YQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZG9t
LWJyZWFrcG9pbnQtYXR0cmlidXRlLW1vZGlmaWVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEz
MyBAQAorQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgMQorQ09OU09MRSBN
RVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgMgorQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BP
SU5UIEFDVElPTiBMT0cgMworQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cg
NAorVGVzdHMgZm9yIERPTSBicmVha3BvaW50cy4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6
IERPTUJyZWFrcG9pbnQuQXR0cmlidXRlTW9kaWZpZWQKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBE
T01CcmVha3BvaW50LkF0dHJpYnV0ZU1vZGlmaWVkLkJyZWFrcG9pbnRFbmFibGVkCitBZGRpbmcg
ImF0dHJpYnV0ZS1tb2RpZmllZDoxLEhUTUwsMSxCT0RZLDEsRElWLDAsRElWIiBET00gQnJlYWtw
b2ludC4uLgorUEFVU0VEOgorUEFTUzogUGF1c2UgcmVhc29uIHNob3VsZCBiZSBET00uCitQQVNT
OiBQYXVzZSB0eXBlIHNob3VsZCBiZSAnYXR0cmlidXRlLW1vZGlmaWVkJy4KK1BBU1M6IFBhdXNl
IG5vZGVJZCBzaG91bGQgYmUgZXhwZWN0ZWQgdmFsdWUuCitDQUxMIFNUQUNLOgorMDogW0ZdIHRl
c3RBdHRyaWJ1dGVNb2RpZmllZAorMTogW1BdIEdsb2JhbCBDb2RlCistLSBSdW5uaW5nIHRlc3Qg
dGVhcmRvd24uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01CcmVha3BvaW50LkF0dHJpYnV0
ZU1vZGlmaWVkLkJyZWFrcG9pbnREaXNhYmxlZAorQWRkaW5nICJhdHRyaWJ1dGUtbW9kaWZpZWQ6
MSxIVE1MLDEsQk9EWSwxLERJViwwLERJViIgRE9NIEJyZWFrcG9pbnQuLi4KK0Rpc2FibGluZyBi
cmVha3BvaW50Li4uCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3Qg
cGF1c2UgZm9yIGRpc2FibGVkIGJyZWFrcG9pbnQuCistLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24u
CisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01CcmVha3BvaW50LkF0dHJpYnV0ZU1vZGlmaWVk
LkRlYnVnZ2VyRGlzYWJsZWQKK0FkZGluZyAiYXR0cmlidXRlLW1vZGlmaWVkOjEsSFRNTCwxLEJP
RFksMSxESVYsMCxESVYiIERPTSBCcmVha3BvaW50Li4uCitEaXNhYmxpbmcgYWxsIGJyZWFrcG9p
bnRzLi4uCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK0VuYWJsaW5nIGFsbCBicmVha3BvaW50
cy4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZSB3aGVuIGFsbCBicmVha3BvaW50cyBkaXNhYmxl
ZC4KKy0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERP
TUJyZWFrcG9pbnQuQXR0cmlidXRlTW9kaWZpZWQuUmVtb3ZlQnJlYWtwb2ludAorQWRkaW5nICJh
dHRyaWJ1dGUtbW9kaWZpZWQ6MSxIVE1MLDEsQk9EWSwxLERJViwwLERJViIgRE9NIEJyZWFrcG9p
bnQuLi4KK1JlbW92aW5nIGJyZWFrcG9pbnQuLi4KK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgor
UEFTUzogU2hvdWxkIG5vdCBwYXVzZSBmb3IgcmVtb3ZlZCBicmVha3BvaW50LgorLS0gUnVubmlu
ZyB0ZXN0IHRlYXJkb3duLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NQnJlYWtwb2ludC5B
dHRyaWJ1dGVNb2RpZmllZC5PcHRpb25zLkNvbmRpdGlvbgorQWRkaW5nICJhdHRyaWJ1dGUtbW9k
aWZpZWQ6MSxIVE1MLDEsQk9EWSwxLERJViwwLERJViIgRE9NIEJyZWFrcG9pbnQuLi4KKworU2V0
dGluZyBjb25kaXRpb24gdG8gJ2ZhbHNlJy4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4K
K1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFT
UzogU2hvdWxkIG5vdCBwYXVzZS4KKworU2V0dGluZyBjb25kaXRpb24gdG8gJ3RydWUnLi4uCisK
K1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitUcmlnZ2Vy
aW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworLS0gUnVubmluZyB0ZXN0
IGNhc2U6IERPTUJyZWFrcG9pbnQuQXR0cmlidXRlTW9kaWZpZWQuT3B0aW9ucy5JZ25vcmVDb3Vu
dAorQWRkaW5nICJhdHRyaWJ1dGUtbW9kaWZpZWQ6MSxIVE1MLDEsQk9EWSwxLERJViwwLERJViIg
RE9NIEJyZWFrcG9pbnQuLi4KKworU2V0dGluZyBpZ25vcmVDb3VudCB0byAnMicuLi4KKworVHJp
Z2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitUcmlnZ2Vy
aW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1RyaWdnZXJpbmcg
YnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9p
bnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTUJy
ZWFrcG9pbnQuQXR0cmlidXRlTW9kaWZpZWQuT3B0aW9ucy5BY3Rpb24uTG9nCitBZGRpbmcgImF0
dHJpYnV0ZS1tb2RpZmllZDoxLEhUTUwsMSxCT0RZLDEsRElWLDAsRElWIiBET00gQnJlYWtwb2lu
dC4uLgorCitBZGRpbmcgbG9nIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4K
K1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIHBh
dXNlLgorCitFZGl0aW5nIGxvZyBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4u
CitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBw
YXVzZS4KKworRWRpdGluZyBsb2cgYWN0aW9uLi4uCitFbmFibGluZyBhdXRvLWNvbnRpbnVlLi4u
CisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtw
b2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitFZGl0aW5nIGxvZyBhY3Rp
b24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBi
cmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKKy0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBET01CcmVha3BvaW50LkF0dHJpYnV0ZU1vZGlmaWVkLk9wdGlvbnMuQWN0aW9u
cy5FdmFsdWF0ZQorQWRkaW5nICJhdHRyaWJ1dGUtbW9kaWZpZWQ6MSxIVE1MLDEsQk9EWSwxLERJ
ViwwLERJViIgRE9NIEJyZWFrcG9pbnQuLi4KKworQWRkaW5nIGV2YWx1YXRlIGFjdGlvbi4uLgor
CitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9p
bnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGV2YWx1YXRlIGFjdGlv
bi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJy
ZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGV2YWx1YXRl
IGFjdGlvbi4uLgorRW5hYmxpbmcgYXV0by1jb250aW51ZS4uLgorCitUcmlnZ2VyaW5nIGJyZWFr
cG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzog
U2hvdWxkIG5vdCBwYXVzZS4KKworRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dl
cmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlv
bi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kb20tZGVidWdnZXIvZG9tLWJyZWFrcG9pbnQtYXR0cmlidXRlLW1vZGlmaWVkLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2RvbS1icmVha3BvaW50LWF0
dHJpYnV0ZS1tb2RpZmllZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5ODNlM2FjYWQ3OTFlYWE1ZWQzZWRk
ZmNhZjBiZmIyMDFkNTJiYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZG9tLWRlYnVnZ2VyL2RvbS1icmVha3BvaW50LWF0dHJpYnV0ZS1tb2RpZmllZC5odG1sCkBA
IC0wLDAgKzEsMTU2IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9kZWJ1Z2dlci9yZXNvdXJjZXMvYnJlYWtw
b2ludC1vcHRpb25zLXV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZGVi
dWdnZXIvcmVzb3VyY2VzL2xvZy1hY3RpdmUtc3RhY2stdHJhY2UuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9kb20tYnJlYWtwb2ludC11dGlsaXRpZXMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3RBdHRyaWJ1dGVNb2RpZmllZCgpIHsKKyAgICBsZXQg
bm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhdHRyaWJ1dGUtbW9kaWZpZWQtdGVzdCIp
OworICAgIG5vZGUuZGF0YXNldC5jb3VudCA9IChub2RlLmRhdGFzZXQuY291bnQgfHwgMCkgKyAx
OworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0
LmNyZWF0ZUFzeW5jU3VpdGUoIkRPTUJyZWFrcG9pbnQuQXR0cmlidXRlTW9kaWZpZWQiKTsKKwor
ICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogYERPTUJyZWFrcG9pbnQuQXR0
cmlidXRlTW9kaWZpZWQuQnJlYWtwb2ludEVuYWJsZWRgLAorICAgICAgICBkZXNjcmlwdGlvbjog
IkNoZWNrIHRoYXQgZGVidWdnZXIgcGF1c2VzIGZvciBicmVha3BvaW50IHR5cGUuIiwKKyAgICAg
ICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCBub2RlID0gYXdhaXQgSW5zcGVjdG9y
VGVzdC5ET01CcmVha3BvaW50LmF3YWl0UXVlcnlTZWxlY3RvcigiI2F0dHJpYnV0ZS1tb2RpZmll
ZC10ZXN0Iik7CisKKyAgICAgICAgICAgIGxldCBicmVha3BvaW50ID0gYXdhaXQgSW5zcGVjdG9y
VGVzdC5ET01CcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQobm9kZSwgV0kuRE9NQnJlYWtwb2lu
dC5UeXBlLkF0dHJpYnV0ZU1vZGlmaWVkKTsKKworICAgICAgICAgICAgbGV0IHBhdXNlZCA9IGZh
bHNlOworICAgICAgICAgICAgbGV0IHBhdXNlZExpc3RlbmVyID0gV0kuZGVidWdnZXJNYW5hZ2Vy
LmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50
KSA9PiB7CisgICAgICAgICAgICAgICAgcGF1c2VkID0gdHJ1ZTsKKworICAgICAgICAgICAgICAg
IGxldCB0YXJnZXREYXRhID0gV0kuZGVidWdnZXJNYW5hZ2VyLmRhdGFGb3JUYXJnZXQoV0kuZGVi
dWdnZXJNYW5hZ2VyLmFjdGl2ZUNhbGxGcmFtZS50YXJnZXQpOworICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QubG9nKCJQQVVTRUQ6Iik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RFcXVhbCh0YXJnZXREYXRhLnBhdXNlUmVhc29uLCBXSS5EZWJ1Z2dlck1hbmFnZXIu
UGF1c2VSZWFzb24uRE9NLCAiUGF1c2UgcmVhc29uIHNob3VsZCBiZSBET00uIik7CisKKyAgICAg
ICAgICAgICAgICBsZXQgcGF1c2VEYXRhID0gdGFyZ2V0RGF0YS5wYXVzZURhdGE7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXVzZURhdGEudHlwZSwgYnJlYWtw
b2ludC50eXBlLCBgUGF1c2UgdHlwZSBzaG91bGQgYmUgJyR7YnJlYWtwb2ludC50eXBlfScuYCk7
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXVzZURhdGEubm9k
ZUlkLCBicmVha3BvaW50LmRvbU5vZGVJZGVudGlmaWVyLCAiUGF1c2Ugbm9kZUlkIHNob3VsZCBi
ZSBleHBlY3RlZCB2YWx1ZS4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2Vy
dCghKCJ0YXJnZXROb2RlSWQiIGluIHBhdXNlRGF0YSksICJTaG91bGQgbm90IGhhdmUgJ3Rhcmdl
dE5vZGVJZCcuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoISgiaW5z
ZXJ0aW9uIiBpbiBwYXVzZURhdGEpLCAiU2hvdWxkIG5vdCBoYXZlICdpbnNlcnRpb24nLiIpOwor
CisgICAgICAgICAgICAgICAgbG9nQWN0aXZlU3RhY2tUcmFjZSgpOworICAgICAgICAgICAgICAg
IFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAg
ICAgICBhd2FpdCBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGB0ZXN0QXR0cmlidXRlTW9k
aWZpZWQoKWApOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChwYXVzZWQsICJT
aG91bGQgcGF1c2UuIik7CisgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZl
bnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCBwYXVzZWRMaXN0ZW5l
cik7CisgICAgICAgIH0sCisgICAgICAgIHRlYXJkb3duOiBJbnNwZWN0b3JUZXN0LkRPTUJyZWFr
cG9pbnQudGVhcmRvd24sCisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAg
ICAgIG5hbWU6IGBET01CcmVha3BvaW50LkF0dHJpYnV0ZU1vZGlmaWVkLkJyZWFrcG9pbnREaXNh
YmxlZGAsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBkZWJ1Z2dlciBkb2VzIG5v
dCBwYXVzZSBmb3IgZGlzYWJsZWQgYnJlYWtwb2ludC4iLAorICAgICAgICBhc3luYyB0ZXN0KCkg
eworICAgICAgICAgICAgbGV0IHBhdXNlZCA9IGZhbHNlOworICAgICAgICAgICAgbGV0IHBhdXNl
ZExpc3RlbmVyID0gV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdn
ZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgcGF1
c2VkID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUo
KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBsZXQgbm9kZSA9IGF3YWl0IEluc3Bl
Y3RvclRlc3QuRE9NQnJlYWtwb2ludC5hd2FpdFF1ZXJ5U2VsZWN0b3IoIiNhdHRyaWJ1dGUtbW9k
aWZpZWQtdGVzdCIpOworCisgICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IGF3YWl0IEluc3Bl
Y3RvclRlc3QuRE9NQnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KG5vZGUsIFdJLkRPTUJyZWFr
cG9pbnQuVHlwZS5BdHRyaWJ1dGVNb2RpZmllZCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QubG9nKCJEaXNhYmxpbmcgYnJlYWtwb2ludC4uLiIpOworICAgICAgICAgICAgYnJlYWtwb2lu
dC5kaXNhYmxlZCA9IHRydWU7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJUcmln
Z2VyaW5nIGJyZWFrcG9pbnQuLi4iKTsKKyAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3Qu
ZXZhbHVhdGVJblBhZ2UoYHRlc3RBdHRyaWJ1dGVNb2RpZmllZCgpYCk7CisKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0RmFsc2UocGF1c2VkLCAiU2hvdWxkIG5vdCBwYXVzZSBmb3Ig
ZGlzYWJsZWQgYnJlYWtwb2ludC4iKTsKKyAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5y
ZW1vdmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIHBhdXNl
ZExpc3RlbmVyKTsKKyAgICAgICAgfSwKKyAgICAgICAgdGVhcmRvd246IEluc3BlY3RvclRlc3Qu
RE9NQnJlYWtwb2ludC50ZWFyZG93biwKKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNl
KHsKKyAgICAgICAgbmFtZTogYERPTUJyZWFrcG9pbnQuQXR0cmlidXRlTW9kaWZpZWQuRGVidWdn
ZXJEaXNhYmxlZGAsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBkZWJ1Z2dlciBk
b2VzIG5vdCBwYXVzZSB3aGVuIHRoZSBkZWJ1Z2dlciBpcyBkaXNhYmxlZC4iLAorICAgICAgICBh
c3luYyB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IHBhdXNlZCA9IGZhbHNlOworICAgICAgICAg
ICAgbGV0IHBhdXNlZExpc3RlbmVyID0gV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVu
ZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7CisgICAgICAg
ICAgICAgICAgcGF1c2VkID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFu
YWdlci5yZXN1bWUoKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBsZXQgbm9kZSA9
IGF3YWl0IEluc3BlY3RvclRlc3QuRE9NQnJlYWtwb2ludC5hd2FpdFF1ZXJ5U2VsZWN0b3IoIiNh
dHRyaWJ1dGUtbW9kaWZpZWQtdGVzdCIpOworCisgICAgICAgICAgICBhd2FpdCBJbnNwZWN0b3JU
ZXN0LkRPTUJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludChub2RlLCBXSS5ET01CcmVha3BvaW50
LlR5cGUuQXR0cmlidXRlTW9kaWZpZWQpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lmxv
ZygiRGlzYWJsaW5nIGFsbCBicmVha3BvaW50cy4uLiIpOworICAgICAgICAgICAgYXdhaXQgRGVi
dWdnZXJBZ2VudC5zZXRCcmVha3BvaW50c0FjdGl2ZShmYWxzZSk7CisKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QubG9nKCJUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4iKTsKKyAgICAgICAgICAg
IGF3YWl0IEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYHRlc3RBdHRyaWJ1dGVNb2RpZmll
ZCgpYCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJFbmFibGluZyBhbGwgYnJl
YWtwb2ludHMuLi4iKTsKKyAgICAgICAgICAgIGF3YWl0IERlYnVnZ2VyQWdlbnQuc2V0QnJlYWtw
b2ludHNBY3RpdmUodHJ1ZSk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RmFs
c2UocGF1c2VkLCAiU2hvdWxkIG5vdCBwYXVzZSB3aGVuIGFsbCBicmVha3BvaW50cyBkaXNhYmxl
ZC4iKTsKKyAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVy
KFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIHBhdXNlZExpc3RlbmVyKTsKKyAgICAg
ICAgfSwKKyAgICAgICAgdGVhcmRvd246IEluc3BlY3RvclRlc3QuRE9NQnJlYWtwb2ludC50ZWFy
ZG93biwKKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTog
YERPTUJyZWFrcG9pbnQuQXR0cmlidXRlTW9kaWZpZWQuUmVtb3ZlQnJlYWtwb2ludGAsCisgICAg
ICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBkZWJ1Z2dlciBkb2VzIG5vdCBwYXVzZSBmb3Ig
cmVtb3ZlZCBicmVha3BvaW50LiIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAg
ICBsZXQgcGF1c2VkID0gZmFsc2U7CisgICAgICAgICAgICBsZXQgcGF1c2VkTGlzdGVuZXIgPSBX
SS5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZl
bnQuUGF1c2VkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBwYXVzZWQgPSB0cnVlOwor
CisgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgpOworICAgICAgICAg
ICAgfSk7CisKKyAgICAgICAgICAgIGxldCBub2RlID0gYXdhaXQgSW5zcGVjdG9yVGVzdC5ET01C
cmVha3BvaW50LmF3YWl0UXVlcnlTZWxlY3RvcigiI2F0dHJpYnV0ZS1tb2RpZmllZC10ZXN0Iik7
CisKKyAgICAgICAgICAgIGxldCBicmVha3BvaW50ID0gYXdhaXQgSW5zcGVjdG9yVGVzdC5ET01C
cmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQobm9kZSwgV0kuRE9NQnJlYWtwb2ludC5UeXBlLkF0
dHJpYnV0ZU1vZGlmaWVkKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlJlbW92
aW5nIGJyZWFrcG9pbnQuLi4iKTsKKyAgICAgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5y
ZW1vdmVET01CcmVha3BvaW50KGJyZWFrcG9pbnQpOworCisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmxvZygiVHJpZ2dlcmluZyBicmVha3BvaW50Li4uIik7CisgICAgICAgICAgICBhd2FpdCBJ
bnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGB0ZXN0QXR0cmlidXRlTW9kaWZpZWQoKWApOwor
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNlKHBhdXNlZCwgIlNob3VsZCBu
b3QgcGF1c2UgZm9yIHJlbW92ZWQgYnJlYWtwb2ludC4iKTsKKyAgICAgICAgICAgIFdJLmRlYnVn
Z2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5Q
YXVzZWQsIHBhdXNlZExpc3RlbmVyKTsKKyAgICAgICAgfSwKKyAgICAgICAgdGVhcmRvd246IElu
c3BlY3RvclRlc3QuRE9NQnJlYWtwb2ludC50ZWFyZG93biwKKyAgICB9KTsKKworICAgIEluc3Bl
Y3RvclRlc3QuQnJlYWtwb2ludE9wdGlvbnMuYWRkVGVzdENhc2VzKHN1aXRlLCB7CisgICAgICAg
IGFzeW5jIGNyZWF0ZUJyZWFrcG9pbnQoKSB7CisgICAgICAgICAgICBsZXQgbm9kZSA9IGF3YWl0
IEluc3BlY3RvclRlc3QuRE9NQnJlYWtwb2ludC5hd2FpdFF1ZXJ5U2VsZWN0b3IoIiNhdHRyaWJ1
dGUtbW9kaWZpZWQtdGVzdCIpOworICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvclRlc3QuRE9N
QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KG5vZGUsIFdJLkRPTUJyZWFrcG9pbnQuVHlwZS5B
dHRyaWJ1dGVNb2RpZmllZCk7CisgICAgICAgIH0sCisgICAgICAgIGFzeW5jIHRyaWdnZXJCcmVh
a3BvaW50KGJyZWFrcG9pbnQpIHsKKyAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JUZXN0LmV2
YWx1YXRlSW5QYWdlKGB0ZXN0QXR0cmlidXRlTW9kaWZpZWQoKWApOworICAgICAgICB9LAorICAg
IH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3RzIGZvciBET00gYnJl
YWtwb2ludHMuPC9wPgorPGRpdiBpZD0idGVzdC1jb250YWluZXIiIHN0eWxlPSJkaXNwbGF5OiBu
b25lIj4KKyAgICA8ZGl2IGlkPSJhdHRyaWJ1dGUtbW9kaWZpZWQtdGVzdCI+PC9kaXY+Cis8L2Rp
dj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
b20tZGVidWdnZXIvZG9tLWJyZWFrcG9pbnQtbm9kZS1yZW1vdmVkLWFuY2VzdG9yLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZG9tLWJyZWFrcG9pbnQt
bm9kZS1yZW1vdmVkLWFuY2VzdG9yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZjU4Y2IyNDNk
MTE5NTVhZDMyYTFjZTVjY2JlZjJlNzBlOTViNGI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9kb20tYnJlYWtwb2ludC1ub2RlLXJlbW92ZWQt
YW5jZXN0b3ItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTE3IEBACitDT05TT0xFIE1FU1NBR0U6
IEJSRUFLUE9JTlQgQUNUSU9OIExPRyAxCitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNU
SU9OIExPRyAyCitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyAzCitDT05T
T0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyA0CitUZXN0cyBmb3IgRE9NIGJyZWFr
cG9pbnRzLgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogRE9NQnJlYWtwb2ludC5Ob2RlUmVt
b3ZlZAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTUJyZWFrcG9pbnQuTm9kZVJlbW92ZWQuQW5j
ZXN0b3IuQnJlYWtwb2ludEVuYWJsZWQKK0FkZGluZyAibm9kZS1yZW1vdmVkOjEsSFRNTCwxLEJP
RFksMSxESVYsMCxESVYsMCxESVYiIERPTSBCcmVha3BvaW50Li4uCitQQVVTRUQ6CitQQVNTOiBQ
YXVzZSByZWFzb24gc2hvdWxkIGJlIERPTS4KK1BBU1M6IFBhdXNlIHR5cGUgc2hvdWxkIGJlICdu
b2RlLXJlbW92ZWQnLgorUEFTUzogUGF1c2Ugbm9kZUlkIHNob3VsZCBiZSBleHBlY3RlZCB2YWx1
ZS4KK1BBU1M6IFBhdXNlIHRhcmdldE5vZGVJZCBzaG91bGQgYmUgZXhwZWN0ZWQgdmFsdWUuCitD
QUxMIFNUQUNLOgorMDogW0ZdIHRlc3ROb2RlUmVtb3ZlZEFuY2VzdG9yCisxOiBbUF0gR2xvYmFs
IENvZGUKKy0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6
IERPTUJyZWFrcG9pbnQuTm9kZVJlbW92ZWQuQW5jZXN0b3IuQnJlYWtwb2ludERpc2FibGVkCitB
ZGRpbmcgIm5vZGUtcmVtb3ZlZDoxLEhUTUwsMSxCT0RZLDEsRElWLDAsRElWLDAsRElWIiBET00g
QnJlYWtwb2ludC4uLgorRGlzYWJsaW5nIGJyZWFrcG9pbnQuLi4KK1RyaWdnZXJpbmcgYnJlYWtw
b2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZSBmb3IgZGlzYWJsZWQgYnJlYWtwb2ludC4K
Ky0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTUJy
ZWFrcG9pbnQuTm9kZVJlbW92ZWQuQW5jZXN0b3IuRGVidWdnZXJEaXNhYmxlZAorQWRkaW5nICJu
b2RlLXJlbW92ZWQ6MSxIVE1MLDEsQk9EWSwxLERJViwwLERJViwwLERJViIgRE9NIEJyZWFrcG9p
bnQuLi4KK0Rpc2FibGluZyBhbGwgYnJlYWtwb2ludHMuLi4KK1RyaWdnZXJpbmcgYnJlYWtwb2lu
dC4uLgorRW5hYmxpbmcgYWxsIGJyZWFrcG9pbnRzLi4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNl
IHdoZW4gYWxsIGJyZWFrcG9pbnRzIGRpc2FibGVkLgorLS0gUnVubmluZyB0ZXN0IHRlYXJkb3du
LgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NQnJlYWtwb2ludC5Ob2RlUmVtb3ZlZC5BbmNl
c3Rvci5SZW1vdmVCcmVha3BvaW50CitBZGRpbmcgIm5vZGUtcmVtb3ZlZDoxLEhUTUwsMSxCT0RZ
LDEsRElWLDAsRElWLDAsRElWIiBET00gQnJlYWtwb2ludC4uLgorUmVtb3ZpbmcgYnJlYWtwb2lu
dC4uLgorVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlIGZv
ciByZW1vdmVkIGJyZWFrcG9pbnQuCistLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCisKKy0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBET01CcmVha3BvaW50Lk5vZGVSZW1vdmVkLkFuY2VzdG9yLk9wdGlv
bnMuQ29uZGl0aW9uCitBZGRpbmcgIm5vZGUtcmVtb3ZlZDoxLEhUTUwsMSxCT0RZLDEsRElWLDAs
RElWLDAsRElWIiBET00gQnJlYWtwb2ludC4uLgorCitTZXR0aW5nIGNvbmRpdGlvbiB0byAnZmFs
c2UnLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVz
ZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgor
CitTZXR0aW5nIGNvbmRpdGlvbiB0byAndHJ1ZScuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50
Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFT
UzogU2hvdWxkIHBhdXNlLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NQnJlYWtwb2ludC5O
b2RlUmVtb3ZlZC5BbmNlc3Rvci5PcHRpb25zLkFjdGlvbi5Mb2cKK0FkZGluZyAibm9kZS1yZW1v
dmVkOjEsSFRNTCwxLEJPRFksMSxESVYsMCxESVYsMCxESVYiIERPTSBCcmVha3BvaW50Li4uCisK
K0FkZGluZyBsb2cgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzog
U2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisK
K0VkaXRpbmcgbG9nIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6
IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIHBhdXNlLgor
CitFZGl0aW5nIGxvZyBhY3Rpb24uLi4KK0VuYWJsaW5nIGF1dG8tY29udGludWUuLi4KKworVHJp
Z2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFj
dGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK0VkaXRpbmcgbG9nIGFjdGlvbi4uLgor
CitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9p
bnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworLS0gUnVubmluZyB0ZXN0IGNh
c2U6IERPTUJyZWFrcG9pbnQuTm9kZVJlbW92ZWQuQW5jZXN0b3IuT3B0aW9ucy5BY3Rpb25zLkV2
YWx1YXRlCitBZGRpbmcgIm5vZGUtcmVtb3ZlZDoxLEhUTUwsMSxCT0RZLDEsRElWLDAsRElWLDAs
RElWIiBET00gQnJlYWtwb2ludC4uLgorCitBZGRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCisKK1Ry
aWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBh
Y3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4u
CisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtw
b2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcgZXZhbHVhdGUgYWN0
aW9uLi4uCitFbmFibGluZyBhdXRvLWNvbnRpbnVlLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2lu
dC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91
bGQgbm90IHBhdXNlLgorCitFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5n
IGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgor
UEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RvbS1kZWJ1Z2dlci9kb20tYnJlYWtwb2ludC1ub2RlLXJlbW92ZWQtYW5jZXN0b3IuaHRt
bCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZG9tLWJyZWFrcG9pbnQtbm9k
ZS1yZW1vdmVkLWFuY2VzdG9yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGMyNTU3NmZhNzA2MGFmMzZjNzQ3
MWIzNjIwNTQzYmMyYTI4ZjI1ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kb20tZGVidWdnZXIvZG9tLWJyZWFrcG9pbnQtbm9kZS1yZW1vdmVkLWFuY2VzdG9yLmh0
bWwKQEAgLTAsMCArMSwxNzcgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9y
LXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2RlYnVnZ2VyL3Jlc291cmNlcy9i
cmVha3BvaW50LW9wdGlvbnMtdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9kZWJ1Z2dlci9yZXNvdXJjZXMvbG9nLWFjdGl2ZS1zdGFjay10cmFjZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RvbS1icmVha3BvaW50LXV0aWxpdGllcy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdE5vZGVSZW1vdmVkQW5jZXN0b3IoKSB7Cisg
ICAgbGV0IG5vZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibm9kZS1yZW1vdmVkLWFuY2Vz
dG9yLXRlc3QiKTsKKyAgICBsZXQgcGFyZW50ID0gbm9kZS5wYXJlbnROb2RlOworICAgIGxldCBn
cmFuZHBhcmVudCA9IHBhcmVudC5wYXJlbnROb2RlOworICAgIHBhcmVudC5yZW1vdmUoKTsKKyAg
ICBncmFuZHBhcmVudC5hcHBlbmRDaGlsZChwYXJlbnQpOworfQorCitmdW5jdGlvbiB0ZXN0KCkK
K3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIkRPTUJy
ZWFrcG9pbnQuTm9kZVJlbW92ZWQiKTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAg
ICAgbmFtZTogYERPTUJyZWFrcG9pbnQuTm9kZVJlbW92ZWQuQW5jZXN0b3IuQnJlYWtwb2ludEVu
YWJsZWRgLAorICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgZGVidWdnZXIgcGF1c2Vz
IGZvciBicmVha3BvaW50IHR5cGUuIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAg
ICAgIGxldCBub2RlID0gYXdhaXQgSW5zcGVjdG9yVGVzdC5ET01CcmVha3BvaW50LmF3YWl0UXVl
cnlTZWxlY3RvcigiI25vZGUtcmVtb3ZlZC1hbmNlc3Rvci10ZXN0Iik7CisKKyAgICAgICAgICAg
IGxldCBicmVha3BvaW50ID0gYXdhaXQgSW5zcGVjdG9yVGVzdC5ET01CcmVha3BvaW50LmNyZWF0
ZUJyZWFrcG9pbnQobm9kZSwgV0kuRE9NQnJlYWtwb2ludC5UeXBlLk5vZGVSZW1vdmVkKTsKKwor
ICAgICAgICAgICAgbGV0IHBhdXNlZCA9IGZhbHNlOworICAgICAgICAgICAgbGV0IHBhdXNlZExp
c3RlbmVyID0gV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJN
YW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgcGF1c2Vk
ID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIGxldCB0YXJnZXREYXRhID0gV0kuZGVidWdnZXJN
YW5hZ2VyLmRhdGFGb3JUYXJnZXQoV0kuZGVidWdnZXJNYW5hZ2VyLmFjdGl2ZUNhbGxGcmFtZS50
YXJnZXQpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJQQVVTRUQ6Iik7Cisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbCh0YXJnZXREYXRhLnBhdXNl
UmVhc29uLCBXSS5EZWJ1Z2dlck1hbmFnZXIuUGF1c2VSZWFzb24uRE9NLCAiUGF1c2UgcmVhc29u
IHNob3VsZCBiZSBET00uIik7CisKKyAgICAgICAgICAgICAgICBsZXQgcGF1c2VEYXRhID0gdGFy
Z2V0RGF0YS5wYXVzZURhdGE7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RF
cXVhbChwYXVzZURhdGEudHlwZSwgYnJlYWtwb2ludC50eXBlLCBgUGF1c2UgdHlwZSBzaG91bGQg
YmUgJyR7YnJlYWtwb2ludC50eXBlfScuYCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RFcXVhbChwYXVzZURhdGEubm9kZUlkLCBicmVha3BvaW50LmRvbU5vZGVJZGVudGlm
aWVyLCAiUGF1c2Ugbm9kZUlkIHNob3VsZCBiZSBleHBlY3RlZCB2YWx1ZS4iKTsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHBhdXNlRGF0YS50YXJnZXROb2RlSWQs
IG5vZGUucGFyZW50Tm9kZS5pZCwgIlBhdXNlIHRhcmdldE5vZGVJZCBzaG91bGQgYmUgZXhwZWN0
ZWQgdmFsdWUuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoISgiaW5z
ZXJ0aW9uIiBpbiBwYXVzZURhdGEpLCAiU2hvdWxkIG5vdCBoYXZlICdpbnNlcnRpb24nLiIpOwor
CisgICAgICAgICAgICAgICAgbG9nQWN0aXZlU3RhY2tUcmFjZSgpOworICAgICAgICAgICAgICAg
IFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAg
ICAgICBhd2FpdCBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGB0ZXN0Tm9kZVJlbW92ZWRB
bmNlc3RvcigpYCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KCFicmVha3Bv
aW50LmRvbU5vZGVJZGVudGlmaWVyLCAiU2hvdWxkIG5vdCBoYXZlIGRvbU5vZGVJZGVudGlmaWVy
LiIpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChwYXVzZWQsICJTaG91bGQg
cGF1c2UuIik7CisgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0
ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCBwYXVzZWRMaXN0ZW5lcik7Cisg
ICAgICAgIH0sCisgICAgICAgIHRlYXJkb3duOiBJbnNwZWN0b3JUZXN0LkRPTUJyZWFrcG9pbnQu
dGVhcmRvd24sCisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5h
bWU6IGBET01CcmVha3BvaW50Lk5vZGVSZW1vdmVkLkFuY2VzdG9yLkJyZWFrcG9pbnREaXNhYmxl
ZGAsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBkZWJ1Z2dlciBkb2VzIG5vdCBw
YXVzZSBmb3IgZGlzYWJsZWQgYnJlYWtwb2ludC4iLAorICAgICAgICBhc3luYyB0ZXN0KCkgewor
ICAgICAgICAgICAgbGV0IHBhdXNlZCA9IGZhbHNlOworICAgICAgICAgICAgbGV0IHBhdXNlZExp
c3RlbmVyID0gV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJN
YW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgcGF1c2Vk
ID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKTsK
KyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBsZXQgbm9kZSA9IGF3YWl0IEluc3BlY3Rv
clRlc3QuRE9NQnJlYWtwb2ludC5hd2FpdFF1ZXJ5U2VsZWN0b3IoIiNub2RlLXJlbW92ZWQtYW5j
ZXN0b3ItdGVzdCIpOworCisgICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IGF3YWl0IEluc3Bl
Y3RvclRlc3QuRE9NQnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KG5vZGUsIFdJLkRPTUJyZWFr
cG9pbnQuVHlwZS5Ob2RlUmVtb3ZlZCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9n
KCJEaXNhYmxpbmcgYnJlYWtwb2ludC4uLiIpOworICAgICAgICAgICAgYnJlYWtwb2ludC5kaXNh
YmxlZCA9IHRydWU7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KGJyZWFrcG9p
bnQuZG9tTm9kZUlkZW50aWZpZXIsICJTaG91bGQgaGF2ZSBkb21Ob2RlSWRlbnRpZmllci4iKTsK
KworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlRyaWdnZXJpbmcgYnJlYWtwb2ludC4u
LiIpOworICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgdGVz
dE5vZGVSZW1vdmVkQW5jZXN0b3IoKWApOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydCghYnJlYWtwb2ludC5kb21Ob2RlSWRlbnRpZmllciwgIlNob3VsZCBub3QgaGF2ZSBkb21O
b2RlSWRlbnRpZmllci4iKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxz
ZShwYXVzZWQsICJTaG91bGQgbm90IHBhdXNlIGZvciBkaXNhYmxlZCBicmVha3BvaW50LiIpOwor
ICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuRGVi
dWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgcGF1c2VkTGlzdGVuZXIpOworICAgICAgICB9LAor
ICAgICAgICB0ZWFyZG93bjogSW5zcGVjdG9yVGVzdC5ET01CcmVha3BvaW50LnRlYXJkb3duLAor
ICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiBgRE9NQnJl
YWtwb2ludC5Ob2RlUmVtb3ZlZC5BbmNlc3Rvci5EZWJ1Z2dlckRpc2FibGVkYCwKKyAgICAgICAg
ZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IGRlYnVnZ2VyIGRvZXMgbm90IHBhdXNlIHdoZW4gdGhl
IGRlYnVnZ2VyIGlzIGRpc2FibGVkLiIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAg
ICAgICBsZXQgcGF1c2VkID0gZmFsc2U7CisgICAgICAgICAgICBsZXQgcGF1c2VkTGlzdGVuZXIg
PSBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIu
RXZlbnQuUGF1c2VkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBwYXVzZWQgPSB0cnVl
OworCisgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgpOworICAgICAg
ICAgICAgfSk7CisKKyAgICAgICAgICAgIGxldCBub2RlID0gYXdhaXQgSW5zcGVjdG9yVGVzdC5E
T01CcmVha3BvaW50LmF3YWl0UXVlcnlTZWxlY3RvcigiI25vZGUtcmVtb3ZlZC1hbmNlc3Rvci10
ZXN0Iik7CisKKyAgICAgICAgICAgIGxldCBicmVha3BvaW50ID0gYXdhaXQgSW5zcGVjdG9yVGVz
dC5ET01CcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQobm9kZSwgV0kuRE9NQnJlYWtwb2ludC5U
eXBlLk5vZGVSZW1vdmVkKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkRpc2Fi
bGluZyBhbGwgYnJlYWtwb2ludHMuLi4iKTsKKyAgICAgICAgICAgIGF3YWl0IERlYnVnZ2VyQWdl
bnQuc2V0QnJlYWtwb2ludHNBY3RpdmUoZmFsc2UpOworCisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmxvZygiVHJpZ2dlcmluZyBicmVha3BvaW50Li4uIik7CisgICAgICAgICAgICBhd2FpdCBJ
bnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGB0ZXN0Tm9kZVJlbW92ZWRBbmNlc3RvcigpYCk7
CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KCFicmVha3BvaW50LmRvbU5vZGVJ
ZGVudGlmaWVyLCAiU2hvdWxkIG5vdCBoYXZlIGRvbU5vZGVJZGVudGlmaWVyLiIpOworCisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiRW5hYmxpbmcgYWxsIGJyZWFrcG9pbnRzLi4uIik7
CisgICAgICAgICAgICBhd2FpdCBEZWJ1Z2dlckFnZW50LnNldEJyZWFrcG9pbnRzQWN0aXZlKHRy
dWUpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNlKHBhdXNlZCwgIlNo
b3VsZCBub3QgcGF1c2Ugd2hlbiBhbGwgYnJlYWtwb2ludHMgZGlzYWJsZWQuIik7CisgICAgICAg
ICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1h
bmFnZXIuRXZlbnQuUGF1c2VkLCBwYXVzZWRMaXN0ZW5lcik7CisgICAgICAgIH0sCisgICAgICAg
IHRlYXJkb3duOiBJbnNwZWN0b3JUZXN0LkRPTUJyZWFrcG9pbnQudGVhcmRvd24sCisgICAgfSk7
CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6IGBET01CcmVha3BvaW50
Lk5vZGVSZW1vdmVkLkFuY2VzdG9yLlJlbW92ZUJyZWFrcG9pbnRgLAorICAgICAgICBkZXNjcmlw
dGlvbjogIkNoZWNrIHRoYXQgZGVidWdnZXIgZG9lcyBub3QgcGF1c2UgZm9yIHJlbW92ZWQgYnJl
YWtwb2ludC4iLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IHBhdXNl
ZCA9IGZhbHNlOworICAgICAgICAgICAgbGV0IHBhdXNlZExpc3RlbmVyID0gV0kuZGVidWdnZXJN
YW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwg
KGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgcGF1c2VkID0gdHJ1ZTsKKworICAgICAgICAg
ICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKTsKKyAgICAgICAgICAgIH0pOworCisg
ICAgICAgICAgICBsZXQgbm9kZSA9IGF3YWl0IEluc3BlY3RvclRlc3QuRE9NQnJlYWtwb2ludC5h
d2FpdFF1ZXJ5U2VsZWN0b3IoIiNub2RlLXJlbW92ZWQtYW5jZXN0b3ItdGVzdCIpOworCisgICAg
ICAgICAgICBsZXQgYnJlYWtwb2ludCA9IGF3YWl0IEluc3BlY3RvclRlc3QuRE9NQnJlYWtwb2lu
dC5jcmVhdGVCcmVha3BvaW50KG5vZGUsIFdJLkRPTUJyZWFrcG9pbnQuVHlwZS5Ob2RlUmVtb3Zl
ZCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJSZW1vdmluZyBicmVha3BvaW50
Li4uIik7CisgICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRE9NQnJlYWtw
b2ludChicmVha3BvaW50KTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoIWJy
ZWFrcG9pbnQuZG9tTm9kZUlkZW50aWZpZXIsICJTaG91bGQgbm90IGhhdmUgZG9tTm9kZUlkZW50
aWZpZXIuIik7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJUcmlnZ2VyaW5nIGJy
ZWFrcG9pbnQuLi4iKTsKKyAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QuZXZhbHVhdGVJ
blBhZ2UoYHRlc3ROb2RlUmVtb3ZlZEFuY2VzdG9yKClgKTsKKworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hc3NlcnQoIWJyZWFrcG9pbnQuZG9tTm9kZUlkZW50aWZpZXIsICJTaG91bGQgbm90
IGhhdmUgZG9tTm9kZUlkZW50aWZpZXIuIik7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0RmFsc2UocGF1c2VkLCAiU2hvdWxkIG5vdCBwYXVzZSBmb3IgcmVtb3ZlZCBicmVha3Bv
aW50LiIpOworICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVu
ZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgcGF1c2VkTGlzdGVuZXIpOworICAg
ICAgICB9LAorICAgICAgICB0ZWFyZG93bjogSW5zcGVjdG9yVGVzdC5ET01CcmVha3BvaW50LnRl
YXJkb3duLAorICAgIH0pOworCisgICAgSW5zcGVjdG9yVGVzdC5CcmVha3BvaW50T3B0aW9ucy5h
ZGRUZXN0Q2FzZXMoc3VpdGUsIHsKKyAgICAgICAgdGVzdENhc2VOYW1lUHJlZml4OiAiQW5jZXN0
b3IuIiwKKyAgICAgICAgYXN5bmMgY3JlYXRlQnJlYWtwb2ludCgpIHsKKyAgICAgICAgICAgIGxl
dCBub2RlID0gYXdhaXQgSW5zcGVjdG9yVGVzdC5ET01CcmVha3BvaW50LmF3YWl0UXVlcnlTZWxl
Y3RvcigiI25vZGUtcmVtb3ZlZC1hbmNlc3Rvci10ZXN0Iik7CisgICAgICAgICAgICByZXR1cm4g
SW5zcGVjdG9yVGVzdC5ET01CcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQobm9kZSwgV0kuRE9N
QnJlYWtwb2ludC5UeXBlLk5vZGVSZW1vdmVkKTsKKyAgICAgICAgfSwKKyAgICAgICAgYXN5bmMg
dHJpZ2dlckJyZWFrcG9pbnQoYnJlYWtwb2ludCkgeworICAgICAgICAgICAgYXdhaXQgSW5zcGVj
dG9yVGVzdC5ET01CcmVha3BvaW50LmF3YWl0UXVlcnlTZWxlY3RvcigiI25vZGUtcmVtb3ZlZC1h
bmNlc3Rvci10ZXN0Iik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChicmVha3Bv
aW50LmRvbU5vZGVJZGVudGlmaWVyLCAiU2hvdWxkIGhhdmUgZG9tTm9kZUlkZW50aWZpZXIuIik7
CisgICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgdGVzdE5v
ZGVSZW1vdmVkQW5jZXN0b3IoKWApOworICAgICAgICB9LAorICAgICAgICBza2lwOiB7CisgICAg
ICAgICAgICBpZ25vcmVDb3VudDogdHJ1ZSwKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIHN1
aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0cyBmb3IgRE9NIGJyZWFrcG9pbnRzLjwvcD4K
KzxkaXYgaWQ9InRlc3QtY29udGFpbmVyIiBzdHlsZT0iZGlzcGxheTogbm9uZSI+CisgICAgPGRp
dj48ZGl2IGlkPSJub2RlLXJlbW92ZWQtYW5jZXN0b3ItdGVzdCI+PC9kaXY+PC9kaXY+Cis8L2Rp
dj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
b20tZGVidWdnZXIvZG9tLWJyZWFrcG9pbnQtbm9kZS1yZW1vdmVkLWRpcmVjdC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2RvbS1icmVha3BvaW50LW5v
ZGUtcmVtb3ZlZC1kaXJlY3QtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiMzJhZDcyZTczMWMx
ZTE0NjIzODJjMjgzNjAzYWM4YzU4ODNhN2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2RvbS1icmVha3BvaW50LW5vZGUtcmVtb3ZlZC1kaXJl
Y3QtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTE2IEBACitDT05TT0xFIE1FU1NBR0U6IEJSRUFL
UE9JTlQgQUNUSU9OIExPRyAxCitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExP
RyAyCitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyAzCitDT05TT0xFIE1F
U1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyA0CitUZXN0cyBmb3IgRE9NIGJyZWFrcG9pbnRz
LgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogRE9NQnJlYWtwb2ludC5Ob2RlUmVtb3ZlZAor
LS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTUJyZWFrcG9pbnQuTm9kZVJlbW92ZWQuRGlyZWN0LkJy
ZWFrcG9pbnRFbmFibGVkCitBZGRpbmcgIm5vZGUtcmVtb3ZlZDoxLEhUTUwsMSxCT0RZLDEsRElW
LDAsRElWIiBET00gQnJlYWtwb2ludC4uLgorUEFVU0VEOgorUEFTUzogUGF1c2UgcmVhc29uIHNo
b3VsZCBiZSBET00uCitQQVNTOiBQYXVzZSB0eXBlIHNob3VsZCBiZSAnbm9kZS1yZW1vdmVkJy4K
K1BBU1M6IFBhdXNlIG5vZGVJZCBzaG91bGQgYmUgZXhwZWN0ZWQgdmFsdWUuCitDQUxMIFNUQUNL
OgorMDogW0ZdIHRlc3ROb2RlUmVtb3ZlZERpcmVjdAorMTogW1BdIEdsb2JhbCBDb2RlCistLSBS
dW5uaW5nIHRlc3QgdGVhcmRvd24uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01CcmVha3Bv
aW50Lk5vZGVSZW1vdmVkLkRpcmVjdC5CcmVha3BvaW50RGlzYWJsZWQKK0FkZGluZyAibm9kZS1y
ZW1vdmVkOjEsSFRNTCwxLEJPRFksMSxESVYsMCxESVYiIERPTSBCcmVha3BvaW50Li4uCitEaXNh
YmxpbmcgYnJlYWtwb2ludC4uLgorVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91
bGQgbm90IHBhdXNlIGZvciBkaXNhYmxlZCBicmVha3BvaW50LgorLS0gUnVubmluZyB0ZXN0IHRl
YXJkb3duLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NQnJlYWtwb2ludC5Ob2RlUmVtb3Zl
ZC5EaXJlY3QuRGVidWdnZXJEaXNhYmxlZAorQWRkaW5nICJub2RlLXJlbW92ZWQ6MSxIVE1MLDEs
Qk9EWSwxLERJViwwLERJViIgRE9NIEJyZWFrcG9pbnQuLi4KK0Rpc2FibGluZyBhbGwgYnJlYWtw
b2ludHMuLi4KK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorRW5hYmxpbmcgYWxsIGJyZWFrcG9p
bnRzLi4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlIHdoZW4gYWxsIGJyZWFrcG9pbnRzIGRpc2Fi
bGVkLgorLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTog
RE9NQnJlYWtwb2ludC5Ob2RlUmVtb3ZlZC5EaXJlY3QuUmVtb3ZlQnJlYWtwb2ludAorQWRkaW5n
ICJub2RlLXJlbW92ZWQ6MSxIVE1MLDEsQk9EWSwxLERJViwwLERJViIgRE9NIEJyZWFrcG9pbnQu
Li4KK1JlbW92aW5nIGJyZWFrcG9pbnQuLi4KK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFT
UzogU2hvdWxkIG5vdCBwYXVzZSBmb3IgcmVtb3ZlZCBicmVha3BvaW50LgorLS0gUnVubmluZyB0
ZXN0IHRlYXJkb3duLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NQnJlYWtwb2ludC5Ob2Rl
UmVtb3ZlZC5EaXJlY3QuT3B0aW9ucy5Db25kaXRpb24KK0FkZGluZyAibm9kZS1yZW1vdmVkOjEs
SFRNTCwxLEJPRFksMSxESVYsMCxESVYiIERPTSBCcmVha3BvaW50Li4uCisKK1NldHRpbmcgY29u
ZGl0aW9uIHRvICdmYWxzZScuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBT
aG91bGQgbm90IHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3Vs
ZCBub3QgcGF1c2UuCisKK1NldHRpbmcgY29uZGl0aW9uIHRvICd0cnVlJy4uLgorCitUcmlnZ2Vy
aW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVh
a3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBE
T01CcmVha3BvaW50Lk5vZGVSZW1vdmVkLkRpcmVjdC5PcHRpb25zLkFjdGlvbi5Mb2cKK0FkZGlu
ZyAibm9kZS1yZW1vdmVkOjEsSFRNTCwxLEJPRFksMSxESVYsMCxESVYiIERPTSBCcmVha3BvaW50
Li4uCisKK0FkZGluZyBsb2cgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgor
UEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1
c2UuCisKK0VkaXRpbmcgbG9nIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4K
K1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIHBh
dXNlLgorCitFZGl0aW5nIGxvZyBhY3Rpb24uLi4KK0VuYWJsaW5nIGF1dG8tY29udGludWUuLi4K
KworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3Bv
aW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK0VkaXRpbmcgbG9nIGFjdGlv
bi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJy
ZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworLS0gUnVubmluZyB0
ZXN0IGNhc2U6IERPTUJyZWFrcG9pbnQuTm9kZVJlbW92ZWQuRGlyZWN0Lk9wdGlvbnMuQWN0aW9u
cy5FdmFsdWF0ZQorQWRkaW5nICJub2RlLXJlbW92ZWQ6MSxIVE1MLDEsQk9EWSwxLERJViwwLERJ
ViIgRE9NIEJyZWFrcG9pbnQuLi4KKworQWRkaW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorCitUcmln
Z2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0
aW9uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLgor
CitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9p
bnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGV2YWx1YXRlIGFjdGlv
bi4uLgorRW5hYmxpbmcgYXV0by1jb250aW51ZS4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQu
Li4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxk
IG5vdCBwYXVzZS4KKworRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBi
cmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BB
U1M6IFNob3VsZCBub3QgcGF1c2UuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kb20tZGVidWdnZXIvZG9tLWJyZWFrcG9pbnQtbm9kZS1yZW1vdmVkLWRpcmVjdC5odG1sIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9kb20tYnJlYWtwb2ludC1ub2RlLXJl
bW92ZWQtZGlyZWN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzk1YWIzYjZjZDFhMjEwMzk2Yzg5ZjFhNjBi
NjBhMjJlZTc5YjM3ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
b20tZGVidWdnZXIvZG9tLWJyZWFrcG9pbnQtbm9kZS1yZW1vdmVkLWRpcmVjdC5odG1sCkBAIC0w
LDAgKzEsMTYzIEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9kZWJ1Z2dlci9yZXNvdXJjZXMvYnJlYWtwb2lu
dC1vcHRpb25zLXV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZGVidWdn
ZXIvcmVzb3VyY2VzL2xvZy1hY3RpdmUtc3RhY2stdHJhY2UuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9kb20tYnJlYWtwb2ludC11dGlsaXRpZXMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3ROb2RlUmVtb3ZlZERpcmVjdCgpIHsKKyAgICBsZXQgbm9k
ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJub2RlLXJlbW92ZWQtZGlyZWN0LXRlc3QiKTsK
KyAgICBsZXQgcGFyZW50ID0gbm9kZS5wYXJlbnROb2RlOworICAgIG5vZGUucmVtb3ZlKCk7Cisg
ICAgcGFyZW50LmFwcGVuZENoaWxkKG5vZGUpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIkRPTUJyZWFrcG9p
bnQuTm9kZVJlbW92ZWQiKTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFt
ZTogYERPTUJyZWFrcG9pbnQuTm9kZVJlbW92ZWQuRGlyZWN0LkJyZWFrcG9pbnRFbmFibGVkYCwK
KyAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IGRlYnVnZ2VyIHBhdXNlcyBmb3IgYnJl
YWtwb2ludCB0eXBlLiIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQg
bm9kZSA9IGF3YWl0IEluc3BlY3RvclRlc3QuRE9NQnJlYWtwb2ludC5hd2FpdFF1ZXJ5U2VsZWN0
b3IoIiNub2RlLXJlbW92ZWQtZGlyZWN0LXRlc3QiKTsKKworICAgICAgICAgICAgbGV0IGJyZWFr
cG9pbnQgPSBhd2FpdCBJbnNwZWN0b3JUZXN0LkRPTUJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2lu
dChub2RlLCBXSS5ET01CcmVha3BvaW50LlR5cGUuTm9kZVJlbW92ZWQpOworCisgICAgICAgICAg
ICBsZXQgcGF1c2VkID0gZmFsc2U7CisgICAgICAgICAgICBsZXQgcGF1c2VkTGlzdGVuZXIgPSBX
SS5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZl
bnQuUGF1c2VkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBwYXVzZWQgPSB0cnVlOwor
CisgICAgICAgICAgICAgICAgbGV0IHRhcmdldERhdGEgPSBXSS5kZWJ1Z2dlck1hbmFnZXIuZGF0
YUZvclRhcmdldChXSS5kZWJ1Z2dlck1hbmFnZXIuYWN0aXZlQ2FsbEZyYW1lLnRhcmdldCk7Cisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlBBVVNFRDoiKTsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHRhcmdldERhdGEucGF1c2VSZWFzb24sIFdJ
LkRlYnVnZ2VyTWFuYWdlci5QYXVzZVJlYXNvbi5ET00sICJQYXVzZSByZWFzb24gc2hvdWxkIGJl
IERPTS4iKTsKKworICAgICAgICAgICAgICAgIGxldCBwYXVzZURhdGEgPSB0YXJnZXREYXRhLnBh
dXNlRGF0YTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHBhdXNl
RGF0YS50eXBlLCBicmVha3BvaW50LnR5cGUsIGBQYXVzZSB0eXBlIHNob3VsZCBiZSAnJHticmVh
a3BvaW50LnR5cGV9Jy5gKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVx
dWFsKHBhdXNlRGF0YS5ub2RlSWQsIGJyZWFrcG9pbnQuZG9tTm9kZUlkZW50aWZpZXIsICJQYXVz
ZSBub2RlSWQgc2hvdWxkIGJlIGV4cGVjdGVkIHZhbHVlLiIpOworICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0KCEoInRhcmdldE5vZGVJZCIgaW4gcGF1c2VEYXRhKSwgIlNob3Vs
ZCBub3QgaGF2ZSAndGFyZ2V0Tm9kZUlkJy4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFzc2VydCghKCJpbnNlcnRpb24iIGluIHBhdXNlRGF0YSksICJTaG91bGQgbm90IGhhdmUg
J2luc2VydGlvbicuIik7CisKKyAgICAgICAgICAgICAgICBsb2dBY3RpdmVTdGFja1RyYWNlKCk7
CisgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgpOworICAgICAgICAg
ICAgfSk7CisKKyAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2Uo
YHRlc3ROb2RlUmVtb3ZlZERpcmVjdCgpYCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YXNzZXJ0KHBhdXNlZCwgIlNob3VsZCBwYXVzZS4iKTsKKyAgICAgICAgICAgIFdJLmRlYnVnZ2Vy
TWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVz
ZWQsIHBhdXNlZExpc3RlbmVyKTsKKyAgICAgICAgfSwKKyAgICAgICAgdGVhcmRvd246IEluc3Bl
Y3RvclRlc3QuRE9NQnJlYWtwb2ludC50ZWFyZG93biwKKyAgICB9KTsKKworICAgIHN1aXRlLmFk
ZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogYERPTUJyZWFrcG9pbnQuTm9kZVJlbW92ZWQuRGly
ZWN0LkJyZWFrcG9pbnREaXNhYmxlZGAsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhh
dCBkZWJ1Z2dlciBkb2VzIG5vdCBwYXVzZSBmb3IgZGlzYWJsZWQgYnJlYWtwb2ludC4iLAorICAg
ICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IHBhdXNlZCA9IGZhbHNlOworICAg
ICAgICAgICAgbGV0IHBhdXNlZExpc3RlbmVyID0gV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50
TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7Cisg
ICAgICAgICAgICAgICAgcGF1c2VkID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIFdJLmRlYnVn
Z2VyTWFuYWdlci5yZXN1bWUoKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBsZXQg
bm9kZSA9IGF3YWl0IEluc3BlY3RvclRlc3QuRE9NQnJlYWtwb2ludC5hd2FpdFF1ZXJ5U2VsZWN0
b3IoIiNub2RlLXJlbW92ZWQtZGlyZWN0LXRlc3QiKTsKKworICAgICAgICAgICAgbGV0IGJyZWFr
cG9pbnQgPSBhd2FpdCBJbnNwZWN0b3JUZXN0LkRPTUJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2lu
dChub2RlLCBXSS5ET01CcmVha3BvaW50LlR5cGUuTm9kZVJlbW92ZWQpOworCisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmxvZygiRGlzYWJsaW5nIGJyZWFrcG9pbnQuLi4iKTsKKyAgICAgICAg
ICAgIGJyZWFrcG9pbnQuZGlzYWJsZWQgPSB0cnVlOworCisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmxvZygiVHJpZ2dlcmluZyBicmVha3BvaW50Li4uIik7CisgICAgICAgICAgICBhd2FpdCBJ
bnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGB0ZXN0Tm9kZVJlbW92ZWREaXJlY3QoKWApOwor
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNlKHBhdXNlZCwgIlNob3VsZCBu
b3QgcGF1c2UgZm9yIGRpc2FibGVkIGJyZWFrcG9pbnQuIik7CisgICAgICAgICAgICBXSS5kZWJ1
Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQu
UGF1c2VkLCBwYXVzZWRMaXN0ZW5lcik7CisgICAgICAgIH0sCisgICAgICAgIHRlYXJkb3duOiBJ
bnNwZWN0b3JUZXN0LkRPTUJyZWFrcG9pbnQudGVhcmRvd24sCisgICAgfSk7CisKKyAgICBzdWl0
ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6IGBET01CcmVha3BvaW50Lk5vZGVSZW1vdmVk
LkRpcmVjdC5EZWJ1Z2dlckRpc2FibGVkYCwKKyAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0
aGF0IGRlYnVnZ2VyIGRvZXMgbm90IHBhdXNlIHdoZW4gdGhlIGRlYnVnZ2VyIGlzIGRpc2FibGVk
LiIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgcGF1c2VkID0gZmFs
c2U7CisgICAgICAgICAgICBsZXQgcGF1c2VkTGlzdGVuZXIgPSBXSS5kZWJ1Z2dlck1hbmFnZXIu
YWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCAoZXZlbnQp
ID0+IHsKKyAgICAgICAgICAgICAgICBwYXVzZWQgPSB0cnVlOworCisgICAgICAgICAgICAgICAg
V0kuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAg
ICAgIGxldCBub2RlID0gYXdhaXQgSW5zcGVjdG9yVGVzdC5ET01CcmVha3BvaW50LmF3YWl0UXVl
cnlTZWxlY3RvcigiI25vZGUtcmVtb3ZlZC1kaXJlY3QtdGVzdCIpOworCisgICAgICAgICAgICBh
d2FpdCBJbnNwZWN0b3JUZXN0LkRPTUJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludChub2RlLCBX
SS5ET01CcmVha3BvaW50LlR5cGUuTm9kZVJlbW92ZWQpOworCisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmxvZygiRGlzYWJsaW5nIGFsbCBicmVha3BvaW50cy4uLiIpOworICAgICAgICAgICAg
YXdhaXQgRGVidWdnZXJBZ2VudC5zZXRCcmVha3BvaW50c0FjdGl2ZShmYWxzZSk7CisKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4iKTsKKyAg
ICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYHRlc3ROb2RlUmVt
b3ZlZERpcmVjdCgpYCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJFbmFibGlu
ZyBhbGwgYnJlYWtwb2ludHMuLi4iKTsKKyAgICAgICAgICAgIGF3YWl0IERlYnVnZ2VyQWdlbnQu
c2V0QnJlYWtwb2ludHNBY3RpdmUodHJ1ZSk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0RmFsc2UocGF1c2VkLCAiU2hvdWxkIG5vdCBwYXVzZSB3aGVuIGFsbCBicmVha3BvaW50
cyBkaXNhYmxlZC4iKTsKKyAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVu
dExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIHBhdXNlZExpc3RlbmVy
KTsKKyAgICAgICAgfSwKKyAgICAgICAgdGVhcmRvd246IEluc3BlY3RvclRlc3QuRE9NQnJlYWtw
b2ludC50ZWFyZG93biwKKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAg
ICAgbmFtZTogYERPTUJyZWFrcG9pbnQuTm9kZVJlbW92ZWQuRGlyZWN0LlJlbW92ZUJyZWFrcG9p
bnRgLAorICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgZGVidWdnZXIgZG9lcyBub3Qg
cGF1c2UgZm9yIHJlbW92ZWQgYnJlYWtwb2ludC4iLAorICAgICAgICBhc3luYyB0ZXN0KCkgewor
ICAgICAgICAgICAgbGV0IHBhdXNlZCA9IGZhbHNlOworICAgICAgICAgICAgbGV0IHBhdXNlZExp
c3RlbmVyID0gV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJN
YW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgcGF1c2Vk
ID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKTsK
KyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBsZXQgbm9kZSA9IGF3YWl0IEluc3BlY3Rv
clRlc3QuRE9NQnJlYWtwb2ludC5hd2FpdFF1ZXJ5U2VsZWN0b3IoIiNub2RlLXJlbW92ZWQtZGly
ZWN0LXRlc3QiKTsKKworICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBhd2FpdCBJbnNwZWN0
b3JUZXN0LkRPTUJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludChub2RlLCBXSS5ET01CcmVha3Bv
aW50LlR5cGUuTm9kZVJlbW92ZWQpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygi
UmVtb3ZpbmcgYnJlYWtwb2ludC4uLiIpOworICAgICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5h
Z2VyLnJlbW92ZURPTUJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CisKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QubG9nKCJUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4iKTsKKyAgICAgICAgICAgIGF3
YWl0IEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYHRlc3ROb2RlUmVtb3ZlZERpcmVjdCgp
YCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RmFsc2UocGF1c2VkLCAiU2hv
dWxkIG5vdCBwYXVzZSBmb3IgcmVtb3ZlZCBicmVha3BvaW50LiIpOworICAgICAgICAgICAgV0ku
ZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2
ZW50LlBhdXNlZCwgcGF1c2VkTGlzdGVuZXIpOworICAgICAgICB9LAorICAgICAgICB0ZWFyZG93
bjogSW5zcGVjdG9yVGVzdC5ET01CcmVha3BvaW50LnRlYXJkb3duLAorICAgIH0pOworCisgICAg
SW5zcGVjdG9yVGVzdC5CcmVha3BvaW50T3B0aW9ucy5hZGRUZXN0Q2FzZXMoc3VpdGUsIHsKKyAg
ICAgICAgdGVzdENhc2VOYW1lUHJlZml4OiAiRGlyZWN0LiIsCisgICAgICAgIGFzeW5jIGNyZWF0
ZUJyZWFrcG9pbnQoKSB7CisgICAgICAgICAgICBsZXQgbm9kZSA9IGF3YWl0IEluc3BlY3RvclRl
c3QuRE9NQnJlYWtwb2ludC5hd2FpdFF1ZXJ5U2VsZWN0b3IoIiNub2RlLXJlbW92ZWQtZGlyZWN0
LXRlc3QiKTsKKyAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JUZXN0LkRPTUJyZWFrcG9pbnQu
Y3JlYXRlQnJlYWtwb2ludChub2RlLCBXSS5ET01CcmVha3BvaW50LlR5cGUuTm9kZVJlbW92ZWQp
OworICAgICAgICB9LAorICAgICAgICBhc3luYyB0cmlnZ2VyQnJlYWtwb2ludChicmVha3BvaW50
KSB7CisgICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgdGVz
dE5vZGVSZW1vdmVkRGlyZWN0KClgKTsKKyAgICAgICAgfSwKKyAgICAgICAgc2tpcDogeworICAg
ICAgICAgICAgaWdub3JlQ291bnQ6IHRydWUsCisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBz
dWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdHMgZm9yIERPTSBicmVha3BvaW50cy48L3A+
Cis8ZGl2IGlkPSJ0ZXN0LWNvbnRhaW5lciIgc3R5bGU9ImRpc3BsYXk6IG5vbmUiPgorICAgIDxk
aXYgaWQ9Im5vZGUtcmVtb3ZlZC1kaXJlY3QtdGVzdCI+PC9kaXY+Cis8L2Rpdj4KKzwvYm9keT4K
KzwvaHRtbD4KKyAgICAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2RvbS1icmVha3BvaW50LXN1YnRyZWUt
bW9kaWZpZWQtYWRkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVi
dWdnZXIvZG9tLWJyZWFrcG9pbnQtc3VidHJlZS1tb2RpZmllZC1hZGQtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjIzZWEyMTFjN2MyYzYwOTUzY2E1N2M2N2VkOWU4ODU3YjdhMWQyM2EKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2RvbS1icmVh
a3BvaW50LXN1YnRyZWUtbW9kaWZpZWQtYWRkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzNCBA
QAorQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgMQorQ09OU09MRSBNRVNT
QUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgMgorQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5U
IEFDVElPTiBMT0cgMworQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgNAor
VGVzdHMgZm9yIERPTSBicmVha3BvaW50cy4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IERP
TUJyZWFrcG9pbnQuU3VidHJlZU1vZGlmaWVkCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NQnJl
YWtwb2ludC5TdWJ0cmVlTW9kaWZpZWQuQWRkLkJyZWFrcG9pbnRFbmFibGVkCitBZGRpbmcgInN1
YnRyZWUtbW9kaWZpZWQ6MSxIVE1MLDEsQk9EWSwxLERJViwwLERJViIgRE9NIEJyZWFrcG9pbnQu
Li4KK1BBVVNFRDoKK1BBU1M6IFBhdXNlIHJlYXNvbiBzaG91bGQgYmUgRE9NLgorUEFTUzogUGF1
c2UgdHlwZSBzaG91bGQgYmUgJ3N1YnRyZWUtbW9kaWZpZWQnLgorUEFTUzogUGF1c2Ugbm9kZUlk
IHNob3VsZCBiZSBleHBlY3RlZCB2YWx1ZS4KK1BBU1M6IFNob3VsZCBoYXZlICdpbnNlcnRpb24n
LgorQ0FMTCBTVEFDSzoKKzA6IFtGXSB0ZXN0U3VidHJlZU1vZGlmaWVkCisxOiBbUF0gR2xvYmFs
IENvZGUKKy0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6
IERPTUJyZWFrcG9pbnQuU3VidHJlZU1vZGlmaWVkLkFkZC5CcmVha3BvaW50RGlzYWJsZWQKK0Fk
ZGluZyAic3VidHJlZS1tb2RpZmllZDoxLEhUTUwsMSxCT0RZLDEsRElWLDAsRElWIiBET00gQnJl
YWtwb2ludC4uLgorRGlzYWJsaW5nIGJyZWFrcG9pbnQuLi4KK1RyaWdnZXJpbmcgYnJlYWtwb2lu
dC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZSBmb3IgZGlzYWJsZWQgYnJlYWtwb2ludC4KKy0t
IFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTUJyZWFr
cG9pbnQuU3VidHJlZU1vZGlmaWVkLkFkZC5EZWJ1Z2dlckRpc2FibGVkCitBZGRpbmcgInN1YnRy
ZWUtbW9kaWZpZWQ6MSxIVE1MLDEsQk9EWSwxLERJViwwLERJViIgRE9NIEJyZWFrcG9pbnQuLi4K
K0Rpc2FibGluZyBhbGwgYnJlYWtwb2ludHMuLi4KK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgor
RW5hYmxpbmcgYWxsIGJyZWFrcG9pbnRzLi4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlIHdoZW4g
YWxsIGJyZWFrcG9pbnRzIGRpc2FibGVkLgorLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgorCist
LSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NQnJlYWtwb2ludC5TdWJ0cmVlTW9kaWZpZWQuQWRkLlJl
bW92ZUJyZWFrcG9pbnQKK0FkZGluZyAic3VidHJlZS1tb2RpZmllZDoxLEhUTUwsMSxCT0RZLDEs
RElWLDAsRElWIiBET00gQnJlYWtwb2ludC4uLgorUmVtb3ZpbmcgYnJlYWtwb2ludC4uLgorVHJp
Z2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlIGZvciByZW1vdmVk
IGJyZWFrcG9pbnQuCistLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCisKKy0tIFJ1bm5pbmcgdGVz
dCBjYXNlOiBET01CcmVha3BvaW50LlN1YnRyZWVNb2RpZmllZC5BZGQuT3B0aW9ucy5Db25kaXRp
b24KK0FkZGluZyAic3VidHJlZS1tb2RpZmllZDoxLEhUTUwsMSxCT0RZLDEsRElWLDAsRElWIiBE
T00gQnJlYWtwb2ludC4uLgorCitTZXR0aW5nIGNvbmRpdGlvbiB0byAnZmFsc2UnLi4uCisKK1Ry
aWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworVHJpZ2dl
cmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitTZXR0aW5nIGNv
bmRpdGlvbiB0byAndHJ1ZScuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBT
aG91bGQgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHBh
dXNlLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NQnJlYWtwb2ludC5TdWJ0cmVlTW9kaWZp
ZWQuQWRkLk9wdGlvbnMuSWdub3JlQ291bnQKK0FkZGluZyAic3VidHJlZS1tb2RpZmllZDoxLEhU
TUwsMSxCT0RZLDEsRElWLDAsRElWIiBET00gQnJlYWtwb2ludC4uLgorCitTZXR0aW5nIGlnbm9y
ZUNvdW50IHRvICcyJy4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3Vs
ZCBub3QgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5v
dCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2Uu
CisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCistLSBS
dW5uaW5nIHRlc3QgY2FzZTogRE9NQnJlYWtwb2ludC5TdWJ0cmVlTW9kaWZpZWQuQWRkLk9wdGlv
bnMuQWN0aW9uLkxvZworQWRkaW5nICJzdWJ0cmVlLW1vZGlmaWVkOjEsSFRNTCwxLEJPRFksMSxE
SVYsMCxESVYiIERPTSBCcmVha3BvaW50Li4uCisKK0FkZGluZyBsb2cgYWN0aW9uLi4uCisKK1Ry
aWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBh
Y3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcgbG9nIGFjdGlvbi4uLgorCitU
cmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQg
YWN0aW9uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGxvZyBhY3Rpb24uLi4KK0Vu
YWJsaW5nIGF1dG8tY29udGludWUuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNT
OiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1
c2UuCisKK0VkaXRpbmcgbG9nIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4K
K1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5v
dCBwYXVzZS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTUJyZWFrcG9pbnQuU3VidHJlZU1v
ZGlmaWVkLkFkZC5PcHRpb25zLkFjdGlvbnMuRXZhbHVhdGUKK0FkZGluZyAic3VidHJlZS1tb2Rp
ZmllZDoxLEhUTUwsMSxCT0RZLDEsRElWLDAsRElWIiBET00gQnJlYWtwb2ludC4uLgorCitBZGRp
bmcgZXZhbHVhdGUgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzog
U2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisK
K0VkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgor
UEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1
c2UuCisKK0VkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCitFbmFibGluZyBhdXRvLWNvbnRpbnVl
Li4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJl
YWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitFZGl0aW5nIGV2YWx1
YXRlIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBl
eGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9kb20tYnJlYWtwb2lu
dC1zdWJ0cmVlLW1vZGlmaWVkLWFkZC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1k
ZWJ1Z2dlci9kb20tYnJlYWtwb2ludC1zdWJ0cmVlLW1vZGlmaWVkLWFkZC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjg1MTRjMDA1ODRiZDE4N2YyYjZjMDVkMDk0ZDMxZDc2NDMwNDhhMWQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2RvbS1icmVha3BvaW50
LXN1YnRyZWUtbW9kaWZpZWQtYWRkLmh0bWwKQEAgLTAsMCArMSwxNTYgQEAKKzwhZG9jdHlwZSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL2RlYnVnZ2VyL3Jlc291cmNlcy9icmVha3BvaW50LW9wdGlvbnMtdXRpbGl0aWVzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9kZWJ1Z2dlci9yZXNvdXJjZXMvbG9nLWFjdGl2ZS1z
dGFjay10cmFjZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RvbS1icmVh
a3BvaW50LXV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdFN1
YnRyZWVNb2RpZmllZCgpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3VidHJlZS1t
b2RpZmllZC10ZXN0IikuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iikp
OworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0
LmNyZWF0ZUFzeW5jU3VpdGUoIkRPTUJyZWFrcG9pbnQuU3VidHJlZU1vZGlmaWVkIik7CisKKyAg
ICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6IGBET01CcmVha3BvaW50LlN1YnRy
ZWVNb2RpZmllZC5BZGQuQnJlYWtwb2ludEVuYWJsZWRgLAorICAgICAgICBkZXNjcmlwdGlvbjog
IkNoZWNrIHRoYXQgZGVidWdnZXIgcGF1c2VzIGZvciBicmVha3BvaW50IHR5cGUuIiwKKyAgICAg
ICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCBub2RlID0gYXdhaXQgSW5zcGVjdG9y
VGVzdC5ET01CcmVha3BvaW50LmF3YWl0UXVlcnlTZWxlY3RvcigiI3N1YnRyZWUtbW9kaWZpZWQt
dGVzdCIpOworCisgICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IGF3YWl0IEluc3BlY3RvclRl
c3QuRE9NQnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KG5vZGUsIFdJLkRPTUJyZWFrcG9pbnQu
VHlwZS5TdWJ0cmVlTW9kaWZpZWQpOworCisgICAgICAgICAgICBsZXQgcGF1c2VkID0gZmFsc2U7
CisgICAgICAgICAgICBsZXQgcGF1c2VkTGlzdGVuZXIgPSBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRk
RXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCAoZXZlbnQpID0+
IHsKKyAgICAgICAgICAgICAgICBwYXVzZWQgPSB0cnVlOworCisgICAgICAgICAgICAgICAgbGV0
IHRhcmdldERhdGEgPSBXSS5kZWJ1Z2dlck1hbmFnZXIuZGF0YUZvclRhcmdldChXSS5kZWJ1Z2dl
ck1hbmFnZXIuYWN0aXZlQ2FsbEZyYW1lLnRhcmdldCk7CisgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5sb2coIlBBVVNFRDoiKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdEVxdWFsKHRhcmdldERhdGEucGF1c2VSZWFzb24sIFdJLkRlYnVnZ2VyTWFuYWdlci5QYXVz
ZVJlYXNvbi5ET00sICJQYXVzZSByZWFzb24gc2hvdWxkIGJlIERPTS4iKTsKKworICAgICAgICAg
ICAgICAgIGxldCBwYXVzZURhdGEgPSB0YXJnZXREYXRhLnBhdXNlRGF0YTsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHBhdXNlRGF0YS50eXBlLCBicmVha3BvaW50
LnR5cGUsIGBQYXVzZSB0eXBlIHNob3VsZCBiZSAnJHticmVha3BvaW50LnR5cGV9Jy5gKTsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHBhdXNlRGF0YS5ub2RlSWQs
IGJyZWFrcG9pbnQuZG9tTm9kZUlkZW50aWZpZXIsICJQYXVzZSBub2RlSWQgc2hvdWxkIGJlIGV4
cGVjdGVkIHZhbHVlLiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VHJ1
ZShwYXVzZURhdGEuaW5zZXJ0aW9uLCAiU2hvdWxkIGhhdmUgJ2luc2VydGlvbicuIik7CisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoISgidGFyZ2V0Tm9kZUlkIiBpbiBwYXVz
ZURhdGEpLCAiU2hvdWxkIG5vdCBoYXZlICd0YXJnZXROb2RlSWQnLiIpOworCisgICAgICAgICAg
ICAgICAgbG9nQWN0aXZlU3RhY2tUcmFjZSgpOworICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2Vy
TWFuYWdlci5yZXN1bWUoKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBhd2FpdCBJ
bnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGB0ZXN0U3VidHJlZU1vZGlmaWVkKClgKTsKKwor
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQocGF1c2VkLCAiU2hvdWxkIHBhdXNlLiIp
OworICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0ku
RGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgcGF1c2VkTGlzdGVuZXIpOworICAgICAgICB9
LAorICAgICAgICB0ZWFyZG93bjogSW5zcGVjdG9yVGVzdC5ET01CcmVha3BvaW50LnRlYXJkb3du
LAorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiBgRE9N
QnJlYWtwb2ludC5TdWJ0cmVlTW9kaWZpZWQuQWRkLkJyZWFrcG9pbnREaXNhYmxlZGAsCisgICAg
ICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBkZWJ1Z2dlciBkb2VzIG5vdCBwYXVzZSBmb3Ig
ZGlzYWJsZWQgYnJlYWtwb2ludC4iLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAg
ICAgbGV0IHBhdXNlZCA9IGZhbHNlOworICAgICAgICAgICAgbGV0IHBhdXNlZExpc3RlbmVyID0g
V0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2
ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgcGF1c2VkID0gdHJ1ZTsK
KworICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKTsKKyAgICAgICAg
ICAgIH0pOworCisgICAgICAgICAgICBsZXQgbm9kZSA9IGF3YWl0IEluc3BlY3RvclRlc3QuRE9N
QnJlYWtwb2ludC5hd2FpdFF1ZXJ5U2VsZWN0b3IoIiNzdWJ0cmVlLW1vZGlmaWVkLXRlc3QiKTsK
KworICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBhd2FpdCBJbnNwZWN0b3JUZXN0LkRPTUJy
ZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludChub2RlLCBXSS5ET01CcmVha3BvaW50LlR5cGUuU3Vi
dHJlZU1vZGlmaWVkKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkRpc2FibGlu
ZyBicmVha3BvaW50Li4uIik7CisgICAgICAgICAgICBicmVha3BvaW50LmRpc2FibGVkID0gdHJ1
ZTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlRyaWdnZXJpbmcgYnJlYWtwb2lu
dC4uLiIpOworICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShg
dGVzdFN1YnRyZWVNb2RpZmllZCgpYCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0RmFsc2UocGF1c2VkLCAiU2hvdWxkIG5vdCBwYXVzZSBmb3IgZGlzYWJsZWQgYnJlYWtwb2lu
dC4iKTsKKyAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVy
KFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIHBhdXNlZExpc3RlbmVyKTsKKyAgICAg
ICAgfSwKKyAgICAgICAgdGVhcmRvd246IEluc3BlY3RvclRlc3QuRE9NQnJlYWtwb2ludC50ZWFy
ZG93biwKKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTog
YERPTUJyZWFrcG9pbnQuU3VidHJlZU1vZGlmaWVkLkFkZC5EZWJ1Z2dlckRpc2FibGVkYCwKKyAg
ICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IGRlYnVnZ2VyIGRvZXMgbm90IHBhdXNlIHdo
ZW4gdGhlIGRlYnVnZ2VyIGlzIGRpc2FibGVkLiIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7Cisg
ICAgICAgICAgICBsZXQgcGF1c2VkID0gZmFsc2U7CisgICAgICAgICAgICBsZXQgcGF1c2VkTGlz
dGVuZXIgPSBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1h
bmFnZXIuRXZlbnQuUGF1c2VkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBwYXVzZWQg
PSB0cnVlOworCisgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgpOwor
ICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGxldCBub2RlID0gYXdhaXQgSW5zcGVjdG9y
VGVzdC5ET01CcmVha3BvaW50LmF3YWl0UXVlcnlTZWxlY3RvcigiI3N1YnRyZWUtbW9kaWZpZWQt
dGVzdCIpOworCisgICAgICAgICAgICBhd2FpdCBJbnNwZWN0b3JUZXN0LkRPTUJyZWFrcG9pbnQu
Y3JlYXRlQnJlYWtwb2ludChub2RlLCBXSS5ET01CcmVha3BvaW50LlR5cGUuU3VidHJlZU1vZGlm
aWVkKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkRpc2FibGluZyBhbGwgYnJl
YWtwb2ludHMuLi4iKTsKKyAgICAgICAgICAgIGF3YWl0IERlYnVnZ2VyQWdlbnQuc2V0QnJlYWtw
b2ludHNBY3RpdmUoZmFsc2UpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJp
Z2dlcmluZyBicmVha3BvaW50Li4uIik7CisgICAgICAgICAgICBhd2FpdCBJbnNwZWN0b3JUZXN0
LmV2YWx1YXRlSW5QYWdlKGB0ZXN0U3VidHJlZU1vZGlmaWVkKClgKTsKKworICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5sb2coIkVuYWJsaW5nIGFsbCBicmVha3BvaW50cy4uLiIpOworICAgICAg
ICAgICAgYXdhaXQgRGVidWdnZXJBZ2VudC5zZXRCcmVha3BvaW50c0FjdGl2ZSh0cnVlKTsKKwor
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZShwYXVzZWQsICJTaG91bGQgbm90
IHBhdXNlIHdoZW4gYWxsIGJyZWFrcG9pbnRzIGRpc2FibGVkLiIpOworICAgICAgICAgICAgV0ku
ZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2
ZW50LlBhdXNlZCwgcGF1c2VkTGlzdGVuZXIpOworICAgICAgICB9LAorICAgICAgICB0ZWFyZG93
bjogSW5zcGVjdG9yVGVzdC5ET01CcmVha3BvaW50LnRlYXJkb3duLAorICAgIH0pOworCisgICAg
c3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiBgRE9NQnJlYWtwb2ludC5TdWJ0cmVl
TW9kaWZpZWQuQWRkLlJlbW92ZUJyZWFrcG9pbnRgLAorICAgICAgICBkZXNjcmlwdGlvbjogIkNo
ZWNrIHRoYXQgZGVidWdnZXIgZG9lcyBub3QgcGF1c2UgZm9yIHJlbW92ZWQgYnJlYWtwb2ludC4i
LAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IHBhdXNlZCA9IGZhbHNl
OworICAgICAgICAgICAgbGV0IHBhdXNlZExpc3RlbmVyID0gV0kuZGVidWdnZXJNYW5hZ2VyLmFk
ZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9
PiB7CisgICAgICAgICAgICAgICAgcGF1c2VkID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIFdJ
LmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAg
ICBsZXQgbm9kZSA9IGF3YWl0IEluc3BlY3RvclRlc3QuRE9NQnJlYWtwb2ludC5hd2FpdFF1ZXJ5
U2VsZWN0b3IoIiNzdWJ0cmVlLW1vZGlmaWVkLXRlc3QiKTsKKworICAgICAgICAgICAgbGV0IGJy
ZWFrcG9pbnQgPSBhd2FpdCBJbnNwZWN0b3JUZXN0LkRPTUJyZWFrcG9pbnQuY3JlYXRlQnJlYWtw
b2ludChub2RlLCBXSS5ET01CcmVha3BvaW50LlR5cGUuU3VidHJlZU1vZGlmaWVkKTsKKworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlJlbW92aW5nIGJyZWFrcG9pbnQuLi4iKTsKKyAg
ICAgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5yZW1vdmVET01CcmVha3BvaW50KGJyZWFr
cG9pbnQpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBicmVh
a3BvaW50Li4uIik7CisgICAgICAgICAgICBhd2FpdCBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5Q
YWdlKGB0ZXN0U3VidHJlZU1vZGlmaWVkKClgKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RGYWxzZShwYXVzZWQsICJTaG91bGQgbm90IHBhdXNlIGZvciByZW1vdmVkIGJyZWFr
cG9pbnQuIik7CisgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0
ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCBwYXVzZWRMaXN0ZW5lcik7Cisg
ICAgICAgIH0sCisgICAgICAgIHRlYXJkb3duOiBJbnNwZWN0b3JUZXN0LkRPTUJyZWFrcG9pbnQu
dGVhcmRvd24sCisgICAgfSk7CisKKyAgICBJbnNwZWN0b3JUZXN0LkJyZWFrcG9pbnRPcHRpb25z
LmFkZFRlc3RDYXNlcyhzdWl0ZSwgeworICAgICAgICB0ZXN0Q2FzZU5hbWVQcmVmaXg6ICJBZGQu
IiwKKyAgICAgICAgYXN5bmMgY3JlYXRlQnJlYWtwb2ludCgpIHsKKyAgICAgICAgICAgIGxldCBu
b2RlID0gYXdhaXQgSW5zcGVjdG9yVGVzdC5ET01CcmVha3BvaW50LmF3YWl0UXVlcnlTZWxlY3Rv
cigiI3N1YnRyZWUtbW9kaWZpZWQtdGVzdCIpOworICAgICAgICAgICAgcmV0dXJuIEluc3BlY3Rv
clRlc3QuRE9NQnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KG5vZGUsIFdJLkRPTUJyZWFrcG9p
bnQuVHlwZS5TdWJ0cmVlTW9kaWZpZWQpOworICAgICAgICB9LAorICAgICAgICBhc3luYyB0cmln
Z2VyQnJlYWtwb2ludChicmVha3BvaW50KSB7CisgICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9y
VGVzdC5ldmFsdWF0ZUluUGFnZShgdGVzdFN1YnRyZWVNb2RpZmllZCgpYCk7CisgICAgICAgIH0s
CisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdHMgZm9yIERP
TSBicmVha3BvaW50cy48L3A+Cis8ZGl2IGlkPSJ0ZXN0LWNvbnRhaW5lciIgc3R5bGU9ImRpc3Bs
YXk6IG5vbmUiPgorICAgIDxkaXYgaWQ9InN1YnRyZWUtbW9kaWZpZWQtdGVzdCI+PC9kaXY+Cis8
L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kb20tZGVidWdnZXIvZG9tLWJyZWFrcG9pbnQtc3VidHJlZS1tb2RpZmllZC1yZW1vdmUtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9kb20tYnJlYWtw
b2ludC1zdWJ0cmVlLW1vZGlmaWVkLXJlbW92ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTg0
NmUzMDQzOTMzZDU5ZTE0MWQwYWRiMGNhODNhYTI1OTc1OTI4ZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZG9tLWJyZWFrcG9pbnQtc3VidHJl
ZS1tb2RpZmllZC1yZW1vdmUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTM0IEBACitDT05TT0xF
IE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyAxCitDT05TT0xFIE1FU1NBR0U6IEJSRUFL
UE9JTlQgQUNUSU9OIExPRyAyCitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExP
RyAzCitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyA0CitUZXN0cyBmb3Ig
RE9NIGJyZWFrcG9pbnRzLgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogRE9NQnJlYWtwb2lu
dC5TdWJ0cmVlTW9kaWZpZWQKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01CcmVha3BvaW50LlN1
YnRyZWVNb2RpZmllZC5SZW1vdmUuQnJlYWtwb2ludEVuYWJsZWQKK0FkZGluZyAic3VidHJlZS1t
b2RpZmllZDoxLEhUTUwsMSxCT0RZLDEsRElWLDAsRElWIiBET00gQnJlYWtwb2ludC4uLgorUEFV
U0VEOgorUEFTUzogUGF1c2UgcmVhc29uIHNob3VsZCBiZSBET00uCitQQVNTOiBQYXVzZSB0eXBl
IHNob3VsZCBiZSAnc3VidHJlZS1tb2RpZmllZCcuCitQQVNTOiBQYXVzZSBub2RlSWQgc2hvdWxk
IGJlIGV4cGVjdGVkIHZhbHVlLgorUEFTUzogU2hvdWxkIGhhdmUgJ2luc2VydGlvbicuCitDQUxM
IFNUQUNLOgorMDogW0ZdIHRlc3RTdWJ0cmVlTW9kaWZpZWQKKzE6IFtQXSBHbG9iYWwgQ29kZQor
LS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NQnJl
YWtwb2ludC5TdWJ0cmVlTW9kaWZpZWQuUmVtb3ZlLkJyZWFrcG9pbnREaXNhYmxlZAorQWRkaW5n
ICJzdWJ0cmVlLW1vZGlmaWVkOjEsSFRNTCwxLEJPRFksMSxESVYsMCxESVYiIERPTSBCcmVha3Bv
aW50Li4uCitEaXNhYmxpbmcgYnJlYWtwb2ludC4uLgorVHJpZ2dlcmluZyBicmVha3BvaW50Li4u
CitQQVNTOiBTaG91bGQgbm90IHBhdXNlIGZvciBkaXNhYmxlZCBicmVha3BvaW50LgorLS0gUnVu
bmluZyB0ZXN0IHRlYXJkb3duLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NQnJlYWtwb2lu
dC5TdWJ0cmVlTW9kaWZpZWQuUmVtb3ZlLkRlYnVnZ2VyRGlzYWJsZWQKK0FkZGluZyAic3VidHJl
ZS1tb2RpZmllZDoxLEhUTUwsMSxCT0RZLDEsRElWLDAsRElWIiBET00gQnJlYWtwb2ludC4uLgor
RGlzYWJsaW5nIGFsbCBicmVha3BvaW50cy4uLgorVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitF
bmFibGluZyBhbGwgYnJlYWtwb2ludHMuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2Ugd2hlbiBh
bGwgYnJlYWtwb2ludHMgZGlzYWJsZWQuCistLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCisKKy0t
IFJ1bm5pbmcgdGVzdCBjYXNlOiBET01CcmVha3BvaW50LlN1YnRyZWVNb2RpZmllZC5SZW1vdmUu
UmVtb3ZlQnJlYWtwb2ludAorQWRkaW5nICJzdWJ0cmVlLW1vZGlmaWVkOjEsSFRNTCwxLEJPRFks
MSxESVYsMCxESVYiIERPTSBCcmVha3BvaW50Li4uCitSZW1vdmluZyBicmVha3BvaW50Li4uCitU
cmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UgZm9yIHJlbW92
ZWQgYnJlYWtwb2ludC4KKy0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KKworLS0gUnVubmluZyB0
ZXN0IGNhc2U6IERPTUJyZWFrcG9pbnQuU3VidHJlZU1vZGlmaWVkLlJlbW92ZS5PcHRpb25zLkNv
bmRpdGlvbgorQWRkaW5nICJzdWJ0cmVlLW1vZGlmaWVkOjEsSFRNTCwxLEJPRFksMSxESVYsMCxE
SVYiIERPTSBCcmVha3BvaW50Li4uCisKK1NldHRpbmcgY29uZGl0aW9uIHRvICdmYWxzZScuLi4K
KworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitU
cmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1NldHRp
bmcgY29uZGl0aW9uIHRvICd0cnVlJy4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BB
U1M6IFNob3VsZCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91
bGQgcGF1c2UuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01CcmVha3BvaW50LlN1YnRyZWVN
b2RpZmllZC5SZW1vdmUuT3B0aW9ucy5JZ25vcmVDb3VudAorQWRkaW5nICJzdWJ0cmVlLW1vZGlm
aWVkOjEsSFRNTCwxLEJPRFksMSxESVYsMCxESVYiIERPTSBCcmVha3BvaW50Li4uCisKK1NldHRp
bmcgaWdub3JlQ291bnQgdG8gJzInLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFT
UzogU2hvdWxkIG5vdCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBT
aG91bGQgbm90IHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3Vs
ZCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2Uu
CisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01CcmVha3BvaW50LlN1YnRyZWVNb2RpZmllZC5S
ZW1vdmUuT3B0aW9ucy5BY3Rpb24uTG9nCitBZGRpbmcgInN1YnRyZWUtbW9kaWZpZWQ6MSxIVE1M
LDEsQk9EWSwxLERJViwwLERJViIgRE9NIEJyZWFrcG9pbnQuLi4KKworQWRkaW5nIGxvZyBhY3Rp
b24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBi
cmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBsb2cgYWN0
aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUg
YnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcgbG9nIGFj
dGlvbi4uLgorRW5hYmxpbmcgYXV0by1jb250aW51ZS4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9p
bnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hv
dWxkIG5vdCBwYXVzZS4KKworRWRpdGluZyBsb2cgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJl
YWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNT
OiBTaG91bGQgbm90IHBhdXNlLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NQnJlYWtwb2lu
dC5TdWJ0cmVlTW9kaWZpZWQuUmVtb3ZlLk9wdGlvbnMuQWN0aW9ucy5FdmFsdWF0ZQorQWRkaW5n
ICJzdWJ0cmVlLW1vZGlmaWVkOjEsSFRNTCwxLEJPRFksMSxESVYsMCxESVYiIERPTSBCcmVha3Bv
aW50Li4uCisKK0FkZGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3Bv
aW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNo
b3VsZCBwYXVzZS4KKworRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBi
cmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BB
U1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KK0VuYWJsaW5n
IGF1dG8tY29udGludWUuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91
bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisK
K0VkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgor
UEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90
IHBhdXNlLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2Vy
L2RvbS1icmVha3BvaW50LXN1YnRyZWUtbW9kaWZpZWQtcmVtb3ZlLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2RvbS1icmVha3BvaW50LXN1YnRyZWUtbW9kaWZpZWQt
cmVtb3ZlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmMyYWUyYzdhZDE5ZjUzNGNmYmZlOTUwZDVlYTZmZTBi
YTdkNTcyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVi
dWdnZXIvZG9tLWJyZWFrcG9pbnQtc3VidHJlZS1tb2RpZmllZC1yZW1vdmUuaHRtbApAQCAtMCww
ICsxLDE2OSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZGVidWdnZXIvcmVzb3VyY2VzL2JyZWFrcG9pbnQt
b3B0aW9ucy11dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2RlYnVnZ2Vy
L3Jlc291cmNlcy9sb2ctYWN0aXZlLXN0YWNrLXRyYWNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvZG9tLWJyZWFrcG9pbnQtdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+CitmdW5jdGlvbiB0ZXN0U3VidHJlZU1vZGlmaWVkKCkgeworICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJzdWJ0cmVlLW1vZGlmaWVkLXRlc3QiKS5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxl
dCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiRE9NQnJlYWtwb2ludC5T
dWJ0cmVlTW9kaWZpZWQiKTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFt
ZTogYERPTUJyZWFrcG9pbnQuU3VidHJlZU1vZGlmaWVkLlJlbW92ZS5CcmVha3BvaW50RW5hYmxl
ZGAsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBkZWJ1Z2dlciBwYXVzZXMgZm9y
IGJyZWFrcG9pbnQgdHlwZS4iLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAg
bGV0IG5vZGUgPSBhd2FpdCBJbnNwZWN0b3JUZXN0LkRPTUJyZWFrcG9pbnQuYXdhaXRRdWVyeVNl
bGVjdG9yKCIjc3VidHJlZS1tb2RpZmllZC10ZXN0Iik7CisKKyAgICAgICAgICAgIGxldCBicmVh
a3BvaW50ID0gYXdhaXQgSW5zcGVjdG9yVGVzdC5ET01CcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9p
bnQobm9kZSwgV0kuRE9NQnJlYWtwb2ludC5UeXBlLlN1YnRyZWVNb2RpZmllZCk7CisKKyAgICAg
ICAgICAgIGxldCBwYXVzZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIGxldCBwYXVzZWRMaXN0ZW5l
ciA9IFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdl
ci5FdmVudC5QYXVzZWQsIChldmVudCkgPT4geworICAgICAgICAgICAgICAgIHBhdXNlZCA9IHRy
dWU7CisKKyAgICAgICAgICAgICAgICBsZXQgdGFyZ2V0RGF0YSA9IFdJLmRlYnVnZ2VyTWFuYWdl
ci5kYXRhRm9yVGFyZ2V0KFdJLmRlYnVnZ2VyTWFuYWdlci5hY3RpdmVDYWxsRnJhbWUudGFyZ2V0
KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUEFVU0VEOiIpOworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwodGFyZ2V0RGF0YS5wYXVzZVJlYXNv
biwgV0kuRGVidWdnZXJNYW5hZ2VyLlBhdXNlUmVhc29uLkRPTSwgIlBhdXNlIHJlYXNvbiBzaG91
bGQgYmUgRE9NLiIpOworCisgICAgICAgICAgICAgICAgbGV0IHBhdXNlRGF0YSA9IHRhcmdldERh
dGEucGF1c2VEYXRhOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwo
cGF1c2VEYXRhLnR5cGUsIGJyZWFrcG9pbnQudHlwZSwgYFBhdXNlIHR5cGUgc2hvdWxkIGJlICck
e2JyZWFrcG9pbnQudHlwZX0nLmApOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0RXF1YWwocGF1c2VEYXRhLm5vZGVJZCwgYnJlYWtwb2ludC5kb21Ob2RlSWRlbnRpZmllciwg
IlBhdXNlIG5vZGVJZCBzaG91bGQgYmUgZXhwZWN0ZWQgdmFsdWUuIik7CisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUcnVlKHBhdXNlRGF0YS5pbnNlcnRpb24sICJTaG91bGQg
aGF2ZSAnaW5zZXJ0aW9uJy4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2Vy
dCghKCJ0YXJnZXROb2RlSWQiIGluIHBhdXNlRGF0YSksICJTaG91bGQgbm90IGhhdmUgJ3Rhcmdl
dE5vZGVJZCcuIik7CisKKyAgICAgICAgICAgICAgICBsb2dBY3RpdmVTdGFja1RyYWNlKCk7Cisg
ICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgpOworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYHRl
c3RTdWJ0cmVlTW9kaWZpZWQoKWApOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2Vy
dChicmVha3BvaW50LmRvbU5vZGVJZGVudGlmaWVyLCAiU2hvdWxkIGhhdmUgZG9tTm9kZUlkZW50
aWZpZXIuIik7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KHBhdXNlZCwgIlNo
b3VsZCBwYXVzZS4iKTsKKyAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVu
dExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIHBhdXNlZExpc3RlbmVy
KTsKKyAgICAgICAgfSwKKyAgICAgICAgdGVhcmRvd246IEluc3BlY3RvclRlc3QuRE9NQnJlYWtw
b2ludC50ZWFyZG93biwKKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAg
ICAgbmFtZTogYERPTUJyZWFrcG9pbnQuU3VidHJlZU1vZGlmaWVkLlJlbW92ZS5CcmVha3BvaW50
RGlzYWJsZWRgLAorICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgZGVidWdnZXIgZG9l
cyBub3QgcGF1c2UgZm9yIGRpc2FibGVkIGJyZWFrcG9pbnQuIiwKKyAgICAgICAgYXN5bmMgdGVz
dCgpIHsKKyAgICAgICAgICAgIGxldCBwYXVzZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIGxldCBw
YXVzZWRMaXN0ZW5lciA9IFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRl
YnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIChldmVudCkgPT4geworICAgICAgICAgICAgICAg
IHBhdXNlZCA9IHRydWU7CisKKyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVz
dW1lKCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgbGV0IG5vZGUgPSBhd2FpdCBJ
bnNwZWN0b3JUZXN0LkRPTUJyZWFrcG9pbnQuYXdhaXRRdWVyeVNlbGVjdG9yKCIjc3VidHJlZS1t
b2RpZmllZC10ZXN0Iik7CisKKyAgICAgICAgICAgIGxldCBicmVha3BvaW50ID0gYXdhaXQgSW5z
cGVjdG9yVGVzdC5ET01CcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQobm9kZSwgV0kuRE9NQnJl
YWtwb2ludC5UeXBlLlN1YnRyZWVNb2RpZmllZCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QubG9nKCJEaXNhYmxpbmcgYnJlYWtwb2ludC4uLiIpOworICAgICAgICAgICAgYnJlYWtwb2lu
dC5kaXNhYmxlZCA9IHRydWU7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KGJy
ZWFrcG9pbnQuZG9tTm9kZUlkZW50aWZpZXIsICJTaG91bGQgaGF2ZSBkb21Ob2RlSWRlbnRpZmll
ci4iKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlRyaWdnZXJpbmcgYnJlYWtw
b2ludC4uLiIpOworICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFn
ZShgdGVzdFN1YnRyZWVNb2RpZmllZCgpYCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YXNzZXJ0KGJyZWFrcG9pbnQuZG9tTm9kZUlkZW50aWZpZXIsICJTaG91bGQgaGF2ZSBkb21Ob2Rl
SWRlbnRpZmllci4iKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZShw
YXVzZWQsICJTaG91bGQgbm90IHBhdXNlIGZvciBkaXNhYmxlZCBicmVha3BvaW50LiIpOworICAg
ICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdn
ZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgcGF1c2VkTGlzdGVuZXIpOworICAgICAgICB9LAorICAg
ICAgICB0ZWFyZG93bjogSW5zcGVjdG9yVGVzdC5ET01CcmVha3BvaW50LnRlYXJkb3duLAorICAg
IH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiBgRE9NQnJlYWtw
b2ludC5TdWJ0cmVlTW9kaWZpZWQuUmVtb3ZlLkRlYnVnZ2VyRGlzYWJsZWRgLAorICAgICAgICBk
ZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgZGVidWdnZXIgZG9lcyBub3QgcGF1c2Ugd2hlbiB0aGUg
ZGVidWdnZXIgaXMgZGlzYWJsZWQuIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAg
ICAgIGxldCBwYXVzZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIGxldCBwYXVzZWRMaXN0ZW5lciA9
IFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5F
dmVudC5QYXVzZWQsIChldmVudCkgPT4geworICAgICAgICAgICAgICAgIHBhdXNlZCA9IHRydWU7
CisKKyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVzdW1lKCk7CisgICAgICAg
ICAgICB9KTsKKworICAgICAgICAgICAgbGV0IG5vZGUgPSBhd2FpdCBJbnNwZWN0b3JUZXN0LkRP
TUJyZWFrcG9pbnQuYXdhaXRRdWVyeVNlbGVjdG9yKCIjc3VidHJlZS1tb2RpZmllZC10ZXN0Iik7
CisKKyAgICAgICAgICAgIGxldCBicmVha3BvaW50ID0gYXdhaXQgSW5zcGVjdG9yVGVzdC5ET01C
cmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQobm9kZSwgV0kuRE9NQnJlYWtwb2ludC5UeXBlLlN1
YnRyZWVNb2RpZmllZCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJEaXNhYmxp
bmcgYWxsIGJyZWFrcG9pbnRzLi4uIik7CisgICAgICAgICAgICBhd2FpdCBEZWJ1Z2dlckFnZW50
LnNldEJyZWFrcG9pbnRzQWN0aXZlKGZhbHNlKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5sb2coIlRyaWdnZXJpbmcgYnJlYWtwb2ludC4uLiIpOworICAgICAgICAgICAgYXdhaXQgSW5z
cGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgdGVzdFN1YnRyZWVNb2RpZmllZCgpYCk7CisKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KGJyZWFrcG9pbnQuZG9tTm9kZUlkZW50aWZp
ZXIsICJTaG91bGQgaGF2ZSBkb21Ob2RlSWRlbnRpZmllci4iKTsKKworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5sb2coIkVuYWJsaW5nIGFsbCBicmVha3BvaW50cy4uLiIpOworICAgICAgICAg
ICAgYXdhaXQgRGVidWdnZXJBZ2VudC5zZXRCcmVha3BvaW50c0FjdGl2ZSh0cnVlKTsKKworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZShwYXVzZWQsICJTaG91bGQgbm90IHBh
dXNlIHdoZW4gYWxsIGJyZWFrcG9pbnRzIGRpc2FibGVkLiIpOworICAgICAgICAgICAgV0kuZGVi
dWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50
LlBhdXNlZCwgcGF1c2VkTGlzdGVuZXIpOworICAgICAgICB9LAorICAgICAgICB0ZWFyZG93bjog
SW5zcGVjdG9yVGVzdC5ET01CcmVha3BvaW50LnRlYXJkb3duLAorICAgIH0pOworCisgICAgc3Vp
dGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiBgRE9NQnJlYWtwb2ludC5TdWJ0cmVlTW9k
aWZpZWQuUmVtb3ZlLlJlbW92ZUJyZWFrcG9pbnRgLAorICAgICAgICBkZXNjcmlwdGlvbjogIkNo
ZWNrIHRoYXQgZGVidWdnZXIgZG9lcyBub3QgcGF1c2UgZm9yIHJlbW92ZWQgYnJlYWtwb2ludC4i
LAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IHBhdXNlZCA9IGZhbHNl
OworICAgICAgICAgICAgbGV0IHBhdXNlZExpc3RlbmVyID0gV0kuZGVidWdnZXJNYW5hZ2VyLmFk
ZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9
PiB7CisgICAgICAgICAgICAgICAgcGF1c2VkID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIFdJ
LmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAg
ICBsZXQgbm9kZSA9IGF3YWl0IEluc3BlY3RvclRlc3QuRE9NQnJlYWtwb2ludC5hd2FpdFF1ZXJ5
U2VsZWN0b3IoIiNzdWJ0cmVlLW1vZGlmaWVkLXRlc3QiKTsKKworICAgICAgICAgICAgbGV0IGJy
ZWFrcG9pbnQgPSBhd2FpdCBJbnNwZWN0b3JUZXN0LkRPTUJyZWFrcG9pbnQuY3JlYXRlQnJlYWtw
b2ludChub2RlLCBXSS5ET01CcmVha3BvaW50LlR5cGUuU3VidHJlZU1vZGlmaWVkKTsKKworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlJlbW92aW5nIGJyZWFrcG9pbnQuLi4iKTsKKyAg
ICAgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5yZW1vdmVET01CcmVha3BvaW50KGJyZWFr
cG9pbnQpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydCghYnJlYWtwb2ludC5k
b21Ob2RlSWRlbnRpZmllciwgIlNob3VsZCBub3QgaGF2ZSBkb21Ob2RlSWRlbnRpZmllci4iKTsK
KworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlRyaWdnZXJpbmcgYnJlYWtwb2ludC4u
LiIpOworICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgdGVz
dFN1YnRyZWVNb2RpZmllZCgpYCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0
KCFicmVha3BvaW50LmRvbU5vZGVJZGVudGlmaWVyLCAiU2hvdWxkIG5vdCBoYXZlIGRvbU5vZGVJ
ZGVudGlmaWVyLiIpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNlKHBh
dXNlZCwgIlNob3VsZCBub3QgcGF1c2UgZm9yIHJlbW92ZWQgYnJlYWtwb2ludC4iKTsKKyAgICAg
ICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2Vy
TWFuYWdlci5FdmVudC5QYXVzZWQsIHBhdXNlZExpc3RlbmVyKTsKKyAgICAgICAgfSwKKyAgICAg
ICAgdGVhcmRvd246IEluc3BlY3RvclRlc3QuRE9NQnJlYWtwb2ludC50ZWFyZG93biwKKyAgICB9
KTsKKworICAgIEluc3BlY3RvclRlc3QuQnJlYWtwb2ludE9wdGlvbnMuYWRkVGVzdENhc2VzKHN1
aXRlLCB7CisgICAgICAgIHRlc3RDYXNlTmFtZVByZWZpeDogIlJlbW92ZS4iLAorICAgICAgICBh
c3luYyBjcmVhdGVCcmVha3BvaW50KCkgeworICAgICAgICAgICAgbGV0IG5vZGUgPSBhd2FpdCBJ
bnNwZWN0b3JUZXN0LkRPTUJyZWFrcG9pbnQuYXdhaXRRdWVyeVNlbGVjdG9yKCIjc3VidHJlZS1t
b2RpZmllZC10ZXN0Iik7CisgICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yVGVzdC5ET01CcmVh
a3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQobm9kZSwgV0kuRE9NQnJlYWtwb2ludC5UeXBlLlN1YnRy
ZWVNb2RpZmllZCk7CisgICAgICAgIH0sCisgICAgICAgIGFzeW5jIHRyaWdnZXJCcmVha3BvaW50
KGJyZWFrcG9pbnQpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KGJyZWFrcG9p
bnQuZG9tTm9kZUlkZW50aWZpZXIsICJTaG91bGQgaGF2ZSBkb21Ob2RlSWRlbnRpZmllci4iKTsK
KyAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGB0ZXN0U3Vi
dHJlZU1vZGlmaWVkKClgKTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRl
c3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9
InJ1blRlc3QoKSI+Cis8cD5UZXN0cyBmb3IgRE9NIGJyZWFrcG9pbnRzLjwvcD4KKzxkaXYgaWQ9
InRlc3QtY29udGFpbmVyIiBzdHlsZT0iZGlzcGxheTogbm9uZSI+CisgICAgPGRpdiBpZD0ic3Vi
dHJlZS1tb2RpZmllZC10ZXN0Ij48L2Rpdj4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9kb20tYnJlYWtwb2lu
dHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9kb20t
YnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0CmluZGV4IDJhNzY3MjBkZmIzZDhmMTMyMjM1ZTYwYzVj
YjQ4YzM5ZmIwZTM3Y2EuLjBiOTU1YzY1ZTliOWY3MjFhNGQ0YzhhZmE5MWEwMGE1M2Y3NTFjOWQg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZG9tLWJyZWFr
cG9pbnRzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVn
Z2VyL2RvbS1icmVha3BvaW50cy1leHBlY3RlZC50eHQKQEAgLTEsMTc0ICsxLDQwIEBACiBUZXN0
cyBmb3IgRE9NIGJyZWFrcG9pbnRzLgogCiAKLT09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogRE9NQnJl
YWtwb2ludHMKLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBCYXNpY0JyZWFrcG9pbnQKLVBBU1M6IEFk
ZGVkICdzdWJ0cmVlLW1vZGlmaWVkJyBicmVha3BvaW50LgorPT0gUnVubmluZyB0ZXN0IHN1aXRl
OiBET01CcmVha3BvaW50CistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NQnJlYWtwb2ludC5CYXNp
YworQWRkaW5nICJzdWJ0cmVlLW1vZGlmaWVkOjEsSFRNTCwxLEJPRFksMSxESVYsMCxESVYiIERP
TSBCcmVha3BvaW50Li4uCiBQQVNTOiBCcmVha3BvaW50IHNob3VsZCBub3QgYmUgZGlzYWJsZWQu
CiBQQVNTOiBCcmVha3BvaW50IHNob3VsZCBoYXZlIG5vZGUgaWRlbnRpZmllci4KIFBBU1M6IEJy
ZWFrcG9pbnQgVVJMIHNob3VsZCBtYXRjaCBkb2N1bWVudCBVUkwuCiAtLSBSdW5uaW5nIHRlc3Qg
dGVhcmRvd24uCiAKLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01CcmVha3BvaW50cy5TdWJ0cmVl
TW9kaWZpZWQuQnJlYWtwb2ludEVuYWJsZWQKLVBBU1M6IEFkZGVkICdzdWJ0cmVlLW1vZGlmaWVk
JyBicmVha3BvaW50LgotUEFTUzogQnJlYWtwb2ludCBzaG91bGQgaGF2ZSBleHBlY3RlZCB0eXBl
LgotQ2FsbCBET00gb3BlcmF0aW9uLgotUEFVU0VEOgotUEFTUzogUGF1c2UgcmVhc29uIHNob3Vs
ZCBiZSBET00uCi1QQVNTOiBQYXVzZSB0eXBlIHNob3VsZCBiZSAnc3VidHJlZS1tb2RpZmllZCcu
Ci1QQVNTOiBQYXVzZSBub2RlSWQgc2hvdWxkIGJlIGV4cGVjdGVkIHZhbHVlLgotUEFTUzogUGF1
c2UgaW5zZXJ0aW9uIHNob3VsZCBiZSAndHJ1ZScuCi1QQVNTOiBQYXVzZSB0YXJnZXROb2RlSWQg
c2hvdWxkIG1hdGNoIG5vZGVJZC4KLUNBTEwgU1RBQ0s6Ci0wOiBbRl0gc3VidHJlZU1vZGlmaWVk
VGVzdAotMTogW1BdIEdsb2JhbCBDb2RlCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NQnJlYWtw
b2ludC5SZW1vdmVBbGxCcmVha3BvaW50c0Zvck5vZGUKK0FkZGluZyAic3VidHJlZS1tb2RpZmll
ZDoxLEhUTUwsMSxCT0RZLDEsRElWLDEsRElWIiBET00gQnJlYWtwb2ludC4uLgorQWRkaW5nICJh
dHRyaWJ1dGUtbW9kaWZpZWQ6MSxIVE1MLDEsQk9EWSwxLERJViwxLERJViIgRE9NIEJyZWFrcG9p
bnQuLi4KK0FkZGluZyAibm9kZS1yZW1vdmVkOjEsSFRNTCwxLEJPRFksMSxESVYsMSxESVYiIERP
TSBCcmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgaGF2ZSAzIGJyZWFrcG9pbnRzLgorUmVtb3Zp
bmcgYWxsIGJyZWFrcG9pbnRzIGZvciAjbXVsdGlwbGUtYnJlYWtwb2ludHMtdGVzdC4uLgorUEFT
UzogU2hvdWxkIHJlbW92ZSBhbGwgYnJlYWtwb2ludHMuCiAtLSBSdW5uaW5nIHRlc3QgdGVhcmRv
d24uCiAKLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01CcmVha3BvaW50cy5TdWJ0cmVlTW9kaWZp
ZWQuQnJlYWtwb2ludERpc2FibGVkCi1QQVNTOiBBZGRlZCAnc3VidHJlZS1tb2RpZmllZCcgYnJl
YWtwb2ludC4KLVdhaXQgZm9yIGV2YWx1YXRlIGluIHBhZ2UgdG8gcmV0dXJuLgotUEFTUzogU2hv
dWxkIG5vdCBwYXVzZSBmb3IgZGlzYWJsZWQgYnJlYWtwb2ludC4KLS0tIFJ1bm5pbmcgdGVzdCB0
ZWFyZG93bi4KKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01CcmVha3BvaW50LlNldEJyZWFrcG9p
bnRXaXRoSW52YWxpZE5vZGVJZAorU2V0dGluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQg
cHJvZHVjZSBhbiBleGNlcHRpb24uCitFcnJvcjogTWlzc2luZyBub2RlIGZvciBnaXZlbiBub2Rl
SWQKIAotLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTUJyZWFrcG9pbnRzLlN1YnRyZWVNb2RpZmll
ZC5EZWJ1Z2dlckRpc2FibGVkCi1QQVNTOiBBZGRlZCAnc3VidHJlZS1tb2RpZmllZCcgYnJlYWtw
b2ludC4KLVdhaXQgZm9yIGV2YWx1YXRlIGluIHBhZ2UgdG8gcmV0dXJuLgotUEFTUzogU2hvdWxk
IG5vdCBwYXVzZSBmb3IgZGlzYWJsZWQgYnJlYWtwb2ludC4KLS0tIFJ1bm5pbmcgdGVzdCB0ZWFy
ZG93bi4KKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01CcmVha3BvaW50LlNldEJyZWFrcG9pbnRX
aXRoSW52YWxpZFR5cGUKK1NldHRpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHByb2R1
Y2UgYW4gZXhjZXB0aW9uLgorRXJyb3I6IFVua25vd24gdHlwZTogY3VzdG9tLWJyZWFrcG9pbnQt
dHlwZQogCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NQnJlYWtwb2ludHMuU3VidHJlZU1vZGlm
aWVkLlJlbW92ZUJyZWFrcG9pbnQKLVBBU1M6IEFkZGVkICdzdWJ0cmVlLW1vZGlmaWVkJyBicmVh
a3BvaW50LgotUmVtb3ZlIGJyZWFrcG9pbnQuCi1XYWl0IGZvciBldmFsdWF0ZSBpbiBwYWdlIHRv
IHJldHVybi4KLVBBU1M6IFNob3VsZCBub3QgcGF1c2UgZm9yIHJlbW92ZWQgYnJlYWtwb2ludC4K
LS0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01CcmVh
a3BvaW50LlJlbW92ZUJyZWFrcG9pbnRXaXRoSW52YWxpZE5vZGVJZAorUmVtb3ZpbmcgYnJlYWtw
b2ludC4uLgorUEFTUzogU2hvdWxkIHByb2R1Y2UgYW4gZXhjZXB0aW9uLgorRXJyb3I6IE1pc3Np
bmcgbm9kZSBmb3IgZ2l2ZW4gbm9kZUlkCiAKLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01CcmVh
a3BvaW50cy5BdHRyaWJ1dGVNb2RpZmllZC5CcmVha3BvaW50RW5hYmxlZAotUEFTUzogQWRkZWQg
J2F0dHJpYnV0ZS1tb2RpZmllZCcgYnJlYWtwb2ludC4KLVBBU1M6IEJyZWFrcG9pbnQgc2hvdWxk
IGhhdmUgZXhwZWN0ZWQgdHlwZS4KLUNhbGwgRE9NIG9wZXJhdGlvbi4KLVBBVVNFRDoKLVBBU1M6
IFBhdXNlIHJlYXNvbiBzaG91bGQgYmUgRE9NLgotUEFTUzogUGF1c2UgdHlwZSBzaG91bGQgYmUg
J2F0dHJpYnV0ZS1tb2RpZmllZCcuCi1QQVNTOiBQYXVzZSBub2RlSWQgc2hvdWxkIGJlIGV4cGVj
dGVkIHZhbHVlLgotQ0FMTCBTVEFDSzoKLTA6IFtGXSBhdHRyaWJ1dGVNb2RpZmllZFRlc3QKLTE6
IFtQXSBHbG9iYWwgQ29kZQotLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgotCi0tLSBSdW5uaW5n
IHRlc3QgY2FzZTogRE9NQnJlYWtwb2ludHMuQXR0cmlidXRlTW9kaWZpZWQuQnJlYWtwb2ludERp
c2FibGVkCi1QQVNTOiBBZGRlZCAnYXR0cmlidXRlLW1vZGlmaWVkJyBicmVha3BvaW50LgotV2Fp
dCBmb3IgZXZhbHVhdGUgaW4gcGFnZSB0byByZXR1cm4uCi1QQVNTOiBTaG91bGQgbm90IHBhdXNl
IGZvciBkaXNhYmxlZCBicmVha3BvaW50LgotLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgotCi0t
LSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NQnJlYWtwb2ludHMuQXR0cmlidXRlTW9kaWZpZWQuRGVi
dWdnZXJEaXNhYmxlZAotUEFTUzogQWRkZWQgJ2F0dHJpYnV0ZS1tb2RpZmllZCcgYnJlYWtwb2lu
dC4KLVdhaXQgZm9yIGV2YWx1YXRlIGluIHBhZ2UgdG8gcmV0dXJuLgotUEFTUzogU2hvdWxkIG5v
dCBwYXVzZSBmb3IgZGlzYWJsZWQgYnJlYWtwb2ludC4KLS0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93
bi4KLQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTUJyZWFrcG9pbnRzLkF0dHJpYnV0ZU1vZGlm
aWVkLlJlbW92ZUJyZWFrcG9pbnQKLVBBU1M6IEFkZGVkICdhdHRyaWJ1dGUtbW9kaWZpZWQnIGJy
ZWFrcG9pbnQuCi1SZW1vdmUgYnJlYWtwb2ludC4KLVdhaXQgZm9yIGV2YWx1YXRlIGluIHBhZ2Ug
dG8gcmV0dXJuLgotUEFTUzogU2hvdWxkIG5vdCBwYXVzZSBmb3IgcmVtb3ZlZCBicmVha3BvaW50
LgotLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9N
QnJlYWtwb2ludHMuTm9kZVJlbW92ZWRTZWxmLkJyZWFrcG9pbnRFbmFibGVkCi1QQVNTOiBBZGRl
ZCAnbm9kZS1yZW1vdmVkJyBicmVha3BvaW50LgotUEFTUzogQnJlYWtwb2ludCBzaG91bGQgaGF2
ZSBleHBlY3RlZCB0eXBlLgotQ2FsbCBET00gb3BlcmF0aW9uLgotUEFVU0VEOgotUEFTUzogUGF1
c2UgcmVhc29uIHNob3VsZCBiZSBET00uCi1QQVNTOiBQYXVzZSB0eXBlIHNob3VsZCBiZSAnbm9k
ZS1yZW1vdmVkJy4KLVBBU1M6IFBhdXNlIG5vZGVJZCBzaG91bGQgYmUgZXhwZWN0ZWQgdmFsdWUu
Ci1DQUxMIFNUQUNLOgotMDogW0ZdIG5vZGVSZW1vdmVkRGlyZWN0VGVzdAotMTogW1BdIEdsb2Jh
bCBDb2RlCi0tLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCi0KLS0tIFJ1bm5pbmcgdGVzdCBjYXNl
OiBET01CcmVha3BvaW50cy5Ob2RlUmVtb3ZlZFNlbGYuQnJlYWtwb2ludERpc2FibGVkCi1QQVNT
OiBBZGRlZCAnbm9kZS1yZW1vdmVkJyBicmVha3BvaW50LgotV2FpdCBmb3IgZXZhbHVhdGUgaW4g
cGFnZSB0byByZXR1cm4uCi1QQVNTOiBTaG91bGQgbm90IHBhdXNlIGZvciBkaXNhYmxlZCBicmVh
a3BvaW50LgotLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgotCi0tLSBSdW5uaW5nIHRlc3QgY2Fz
ZTogRE9NQnJlYWtwb2ludHMuTm9kZVJlbW92ZWRTZWxmLkRlYnVnZ2VyRGlzYWJsZWQKLVBBU1M6
IEFkZGVkICdub2RlLXJlbW92ZWQnIGJyZWFrcG9pbnQuCi1XYWl0IGZvciBldmFsdWF0ZSBpbiBw
YWdlIHRvIHJldHVybi4KLVBBU1M6IFNob3VsZCBub3QgcGF1c2UgZm9yIGRpc2FibGVkIGJyZWFr
cG9pbnQuCi0tLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCi0KLS0tIFJ1bm5pbmcgdGVzdCBjYXNl
OiBET01CcmVha3BvaW50cy5Ob2RlUmVtb3ZlZFNlbGYuUmVtb3ZlQnJlYWtwb2ludAotUEFTUzog
QWRkZWQgJ25vZGUtcmVtb3ZlZCcgYnJlYWtwb2ludC4KLVJlbW92ZSBicmVha3BvaW50LgotV2Fp
dCBmb3IgZXZhbHVhdGUgaW4gcGFnZSB0byByZXR1cm4uCi1QQVNTOiBTaG91bGQgbm90IHBhdXNl
IGZvciByZW1vdmVkIGJyZWFrcG9pbnQuCi0tLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCi0KLS0t
IFJ1bm5pbmcgdGVzdCBjYXNlOiBET01CcmVha3BvaW50cy5Ob2RlUmVtb3ZlZEFuY2VzdG9yLkJy
ZWFrcG9pbnRFbmFibGVkCi1QQVNTOiBBZGRlZCAnbm9kZS1yZW1vdmVkJyBicmVha3BvaW50Lgot
UEFTUzogQnJlYWtwb2ludCBzaG91bGQgaGF2ZSBleHBlY3RlZCB0eXBlLgotQ2FsbCBET00gb3Bl
cmF0aW9uLgotUEFVU0VEOgotUEFTUzogUGF1c2UgcmVhc29uIHNob3VsZCBiZSBET00uCi1QQVNT
OiBQYXVzZSB0eXBlIHNob3VsZCBiZSAnbm9kZS1yZW1vdmVkJy4KLVBBU1M6IFBhdXNlIG5vZGVJ
ZCBzaG91bGQgYmUgZXhwZWN0ZWQgdmFsdWUuCi1QQVNTOiBQYXVzZSB0YXJnZXROb2RlSWQgc2hv
dWxkIG5vdCBtYXRjaCBub2RlSWQuCi1DQUxMIFNUQUNLOgotMDogW0ZdIG5vZGVSZW1vdmVkQW5j
ZXN0b3JUZXN0Ci0xOiBbUF0gR2xvYmFsIENvZGUKLS0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4K
LQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTUJyZWFrcG9pbnRzLk5vZGVSZW1vdmVkQW5jZXN0
b3IuQnJlYWtwb2ludERpc2FibGVkCi1QQVNTOiBBZGRlZCAnbm9kZS1yZW1vdmVkJyBicmVha3Bv
aW50LgotV2FpdCBmb3IgZXZhbHVhdGUgaW4gcGFnZSB0byByZXR1cm4uCi1QQVNTOiBTaG91bGQg
bm90IHBhdXNlIGZvciBkaXNhYmxlZCBicmVha3BvaW50LgotLS0gUnVubmluZyB0ZXN0IHRlYXJk
b3duLgotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NQnJlYWtwb2ludHMuTm9kZVJlbW92ZWRB
bmNlc3Rvci5EZWJ1Z2dlckRpc2FibGVkCi1QQVNTOiBBZGRlZCAnbm9kZS1yZW1vdmVkJyBicmVh
a3BvaW50LgotV2FpdCBmb3IgZXZhbHVhdGUgaW4gcGFnZSB0byByZXR1cm4uCi1QQVNTOiBTaG91
bGQgbm90IHBhdXNlIGZvciBkaXNhYmxlZCBicmVha3BvaW50LgotLS0gUnVubmluZyB0ZXN0IHRl
YXJkb3duLgotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NQnJlYWtwb2ludHMuTm9kZVJlbW92
ZWRBbmNlc3Rvci5SZW1vdmVCcmVha3BvaW50Ci1QQVNTOiBBZGRlZCAnbm9kZS1yZW1vdmVkJyBi
cmVha3BvaW50LgotUmVtb3ZlIGJyZWFrcG9pbnQuCi1XYWl0IGZvciBldmFsdWF0ZSBpbiBwYWdl
IHRvIHJldHVybi4KLVBBU1M6IFNob3VsZCBub3QgcGF1c2UgZm9yIHJlbW92ZWQgYnJlYWtwb2lu
dC4KLS0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KLQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IFJl
bW92ZUFsbEJyZWFrcG9pbnRzRm9yTm9kZQotUEFTUzogQWRkZWQgJ3N1YnRyZWUtbW9kaWZpZWQn
IGJyZWFrcG9pbnQuCi1QQVNTOiBBZGRlZCAnYXR0cmlidXRlLW1vZGlmaWVkJyBicmVha3BvaW50
LgotUEFTUzogQWRkZWQgJ25vZGUtcmVtb3ZlZCcgYnJlYWtwb2ludC4KLVBBU1M6IFJlbW92ZWQg
MyBicmVha3BvaW50cy4KLVBBU1M6IERPTSBub2RlIHNob3VsZCBoYXZlIG5vIGJyZWFrcG9pbnRz
LgotLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogU2V0
QnJlYWtwb2ludFdpdGhJbnZhbGlkTm9kZUlkCi1BdHRlbXB0aW5nIHRvIHNldCBicmVha3BvaW50
LgotUHJvdG9jb2wgcmVzdWx0OiBNaXNzaW5nIG5vZGUgZm9yIGdpdmVuIG5vZGVJZAotUEFTUzog
UHJvdG9jb2wgc2hvdWxkIHJldHVybiBhbiBlcnJvci4KLS0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93
bi4KLQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IFNldEJyZWFrcG9pbnRXaXRoSW52YWxpZFR5cGUK
LUF0dGVtcHRpbmcgdG8gc2V0IGJyZWFrcG9pbnQuCi1Qcm90b2NvbCByZXN1bHQ6IFVua25vd24g
RE9NIGJyZWFrcG9pbnQgdHlwZTogY3VzdG9tLWJyZWFrcG9pbnQtdHlwZQotUEFTUzogUHJvdG9j
b2wgc2hvdWxkIHJldHVybiBhbiBlcnJvci4KLS0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KLQot
LS0gUnVubmluZyB0ZXN0IGNhc2U6IFJlbW92ZUJyZWFrcG9pbnRXaXRoSW52YWxpZE5vZGVJZAot
QXR0ZW1wdGluZyB0byByZW1vdmUgYnJlYWtwb2ludC4KLVByb3RvY29sIHJlc3VsdDogTWlzc2lu
ZyBub2RlIGZvciBnaXZlbiBub2RlSWQKLVBBU1M6IFByb3RvY29sIHNob3VsZCByZXR1cm4gYW4g
ZXJyb3IuCi0tLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCi0KLS0tIFJ1bm5pbmcgdGVzdCBjYXNl
OiBSZW1vdmVCcmVha3BvaW50V2l0aEludmFsaWRUeXBlCi1BdHRlbXB0aW5nIHRvIHJlbW92ZSBi
cmVha3BvaW50LgotUHJvdG9jb2wgcmVzdWx0OiBVbmtub3duIERPTSBicmVha3BvaW50IHR5cGU6
IGN1c3RvbS1icmVha3BvaW50LXR5cGUKLVBBU1M6IFByb3RvY29sIHNob3VsZCByZXR1cm4gYW4g
ZXJyb3IuCi0tLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCistLSBSdW5uaW5nIHRlc3QgY2FzZTog
RE9NQnJlYWtwb2ludC5SZW1vdmVCcmVha3BvaW50V2l0aEludmFsaWRUeXBlCitSZW1vdmluZyBi
cmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcHJvZHVjZSBhbiBleGNlcHRpb24uCitFcnJvcjog
VW5rbm93biB0eXBlOiBjdXN0b20tYnJlYWtwb2ludC10eXBlCiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZG9tLWJyZWFrcG9pbnRzLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2RvbS1icmVha3BvaW50cy5odG1sCmluZGV4
IDJmMjUwOWZhNzllMWE4MThmMDQ4ZThmODkwNjk0NWVlMGI4YzU1MTMuLmRiY2Y1NzVlOTI5M2Ey
MGYxNzJhNTllNDg1ZTY1ZGFiYjljZmYwNTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kb20tZGVidWdnZXIvZG9tLWJyZWFrcG9pbnRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9kb20tYnJlYWtwb2ludHMuaHRtbApAQCAtMywzNzggKzMs
OTIgQEAKIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jl
c291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vZGVi
dWdnZXIvcmVzb3VyY2VzL2xvZy1hY3RpdmUtc3RhY2stdHJhY2UuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9kb20tYnJlYWtwb2ludC11dGlsaXRpZXMuanMiPjwvc2NyaXB0
PgogPHNjcmlwdD4KLWZ1bmN0aW9uIHN1YnRyZWVNb2RpZmllZFRlc3QoKSB7Ci0gICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInN1YnRyZWUtbW9kaWZpZWQtdGVzdCIpLmFwcGVuZChkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJwIikpOwotfQotCi1mdW5jdGlvbiBhdHRyaWJ1dGVNb2RpZmllZFRl
c3QoKSB7Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImF0dHJpYnV0ZS1tb2RpZmllZC10
ZXN0Iikuc2V0QXR0cmlidXRlKCJkaXNwbGF5IiwgIm5vbmUiKTsKLX0KLQotZnVuY3Rpb24gbm9k
ZVJlbW92ZWREaXJlY3RUZXN0KCkgewotICAgIGxldCBub2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoIm5vZGUtcmVtb3ZlZC1kaXJlY3QtdGVzdCIpOwotICAgIGxldCBwYXJlbnQgPSBub2Rl
LnBhcmVudE5vZGU7Ci0gICAgbm9kZS5yZW1vdmUoKTsKLSAgICBwYXJlbnQuYXBwZW5kKG5vZGUp
OwotfQotCi1mdW5jdGlvbiBub2RlUmVtb3ZlZEFuY2VzdG9yVGVzdCgpIHsKLSAgICBsZXQgbm9k
ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJub2RlLXJlbW92ZWQtYW5jZXN0b3ItdGVzdCIp
OwotICAgIGxldCBwYXJlbnQgPSBub2RlLnBhcmVudE5vZGU7Ci0gICAgbGV0IGdyYW5kcGFyZW50
ID0gcGFyZW50LnBhcmVudE5vZGU7Ci0gICAgcGFyZW50LnJlbW92ZShub2RlKTsKLSAgICBncmFu
ZHBhcmVudC5hcHBlbmQocGFyZW50KTsKLX0KLQogZnVuY3Rpb24gdGVzdCgpCiB7Ci0gICAgY29u
c3Qgc3VidHJlZU1vZGlmaWVkVGVzdElkID0gInN1YnRyZWUtbW9kaWZpZWQtdGVzdCI7Ci0gICAg
Y29uc3QgYXR0cmlidXRlTW9kaWZpZWRUZXN0SWQgPSAiYXR0cmlidXRlLW1vZGlmaWVkLXRlc3Qi
OwotICAgIGNvbnN0IG5vZGVSZW1vdmVkRGlyZWN0VGVzdElkID0gIm5vZGUtcmVtb3ZlZC1kaXJl
Y3QtdGVzdCI7Ci0gICAgY29uc3Qgbm9kZVJlbW92ZWRBbmNlc3RvclRlc3RJZCA9ICJub2RlLXJl
bW92ZWQtYW5jZXN0b3ItdGVzdCI7Ci0gICAgY29uc3QgbXVsdGlwbGVCcmVha3BvaW50c1Rlc3RJ
ZCA9ICJtdWx0aXBsZS1icmVha3BvaW50cy10ZXN0IjsKLQotICAgIGxldCBkZWJ1Z2dlclBhdXNl
ZExpc3RlbmVyID0gbnVsbDsKLQotICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRl
QXN5bmNTdWl0ZSgiRE9NQnJlYWtwb2ludHMiKTsKLQotICAgIGZ1bmN0aW9uIHRlYXJkb3duKHJl
c29sdmUpIHsKLSAgICAgICAgbGV0IGJyZWFrcG9pbnRzID0gV0kuZG9tRGVidWdnZXJNYW5hZ2Vy
LmRvbUJyZWFrcG9pbnRzOwotICAgICAgICBmb3IgKGxldCBicmVha3BvaW50IG9mIGJyZWFrcG9p
bnRzKQotICAgICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnJlbW92ZURPTUJyZWFrcG9p
bnQoYnJlYWtwb2ludCk7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KCFXSS5kb21EZWJ1
Z2dlck1hbmFnZXIuZG9tQnJlYWtwb2ludHMubGVuZ3RoKTsKLQotICAgICAgICBXSS5kZWJ1Z2dl
ck1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1
c2VkLCBkZWJ1Z2dlclBhdXNlZExpc3RlbmVyKTsKLSAgICAgICAgZGVidWdnZXJQYXVzZWRMaXN0
ZW5lciA9IG51bGw7Ci0KLSAgICAgICAgcmVzb2x2ZSgpOwotICAgIH0KLQotICAgIGZ1bmN0aW9u
IHJlamVjdE9uUGF1c2UoKSB7Ci0gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwg
cmVqZWN0KSA9PiB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydCghZGVidWdnZXJQ
YXVzZWRMaXN0ZW5lcik7Ci0gICAgICAgICAgICBkZWJ1Z2dlclBhdXNlZExpc3RlbmVyID0gV0ku
ZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50
LlBhdXNlZCwgKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2Vy
LnJlc3VtZSgpOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZmFpbCgiU2hvdWxkIG5v
dCBwYXVzZS4iKTsKLSAgICAgICAgICAgICAgICByZWplY3QoKTsKLSAgICAgICAgICAgIH0pOwot
ICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBhd2FpdEV2YWx1YXRlSW5QYWdlKGV4
cHJlc3Npb24pIHsKLSAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3Qp
ID0+IHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJXYWl0IGZvciBldmFsdWF0ZSBp
biBwYWdlIHRvIHJldHVybi4iKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJ
blBhZ2UoZXhwcmVzc2lvbiwgKGVycm9yKSA9PiB7Ci0gICAgICAgICAgICAgICAgaWYgKGVycm9y
KQotICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpOwotCi0gICAgICAgICAgICAgICAg
cmVzb2x2ZSgpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIGZ1
bmN0aW9uIGF3YWl0UXVlcnlTZWxlY3RvcihzZWxlY3RvcikgewotICAgICAgICByZXR1cm4gbmV3
IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewotICAgICAgICAgICAgV0kuZG9tTWFuYWdl
ci5yZXF1ZXN0RG9jdW1lbnQoKGRvY3VtZW50Tm9kZSkgPT4gewotICAgICAgICAgICAgICAgIGlm
ICghZG9jdW1lbnROb2RlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlamVjdCgpOwotICAgICAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgZG9jdW1lbnROb2RlLnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IsIChub2RlSWQpID0+IHsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKCFub2RlSWQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZmFpbCgiU2VsZWN0b3IgcmV0dXJuZWQgbm8gbm9kZXMuIiwgc2VsZWN0
b3IpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg
ICAgICBsZXQgbm9kZSA9IFdJLmRvbU1hbmFnZXIubm9kZUZvcklkKG5vZGVJZCk7Ci0gICAgICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUsICJNaXNzaW5nIG5vZGUgZm9y
IGlkLiIsIG5vZGVJZCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghbm9kZSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgcmVqZWN0KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICByZXNvbHZl
KG5vZGUpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0p
OwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGFkZEJyZWFrcG9pbnRGb3JFbGVtZW50SWRlbnRpZmll
cihlbGVtZW50SWRlbnRpZmllciwgdHlwZSwgZGlzYWJsZWQpIHsKLSAgICAgICAgcmV0dXJuIG5l
dyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKLSAgICAgICAgICAgIGF3YWl0UXVlcnlT
ZWxlY3RvcigiIyIgKyBlbGVtZW50SWRlbnRpZmllcikKLSAgICAgICAgICAgIC50aGVuKChub2Rl
KSA9PiB7Ci0gICAgICAgICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmF3YWl0RXZlbnQo
V0kuRE9NRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkRPTUJyZWFrcG9pbnRBZGRlZCkKLSAgICAgICAg
ICAgICAgICAudGhlbigoZXZlbnQpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgbGV0IGJyZWFr
cG9pbnQgPSBldmVudC5kYXRhLmJyZWFrcG9pbnQ7Ci0gICAgICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QucGFzcyhgQWRkZWQgJyR7dHlwZX0nIGJyZWFrcG9pbnQuYCk7Ci0gICAgICAgICAg
ICAgICAgICAgIHJlc29sdmUoZXZlbnQpOwotICAgICAgICAgICAgICAgIH0pOwotCi0gICAgICAg
ICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFkZERPTUJyZWFrcG9pbnQobmV3IFdJLkRP
TUJyZWFrcG9pbnQobm9kZSwgdHlwZSwge2Rpc2FibGVkfSkpOwotICAgICAgICAgICAgfSk7Ci0g
ICAgICAgIH0pOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGFkZFRlc3RzRm9yQnJlYWtwb2ludFR5
cGUoe25hbWUsIGVsZW1lbnRJZGVudGlmaWVyLCB0eXBlLCBleHByZXNzaW9uLCBpbnNlcnRpb24s
IHNob3VsZE1hdGNofSkgewotICAgICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Ci0gICAgICAgICAg
ICBuYW1lOiBgRE9NQnJlYWtwb2ludHMuJHtuYW1lfS5CcmVha3BvaW50RW5hYmxlZGAsCi0gICAg
ICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgZGVidWdnZXIgcGF1c2VzIGZvciBicmVh
a3BvaW50IHR5cGUuIiwKLSAgICAgICAgICAgIHRlYXJkb3duLAotICAgICAgICAgICAgdGVzdChy
ZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgICAgICBhZGRCcmVha3BvaW50Rm9yRWxlbWVu
dElkZW50aWZpZXIoZWxlbWVudElkZW50aWZpZXIsIHR5cGUpCi0gICAgICAgICAgICAgICAgLnRo
ZW4oKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIGxldCBicmVha3BvaW50ID0gZXZl
bnQuZGF0YS5icmVha3BvaW50OwotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdEVxdWFsKGJyZWFrcG9pbnQudHlwZSwgdHlwZSwgIkJyZWFrcG9pbnQgc2hvdWxkIGhhdmUg
ZXhwZWN0ZWQgdHlwZS4iKTsKLQotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lmxv
ZygiQ2FsbCBET00gb3BlcmF0aW9uLiIpOwotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV2YWx1YXRlSW5QYWdlKGV4cHJlc3Npb24pOwotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gV0kuZGVidWdnZXJNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50
LlBhdXNlZCk7Ci0gICAgICAgICAgICAgICAgfSkKLSAgICAgICAgICAgICAgICAudGhlbigoKSA9
PiB7Ci0gICAgICAgICAgICAgICAgICAgIGxldCB0YXJnZXREYXRhID0gV0kuZGVidWdnZXJNYW5h
Z2VyLmRhdGFGb3JUYXJnZXQoV0kuZGVidWdnZXJNYW5hZ2VyLmFjdGl2ZUNhbGxGcmFtZS50YXJn
ZXQpOwotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUEFVU0VEOiIpOwot
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHRhcmdldERhdGEu
cGF1c2VSZWFzb24sIFdJLkRlYnVnZ2VyTWFuYWdlci5QYXVzZVJlYXNvbi5ET00sICJQYXVzZSBy
ZWFzb24gc2hvdWxkIGJlIERPTS4iKTsKLQotICAgICAgICAgICAgICAgICAgICBsZXQgcGF1c2VE
YXRhID0gdGFyZ2V0RGF0YS5wYXVzZURhdGE7Ci0gICAgICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXhwZWN0RXF1YWwocGF1c2VEYXRhLnR5cGUsIHR5cGUsIGBQYXVzZSB0eXBlIHNob3Vs
ZCBiZSAnJHt0eXBlfScuYCk7Ci0gICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0RXF1YWwocGF1c2VEYXRhLm5vZGVJZCwgZG9tTm9kZUlkZW50aWZpZXIsIGBQYXVzZSBub2Rl
SWQgc2hvdWxkIGJlIGV4cGVjdGVkIHZhbHVlLmApOwotCi0gICAgICAgICAgICAgICAgICAgIGlm
IChpbnNlcnRpb24gIT09IHVuZGVmaW5lZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0RXF1YWwoaW5zZXJ0aW9uLCB0YXJnZXQucGF1c2VEYXRhLmluc2VydGlv
biwgYFBhdXNlIGluc2VydGlvbiBzaG91bGQgYmUgJyR7aW5zZXJ0aW9ufScuYCk7Ci0KLSAgICAg
ICAgICAgICAgICAgICAgaWYgKHBhdXNlRGF0YS50YXJnZXROb2RlSWQpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChzaG91bGRNYXRjaCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHBhdXNlRGF0YS50YXJnZXROb2RlSWQsIHBhdXNl
RGF0YS5ub2RlSWQsICJQYXVzZSB0YXJnZXROb2RlSWQgc2hvdWxkIG1hdGNoIG5vZGVJZC4iKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGVjdE5vdEVxdWFsKHBhdXNlRGF0YS50YXJnZXROb2RlSWQsIHBh
dXNlRGF0YS5ub2RlSWQsICJQYXVzZSB0YXJnZXROb2RlSWQgc2hvdWxkIG5vdCBtYXRjaCBub2Rl
SWQuIik7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBsb2dB
Y3RpdmVTdGFja1RyYWNlKCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBXSS5kZWJ1Z2dl
ck1hbmFnZXIucmVzdW1lKCk7Ci0gICAgICAgICAgICAgICAgfSkKLSAgICAgICAgICAgICAgICAu
dGhlbihyZXNvbHZlLCByZWplY3QpOwotICAgICAgICAgICAgfQotICAgICAgICB9KTsKLQotICAg
ICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Ci0gICAgICAgICAgICBuYW1lOiBgRE9NQnJlYWtwb2lu
dHMuJHtuYW1lfS5CcmVha3BvaW50RGlzYWJsZWRgLAotICAgICAgICAgICAgZGVzY3JpcHRpb246
ICJDaGVjayB0aGF0IGRlYnVnZ2VyIGRvZXMgbm90IHBhdXNlIGZvciBkaXNhYmxlZCBicmVha3Bv
aW50LiIsCi0gICAgICAgICAgICB0ZWFyZG93biwKLSAgICAgICAgICAgIHRlc3QocmVzb2x2ZSwg
cmVqZWN0KSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgZGlzYWJsZWQgPSB0cnVlOwotICAgICAg
ICAgICAgICAgIGFkZEJyZWFrcG9pbnRGb3JFbGVtZW50SWRlbnRpZmllcihlbGVtZW50SWRlbnRp
ZmllciwgdHlwZSwgZGlzYWJsZWQpCi0gICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4gUHJvbWlz
ZS5yYWNlKFthd2FpdEV2YWx1YXRlSW5QYWdlKGV4cHJlc3Npb24pLCByZWplY3RPblBhdXNlKCld
KSkKLSAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QucGFzcygiU2hvdWxkIG5vdCBwYXVzZSBmb3IgZGlzYWJsZWQgYnJlYWtwb2lu
dC4iKTsKLSAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwotICAgICAgICAgICAgICAgIH0p
Ci0gICAgICAgICAgICAgICAgLmNhdGNoKHJlamVjdCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0pOwotCi0gICAgICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKLSAgICAgICAgICAgIG5hbWU6IGBE
T01CcmVha3BvaW50cy4ke25hbWV9LkRlYnVnZ2VyRGlzYWJsZWRgLAotICAgICAgICAgICAgZGVz
Y3JpcHRpb246ICJDaGVjayB0aGF0IGRlYnVnZ2VyIGRvZXMgbm90IHBhdXNlIHdoZW4gdGhlIGRl
YnVnZ2VyIGlzIGRpc2FibGVkLiIsCi0gICAgICAgICAgICB0ZWFyZG93biwKLSAgICAgICAgICAg
IHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICAgICAgYWRkQnJlYWtwb2ludEZv
ckVsZW1lbnRJZGVudGlmaWVyKGVsZW1lbnRJZGVudGlmaWVyLCB0eXBlKQotICAgICAgICAgICAg
ICAgIC50aGVuKCgpID0+IERlYnVnZ2VyQWdlbnQuc2V0QnJlYWtwb2ludHNBY3RpdmUoZmFsc2Up
KQotICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IFByb21pc2UucmFjZShbYXdhaXRFdmFsdWF0
ZUluUGFnZShleHByZXNzaW9uKSwgcmVqZWN0T25QYXVzZSgpXSkpCi0gICAgICAgICAgICAgICAg
LnRoZW4oKCkgPT4gRGVidWdnZXJBZ2VudC5zZXRCcmVha3BvaW50c0FjdGl2ZSh0cnVlKSkKLSAg
ICAgICAgICAgICAgICAudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QucGFzcygiU2hvdWxkIG5vdCBwYXVzZSBmb3IgZGlzYWJsZWQgYnJlYWtwb2ludC4iKTsK
LSAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwotICAgICAgICAgICAgICAgIH0pCi0gICAg
ICAgICAgICAgICAgLmNhdGNoKHJlamVjdCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwot
Ci0gICAgICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKLSAgICAgICAgICAgIG5hbWU6IGBET01CcmVh
a3BvaW50cy4ke25hbWV9LlJlbW92ZUJyZWFrcG9pbnRgLAotICAgICAgICAgICAgZGVzY3JpcHRp
b246ICJDaGVjayB0aGF0IGRlYnVnZ2VyIGRvZXMgbm90IHBhdXNlIGZvciByZW1vdmVkIGJyZWFr
cG9pbnQuIiwKLSAgICAgICAgICAgIHRlYXJkb3duLAotICAgICAgICAgICAgdGVzdChyZXNvbHZl
LCByZWplY3QpIHsKLSAgICAgICAgICAgICAgICBhZGRCcmVha3BvaW50Rm9yRWxlbWVudElkZW50
aWZpZXIoZWxlbWVudElkZW50aWZpZXIsIHR5cGUpCi0gICAgICAgICAgICAgICAgLnRoZW4oKGV2
ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIGxldCBwcm9taXNlID0gV0kuZG9tRGVidWdn
ZXJNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkRPTUJyZWFr
cG9pbnRSZW1vdmVkKTsKLSAgICAgICAgICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBldmVu
dC5kYXRhLmJyZWFrcG9pbnQ7Ci0KLSAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5s
b2coIlJlbW92ZSBicmVha3BvaW50LiIpOwotICAgICAgICAgICAgICAgICAgICBXSS5kb21EZWJ1
Z2dlck1hbmFnZXIucmVtb3ZlRE9NQnJlYWtwb2ludChicmVha3BvaW50KTsKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHByb21pc2U7Ci0gICAgICAgICAgICAgICAgfSkKLSAgICAgICAgICAg
ICAgICAudGhlbigoKSA9PiBQcm9taXNlLnJhY2UoW2F3YWl0RXZhbHVhdGVJblBhZ2UoZXhwcmVz
c2lvbiksIHJlamVjdE9uUGF1c2UoKV0pKQotICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHsK
LSAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKCJTaG91bGQgbm90IHBhdXNl
IGZvciByZW1vdmVkIGJyZWFrcG9pbnQuIik7Ci0gICAgICAgICAgICAgICAgICAgIHJlc29sdmUo
KTsKLSAgICAgICAgICAgICAgICB9KQotICAgICAgICAgICAgICAgIC5jYXRjaChyZWplY3QpOwot
ICAgICAgICAgICAgfQotICAgICAgICB9KTsKLSAgICB9CisgICAgbGV0IHN1aXRlID0gSW5zcGVj
dG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJET01CcmVha3BvaW50Iik7CiAKICAgICBzdWl0ZS5h
ZGRUZXN0Q2FzZSh7Ci0gICAgICAgIG5hbWU6ICJCYXNpY0JyZWFrcG9pbnQiLAorICAgICAgICBu
YW1lOiAiRE9NQnJlYWtwb2ludC5CYXNpYyIsCiAgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sg
dGhhdCBicmVha3BvaW50IGlzIGluIGEgdmFsaWQgaW5pdGlhbCBzdGF0ZS4iLAotICAgICAgICB0
ZWFyZG93biwKLSAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIGFk
ZEJyZWFrcG9pbnRGb3JFbGVtZW50SWRlbnRpZmllcihzdWJ0cmVlTW9kaWZpZWRUZXN0SWQsIFdJ
LkRPTUJyZWFrcG9pbnQuVHlwZS5TdWJ0cmVlTW9kaWZpZWQpCi0gICAgICAgICAgICAudGhlbigo
ZXZlbnQpID0+IHsKLSAgICAgICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IGV2ZW50LmRhdGEu
YnJlYWtwb2ludDsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNlKGJy
ZWFrcG9pbnQuZGlzYWJsZWQsICJCcmVha3BvaW50IHNob3VsZCBub3QgYmUgZGlzYWJsZWQuIik7
Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGJyZWFrcG9pbnQuZG9t
Tm9kZUlkZW50aWZpZXIsICJCcmVha3BvaW50IHNob3VsZCBoYXZlIG5vZGUgaWRlbnRpZmllci4i
KTsKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCBub2RlID0gYXdhaXQg
SW5zcGVjdG9yVGVzdC5ET01CcmVha3BvaW50LmF3YWl0UXVlcnlTZWxlY3RvcigiI2Jhc2ljLXRl
c3QiKTsKIAotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KFdJLm5ldHdvcmtN
YW5hZ2VyLm1haW5GcmFtZSwgIk1pc3NpbmcgbWFpbiBmcmFtZS4iKTsKLSAgICAgICAgICAgICAg
ICBsZXQgZG9jdW1lbnRVUkwgPSBXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUudXJsOwotICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoYnJlYWtwb2ludC51cmwsIGRv
Y3VtZW50VVJMLCAiQnJlYWtwb2ludCBVUkwgc2hvdWxkIG1hdGNoIGRvY3VtZW50IFVSTC4iKTsK
LSAgICAgICAgICAgIH0pCi0gICAgICAgICAgICAudGhlbihyZXNvbHZlLCByZWplY3QpOwotICAg
ICAgICB9Ci0gICAgfSk7Ci0KLSAgICBhZGRUZXN0c0ZvckJyZWFrcG9pbnRUeXBlKHsKLSAgICAg
ICAgbmFtZTogIlN1YnRyZWVNb2RpZmllZCIsCi0gICAgICAgIGVsZW1lbnRJZGVudGlmaWVyOiBz
dWJ0cmVlTW9kaWZpZWRUZXN0SWQsCi0gICAgICAgIHR5cGU6IFdJLkRPTUJyZWFrcG9pbnQuVHlw
ZS5TdWJ0cmVlTW9kaWZpZWQsCi0gICAgICAgIGV4cHJlc3Npb246ICJzdWJ0cmVlTW9kaWZpZWRU
ZXN0KCkiLAotICAgICAgICBpbnNlcnRpb246IHRydWUsCi0gICAgICAgIHNob3VsZE1hdGNoOiB0
cnVlLAotICAgIH0pOwotCi0gICAgYWRkVGVzdHNGb3JCcmVha3BvaW50VHlwZSh7Ci0gICAgICAg
IG5hbWU6ICJBdHRyaWJ1dGVNb2RpZmllZCIsCi0gICAgICAgIGVsZW1lbnRJZGVudGlmaWVyOiBh
dHRyaWJ1dGVNb2RpZmllZFRlc3RJZCwKLSAgICAgICAgdHlwZTogV0kuRE9NQnJlYWtwb2ludC5U
eXBlLkF0dHJpYnV0ZU1vZGlmaWVkLAotICAgICAgICBleHByZXNzaW9uOiAiYXR0cmlidXRlTW9k
aWZpZWRUZXN0KCkiLAotICAgIH0pOwotCi0gICAgYWRkVGVzdHNGb3JCcmVha3BvaW50VHlwZSh7
Ci0gICAgICAgIG5hbWU6ICJOb2RlUmVtb3ZlZFNlbGYiLAotICAgICAgICBlbGVtZW50SWRlbnRp
Zmllcjogbm9kZVJlbW92ZWREaXJlY3RUZXN0SWQsCi0gICAgICAgIHR5cGU6IFdJLkRPTUJyZWFr
cG9pbnQuVHlwZS5Ob2RlUmVtb3ZlZCwKLSAgICAgICAgZXhwcmVzc2lvbjogIm5vZGVSZW1vdmVk
RGlyZWN0VGVzdCgpIiwKLSAgICB9KTsKLQotICAgIGFkZFRlc3RzRm9yQnJlYWtwb2ludFR5cGUo
ewotICAgICAgICBuYW1lOiAiTm9kZVJlbW92ZWRBbmNlc3RvciIsCi0gICAgICAgIGVsZW1lbnRJ
ZGVudGlmaWVyOiBub2RlUmVtb3ZlZEFuY2VzdG9yVGVzdElkLAotICAgICAgICB0eXBlOiBXSS5E
T01CcmVha3BvaW50LlR5cGUuTm9kZVJlbW92ZWQsCi0gICAgICAgIGV4cHJlc3Npb246ICJub2Rl
UmVtb3ZlZEFuY2VzdG9yVGVzdCgpIiwKLSAgICAgICAgc2hvdWxkTWF0Y2g6IHRydWUsCisgICAg
ICAgICAgICBsZXQgYnJlYWtwb2ludCA9IGF3YWl0IEluc3BlY3RvclRlc3QuRE9NQnJlYWtwb2lu
dC5jcmVhdGVCcmVha3BvaW50KG5vZGUsIFdJLkRPTUJyZWFrcG9pbnQuVHlwZS5TdWJ0cmVlTW9k
aWZpZWQpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZShicmVha3BvaW50
LmRpc2FibGVkLCAiQnJlYWtwb2ludCBzaG91bGQgbm90IGJlIGRpc2FibGVkLiIpOworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChicmVha3BvaW50LmRvbU5vZGVJZGVudGlm
aWVyLCBub2RlLmlkLCAiQnJlYWtwb2ludCBzaG91bGQgaGF2ZSBub2RlIGlkZW50aWZpZXIuIik7
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGJyZWFrcG9pbnQudXJsLCBX
SS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUudXJsLCAiQnJlYWtwb2ludCBVUkwgc2hvdWxkIG1h
dGNoIGRvY3VtZW50IFVSTC4iKTsKKyAgICAgICAgfSwKKyAgICAgICAgdGVhcmRvd246IEluc3Bl
Y3RvclRlc3QuRE9NQnJlYWtwb2ludC50ZWFyZG93biwKICAgICB9KTsKIAogICAgIHN1aXRlLmFk
ZFRlc3RDYXNlKHsKLSAgICAgICAgbmFtZTogIlJlbW92ZUFsbEJyZWFrcG9pbnRzRm9yTm9kZSIs
CisgICAgICAgIG5hbWU6ICJET01CcmVha3BvaW50LlJlbW92ZUFsbEJyZWFrcG9pbnRzRm9yTm9k
ZSIsCiAgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBkZWJ1Z2dlciBkb2VzIG5vdCBw
YXVzZSBmb3IgcmVtb3ZlZCBicmVha3BvaW50cyBvbiBub2RlLiIsCi0gICAgICAgIHRlYXJkb3du
LAotICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAgbGV0IGJyZWFr
cG9pbnRUeXBlcyA9IE9iamVjdC52YWx1ZXMoV0kuRE9NQnJlYWtwb2ludC5UeXBlKTsKLSAgICAg
ICAgICAgIGxldCBicmVha3BvaW50UHJvbWlzZXMgPSBicmVha3BvaW50VHlwZXMubWFwKHR5cGUg
PT4gYWRkQnJlYWtwb2ludEZvckVsZW1lbnRJZGVudGlmaWVyKG11bHRpcGxlQnJlYWtwb2ludHNU
ZXN0SWQsIHR5cGUpKTsKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIGNvbnN0
IHR5cGVzID0gT2JqZWN0LnZhbHVlcyhXSS5ET01CcmVha3BvaW50LlR5cGUpOwogCi0gICAgICAg
ICAgICBQcm9taXNlLmFsbChicmVha3BvaW50UHJvbWlzZXMpCi0gICAgICAgICAgICAudGhlbigo
dmFsdWVzKSA9PiB7Ci0gICAgICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnRzID0gdmFsdWVzLm1h
cChldmVudCA9PiBldmVudC5kYXRhLmJyZWFrcG9pbnQpOwotICAgICAgICAgICAgICAgIGlmICgh
YnJlYWtwb2ludHMubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZmFpbCgiTm8gYnJlYWtwb2ludHMgYWRkZWQuIik7Ci0gICAgICAgICAgICAgICAgICAgIHJlamVj
dCgpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgbGV0IG5vZGUgPSBhd2FpdCBJbnNwZWN0b3JUZXN0LkRPTUJyZWFrcG9pbnQuYXdh
aXRRdWVyeVNlbGVjdG9yKCIjcmVtb3ZlLWFsbC1icmVha3BvaW50cy1mb3Itbm9kZS10ZXN0Iik7
CiAKLSAgICAgICAgICAgICAgICBsZXQgbm9kZSA9IFdJLmRvbU1hbmFnZXIubm9kZUZvcklkKGJy
ZWFrcG9pbnRzWzBdLmRvbU5vZGVJZGVudGlmaWVyKTsKLSAgICAgICAgICAgICAgICBpZiAoIW5v
ZGUpIHsKLSAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5mYWlsKCJObyBET00gbm9k
ZSBhc3NvY2lhdGVkIHdpdGggYnJlYWtwb2ludC4iKTsKLSAgICAgICAgICAgICAgICAgICAgcmVq
ZWN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBsZXQgYnJlYWtwb2ludHNCZWZvcmUgPSBhd2FpdCBQcm9taXNlLmFsbCh0eXBl
cy5tYXAoKHR5cGUpID0+IEluc3BlY3RvclRlc3QuRE9NQnJlYWtwb2ludC5jcmVhdGVCcmVha3Bv
aW50KG5vZGUsIHR5cGUpKSk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFs
KGJyZWFrcG9pbnRzQmVmb3JlLmxlbmd0aCwgdHlwZXMubGVuZ3RoLCBgU2hvdWxkIGhhdmUgJHt0
eXBlcy5sZW5ndGh9IGJyZWFrcG9pbnRzLmApOwogCi0gICAgICAgICAgICAgICAgbGV0IGJyZWFr
cG9pbnRzUmVtb3ZlZCA9IDA7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUmVtb3Zp
bmcgYWxsIGJyZWFrcG9pbnRzIGZvciAjbXVsdGlwbGUtYnJlYWtwb2ludHMtdGVzdC4uLiIpOwor
ICAgICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnJlbW92ZURPTUJyZWFrcG9pbnRzRm9y
Tm9kZShub2RlKTsKIAotICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGJyZWFrcG9pbnRSZW1vdmVk
KCkgewotICAgICAgICAgICAgICAgICAgICBpZiAoKyticmVha3BvaW50c1JlbW92ZWQgPT09IGJy
ZWFrcG9pbnRzLmxlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5wYXNzKGBSZW1vdmVkICR7YnJlYWtwb2ludHNSZW1vdmVkfSBicmVha3BvaW50cy5gKTsKLQot
ICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGVCcmVha3BvaW50cyA9IFdJLmRvbURlYnVn
Z2VyTWFuYWdlci5kb21CcmVha3BvaW50c0Zvck5vZGUobm9kZSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoIW5vZGVCcmVha3BvaW50cy5sZW5ndGgs
ICJET00gbm9kZSBzaG91bGQgaGF2ZSBubyBicmVha3BvaW50cy4iKTsKLQotICAgICAgICAgICAg
ICAgICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0ku
RE9NRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkRPTUJyZWFrcG9pbnRSZW1vdmVkLCBicmVha3BvaW50
UmVtb3ZlZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBXSS5kb21E
ZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01EZWJ1Z2dlck1hbmFnZXIuRXZl
bnQuRE9NQnJlYWtwb2ludFJlbW92ZWQsIGJyZWFrcG9pbnRSZW1vdmVkKTsKLSAgICAgICAgICAg
ICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRE9NQnJlYWtwb2ludHNGb3JOb2RlKG5v
ZGUpOwotICAgICAgICAgICAgfSkKLSAgICAgICAgICAgIC50aGVuKHJlc29sdmUsIHJlamVjdCk7
Ci0gICAgICAgIH0KKyAgICAgICAgICAgIGxldCBicmVha3BvaW50c0FmdGVyID0gV0kuZG9tRGVi
dWdnZXJNYW5hZ2VyLmRvbUJyZWFrcG9pbnRzRm9yTm9kZShub2RlKTsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoYnJlYWtwb2ludHNBZnRlci5sZW5ndGgsIDAsICJTaG91
bGQgcmVtb3ZlIGFsbCBicmVha3BvaW50cy4iKTsKKyAgICAgICAgfSwKKyAgICAgICAgdGVhcmRv
d246IEluc3BlY3RvclRlc3QuRE9NQnJlYWtwb2ludC50ZWFyZG93biwKICAgICB9KTsKIAogICAg
IHN1aXRlLmFkZFRlc3RDYXNlKHsKLSAgICAgICAgbmFtZTogIlNldEJyZWFrcG9pbnRXaXRoSW52
YWxpZE5vZGVJZCIsCisgICAgICAgIG5hbWU6ICJET01CcmVha3BvaW50LlNldEJyZWFrcG9pbnRX
aXRoSW52YWxpZE5vZGVJZCIsCiAgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBzZXR0
aW5nIGEgYnJlYWtwb2ludCBmb3IgYSBub25leGlzdGFudCBub2RlIHJldHVybnMgYW4gZXJyb3Iu
IiwKLSAgICAgICAgdGVhcmRvd24sCi0gICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0g
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiQXR0ZW1wdGluZyB0byBzZXQgYnJlYWtwb2lu
dC4iKTsKLQotICAgICAgICAgICAgRE9NRGVidWdnZXJBZ2VudC5zZXRET01CcmVha3BvaW50KDAs
IFdJLkRPTUJyZWFrcG9pbnQuVHlwZS5TdWJ0cmVlTW9kaWZpZWQsIChlcnJvcikgPT4gewotICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJQcm90b2NvbCByZXN1bHQ6ICIgKyBlcnJv
cik7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGVycm9yLCAiUHJv
dG9jb2wgc2hvdWxkIHJldHVybiBhbiBlcnJvci4iKQotICAgICAgICAgICAgICAgIHJlc29sdmUo
KTsKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9n
KCJTZXR0aW5nIGJyZWFrcG9pbnQuLi4iKTsKKyAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRl
c3QuZXhwZWN0RXhjZXB0aW9uKGFzeW5jICgpID0+IHsKKyAgICAgICAgICAgICAgICBhd2FpdCBE
T01EZWJ1Z2dlckFnZW50LnNldERPTUJyZWFrcG9pbnQoMCwgV0kuRE9NQnJlYWtwb2ludC5UeXBl
LlN1YnRyZWVNb2RpZmllZCk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgfQorICAgICAgICB9
LAogICAgIH0pOwogCiAgICAgc3VpdGUuYWRkVGVzdENhc2UoewotICAgICAgICBuYW1lOiAiU2V0
QnJlYWtwb2ludFdpdGhJbnZhbGlkVHlwZSIsCisgICAgICAgIG5hbWU6ICJET01CcmVha3BvaW50
LlNldEJyZWFrcG9pbnRXaXRoSW52YWxpZFR5cGUiLAogICAgICAgICBkZXNjcmlwdGlvbjogIkNo
ZWNrIHRoYXQgc2V0dGluZyBhIGJyZWFrcG9pbnQgd2l0aCBhbiBpbnZhbGlkIHR5cGUgcmV0dXJu
cyBhbiBlcnJvci4iLAotICAgICAgICB0ZWFyZG93biwKLSAgICAgICAgdGVzdChyZXNvbHZlLCBy
ZWplY3QpIHsKLSAgICAgICAgICAgIGF3YWl0UXVlcnlTZWxlY3RvcigiYm9keSIpCi0gICAgICAg
ICAgICAudGhlbigobm9kZSkgPT4gewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9n
KCJBdHRlbXB0aW5nIHRvIHNldCBicmVha3BvaW50LiIpOworICAgICAgICBhc3luYyB0ZXN0KCkg
eworICAgICAgICAgICAgbGV0IG5vZGUgPSBhd2FpdCBJbnNwZWN0b3JUZXN0LkRPTUJyZWFrcG9p
bnQuYXdhaXRRdWVyeVNlbGVjdG9yKCJib2R5Iik7CiAKLSAgICAgICAgICAgICAgICBET01EZWJ1
Z2dlckFnZW50LnNldERPTUJyZWFrcG9pbnQobm9kZS5pZCwgImN1c3RvbS1icmVha3BvaW50LXR5
cGUiLCAoZXJyb3IpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2co
IlByb3RvY29sIHJlc3VsdDogIiArIGVycm9yKTsKLSAgICAgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3RUaGF0KGVycm9yLCAiUHJvdG9jb2wgc2hvdWxkIHJldHVybiBhbiBlcnJv
ci4iKQotICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiU2V0dGluZyBicmVha3BvaW50Li4uIik7
CisgICAgICAgICAgICBhd2FpdCBJbnNwZWN0b3JUZXN0LmV4cGVjdEV4Y2VwdGlvbihhc3luYyAo
KSA9PiB7CisgICAgICAgICAgICAgICAgYXdhaXQgRE9NRGVidWdnZXJBZ2VudC5zZXRET01CcmVh
a3BvaW50KG5vZGUuaWQsICJjdXN0b20tYnJlYWtwb2ludC10eXBlIik7CiAgICAgICAgICAgICB9
KTsKLSAgICAgICAgfQorICAgICAgICB9LAogICAgIH0pOwogCiAgICAgc3VpdGUuYWRkVGVzdENh
c2UoewotICAgICAgICBuYW1lOiAiUmVtb3ZlQnJlYWtwb2ludFdpdGhJbnZhbGlkTm9kZUlkIiwK
KyAgICAgICAgbmFtZTogIkRPTUJyZWFrcG9pbnQuUmVtb3ZlQnJlYWtwb2ludFdpdGhJbnZhbGlk
Tm9kZUlkIiwKICAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IHJlbW92aW5nIGEgYnJl
YWtwb2ludCBmb3IgYSBub25leGlzdGFudCBub2RlIHJldHVybnMgYW4gZXJyb3IuIiwKLSAgICAg
ICAgdGVhcmRvd24sCi0gICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmxvZygiQXR0ZW1wdGluZyB0byByZW1vdmUgYnJlYWtwb2ludC4iKTsK
LQotICAgICAgICAgICAgRE9NRGVidWdnZXJBZ2VudC5yZW1vdmVET01CcmVha3BvaW50KDAsIFdJ
LkRPTUJyZWFrcG9pbnQuVHlwZS5TdWJ0cmVlTW9kaWZpZWQsIChlcnJvcikgPT4gewotICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJQcm90b2NvbCByZXN1bHQ6ICIgKyBlcnJvcik7
Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGVycm9yLCAiUHJvdG9j
b2wgc2hvdWxkIHJldHVybiBhbiBlcnJvci4iKQotICAgICAgICAgICAgICAgIHJlc29sdmUoKTsK
KyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJS
ZW1vdmluZyBicmVha3BvaW50Li4uIik7CisgICAgICAgICAgICBhd2FpdCBJbnNwZWN0b3JUZXN0
LmV4cGVjdEV4Y2VwdGlvbihhc3luYyAoKSA9PiB7CisgICAgICAgICAgICAgICAgYXdhaXQgRE9N
RGVidWdnZXJBZ2VudC5yZW1vdmVET01CcmVha3BvaW50KDAsIFdJLkRPTUJyZWFrcG9pbnQuVHlw
ZS5TdWJ0cmVlTW9kaWZpZWQpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KKyAgICAgICAg
fSwKICAgICB9KTsKIAogICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKLSAgICAgICAgbmFtZTogIlJl
bW92ZUJyZWFrcG9pbnRXaXRoSW52YWxpZFR5cGUiLAorICAgICAgICBuYW1lOiAiRE9NQnJlYWtw
b2ludC5SZW1vdmVCcmVha3BvaW50V2l0aEludmFsaWRUeXBlIiwKICAgICAgICAgZGVzY3JpcHRp
b246ICJDaGVjayB0aGF0IHJlbW92aW5nIGEgYnJlYWtwb2ludCB3aXRoIGFuIGludmFsaWQgdHlw
ZSByZXR1cm5zIGFuIGVycm9yLiIsCi0gICAgICAgIHRlYXJkb3duLAotICAgICAgICB0ZXN0KHJl
c29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAgYXdhaXRRdWVyeVNlbGVjdG9yKCJib2R5IikK
LSAgICAgICAgICAgIC50aGVuKChub2RlKSA9PiB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5sb2coIkF0dGVtcHRpbmcgdG8gcmVtb3ZlIGJyZWFrcG9pbnQuIik7CisgICAgICAgIGFz
eW5jIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgbm9kZSA9IGF3YWl0IEluc3BlY3RvclRlc3Qu
RE9NQnJlYWtwb2ludC5hd2FpdFF1ZXJ5U2VsZWN0b3IoImJvZHkiKTsKIAotICAgICAgICAgICAg
ICAgIERPTURlYnVnZ2VyQWdlbnQucmVtb3ZlRE9NQnJlYWtwb2ludChub2RlLmlkLCAiY3VzdG9t
LWJyZWFrcG9pbnQtdHlwZSIsIChlcnJvcikgPT4gewotICAgICAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmxvZygiUHJvdG9jb2wgcmVzdWx0OiAiICsgZXJyb3IpOwotICAgICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoZXJyb3IsICJQcm90b2NvbCBzaG91bGQg
cmV0dXJuIGFuIGVycm9yLiIpCi0gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKLSAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJSZW1vdmluZyBi
cmVha3BvaW50Li4uIik7CisgICAgICAgICAgICBhd2FpdCBJbnNwZWN0b3JUZXN0LmV4cGVjdEV4
Y2VwdGlvbihhc3luYyAoKSA9PiB7CisgICAgICAgICAgICAgICAgYXdhaXQgRE9NRGVidWdnZXJB
Z2VudC5yZW1vdmVET01CcmVha3BvaW50KG5vZGUuaWQsICJjdXN0b20tYnJlYWtwb2ludC10eXBl
Iik7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgfQorICAgICAgICB9LAogICAgIH0pOwogCiAg
ICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7CkBAIC0zODQsMTEgKzk4LDggQEAgZnVu
Y3Rpb24gdGVzdCgpCiA8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CiA8cD5UZXN0cyBmb3IgRE9N
IGJyZWFrcG9pbnRzLjwvcD4KIDxkaXYgaWQ9InRlc3QtY29udGFpbmVyIiBzdHlsZT0iZGlzcGxh
eTogbm9uZSI+Ci0gICAgPGRpdiBpZD0ic3VidHJlZS1tb2RpZmllZC10ZXN0Ij48L2Rpdj4KLSAg
ICA8ZGl2IGlkPSJhdHRyaWJ1dGUtbW9kaWZpZWQtdGVzdCI+PC9kaXY+Ci0gICAgPGRpdiBpZD0i
bm9kZS1yZW1vdmVkLWRpcmVjdC10ZXN0Ij48L2Rpdj4KLSAgICA8ZGl2PjxkaXYgaWQ9Im5vZGUt
cmVtb3ZlZC1hbmNlc3Rvci10ZXN0Ij48L2Rpdj48L2Rpdj4KLSAgICA8ZGl2IGlkPSJtdWx0aXBs
ZS1icmVha3BvaW50cy10ZXN0Ij48L2Rpdj4KKyAgICA8ZGl2IGlkPSJiYXNpYy10ZXN0Ij48L2Rp
dj4KKyAgICA8ZGl2IGlkPSJyZW1vdmUtYWxsLWJyZWFrcG9pbnRzLWZvci1ub2RlLXRlc3QiPjwv
ZGl2PgogPC9kaXY+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZG9tLWRlYnVnZ2VyL3Jlc291cmNlcy9kb20tYnJlYWtwb2ludC11dGlsaXRpZXMu
anMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL3Jlc291cmNlcy9kb20tYnJl
YWtwb2ludC11dGlsaXRpZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTViNDNhOTUxYjhiYzk2MDhjNzQ0OWQy
NzI3YjUyZGE3ZGI4Nzc0NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kb20tZGVidWdnZXIvcmVzb3VyY2VzL2RvbS1icmVha3BvaW50LXV0aWxpdGllcy5qcwpAQCAt
MCwwICsxLDU4IEBACitUZXN0UGFnZS5yZWdpc3RlckluaXRpYWxpemVyKCgpID0+IHsKKyAgICBJ
bnNwZWN0b3JUZXN0LkRPTUJyZWFrcG9pbnQgPSB7fTsKKworICAgIEluc3BlY3RvclRlc3QuRE9N
QnJlYWtwb2ludC50ZWFyZG93biA9IGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgeworICAgICAg
ICBmb3IgKGxldCBicmVha3BvaW50IG9mIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5kb21CcmVha3Bv
aW50cykKKyAgICAgICAgICAgIGJyZWFrcG9pbnQucmVtb3ZlKCk7CisKKyAgICAgICAgcmVzb2x2
ZSgpOworICAgIH07CisKKyAgICBJbnNwZWN0b3JUZXN0LkRPTUJyZWFrcG9pbnQuY3JlYXRlQnJl
YWtwb2ludCA9IGZ1bmN0aW9uKGRvbU5vZGUsIHR5cGUpIHsKKyAgICAgICAgcmV0dXJuIEluc3Bl
Y3RvclRlc3QuRE9NQnJlYWtwb2ludC5hZGRCcmVha3BvaW50KG5ldyBXSS5ET01CcmVha3BvaW50
KGRvbU5vZGUsIHR5cGUpKTsKKyAgICB9OworCisgICAgSW5zcGVjdG9yVGVzdC5ET01CcmVha3Bv
aW50LmFkZEJyZWFrcG9pbnQgPSBmdW5jdGlvbihicmVha3BvaW50KSB7CisgICAgICAgIEluc3Bl
Y3RvclRlc3QubG9nKGBBZGRpbmcgIiR7YnJlYWtwb2ludC50eXBlfToke2JyZWFrcG9pbnQucGF0
aH0iIERPTSBCcmVha3BvaW50Li4uYCk7CisKKyAgICAgICAgYnJlYWtwb2ludC5kaXNhYmxlZCA9
IGZhbHNlOworICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4g
eworICAgICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuRE9NRGVi
dWdnZXJNYW5hZ2VyLkV2ZW50LkRPTUJyZWFrcG9pbnRBZGRlZCkKKyAgICAgICAgICAgIC50aGVu
KChldmVudCkgPT4geworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KGV2ZW50
LmRhdGEuYnJlYWtwb2ludCA9PT0gYnJlYWtwb2ludCwgIkFkZGVkIEJyZWFrcG9pbnQgc2hvdWxk
IGJlIGV4cGVjdGVkIG9iamVjdC4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydCghZXZlbnQuZGF0YS5icmVha3BvaW50LmRpc2FibGVkLCAiQnJlYWtwb2ludCBzaG91bGQg
bm90IGJlIGRpc2FibGVkIGluaXRpYWxseS4iKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKGJy
ZWFrcG9pbnQpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIFdJLmRvbURlYnVnZ2Vy
TWFuYWdlci5hZGRET01CcmVha3BvaW50KGJyZWFrcG9pbnQpOworICAgICAgICB9KTsKKyAgICB9
OworCisgICAgSW5zcGVjdG9yVGVzdC5ET01CcmVha3BvaW50LmF3YWl0UXVlcnlTZWxlY3RvciA9
IGZ1bmN0aW9uKHNlbGVjdG9yKSB7CisgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2
ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgICAgICBXSS5kb21NYW5hZ2VyLnJlcXVlc3REb2N1bWVu
dCgoZG9jdW1lbnROb2RlKSA9PiB7CisgICAgICAgICAgICAgICAgaWYgKCFkb2N1bWVudE5vZGUp
IHsKKyAgICAgICAgICAgICAgICAgICAgcmVqZWN0KCk7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBkb2N1bWVudE5vZGUu
cXVlcnlTZWxlY3RvcihzZWxlY3RvciwgKG5vZGVJZCkgPT4geworICAgICAgICAgICAgICAgICAg
ICBpZiAoIW5vZGVJZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5m
YWlsKCJTZWxlY3RvciByZXR1cm5lZCBubyBub2Rlcy4iLCBzZWxlY3Rvcik7CisgICAgICAgICAg
ICAgICAgICAgICAgICByZWplY3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGxldCBub2RlID0g
V0kuZG9tTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKTsKKyAgICAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hc3NlcnQobm9kZSwgIk1pc3Npbmcgbm9kZSBmb3IgaWQuIiwgbm9kZUlkKTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICByZWplY3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIHJlc29sdmUobm9kZSk7CisgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfTsKK30pOwo=
</data>
<flag name="review"
          id="423308"
          type_id="1"
          status="+"
          setter="bburg"
    />
    <flag name="commit-queue"
          id="423309"
          type_id="3"
          status="-"
          setter="bburg"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408053</attachid>
            <date>2020-09-04 17:35:47 -0700</date>
            <delta_ts>2020-09-05 13:06:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>215795.diff</filename>
            <type>text/plain</type>
            <size>175051</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwMDVmN2UxOWZlMjUuLmQzYTI2N2U1ZThkNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBA
CisyMDIwLTA5LTA0ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBhbGxvdyBET00gYnJlYWtwb2ludHMgdG8gYmUgY29uZmlndXJlZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1Nzk1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQnJpYW4gQnVyZy4KKworICAgICAgICAqIGluc3BlY3Rvci9k
ZWJ1Z2dlci9yZXNvdXJjZXMvYnJlYWtwb2ludC1vcHRpb25zLXV0aWxpdGllcy5qczoKKyAgICAg
ICAgKFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIuSW5zcGVjdG9yVGVzdC5CcmVha3BvaW50
T3B0aW9ucy5hZGRUZXN0Q2FzZXMpOgorCisgICAgICAgICogaW5zcGVjdG9yL2RvbS1kZWJ1Z2dl
ci9yZXNvdXJjZXMvZG9tLWJyZWFrcG9pbnQtdXRpbGl0aWVzLmpzOiBBZGRlZC4KKyAgICAgICAg
KFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIuSW5zcGVjdG9yVGVzdC5ET01CcmVha3BvaW50
LnRlYXJkb3duKToKKyAgICAgICAgKFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIuSW5zcGVj
dG9yVGVzdC5ET01CcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQpOgorICAgICAgICAoVGVzdFBh
Z2UucmVnaXN0ZXJJbml0aWFsaXplci5JbnNwZWN0b3JUZXN0LkRPTUJyZWFrcG9pbnQuYWRkQnJl
YWtwb2ludCk6CisgICAgICAgIChUZXN0UGFnZS5yZWdpc3RlckluaXRpYWxpemVyLkluc3BlY3Rv
clRlc3QuRE9NQnJlYWtwb2ludC5hd2FpdFF1ZXJ5U2VsZWN0b3IpOgorCisgICAgICAgICogaW5z
cGVjdG9yL2RvbS1kZWJ1Z2dlci9hdHRyaWJ1dGUtbW9kaWZpZWQtc3R5bGUuaHRtbDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2F0dHJpYnV0ZS1tb2RpZmllZC1zdHlsZS1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9kb20tYnJlYWtwb2lu
dHMuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2RvbS1icmVha3BvaW50
cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9kb20tYnJl
YWtwb2ludC1hdHRyaWJ1dGUtbW9kaWZpZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogaW5zcGVj
dG9yL2RvbS1kZWJ1Z2dlci9kb20tYnJlYWtwb2ludC1hdHRyaWJ1dGUtbW9kaWZpZWQtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2RvbS1icmVh
a3BvaW50LW5vZGUtcmVtb3ZlZC1hbmNlc3Rvci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnNw
ZWN0b3IvZG9tLWRlYnVnZ2VyL2RvbS1icmVha3BvaW50LW5vZGUtcmVtb3ZlZC1hbmNlc3Rvci1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9kb20tZGVidWdnZXIvZG9t
LWJyZWFrcG9pbnQtbm9kZS1yZW1vdmVkLWRpcmVjdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBp
bnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2RvbS1icmVha3BvaW50LW5vZGUtcmVtb3ZlZC1kaXJlY3Qt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2Rv
bS1icmVha3BvaW50LXN1YnRyZWUtbW9kaWZpZWQtYWRkLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGluc3BlY3Rvci9kb20tZGVidWdnZXIvZG9tLWJyZWFrcG9pbnQtc3VidHJlZS1tb2RpZmllZC1y
ZW1vdmUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tLWRlYnVn
Z2VyL2RvbS1icmVha3BvaW50LXN1YnRyZWUtbW9kaWZpZWQtcmVtb3ZlLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGluc3BlY3Rvci9kb20tZGVidWdnZXIvZG9tLWJyZWFrcG9pbnQtc3VidHJlZS1t
b2RpZmllZC1hZGQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAyMC0wOS0wNCAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEltcHJvdmUgaW50ZXJwb2xhdGlvbiBh
bGdvcml0aG0gaW4gT3NjaWxsYXRvck5vZGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9yZXNvdXJjZXMvYnJlYWtwb2ludC1vcHRpb25zLXV0aWxpdGllcy5qcyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yZXNvdXJjZXMvYnJlYWtwb2ludC1vcHRp
b25zLXV0aWxpdGllcy5qcwppbmRleCAyZGY2ZGEyOGIxMTMuLjgzNTNmMjQ1MDU0NSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Jlc291cmNlcy9icmVha3BvaW50
LW9wdGlvbnMtdXRpbGl0aWVzLmpzCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9yZXNvdXJjZXMvYnJlYWtwb2ludC1vcHRpb25zLXV0aWxpdGllcy5qcwpAQCAtMSw3ICsxLDcg
QEAKIFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIoKCkgPT4gewogICAgIEluc3BlY3RvclRl
c3QuQnJlYWtwb2ludE9wdGlvbnMgPSB7fTsKIAotICAgIEluc3BlY3RvclRlc3QuQnJlYWtwb2lu
dE9wdGlvbnMuYWRkVGVzdENhc2VzID0gZnVuY3Rpb24oc3VpdGUsIHt0ZXN0Q2FzZU5hbWVQcmVm
aXgsIGNyZWF0ZUJyZWFrcG9pbnQsIHRyaWdnZXJCcmVha3BvaW50fSkgeworICAgIEluc3BlY3Rv
clRlc3QuQnJlYWtwb2ludE9wdGlvbnMuYWRkVGVzdENhc2VzID0gZnVuY3Rpb24oc3VpdGUsIHt0
ZXN0Q2FzZU5hbWVQcmVmaXgsIGNyZWF0ZUJyZWFrcG9pbnQsIHRyaWdnZXJCcmVha3BvaW50LCBz
a2lwfSkgewogICAgICAgICB0ZXN0Q2FzZU5hbWVQcmVmaXggPz89ICIiOwogCiAgICAgICAgIGZ1
bmN0aW9uIHJlbW92ZUJyZWFrcG9pbnQoYnJlYWtwb2ludCkgewpAQCAtNDIsNyArNDIsNyBAQCBU
ZXN0UGFnZS5yZWdpc3RlckluaXRpYWxpemVyKCgpID0+IHsKICAgICAgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CiAKICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5sb2coIlRyaWdnZXJpbmcgYnJlYWtwb2ludC4uLiIpOwotICAgICAgICAgICAgICAgICAg
ICBhd2FpdCB0cmlnZ2VyQnJlYWtwb2ludCgpOworICAgICAgICAgICAgICAgICAgICBhd2FpdCB0
cmlnZ2VyQnJlYWtwb2ludChicmVha3BvaW50KTsKIAogICAgICAgICAgICAgICAgICAgICBpZiAo
aSA8PSAyKQogICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVh
bChwYXVzZUNvdW50LCAwLCAiU2hvdWxkIG5vdCBwYXVzZS4iKTsKQEAgLTU2LDQxICs1Niw0MyBA
QCBUZXN0UGFnZS5yZWdpc3RlckluaXRpYWxpemVyKCgpID0+IHsKICAgICAgICAgICAgIH0sCiAg
ICAgICAgIH0pOwogCi0gICAgICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKLSAgICAgICAgICAgIG5h
bWU6IHN1aXRlLm5hbWUgKyAiLiIgKyB0ZXN0Q2FzZU5hbWVQcmVmaXggKyAiT3B0aW9ucy5JZ25v
cmVDb3VudCIsCi0gICAgICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgdGhlIGRlYnVn
Z2VyIHdpbGwgbm90IHBhdXNlIHVubGVzcyB0aGUgYnJlYWtwb2ludCBpcyBoaXQgYXQgbGVhc3Qg
YXMgbWFueSB0aW1lcyBhcyBpdCdzIGBpZ25vcmVDb3VudGAuIiwKLSAgICAgICAgICAgIGFzeW5j
IHRlc3QoKSB7Ci0gICAgICAgICAgICAgICAgbGV0IHBhdXNlQ291bnQgPSAwOworICAgICAgICBp
ZiAoIXNraXA/Lmlnbm9yZUNvdW50KSB7CisgICAgICAgICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7
CisgICAgICAgICAgICAgICAgbmFtZTogc3VpdGUubmFtZSArICIuIiArIHRlc3RDYXNlTmFtZVBy
ZWZpeCArICJPcHRpb25zLklnbm9yZUNvdW50IiwKKyAgICAgICAgICAgICAgICBkZXNjcmlwdGlv
bjogIkNoZWNrIHRoYXQgdGhlIGRlYnVnZ2VyIHdpbGwgbm90IHBhdXNlIHVubGVzcyB0aGUgYnJl
YWtwb2ludCBpcyBoaXQgYXQgbGVhc3QgYXMgbWFueSB0aW1lcyBhcyBpdCdzIGBpZ25vcmVDb3Vu
dGAuIiwKKyAgICAgICAgICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgICAgICAg
ICBsZXQgcGF1c2VDb3VudCA9IDA7CiAKLSAgICAgICAgICAgICAgICBsZXQgcGF1c2VkTGlzdGVu
ZXIgPSBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFn
ZXIuRXZlbnQuUGF1c2VkLCAoZXZlbnQpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgKytwYXVz
ZUNvdW50OwotICAgICAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVzdW1lKCk7
Ci0gICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIGxldCBwYXVzZWRMaXN0
ZW5lciA9IFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFu
YWdlci5FdmVudC5QYXVzZWQsIChldmVudCkgPT4geworICAgICAgICAgICAgICAgICAgICAgICAg
KytwYXVzZUNvdW50OworICAgICAgICAgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2Vy
LnJlc3VtZSgpOworICAgICAgICAgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAgICAgIGxl
dCBicmVha3BvaW50ID0gYXdhaXQgY3JlYXRlQnJlYWtwb2ludCgpOworICAgICAgICAgICAgICAg
ICAgICBsZXQgYnJlYWtwb2ludCA9IGF3YWl0IGNyZWF0ZUJyZWFrcG9pbnQoKTsKIAotICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QubmV3bGluZSgpOwotCi0gICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5sb2coIlNldHRpbmcgaWdub3JlQ291bnQgdG8gJzInLi4uIik7Ci0gICAgICAg
ICAgICAgICAgYnJlYWtwb2ludC5pZ25vcmVDb3VudCA9IDI7Ci0KLSAgICAgICAgICAgICAgICBm
b3IgKGxldCBpID0gMTsgaSA8PTQ7ICsraSkgewogICAgICAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0Lm5ld2xpbmUoKTsKIAotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lmxv
ZygiVHJpZ2dlcmluZyBicmVha3BvaW50Li4uIik7Ci0gICAgICAgICAgICAgICAgICAgIGF3YWl0
IHRyaWdnZXJCcmVha3BvaW50KCk7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
bG9nKCJTZXR0aW5nIGlnbm9yZUNvdW50IHRvICcyJy4uLiIpOworICAgICAgICAgICAgICAgICAg
ICBicmVha3BvaW50Lmlnbm9yZUNvdW50ID0gMjsKIAotICAgICAgICAgICAgICAgICAgICBpZiAo
aSA8PSAyKQotICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVh
bChwYXVzZUNvdW50LCAwLCAiU2hvdWxkIG5vdCBwYXVzZS4iKTsKLSAgICAgICAgICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVh
bChwYXVzZUNvdW50LCBpIC0gMiwgIlNob3VsZCBwYXVzZS4iKTsKLSAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9NDsgKytpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKIAotICAgICAgICAg
ICAgICAgIHJlbW92ZUJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBicmVha3BvaW50Li4uIik7CisgICAg
ICAgICAgICAgICAgICAgICAgICBhd2FpdCB0cmlnZ2VyQnJlYWtwb2ludChicmVha3BvaW50KTsK
IAotICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVy
KFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIHBhdXNlZExpc3RlbmVyKTsKLSAgICAg
ICAgICAgIH0sCi0gICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPD0g
MikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFs
KHBhdXNlQ291bnQsIDAsICJTaG91bGQgbm90IHBhdXNlLiIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0RXF1YWwocGF1c2VDb3VudCwgaSAtIDIsICJTaG91bGQgcGF1c2UuIik7CisgICAgICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICByZW1vdmVCcmVha3BvaW50KGJyZWFr
cG9pbnQpOworCisgICAgICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVF
dmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIHBhdXNlZExpc3Rl
bmVyKTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgfSk7CisgICAgICAgIH0KIAog
ICAgICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CiAgICAgICAgICAgICBuYW1lOiBzdWl0ZS5uYW1l
ICsgIi4iICsgdGVzdENhc2VOYW1lUHJlZml4ICsgIk9wdGlvbnMuQWN0aW9uLkxvZyIsCkBAIC0x
MzMsNyArMTM1LDcgQEAgVGVzdFBhZ2UucmVnaXN0ZXJJbml0aWFsaXplcigoKSA9PiB7CiAgICAg
ICAgICAgICAgICAgICAgIH0pOwogCiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
bG9nKCJUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4iKTsKLSAgICAgICAgICAgICAgICAgICAgYXdh
aXQgdHJpZ2dlckJyZWFrcG9pbnQoKTsKKyAgICAgICAgICAgICAgICAgICAgYXdhaXQgdHJpZ2dl
ckJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CiAKICAgICAgICAgICAgICAgICAgICAgV0kuY29uc29s
ZU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdlci5FdmVudC5NZXNz
YWdlQWRkZWQsIG1lc3NhZ2VBZGRlZExpc3RlbmVyKTsKIApAQCAtMTg2LDcgKzE4OCw3IEBAIFRl
c3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIoKCkgPT4gewogICAgICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKIAogICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmxvZygiVHJpZ2dlcmluZyBicmVha3BvaW50Li4uIik7Ci0gICAgICAgICAgICAgICAgICAg
IGF3YWl0IHRyaWdnZXJCcmVha3BvaW50KCk7CisgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRy
aWdnZXJCcmVha3BvaW50KGJyZWFrcG9pbnQpOwogCiAgICAgICAgICAgICAgICAgICAgIGxldCBi
cmVha3BvaW50QWN0aW9uRXZhbHVhdGVSZXN1bHQgPSBhd2FpdCBJbnNwZWN0b3JUZXN0LmV2YWx1
YXRlSW5QYWdlKGB3aW5kb3cuQlJFQUtQT0lOVF9BQ1RJT05fRVZBTFVBVEVgKTsKICAgICAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChicmVha3BvaW50QWN0aW9uRXZh
bHVhdGVSZXN1bHQsIGksICJTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4iKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvYXR0cmlidXRlLW1v
ZGlmaWVkLXN0eWxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVi
dWdnZXIvYXR0cmlidXRlLW1vZGlmaWVkLXN0eWxlLWV4cGVjdGVkLnR4dAppbmRleCA0Mzk3NTQ2
NmJhZGIuLjExMDc5OTJlYWQ4MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rv
bS1kZWJ1Z2dlci9hdHRyaWJ1dGUtbW9kaWZpZWQtc3R5bGUtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvYXR0cmlidXRlLW1vZGlmaWVkLXN0eWxl
LWV4cGVjdGVkLnR4dApAQCAtMSwxMCArMSwxMyBAQAorQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BP
SU5UIEFDVElPTiBMT0cgMQorQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cg
MgorQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgMworQ09OU09MRSBNRVNT
QUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgNAogVGVzdHMgZnVuY3Rpb25hbGl0eSBvZiBhdHRy
aWJ1dGUgbW9kaWZpZWQgRE9NIGJyZWFrcG9pbnRzIHdoZW4gbW9kaWZ5aW5nIHRoZSBpbmxpbmUg
c3R5bGUgYXR0cmlidXRlLgogCi1BZGRpbmcgYXR0cmlidXRlIG1vZGlmaWVkIGJyZWFrcG9pbnQg
dG8gI3Rlc3QuLi4KLVBBU1M6IEFkZGVkIGF0dHJpYnV0ZSBtb2RpZmllZCBicmVha3BvaW50IHRv
ICN0ZXN0LgogCi09PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IERPTUJyZWFrcG9pbnRzLkF0dHJpYnV0
ZU1vZGlmaWVkLlN0eWxlCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NQnJlYWtwb2ludHMuQXR0
cmlidXRlTW9kaWZpZWQuU3R5bGUuQWRkCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IERPTUJyZWFr
cG9pbnQuQXR0cmlidXRlTW9kaWZpZWQKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01CcmVha3Bv
aW50LkF0dHJpYnV0ZU1vZGlmaWVkLlN0eWxlLkFkZAorQWRkaW5nICJhdHRyaWJ1dGUtbW9kaWZp
ZWQ6MSxIVE1MLDEsQk9EWSwxLERJViIgRE9NIEJyZWFrcG9pbnQuLi4KIEdldHRpbmcgJ2Rpc3Bs
YXknLi4uCiBQQVNTOiAnZGlzcGxheScgc2hvdWxkIGhhdmUgdGhlIHZhbHVlICcnLgogU2V0dGlu
ZyAnZGlzcGxheTogbm9uZTsnLi4uCkBAIC0xNCw4ICsxNywxMCBAQCBQQVNTOiAnZGlzcGxheScg
c2hvdWxkIGhhdmUgdGhlIHZhbHVlICcnLgogUEFTUzogUmVzdW1lZC4KIEdldHRpbmcgJ2Rpc3Bs
YXknLi4uCiBQQVNTOiAnZGlzcGxheScgc2hvdWxkIGhhdmUgdGhlIHZhbHVlICdub25lJy4KKy0t
IFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KIAotLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTUJyZWFr
cG9pbnRzLkF0dHJpYnV0ZU1vZGlmaWVkLlN0eWxlLlJlcGxhY2VTYW1lCistLSBSdW5uaW5nIHRl
c3QgY2FzZTogRE9NQnJlYWtwb2ludC5BdHRyaWJ1dGVNb2RpZmllZC5TdHlsZS5SZXBsYWNlU2Ft
ZQorQWRkaW5nICJhdHRyaWJ1dGUtbW9kaWZpZWQ6MSxIVE1MLDEsQk9EWSwxLERJViIgRE9NIEJy
ZWFrcG9pbnQuLi4KIEdldHRpbmcgJ2Rpc3BsYXknLi4uCiBQQVNTOiAnZGlzcGxheScgc2hvdWxk
IGhhdmUgdGhlIHZhbHVlICdub25lJy4KIFNldHRpbmcgJ2Rpc3BsYXk6IG5vbmU7Jy4uLgpAQCAt
MjUsOCArMzAsMTAgQEAgUEFTUzogJ2Rpc3BsYXknIHNob3VsZCBoYXZlIHRoZSB2YWx1ZSAnbm9u
ZScuCiBQQVNTOiBSZXN1bWVkLgogR2V0dGluZyAnZGlzcGxheScuLi4KIFBBU1M6ICdkaXNwbGF5
JyBzaG91bGQgaGF2ZSB0aGUgdmFsdWUgJ25vbmUnLgorLS0gUnVubmluZyB0ZXN0IHRlYXJkb3du
LgogCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NQnJlYWtwb2ludHMuQXR0cmlidXRlTW9kaWZp
ZWQuU3R5bGUuUmVwbGFjZURpZmZlcmVudAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTUJyZWFr
cG9pbnQuQXR0cmlidXRlTW9kaWZpZWQuU3R5bGUuUmVwbGFjZURpZmZlcmVudAorQWRkaW5nICJh
dHRyaWJ1dGUtbW9kaWZpZWQ6MSxIVE1MLDEsQk9EWSwxLERJViIgRE9NIEJyZWFrcG9pbnQuLi4K
IEdldHRpbmcgJ2Rpc3BsYXknLi4uCiBQQVNTOiAnZGlzcGxheScgc2hvdWxkIGhhdmUgdGhlIHZh
bHVlICdub25lJy4KIFNldHRpbmcgJ2Rpc3BsYXk6IGJsb2NrOycuLi4KQEAgLTM2LDggKzQzLDEw
IEBAIFBBU1M6ICdkaXNwbGF5JyBzaG91bGQgaGF2ZSB0aGUgdmFsdWUgJ25vbmUnLgogUEFTUzog
UmVzdW1lZC4KIEdldHRpbmcgJ2Rpc3BsYXknLi4uCiBQQVNTOiAnZGlzcGxheScgc2hvdWxkIGhh
dmUgdGhlIHZhbHVlICdibG9jaycuCistLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCiAKLS0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBET01CcmVha3BvaW50cy5BdHRyaWJ1dGVNb2RpZmllZC5TdHlsZS5S
ZW1vdmUKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01CcmVha3BvaW50LkF0dHJpYnV0ZU1vZGlm
aWVkLlN0eWxlLlJlbW92ZQorQWRkaW5nICJhdHRyaWJ1dGUtbW9kaWZpZWQ6MSxIVE1MLDEsQk9E
WSwxLERJViIgRE9NIEJyZWFrcG9pbnQuLi4KIEdldHRpbmcgJ2Rpc3BsYXknLi4uCiBQQVNTOiAn
ZGlzcGxheScgc2hvdWxkIGhhdmUgdGhlIHZhbHVlICdibG9jaycuCiBSZW1vdmluZyAnZGlzcGxh
eScuLi4KQEAgLTQ3LDggKzU2LDEwIEBAIFBBU1M6ICdkaXNwbGF5JyBzaG91bGQgaGF2ZSB0aGUg
dmFsdWUgJ2Jsb2NrJy4KIFBBU1M6IFJlc3VtZWQuCiBHZXR0aW5nICdkaXNwbGF5Jy4uLgogUEFT
UzogJ2Rpc3BsYXknIHNob3VsZCBoYXZlIHRoZSB2YWx1ZSAnJy4KKy0tIFJ1bm5pbmcgdGVzdCB0
ZWFyZG93bi4KIAotLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTUJyZWFrcG9pbnRzLkF0dHJpYnV0
ZU1vZGlmaWVkLlN0eWxlLlRleHQKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01CcmVha3BvaW50
LkF0dHJpYnV0ZU1vZGlmaWVkLlN0eWxlLlRleHQKK0FkZGluZyAiYXR0cmlidXRlLW1vZGlmaWVk
OjEsSFRNTCwxLEJPRFksMSxESVYiIERPTSBCcmVha3BvaW50Li4uCiBHZXR0aW5nICdkaXNwbGF5
Jy4uLgogUEFTUzogJ2Rpc3BsYXknIHNob3VsZCBoYXZlIHRoZSB2YWx1ZSAnJy4KIFNldHRpbmcg
c3R5bGUgdGV4dCB0byAnJy4uLgpAQCAtNTgsNCArNjksOTcgQEAgUEFTUzogJ2Rpc3BsYXknIHNo
b3VsZCBoYXZlIHRoZSB2YWx1ZSAnJy4KIFBBU1M6IFJlc3VtZWQuCiBHZXR0aW5nICdkaXNwbGF5
Jy4uLgogUEFTUzogJ2Rpc3BsYXknIHNob3VsZCBoYXZlIHRoZSB2YWx1ZSAnbm9uZScuCistLSBS
dW5uaW5nIHRlc3QgdGVhcmRvd24uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01CcmVha3Bv
aW50LkF0dHJpYnV0ZU1vZGlmaWVkLlN0eWxlLk9wdGlvbnMuQ29uZGl0aW9uCitBZGRpbmcgImF0
dHJpYnV0ZS1tb2RpZmllZDoxLEhUTUwsMSxCT0RZLDEsRElWIiBET00gQnJlYWtwb2ludC4uLgor
CitTZXR0aW5nIGNvbmRpdGlvbiB0byAnZmFsc2UnLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2lu
dC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4u
CitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitTZXR0aW5nIGNvbmRpdGlvbiB0byAndHJ1ZScu
Li4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK1Ry
aWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCistLSBSdW5uaW5n
IHRlc3QgY2FzZTogRE9NQnJlYWtwb2ludC5BdHRyaWJ1dGVNb2RpZmllZC5TdHlsZS5PcHRpb25z
Lklnbm9yZUNvdW50CitBZGRpbmcgImF0dHJpYnV0ZS1tb2RpZmllZDoxLEhUTUwsMSxCT0RZLDEs
RElWIiBET00gQnJlYWtwb2ludC4uLgorCitTZXR0aW5nIGlnbm9yZUNvdW50IHRvICcyJy4uLgor
CitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1Ry
aWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworVHJpZ2dl
cmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJl
YWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTog
RE9NQnJlYWtwb2ludC5BdHRyaWJ1dGVNb2RpZmllZC5TdHlsZS5PcHRpb25zLkFjdGlvbi5Mb2cK
K0FkZGluZyAiYXR0cmlidXRlLW1vZGlmaWVkOjEsSFRNTCwxLEJPRFksMSxESVYiIERPTSBCcmVh
a3BvaW50Li4uCisKK0FkZGluZyBsb2cgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2lu
dC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91
bGQgcGF1c2UuCisKK0VkaXRpbmcgbG9nIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9p
bnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hv
dWxkIHBhdXNlLgorCitFZGl0aW5nIGxvZyBhY3Rpb24uLi4KK0VuYWJsaW5nIGF1dG8tY29udGlu
dWUuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBi
cmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK0VkaXRpbmcgbG9n
IGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVj
dXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworLS0gUnVu
bmluZyB0ZXN0IGNhc2U6IERPTUJyZWFrcG9pbnQuQXR0cmlidXRlTW9kaWZpZWQuU3R5bGUuT3B0
aW9ucy5BY3Rpb25zLkV2YWx1YXRlCitBZGRpbmcgImF0dHJpYnV0ZS1tb2RpZmllZDoxLEhUTUws
MSxCT0RZLDEsRElWIiBET00gQnJlYWtwb2ludC4uLgorCitBZGRpbmcgZXZhbHVhdGUgYWN0aW9u
Li4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJl
YWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcgZXZhbHVhdGUg
YWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1
dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcgZXZh
bHVhdGUgYWN0aW9uLi4uCitFbmFibGluZyBhdXRvLWNvbnRpbnVlLi4uCisKK1RyaWdnZXJpbmcg
YnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQ
QVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorCitU
cmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQg
YWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9hdHRyaWJ1dGUtbW9kaWZpZWQtc3R5bGUuaHRtbCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvYXR0cmlidXRlLW1vZGlmaWVkLXN0
eWxlLmh0bWwKaW5kZXggYzZlNWQ0NThmZGUxLi5mMDA1MjFiZDZiZDQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvYXR0cmlidXRlLW1vZGlmaWVkLXN0eWxl
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9hdHRyaWJ1dGUt
bW9kaWZpZWQtc3R5bGUuaHRtbApAQCAtMiw3ICsyLDkgQEAKIDxodG1sPgogPGhlYWQ+CiA8c2Ny
aXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10
ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9kZWJ1Z2dlci9yZXNvdXJjZXMvYnJl
YWtwb2ludC1vcHRpb25zLXV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4v
ZGVidWdnZXIvcmVzb3VyY2VzL2xvZy1hY3RpdmUtc3RhY2stdHJhY2UuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9kb20tYnJlYWtwb2ludC11dGlsaXRpZXMuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdD4KIAogZnVuY3Rpb24gZ2V0UHJvcGVydHkobmFtZSkgewpAQCAtMjAsOSAr
MjIsNyBAQCBmdW5jdGlvbiBzZXRQcm9wZXJ0eShuYW1lLCB2YWx1ZSkgewogCiBmdW5jdGlvbiB0
ZXN0KCkKIHsKLSAgICBJbnNwZWN0b3JUZXN0LmRlYnVnKCk7Ci0KLSAgICBsZXQgc3VpdGUgPSBJ
bnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIkRPTUJyZWFrcG9pbnRzLkF0dHJpYnV0ZU1v
ZGlmaWVkLlN0eWxlIik7CisgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3lu
Y1N1aXRlKCJET01CcmVha3BvaW50LkF0dHJpYnV0ZU1vZGlmaWVkIik7CiAKICAgICBhc3luYyBm
dW5jdGlvbiBjaGVja1Byb3BlcnR5VmFsdWUobmFtZSwgZXhwZWN0ZWRWYWx1ZSkgewogICAgICAg
ICBJbnNwZWN0b3JUZXN0LmxvZyhgR2V0dGluZyAnJHtuYW1lfScuLi5gKTsKQEAgLTM0LDYgKzM0
LDkgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKICAgICAg
ICAgICAgIG5hbWUsCiAgICAgICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgICAg
IGxldCBub2RlID0gYXdhaXQgSW5zcGVjdG9yVGVzdC5ET01CcmVha3BvaW50LmF3YWl0UXVlcnlT
ZWxlY3RvcigiI3Rlc3QiKTsKKyAgICAgICAgICAgICAgICBhd2FpdCBJbnNwZWN0b3JUZXN0LkRP
TUJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludChub2RlLCBXSS5ET01CcmVha3BvaW50LlR5cGUu
QXR0cmlidXRlTW9kaWZpZWQpOworCiAgICAgICAgICAgICAgICAgYXdhaXQgY2hlY2tQcm9wZXJ0
eVZhbHVlKHByb3BlcnR5TmFtZSwgcHJvcGVydHlWYWx1ZUJlZm9yZSk7CiAKICAgICAgICAgICAg
ICAgICBsZXQgcGF1c2VkUHJvbWlzZSA9IFdJLmRlYnVnZ2VyTWFuYWdlci5hd2FpdEV2ZW50KFdJ
LkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQpOwpAQCAtNTYsMzcgKzU5LDQxIEBAIGZ1bmN0
aW9uIHRlc3QoKQogCiAgICAgICAgICAgICAgICAgYXdhaXQgY2hlY2tQcm9wZXJ0eVZhbHVlKHBy
b3BlcnR5TmFtZSwgcHJvcGVydHlWYWx1ZUFmdGVyKTsKICAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICB0ZWFyZG93bjogSW5zcGVjdG9yVGVzdC5ET01CcmVha3BvaW50LnRlYXJkb3duLAogICAg
ICAgICB9KTsKICAgICB9CiAKICAgICBhZGRUZXN0Q2FzZSh7Ci0gICAgICAgIG5hbWU6ICJET01C
cmVha3BvaW50cy5BdHRyaWJ1dGVNb2RpZmllZC5TdHlsZS5BZGQiLAorICAgICAgICBuYW1lOiAi
RE9NQnJlYWtwb2ludC5BdHRyaWJ1dGVNb2RpZmllZC5TdHlsZS5BZGQiLAogICAgICAgICBwcm9w
ZXJ0eU5hbWU6ICJkaXNwbGF5IiwKICAgICAgICAgcHJvcGVydHlWYWx1ZUJlZm9yZTogIiIsCiAg
ICAgICAgIHByb3BlcnR5VmFsdWVBZnRlcjogIm5vbmUiLAogICAgIH0pOwogICAgIGFkZFRlc3RD
YXNlKHsKLSAgICAgICAgbmFtZTogIkRPTUJyZWFrcG9pbnRzLkF0dHJpYnV0ZU1vZGlmaWVkLlN0
eWxlLlJlcGxhY2VTYW1lIiwKKyAgICAgICAgbmFtZTogIkRPTUJyZWFrcG9pbnQuQXR0cmlidXRl
TW9kaWZpZWQuU3R5bGUuUmVwbGFjZVNhbWUiLAogICAgICAgICBwcm9wZXJ0eU5hbWU6ICJkaXNw
bGF5IiwKICAgICAgICAgcHJvcGVydHlWYWx1ZUJlZm9yZTogIm5vbmUiLAogICAgICAgICBwcm9w
ZXJ0eVZhbHVlQWZ0ZXI6ICJub25lIiwKICAgICB9KTsKICAgICBhZGRUZXN0Q2FzZSh7Ci0gICAg
ICAgIG5hbWU6ICJET01CcmVha3BvaW50cy5BdHRyaWJ1dGVNb2RpZmllZC5TdHlsZS5SZXBsYWNl
RGlmZmVyZW50IiwKKyAgICAgICAgbmFtZTogIkRPTUJyZWFrcG9pbnQuQXR0cmlidXRlTW9kaWZp
ZWQuU3R5bGUuUmVwbGFjZURpZmZlcmVudCIsCiAgICAgICAgIHByb3BlcnR5TmFtZTogImRpc3Bs
YXkiLAogICAgICAgICBwcm9wZXJ0eVZhbHVlQmVmb3JlOiAibm9uZSIsCiAgICAgICAgIHByb3Bl
cnR5VmFsdWVBZnRlcjogImJsb2NrIiwKICAgICB9KTsKICAgICBhZGRUZXN0Q2FzZSh7Ci0gICAg
ICAgIG5hbWU6ICJET01CcmVha3BvaW50cy5BdHRyaWJ1dGVNb2RpZmllZC5TdHlsZS5SZW1vdmUi
LAorICAgICAgICBuYW1lOiAiRE9NQnJlYWtwb2ludC5BdHRyaWJ1dGVNb2RpZmllZC5TdHlsZS5S
ZW1vdmUiLAogICAgICAgICBwcm9wZXJ0eU5hbWU6ICJkaXNwbGF5IiwKICAgICAgICAgcHJvcGVy
dHlWYWx1ZUJlZm9yZTogImJsb2NrIiwKICAgICAgICAgcHJvcGVydHlWYWx1ZUFmdGVyOiAiIiwK
ICAgICB9KTsKIAogICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKLSAgICAgICAgbmFtZTogIkRPTUJy
ZWFrcG9pbnRzLkF0dHJpYnV0ZU1vZGlmaWVkLlN0eWxlLlRleHQiLAorICAgICAgICBuYW1lOiAi
RE9NQnJlYWtwb2ludC5BdHRyaWJ1dGVNb2RpZmllZC5TdHlsZS5UZXh0IiwKICAgICAgICAgYXN5
bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCBub2RlID0gYXdhaXQgSW5zcGVjdG9yVGVzdC5E
T01CcmVha3BvaW50LmF3YWl0UXVlcnlTZWxlY3RvcigiI3Rlc3QiKTsKKyAgICAgICAgICAgIGF3
YWl0IEluc3BlY3RvclRlc3QuRE9NQnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KG5vZGUsIFdJ
LkRPTUJyZWFrcG9pbnQuVHlwZS5BdHRyaWJ1dGVNb2RpZmllZCk7CisKICAgICAgICAgICAgIGF3
YWl0IGNoZWNrUHJvcGVydHlWYWx1ZSgiZGlzcGxheSIsICIiKTsKIAogICAgICAgICAgICAgbGV0
IHBhdXNlZFByb21pc2UgPSBXSS5kZWJ1Z2dlck1hbmFnZXIuYXdhaXRFdmVudChXSS5EZWJ1Z2dl
ck1hbmFnZXIuRXZlbnQuUGF1c2VkKTsKQEAgLTEwNiwzNyArMTEzLDIxIEBAIGZ1bmN0aW9uIHRl
c3QoKQogCiAgICAgICAgICAgICBhd2FpdCBjaGVja1Byb3BlcnR5VmFsdWUoImRpc3BsYXkiLCAi
bm9uZSIpOwogICAgICAgICB9LAorICAgICAgICB0ZWFyZG93bjogSW5zcGVjdG9yVGVzdC5ET01C
cmVha3BvaW50LnRlYXJkb3duLAogICAgIH0pOwogCi0gICAgV0kuZG9tTWFuYWdlci5yZXF1ZXN0
RG9jdW1lbnQoKGRvY3VtZW50Tm9kZSkgPT4gewotICAgICAgICBpZiAoIWRvY3VtZW50Tm9kZSkg
ewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5mYWlsKCJNaXNzaW5nIGRvY3VtZW50IG5vZGUi
KTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBkb2N1bWVudE5vZGUucXVlcnlTZWxlY3Rv
cigiI3Rlc3QiLCBhc3luYyAobm9kZUlkKSA9PiB7Ci0gICAgICAgICAgICBsZXQgdGVzdE5vZGUg
PSBXSS5kb21NYW5hZ2VyLm5vZGVGb3JJZChub2RlSWQpOwotICAgICAgICAgICAgaWYgKCF0ZXN0
Tm9kZSkgewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZmFpbCgiTWlzc2luZyAjdGVz
dCBub2RlIik7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGxl
dCBwcm9taXNlID0gV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuRE9NRGVidWdn
ZXJNYW5hZ2VyLkV2ZW50LkRPTUJyZWFrcG9pbnRBZGRlZCkKLSAgICAgICAgICAgIC50aGVuKChl
dmVudCkgPT4gewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcygiQWRkZWQgYXR0
cmlidXRlIG1vZGlmaWVkIGJyZWFrcG9pbnQgdG8gI3Rlc3QuIik7Ci0gICAgICAgICAgICB9KTsK
LQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkFkZGluZyBhdHRyaWJ1dGUgbW9kaWZp
ZWQgYnJlYWtwb2ludCB0byAjdGVzdC4uLiIpOwotICAgICAgICAgICAgV0kuZG9tRGVidWdnZXJN
YW5hZ2VyLmFkZERPTUJyZWFrcG9pbnQobmV3IFdJLkRPTUJyZWFrcG9pbnQodGVzdE5vZGUsIFdJ
LkRPTUJyZWFrcG9pbnQuVHlwZS5BdHRyaWJ1dGVNb2RpZmllZCkpOwotICAgICAgICAgICAgYXdh
aXQgcHJvbWlzZTsKLQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoIVdJLmRlYnVn
Z2VyTWFuYWdlci5wYXVzZWQsICJTaG91bGQgbm90IGJlIHBhdXNlZC4iKTsKLQotICAgICAgICAg
ICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Ci0gICAgICAgIH0pOworICAgIEluc3Bl
Y3RvclRlc3QuQnJlYWtwb2ludE9wdGlvbnMuYWRkVGVzdENhc2VzKHN1aXRlLCB7CisgICAgICAg
IHRlc3RDYXNlTmFtZVByZWZpeDogIlN0eWxlLiIsCisgICAgICAgIGFzeW5jIGNyZWF0ZUJyZWFr
cG9pbnQoKSB7CisgICAgICAgICAgICBsZXQgbm9kZSA9IGF3YWl0IEluc3BlY3RvclRlc3QuRE9N
QnJlYWtwb2ludC5hd2FpdFF1ZXJ5U2VsZWN0b3IoIiN0ZXN0Iik7CisgICAgICAgICAgICByZXR1
cm4gSW5zcGVjdG9yVGVzdC5ET01CcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQobm9kZSwgV0ku
RE9NQnJlYWtwb2ludC5UeXBlLkF0dHJpYnV0ZU1vZGlmaWVkKTsKKyAgICAgICAgfSwKKyAgICAg
ICAgYXN5bmMgdHJpZ2dlckJyZWFrcG9pbnQoYnJlYWtwb2ludCkgeworICAgICAgICAgICAgcmV0
dXJuIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYHNldFByb3BlcnR5KCItLXRlc3QiLCBN
YXRoLnJhbmRvbSgpKWApOworICAgICAgICB9LAogICAgIH0pOworCisgICAgc3VpdGUucnVuVGVz
dENhc2VzQW5kRmluaXNoKCk7CiB9CiA8L3NjcmlwdD4KIDwvaGVhZD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZG9tLWJyZWFrcG9pbnQtYXR0cmlidXRl
LW1vZGlmaWVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdn
ZXIvZG9tLWJyZWFrcG9pbnQtYXR0cmlidXRlLW1vZGlmaWVkLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjI4NjRjNzRjOWIyOAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZG9tLWJyZWFrcG9p
bnQtYXR0cmlidXRlLW1vZGlmaWVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzMyBAQAorQ09O
U09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgMQorQ09OU09MRSBNRVNTQUdFOiBC
UkVBS1BPSU5UIEFDVElPTiBMT0cgMgorQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElP
TiBMT0cgMworQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgNAorVGVzdHMg
Zm9yIERPTSBicmVha3BvaW50cy4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IERPTUJyZWFr
cG9pbnQuQXR0cmlidXRlTW9kaWZpZWQKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01CcmVha3Bv
aW50LkF0dHJpYnV0ZU1vZGlmaWVkLkJyZWFrcG9pbnRFbmFibGVkCitBZGRpbmcgImF0dHJpYnV0
ZS1tb2RpZmllZDoxLEhUTUwsMSxCT0RZLDEsRElWLDAsRElWIiBET00gQnJlYWtwb2ludC4uLgor
UEFVU0VEOgorUEFTUzogUGF1c2UgcmVhc29uIHNob3VsZCBiZSBET00uCitQQVNTOiBQYXVzZSB0
eXBlIHNob3VsZCBiZSAnYXR0cmlidXRlLW1vZGlmaWVkJy4KK1BBU1M6IFBhdXNlIG5vZGVJZCBz
aG91bGQgYmUgZXhwZWN0ZWQgdmFsdWUuCitDQUxMIFNUQUNLOgorMDogW0ZdIHRlc3RBdHRyaWJ1
dGVNb2RpZmllZAorMTogW1BdIEdsb2JhbCBDb2RlCistLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24u
CisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01CcmVha3BvaW50LkF0dHJpYnV0ZU1vZGlmaWVk
LkJyZWFrcG9pbnREaXNhYmxlZAorQWRkaW5nICJhdHRyaWJ1dGUtbW9kaWZpZWQ6MSxIVE1MLDEs
Qk9EWSwxLERJViwwLERJViIgRE9NIEJyZWFrcG9pbnQuLi4KK0Rpc2FibGluZyBicmVha3BvaW50
Li4uCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UgZm9y
IGRpc2FibGVkIGJyZWFrcG9pbnQuCistLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCisKKy0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBET01CcmVha3BvaW50LkF0dHJpYnV0ZU1vZGlmaWVkLkRlYnVnZ2Vy
RGlzYWJsZWQKK0FkZGluZyAiYXR0cmlidXRlLW1vZGlmaWVkOjEsSFRNTCwxLEJPRFksMSxESVYs
MCxESVYiIERPTSBCcmVha3BvaW50Li4uCitEaXNhYmxpbmcgYWxsIGJyZWFrcG9pbnRzLi4uCitU
cmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK0VuYWJsaW5nIGFsbCBicmVha3BvaW50cy4uLgorUEFT
UzogU2hvdWxkIG5vdCBwYXVzZSB3aGVuIGFsbCBicmVha3BvaW50cyBkaXNhYmxlZC4KKy0tIFJ1
bm5pbmcgdGVzdCB0ZWFyZG93bi4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTUJyZWFrcG9p
bnQuQXR0cmlidXRlTW9kaWZpZWQuUmVtb3ZlQnJlYWtwb2ludAorQWRkaW5nICJhdHRyaWJ1dGUt
bW9kaWZpZWQ6MSxIVE1MLDEsQk9EWSwxLERJViwwLERJViIgRE9NIEJyZWFrcG9pbnQuLi4KK1Jl
bW92aW5nIGJyZWFrcG9pbnQuLi4KK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hv
dWxkIG5vdCBwYXVzZSBmb3IgcmVtb3ZlZCBicmVha3BvaW50LgorLS0gUnVubmluZyB0ZXN0IHRl
YXJkb3duLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NQnJlYWtwb2ludC5BdHRyaWJ1dGVN
b2RpZmllZC5PcHRpb25zLkNvbmRpdGlvbgorQWRkaW5nICJhdHRyaWJ1dGUtbW9kaWZpZWQ6MSxI
VE1MLDEsQk9EWSwxLERJViwwLERJViIgRE9NIEJyZWFrcG9pbnQuLi4KKworU2V0dGluZyBjb25k
aXRpb24gdG8gJ2ZhbHNlJy4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNo
b3VsZCBub3QgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxk
IG5vdCBwYXVzZS4KKworU2V0dGluZyBjb25kaXRpb24gdG8gJ3RydWUnLi4uCisKK1RyaWdnZXJp
bmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFr
cG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERP
TUJyZWFrcG9pbnQuQXR0cmlidXRlTW9kaWZpZWQuT3B0aW9ucy5JZ25vcmVDb3VudAorQWRkaW5n
ICJhdHRyaWJ1dGUtbW9kaWZpZWQ6MSxIVE1MLDEsQk9EWSwxLERJViwwLERJViIgRE9NIEJyZWFr
cG9pbnQuLi4KKworU2V0dGluZyBpZ25vcmVDb3VudCB0byAnMicuLi4KKworVHJpZ2dlcmluZyBi
cmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFr
cG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2lu
dC4uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BB
U1M6IFNob3VsZCBwYXVzZS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTUJyZWFrcG9pbnQu
QXR0cmlidXRlTW9kaWZpZWQuT3B0aW9ucy5BY3Rpb24uTG9nCitBZGRpbmcgImF0dHJpYnV0ZS1t
b2RpZmllZDoxLEhUTUwsMSxCT0RZLDEsRElWLDAsRElWIiBET00gQnJlYWtwb2ludC4uLgorCitB
ZGRpbmcgbG9nIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNo
b3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitF
ZGl0aW5nIGxvZyBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBT
aG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKwor
RWRpdGluZyBsb2cgYWN0aW9uLi4uCitFbmFibGluZyBhdXRvLWNvbnRpbnVlLi4uCisKK1RyaWdn
ZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rp
b24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitFZGl0aW5nIGxvZyBhY3Rpb24uLi4KKwor
VHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50
IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNl
OiBET01CcmVha3BvaW50LkF0dHJpYnV0ZU1vZGlmaWVkLk9wdGlvbnMuQWN0aW9ucy5FdmFsdWF0
ZQorQWRkaW5nICJhdHRyaWJ1dGUtbW9kaWZpZWQ6MSxIVE1MLDEsQk9EWSwxLERJViwwLERJViIg
RE9NIEJyZWFrcG9pbnQuLi4KKworQWRkaW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorCitUcmlnZ2Vy
aW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9u
LgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorCitU
cmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQg
YWN0aW9uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4u
LgorRW5hYmxpbmcgYXV0by1jb250aW51ZS4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4K
K1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5v
dCBwYXVzZS4KKworRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVh
a3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6
IFNob3VsZCBub3QgcGF1c2UuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
b20tZGVidWdnZXIvZG9tLWJyZWFrcG9pbnQtYXR0cmlidXRlLW1vZGlmaWVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2RvbS1icmVha3BvaW50LWF0dHJpYnV0ZS1t
b2RpZmllZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNTNh
MDA2NDQzMDIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1k
ZWJ1Z2dlci9kb20tYnJlYWtwb2ludC1hdHRyaWJ1dGUtbW9kaWZpZWQuaHRtbApAQCAtMCwwICsx
LDE1NiBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZGVidWdnZXIvcmVzb3VyY2VzL2JyZWFrcG9pbnQtb3B0
aW9ucy11dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2RlYnVnZ2VyL3Jl
c291cmNlcy9sb2ctYWN0aXZlLXN0YWNrLXRyYWNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvZG9tLWJyZWFrcG9pbnQtdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+CitmdW5jdGlvbiB0ZXN0QXR0cmlidXRlTW9kaWZpZWQoKSB7CisgICAgbGV0IG5vZGUgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYXR0cmlidXRlLW1vZGlmaWVkLXRlc3QiKTsKKyAgICBu
b2RlLmRhdGFzZXQuY291bnQgPSAobm9kZS5kYXRhc2V0LmNvdW50IHx8IDApICsgMTsKK30KKwor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVB
c3luY1N1aXRlKCJET01CcmVha3BvaW50LkF0dHJpYnV0ZU1vZGlmaWVkIik7CisKKyAgICBzdWl0
ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6IGBET01CcmVha3BvaW50LkF0dHJpYnV0ZU1v
ZGlmaWVkLkJyZWFrcG9pbnRFbmFibGVkYCwKKyAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0
aGF0IGRlYnVnZ2VyIHBhdXNlcyBmb3IgYnJlYWtwb2ludCB0eXBlLiIsCisgICAgICAgIGFzeW5j
IHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgbm9kZSA9IGF3YWl0IEluc3BlY3RvclRlc3QuRE9N
QnJlYWtwb2ludC5hd2FpdFF1ZXJ5U2VsZWN0b3IoIiNhdHRyaWJ1dGUtbW9kaWZpZWQtdGVzdCIp
OworCisgICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IGF3YWl0IEluc3BlY3RvclRlc3QuRE9N
QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KG5vZGUsIFdJLkRPTUJyZWFrcG9pbnQuVHlwZS5B
dHRyaWJ1dGVNb2RpZmllZCk7CisKKyAgICAgICAgICAgIGxldCBwYXVzZWQgPSBmYWxzZTsKKyAg
ICAgICAgICAgIGxldCBwYXVzZWRMaXN0ZW5lciA9IFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVu
dExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIChldmVudCkgPT4gewor
ICAgICAgICAgICAgICAgIHBhdXNlZCA9IHRydWU7CisKKyAgICAgICAgICAgICAgICBsZXQgdGFy
Z2V0RGF0YSA9IFdJLmRlYnVnZ2VyTWFuYWdlci5kYXRhRm9yVGFyZ2V0KFdJLmRlYnVnZ2VyTWFu
YWdlci5hY3RpdmVDYWxsRnJhbWUudGFyZ2V0KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmxvZygiUEFVU0VEOiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
RXF1YWwodGFyZ2V0RGF0YS5wYXVzZVJlYXNvbiwgV0kuRGVidWdnZXJNYW5hZ2VyLlBhdXNlUmVh
c29uLkRPTSwgIlBhdXNlIHJlYXNvbiBzaG91bGQgYmUgRE9NLiIpOworCisgICAgICAgICAgICAg
ICAgbGV0IHBhdXNlRGF0YSA9IHRhcmdldERhdGEucGF1c2VEYXRhOworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocGF1c2VEYXRhLnR5cGUsIGJyZWFrcG9pbnQudHlw
ZSwgYFBhdXNlIHR5cGUgc2hvdWxkIGJlICcke2JyZWFrcG9pbnQudHlwZX0nLmApOworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocGF1c2VEYXRhLm5vZGVJZCwgYnJl
YWtwb2ludC5kb21Ob2RlLmlkLCAiUGF1c2Ugbm9kZUlkIHNob3VsZCBiZSBleHBlY3RlZCB2YWx1
ZS4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydCghKCJ0YXJnZXROb2Rl
SWQiIGluIHBhdXNlRGF0YSksICJTaG91bGQgbm90IGhhdmUgJ3RhcmdldE5vZGVJZCcuIik7Cisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoISgiaW5zZXJ0aW9uIiBpbiBwYXVz
ZURhdGEpLCAiU2hvdWxkIG5vdCBoYXZlICdpbnNlcnRpb24nLiIpOworCisgICAgICAgICAgICAg
ICAgbG9nQWN0aXZlU3RhY2tUcmFjZSgpOworICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFu
YWdlci5yZXN1bWUoKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBhd2FpdCBJbnNw
ZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGB0ZXN0QXR0cmlidXRlTW9kaWZpZWQoKWApOworCisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChwYXVzZWQsICJTaG91bGQgcGF1c2UuIik7
CisgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5E
ZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCBwYXVzZWRMaXN0ZW5lcik7CisgICAgICAgIH0s
CisgICAgICAgIHRlYXJkb3duOiBJbnNwZWN0b3JUZXN0LkRPTUJyZWFrcG9pbnQudGVhcmRvd24s
CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6IGBET01C
cmVha3BvaW50LkF0dHJpYnV0ZU1vZGlmaWVkLkJyZWFrcG9pbnREaXNhYmxlZGAsCisgICAgICAg
IGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBkZWJ1Z2dlciBkb2VzIG5vdCBwYXVzZSBmb3IgZGlz
YWJsZWQgYnJlYWtwb2ludC4iLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAg
bGV0IHBhdXNlZCA9IGZhbHNlOworICAgICAgICAgICAgbGV0IHBhdXNlZExpc3RlbmVyID0gV0ku
ZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50
LlBhdXNlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgcGF1c2VkID0gdHJ1ZTsKKwor
ICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKTsKKyAgICAgICAgICAg
IH0pOworCisgICAgICAgICAgICBsZXQgbm9kZSA9IGF3YWl0IEluc3BlY3RvclRlc3QuRE9NQnJl
YWtwb2ludC5hd2FpdFF1ZXJ5U2VsZWN0b3IoIiNhdHRyaWJ1dGUtbW9kaWZpZWQtdGVzdCIpOwor
CisgICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IGF3YWl0IEluc3BlY3RvclRlc3QuRE9NQnJl
YWtwb2ludC5jcmVhdGVCcmVha3BvaW50KG5vZGUsIFdJLkRPTUJyZWFrcG9pbnQuVHlwZS5BdHRy
aWJ1dGVNb2RpZmllZCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJEaXNhYmxp
bmcgYnJlYWtwb2ludC4uLiIpOworICAgICAgICAgICAgYnJlYWtwb2ludC5kaXNhYmxlZCA9IHRy
dWU7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJUcmlnZ2VyaW5nIGJyZWFrcG9p
bnQuLi4iKTsKKyAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2Uo
YHRlc3RBdHRyaWJ1dGVNb2RpZmllZCgpYCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0RmFsc2UocGF1c2VkLCAiU2hvdWxkIG5vdCBwYXVzZSBmb3IgZGlzYWJsZWQgYnJlYWtw
b2ludC4iKTsKKyAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3Rl
bmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIHBhdXNlZExpc3RlbmVyKTsKKyAg
ICAgICAgfSwKKyAgICAgICAgdGVhcmRvd246IEluc3BlY3RvclRlc3QuRE9NQnJlYWtwb2ludC50
ZWFyZG93biwKKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFt
ZTogYERPTUJyZWFrcG9pbnQuQXR0cmlidXRlTW9kaWZpZWQuRGVidWdnZXJEaXNhYmxlZGAsCisg
ICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBkZWJ1Z2dlciBkb2VzIG5vdCBwYXVzZSB3
aGVuIHRoZSBkZWJ1Z2dlciBpcyBkaXNhYmxlZC4iLAorICAgICAgICBhc3luYyB0ZXN0KCkgewor
ICAgICAgICAgICAgbGV0IHBhdXNlZCA9IGZhbHNlOworICAgICAgICAgICAgbGV0IHBhdXNlZExp
c3RlbmVyID0gV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJN
YW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgcGF1c2Vk
ID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKTsK
KyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBsZXQgbm9kZSA9IGF3YWl0IEluc3BlY3Rv
clRlc3QuRE9NQnJlYWtwb2ludC5hd2FpdFF1ZXJ5U2VsZWN0b3IoIiNhdHRyaWJ1dGUtbW9kaWZp
ZWQtdGVzdCIpOworCisgICAgICAgICAgICBhd2FpdCBJbnNwZWN0b3JUZXN0LkRPTUJyZWFrcG9p
bnQuY3JlYXRlQnJlYWtwb2ludChub2RlLCBXSS5ET01CcmVha3BvaW50LlR5cGUuQXR0cmlidXRl
TW9kaWZpZWQpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiRGlzYWJsaW5nIGFs
bCBicmVha3BvaW50cy4uLiIpOworICAgICAgICAgICAgYXdhaXQgRGVidWdnZXJBZ2VudC5zZXRC
cmVha3BvaW50c0FjdGl2ZShmYWxzZSk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9n
KCJUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4iKTsKKyAgICAgICAgICAgIGF3YWl0IEluc3BlY3Rv
clRlc3QuZXZhbHVhdGVJblBhZ2UoYHRlc3RBdHRyaWJ1dGVNb2RpZmllZCgpYCk7CisKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJFbmFibGluZyBhbGwgYnJlYWtwb2ludHMuLi4iKTsK
KyAgICAgICAgICAgIGF3YWl0IERlYnVnZ2VyQWdlbnQuc2V0QnJlYWtwb2ludHNBY3RpdmUodHJ1
ZSk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RmFsc2UocGF1c2VkLCAiU2hv
dWxkIG5vdCBwYXVzZSB3aGVuIGFsbCBicmVha3BvaW50cyBkaXNhYmxlZC4iKTsKKyAgICAgICAg
ICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFu
YWdlci5FdmVudC5QYXVzZWQsIHBhdXNlZExpc3RlbmVyKTsKKyAgICAgICAgfSwKKyAgICAgICAg
dGVhcmRvd246IEluc3BlY3RvclRlc3QuRE9NQnJlYWtwb2ludC50ZWFyZG93biwKKyAgICB9KTsK
KworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogYERPTUJyZWFrcG9pbnQu
QXR0cmlidXRlTW9kaWZpZWQuUmVtb3ZlQnJlYWtwb2ludGAsCisgICAgICAgIGRlc2NyaXB0aW9u
OiAiQ2hlY2sgdGhhdCBkZWJ1Z2dlciBkb2VzIG5vdCBwYXVzZSBmb3IgcmVtb3ZlZCBicmVha3Bv
aW50LiIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgcGF1c2VkID0g
ZmFsc2U7CisgICAgICAgICAgICBsZXQgcGF1c2VkTGlzdGVuZXIgPSBXSS5kZWJ1Z2dlck1hbmFn
ZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCAoZXZl
bnQpID0+IHsKKyAgICAgICAgICAgICAgICBwYXVzZWQgPSB0cnVlOworCisgICAgICAgICAgICAg
ICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgpOworICAgICAgICAgICAgfSk7CisKKyAgICAg
ICAgICAgIGxldCBub2RlID0gYXdhaXQgSW5zcGVjdG9yVGVzdC5ET01CcmVha3BvaW50LmF3YWl0
UXVlcnlTZWxlY3RvcigiI2F0dHJpYnV0ZS1tb2RpZmllZC10ZXN0Iik7CisKKyAgICAgICAgICAg
IGxldCBicmVha3BvaW50ID0gYXdhaXQgSW5zcGVjdG9yVGVzdC5ET01CcmVha3BvaW50LmNyZWF0
ZUJyZWFrcG9pbnQobm9kZSwgV0kuRE9NQnJlYWtwb2ludC5UeXBlLkF0dHJpYnV0ZU1vZGlmaWVk
KTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlJlbW92aW5nIGJyZWFrcG9pbnQu
Li4iKTsKKyAgICAgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5yZW1vdmVET01CcmVha3Bv
aW50KGJyZWFrcG9pbnQpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dl
cmluZyBicmVha3BvaW50Li4uIik7CisgICAgICAgICAgICBhd2FpdCBJbnNwZWN0b3JUZXN0LmV2
YWx1YXRlSW5QYWdlKGB0ZXN0QXR0cmlidXRlTW9kaWZpZWQoKWApOworCisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNlKHBhdXNlZCwgIlNob3VsZCBub3QgcGF1c2UgZm9yIHJl
bW92ZWQgYnJlYWtwb2ludC4iKTsKKyAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1v
dmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIHBhdXNlZExp
c3RlbmVyKTsKKyAgICAgICAgfSwKKyAgICAgICAgdGVhcmRvd246IEluc3BlY3RvclRlc3QuRE9N
QnJlYWtwb2ludC50ZWFyZG93biwKKyAgICB9KTsKKworICAgIEluc3BlY3RvclRlc3QuQnJlYWtw
b2ludE9wdGlvbnMuYWRkVGVzdENhc2VzKHN1aXRlLCB7CisgICAgICAgIGFzeW5jIGNyZWF0ZUJy
ZWFrcG9pbnQoKSB7CisgICAgICAgICAgICBsZXQgbm9kZSA9IGF3YWl0IEluc3BlY3RvclRlc3Qu
RE9NQnJlYWtwb2ludC5hd2FpdFF1ZXJ5U2VsZWN0b3IoIiNhdHRyaWJ1dGUtbW9kaWZpZWQtdGVz
dCIpOworICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvclRlc3QuRE9NQnJlYWtwb2ludC5jcmVh
dGVCcmVha3BvaW50KG5vZGUsIFdJLkRPTUJyZWFrcG9pbnQuVHlwZS5BdHRyaWJ1dGVNb2RpZmll
ZCk7CisgICAgICAgIH0sCisgICAgICAgIGFzeW5jIHRyaWdnZXJCcmVha3BvaW50KGJyZWFrcG9p
bnQpIHsKKyAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGB0
ZXN0QXR0cmlidXRlTW9kaWZpZWQoKWApOworICAgICAgICB9LAorICAgIH0pOworCisgICAgc3Vp
dGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3RzIGZvciBET00gYnJlYWtwb2ludHMuPC9wPgor
PGRpdiBpZD0idGVzdC1jb250YWluZXIiIHN0eWxlPSJkaXNwbGF5OiBub25lIj4KKyAgICA8ZGl2
IGlkPSJhdHRyaWJ1dGUtbW9kaWZpZWQtdGVzdCI+PC9kaXY+Cis8L2Rpdj4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZG9t
LWJyZWFrcG9pbnQtbm9kZS1yZW1vdmVkLWFuY2VzdG9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZG9tLWJyZWFrcG9pbnQtbm9kZS1yZW1vdmVkLWFu
Y2VzdG9yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLjhmNThjYjI0M2QxMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kb20tZGVidWdnZXIvZG9tLWJyZWFrcG9pbnQtbm9kZS1yZW1vdmVkLWFuY2VzdG9yLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDExNyBAQAorQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFD
VElPTiBMT0cgMQorQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgMgorQ09O
U09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgMworQ09OU09MRSBNRVNTQUdFOiBC
UkVBS1BPSU5UIEFDVElPTiBMT0cgNAorVGVzdHMgZm9yIERPTSBicmVha3BvaW50cy4KKworCis9
PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IERPTUJyZWFrcG9pbnQuTm9kZVJlbW92ZWQKKy0tIFJ1bm5p
bmcgdGVzdCBjYXNlOiBET01CcmVha3BvaW50Lk5vZGVSZW1vdmVkLkFuY2VzdG9yLkJyZWFrcG9p
bnRFbmFibGVkCitBZGRpbmcgIm5vZGUtcmVtb3ZlZDoxLEhUTUwsMSxCT0RZLDEsRElWLDAsRElW
LDAsRElWIiBET00gQnJlYWtwb2ludC4uLgorUEFVU0VEOgorUEFTUzogUGF1c2UgcmVhc29uIHNo
b3VsZCBiZSBET00uCitQQVNTOiBQYXVzZSB0eXBlIHNob3VsZCBiZSAnbm9kZS1yZW1vdmVkJy4K
K1BBU1M6IFBhdXNlIG5vZGVJZCBzaG91bGQgYmUgZXhwZWN0ZWQgdmFsdWUuCitQQVNTOiBQYXVz
ZSB0YXJnZXROb2RlSWQgc2hvdWxkIGJlIGV4cGVjdGVkIHZhbHVlLgorQ0FMTCBTVEFDSzoKKzA6
IFtGXSB0ZXN0Tm9kZVJlbW92ZWRBbmNlc3RvcgorMTogW1BdIEdsb2JhbCBDb2RlCistLSBSdW5u
aW5nIHRlc3QgdGVhcmRvd24uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01CcmVha3BvaW50
Lk5vZGVSZW1vdmVkLkFuY2VzdG9yLkJyZWFrcG9pbnREaXNhYmxlZAorQWRkaW5nICJub2RlLXJl
bW92ZWQ6MSxIVE1MLDEsQk9EWSwxLERJViwwLERJViwwLERJViIgRE9NIEJyZWFrcG9pbnQuLi4K
K0Rpc2FibGluZyBicmVha3BvaW50Li4uCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6
IFNob3VsZCBub3QgcGF1c2UgZm9yIGRpc2FibGVkIGJyZWFrcG9pbnQuCistLSBSdW5uaW5nIHRl
c3QgdGVhcmRvd24uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01CcmVha3BvaW50Lk5vZGVS
ZW1vdmVkLkFuY2VzdG9yLkRlYnVnZ2VyRGlzYWJsZWQKK0FkZGluZyAibm9kZS1yZW1vdmVkOjEs
SFRNTCwxLEJPRFksMSxESVYsMCxESVYsMCxESVYiIERPTSBCcmVha3BvaW50Li4uCitEaXNhYmxp
bmcgYWxsIGJyZWFrcG9pbnRzLi4uCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK0VuYWJsaW5n
IGFsbCBicmVha3BvaW50cy4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZSB3aGVuIGFsbCBicmVh
a3BvaW50cyBkaXNhYmxlZC4KKy0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KKworLS0gUnVubmlu
ZyB0ZXN0IGNhc2U6IERPTUJyZWFrcG9pbnQuTm9kZVJlbW92ZWQuQW5jZXN0b3IuUmVtb3ZlQnJl
YWtwb2ludAorQWRkaW5nICJub2RlLXJlbW92ZWQ6MSxIVE1MLDEsQk9EWSwxLERJViwwLERJViww
LERJViIgRE9NIEJyZWFrcG9pbnQuLi4KK1JlbW92aW5nIGJyZWFrcG9pbnQuLi4KK1RyaWdnZXJp
bmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZSBmb3IgcmVtb3ZlZCBicmVh
a3BvaW50LgorLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgorCistLSBSdW5uaW5nIHRlc3QgY2Fz
ZTogRE9NQnJlYWtwb2ludC5Ob2RlUmVtb3ZlZC5BbmNlc3Rvci5PcHRpb25zLkNvbmRpdGlvbgor
QWRkaW5nICJub2RlLXJlbW92ZWQ6MSxIVE1MLDEsQk9EWSwxLERJViwwLERJViwwLERJViIgRE9N
IEJyZWFrcG9pbnQuLi4KKworU2V0dGluZyBjb25kaXRpb24gdG8gJ2ZhbHNlJy4uLgorCitUcmln
Z2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1RyaWdnZXJp
bmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworU2V0dGluZyBjb25k
aXRpb24gdG8gJ3RydWUnLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hv
dWxkIHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVz
ZS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTUJyZWFrcG9pbnQuTm9kZVJlbW92ZWQuQW5j
ZXN0b3IuT3B0aW9ucy5BY3Rpb24uTG9nCitBZGRpbmcgIm5vZGUtcmVtb3ZlZDoxLEhUTUwsMSxC
T0RZLDEsRElWLDAsRElWLDAsRElWIiBET00gQnJlYWtwb2ludC4uLgorCitBZGRpbmcgbG9nIGFj
dGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRl
IGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGxvZyBh
Y3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0
ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBsb2cg
YWN0aW9uLi4uCitFbmFibGluZyBhdXRvLWNvbnRpbnVlLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtw
b2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBT
aG91bGQgbm90IHBhdXNlLgorCitFZGl0aW5nIGxvZyBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBi
cmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BB
U1M6IFNob3VsZCBub3QgcGF1c2UuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01CcmVha3Bv
aW50Lk5vZGVSZW1vdmVkLkFuY2VzdG9yLk9wdGlvbnMuQWN0aW9ucy5FdmFsdWF0ZQorQWRkaW5n
ICJub2RlLXJlbW92ZWQ6MSxIVE1MLDEsQk9EWSwxLERJViwwLERJViwwLERJViIgRE9NIEJyZWFr
cG9pbnQuLi4KKworQWRkaW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFr
cG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzog
U2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5n
IGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgor
UEFTUzogU2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorRW5hYmxp
bmcgYXV0by1jb250aW51ZS4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNo
b3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4K
KworRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4u
CitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBu
b3QgcGF1c2UuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdn
ZXIvZG9tLWJyZWFrcG9pbnQtbm9kZS1yZW1vdmVkLWFuY2VzdG9yLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2RvbS1icmVha3BvaW50LW5vZGUtcmVtb3ZlZC1hbmNl
c3Rvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNmVkYzhk
MWNmN2E5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1
Z2dlci9kb20tYnJlYWtwb2ludC1ub2RlLXJlbW92ZWQtYW5jZXN0b3IuaHRtbApAQCAtMCwwICsx
LDE3NyBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZGVidWdnZXIvcmVzb3VyY2VzL2JyZWFrcG9pbnQtb3B0
aW9ucy11dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2RlYnVnZ2VyL3Jl
c291cmNlcy9sb2ctYWN0aXZlLXN0YWNrLXRyYWNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvZG9tLWJyZWFrcG9pbnQtdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+CitmdW5jdGlvbiB0ZXN0Tm9kZVJlbW92ZWRBbmNlc3RvcigpIHsKKyAgICBsZXQgbm9kZSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJub2RlLXJlbW92ZWQtYW5jZXN0b3ItdGVzdCIpOwor
ICAgIGxldCBwYXJlbnQgPSBub2RlLnBhcmVudE5vZGU7CisgICAgbGV0IGdyYW5kcGFyZW50ID0g
cGFyZW50LnBhcmVudE5vZGU7CisgICAgcGFyZW50LnJlbW92ZSgpOworICAgIGdyYW5kcGFyZW50
LmFwcGVuZENoaWxkKHBhcmVudCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBz
dWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiRE9NQnJlYWtwb2ludC5Ob2Rl
UmVtb3ZlZCIpOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiBgRE9N
QnJlYWtwb2ludC5Ob2RlUmVtb3ZlZC5BbmNlc3Rvci5CcmVha3BvaW50RW5hYmxlZGAsCisgICAg
ICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBkZWJ1Z2dlciBwYXVzZXMgZm9yIGJyZWFrcG9p
bnQgdHlwZS4iLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IG5vZGUg
PSBhd2FpdCBJbnNwZWN0b3JUZXN0LkRPTUJyZWFrcG9pbnQuYXdhaXRRdWVyeVNlbGVjdG9yKCIj
bm9kZS1yZW1vdmVkLWFuY2VzdG9yLXRlc3QiKTsKKworICAgICAgICAgICAgbGV0IGJyZWFrcG9p
bnQgPSBhd2FpdCBJbnNwZWN0b3JUZXN0LkRPTUJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludChu
b2RlLCBXSS5ET01CcmVha3BvaW50LlR5cGUuTm9kZVJlbW92ZWQpOworCisgICAgICAgICAgICBs
ZXQgcGF1c2VkID0gZmFsc2U7CisgICAgICAgICAgICBsZXQgcGF1c2VkTGlzdGVuZXIgPSBXSS5k
ZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQu
UGF1c2VkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBwYXVzZWQgPSB0cnVlOworCisg
ICAgICAgICAgICAgICAgbGV0IHRhcmdldERhdGEgPSBXSS5kZWJ1Z2dlck1hbmFnZXIuZGF0YUZv
clRhcmdldChXSS5kZWJ1Z2dlck1hbmFnZXIuYWN0aXZlQ2FsbEZyYW1lLnRhcmdldCk7CisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlBBVVNFRDoiKTsKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHRhcmdldERhdGEucGF1c2VSZWFzb24sIFdJLkRl
YnVnZ2VyTWFuYWdlci5QYXVzZVJlYXNvbi5ET00sICJQYXVzZSByZWFzb24gc2hvdWxkIGJlIERP
TS4iKTsKKworICAgICAgICAgICAgICAgIGxldCBwYXVzZURhdGEgPSB0YXJnZXREYXRhLnBhdXNl
RGF0YTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHBhdXNlRGF0
YS50eXBlLCBicmVha3BvaW50LnR5cGUsIGBQYXVzZSB0eXBlIHNob3VsZCBiZSAnJHticmVha3Bv
aW50LnR5cGV9Jy5gKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFs
KHBhdXNlRGF0YS5ub2RlSWQsIGJyZWFrcG9pbnQuZG9tTm9kZS5pZCwgIlBhdXNlIG5vZGVJZCBz
aG91bGQgYmUgZXhwZWN0ZWQgdmFsdWUuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RFcXVhbChwYXVzZURhdGEudGFyZ2V0Tm9kZUlkLCBub2RlLnBhcmVudE5vZGUuaWQs
ICJQYXVzZSB0YXJnZXROb2RlSWQgc2hvdWxkIGJlIGV4cGVjdGVkIHZhbHVlLiIpOworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KCEoImluc2VydGlvbiIgaW4gcGF1c2VEYXRh
KSwgIlNob3VsZCBub3QgaGF2ZSAnaW5zZXJ0aW9uJy4iKTsKKworICAgICAgICAgICAgICAgIGxv
Z0FjdGl2ZVN0YWNrVHJhY2UoKTsKKyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIu
cmVzdW1lKCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9y
VGVzdC5ldmFsdWF0ZUluUGFnZShgdGVzdE5vZGVSZW1vdmVkQW5jZXN0b3IoKWApOworCisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydCghYnJlYWtwb2ludC5kb21Ob2RlLCAiU2hvdWxk
IG5vdCBoYXZlIGRvbU5vZGUuIik7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0
KHBhdXNlZCwgIlNob3VsZCBwYXVzZS4iKTsKKyAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdl
ci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIHBh
dXNlZExpc3RlbmVyKTsKKyAgICAgICAgfSwKKyAgICAgICAgdGVhcmRvd246IEluc3BlY3RvclRl
c3QuRE9NQnJlYWtwb2ludC50ZWFyZG93biwKKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RD
YXNlKHsKKyAgICAgICAgbmFtZTogYERPTUJyZWFrcG9pbnQuTm9kZVJlbW92ZWQuQW5jZXN0b3Iu
QnJlYWtwb2ludERpc2FibGVkYCwKKyAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IGRl
YnVnZ2VyIGRvZXMgbm90IHBhdXNlIGZvciBkaXNhYmxlZCBicmVha3BvaW50LiIsCisgICAgICAg
IGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgcGF1c2VkID0gZmFsc2U7CisgICAgICAg
ICAgICBsZXQgcGF1c2VkTGlzdGVuZXIgPSBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0
ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCAoZXZlbnQpID0+IHsKKyAgICAg
ICAgICAgICAgICBwYXVzZWQgPSB0cnVlOworCisgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJN
YW5hZ2VyLnJlc3VtZSgpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGxldCBub2Rl
ID0gYXdhaXQgSW5zcGVjdG9yVGVzdC5ET01CcmVha3BvaW50LmF3YWl0UXVlcnlTZWxlY3Rvcigi
I25vZGUtcmVtb3ZlZC1hbmNlc3Rvci10ZXN0Iik7CisKKyAgICAgICAgICAgIGxldCBicmVha3Bv
aW50ID0gYXdhaXQgSW5zcGVjdG9yVGVzdC5ET01CcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQo
bm9kZSwgV0kuRE9NQnJlYWtwb2ludC5UeXBlLk5vZGVSZW1vdmVkKTsKKworICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5sb2coIkRpc2FibGluZyBicmVha3BvaW50Li4uIik7CisgICAgICAgICAg
ICBicmVha3BvaW50LmRpc2FibGVkID0gdHJ1ZTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hc3NlcnQoYnJlYWtwb2ludC5kb21Ob2RlID09PSBub2RlLCAiU2hvdWxkIGhhdmUgZG9tTm9k
ZS4iKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlRyaWdnZXJpbmcgYnJlYWtw
b2ludC4uLiIpOworICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFn
ZShgdGVzdE5vZGVSZW1vdmVkQW5jZXN0b3IoKWApOworCisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFzc2VydCghYnJlYWtwb2ludC5kb21Ob2RlLCAiU2hvdWxkIG5vdCBoYXZlIGRvbU5vZGUu
Iik7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RmFsc2UocGF1c2VkLCAiU2hv
dWxkIG5vdCBwYXVzZSBmb3IgZGlzYWJsZWQgYnJlYWtwb2ludC4iKTsKKyAgICAgICAgICAgIFdJ
LmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5F
dmVudC5QYXVzZWQsIHBhdXNlZExpc3RlbmVyKTsKKyAgICAgICAgfSwKKyAgICAgICAgdGVhcmRv
d246IEluc3BlY3RvclRlc3QuRE9NQnJlYWtwb2ludC50ZWFyZG93biwKKyAgICB9KTsKKworICAg
IHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogYERPTUJyZWFrcG9pbnQuTm9kZVJl
bW92ZWQuQW5jZXN0b3IuRGVidWdnZXJEaXNhYmxlZGAsCisgICAgICAgIGRlc2NyaXB0aW9uOiAi
Q2hlY2sgdGhhdCBkZWJ1Z2dlciBkb2VzIG5vdCBwYXVzZSB3aGVuIHRoZSBkZWJ1Z2dlciBpcyBk
aXNhYmxlZC4iLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IHBhdXNl
ZCA9IGZhbHNlOworICAgICAgICAgICAgbGV0IHBhdXNlZExpc3RlbmVyID0gV0kuZGVidWdnZXJN
YW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwg
KGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgcGF1c2VkID0gdHJ1ZTsKKworICAgICAgICAg
ICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKTsKKyAgICAgICAgICAgIH0pOworCisg
ICAgICAgICAgICBsZXQgbm9kZSA9IGF3YWl0IEluc3BlY3RvclRlc3QuRE9NQnJlYWtwb2ludC5h
d2FpdFF1ZXJ5U2VsZWN0b3IoIiNub2RlLXJlbW92ZWQtYW5jZXN0b3ItdGVzdCIpOworCisgICAg
ICAgICAgICBsZXQgYnJlYWtwb2ludCA9IGF3YWl0IEluc3BlY3RvclRlc3QuRE9NQnJlYWtwb2lu
dC5jcmVhdGVCcmVha3BvaW50KG5vZGUsIFdJLkRPTUJyZWFrcG9pbnQuVHlwZS5Ob2RlUmVtb3Zl
ZCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJEaXNhYmxpbmcgYWxsIGJyZWFr
cG9pbnRzLi4uIik7CisgICAgICAgICAgICBhd2FpdCBEZWJ1Z2dlckFnZW50LnNldEJyZWFrcG9p
bnRzQWN0aXZlKGZhbHNlKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlRyaWdn
ZXJpbmcgYnJlYWtwb2ludC4uLiIpOworICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVzdC5l
dmFsdWF0ZUluUGFnZShgdGVzdE5vZGVSZW1vdmVkQW5jZXN0b3IoKWApOworCisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFzc2VydCghYnJlYWtwb2ludC5kb21Ob2RlLCAiU2hvdWxkIG5vdCBo
YXZlIGRvbU5vZGUuIik7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJFbmFibGlu
ZyBhbGwgYnJlYWtwb2ludHMuLi4iKTsKKyAgICAgICAgICAgIGF3YWl0IERlYnVnZ2VyQWdlbnQu
c2V0QnJlYWtwb2ludHNBY3RpdmUodHJ1ZSk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0RmFsc2UocGF1c2VkLCAiU2hvdWxkIG5vdCBwYXVzZSB3aGVuIGFsbCBicmVha3BvaW50
cyBkaXNhYmxlZC4iKTsKKyAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVu
dExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIHBhdXNlZExpc3RlbmVy
KTsKKyAgICAgICAgfSwKKyAgICAgICAgdGVhcmRvd246IEluc3BlY3RvclRlc3QuRE9NQnJlYWtw
b2ludC50ZWFyZG93biwKKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAg
ICAgbmFtZTogYERPTUJyZWFrcG9pbnQuTm9kZVJlbW92ZWQuQW5jZXN0b3IuUmVtb3ZlQnJlYWtw
b2ludGAsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBkZWJ1Z2dlciBkb2VzIG5v
dCBwYXVzZSBmb3IgcmVtb3ZlZCBicmVha3BvaW50LiIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7
CisgICAgICAgICAgICBsZXQgcGF1c2VkID0gZmFsc2U7CisgICAgICAgICAgICBsZXQgcGF1c2Vk
TGlzdGVuZXIgPSBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dl
ck1hbmFnZXIuRXZlbnQuUGF1c2VkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBwYXVz
ZWQgPSB0cnVlOworCisgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgp
OworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGxldCBub2RlID0gYXdhaXQgSW5zcGVj
dG9yVGVzdC5ET01CcmVha3BvaW50LmF3YWl0UXVlcnlTZWxlY3RvcigiI25vZGUtcmVtb3ZlZC1h
bmNlc3Rvci10ZXN0Iik7CisKKyAgICAgICAgICAgIGxldCBicmVha3BvaW50ID0gYXdhaXQgSW5z
cGVjdG9yVGVzdC5ET01CcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQobm9kZSwgV0kuRE9NQnJl
YWtwb2ludC5UeXBlLk5vZGVSZW1vdmVkKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5s
b2coIlJlbW92aW5nIGJyZWFrcG9pbnQuLi4iKTsKKyAgICAgICAgICAgIFdJLmRvbURlYnVnZ2Vy
TWFuYWdlci5yZW1vdmVET01CcmVha3BvaW50KGJyZWFrcG9pbnQpOworCisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydCghYnJlYWtwb2ludC5kb21Ob2RlLCAiU2hvdWxkIG5vdCBoYXZl
IGRvbU5vZGUuIik7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJUcmlnZ2VyaW5n
IGJyZWFrcG9pbnQuLi4iKTsKKyAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QuZXZhbHVh
dGVJblBhZ2UoYHRlc3ROb2RlUmVtb3ZlZEFuY2VzdG9yKClgKTsKKworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hc3NlcnQoIWJyZWFrcG9pbnQuZG9tTm9kZSwgIlNob3VsZCBub3QgaGF2ZSBk
b21Ob2RlLiIpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNlKHBhdXNl
ZCwgIlNob3VsZCBub3QgcGF1c2UgZm9yIHJlbW92ZWQgYnJlYWtwb2ludC4iKTsKKyAgICAgICAg
ICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFu
YWdlci5FdmVudC5QYXVzZWQsIHBhdXNlZExpc3RlbmVyKTsKKyAgICAgICAgfSwKKyAgICAgICAg
dGVhcmRvd246IEluc3BlY3RvclRlc3QuRE9NQnJlYWtwb2ludC50ZWFyZG93biwKKyAgICB9KTsK
KworICAgIEluc3BlY3RvclRlc3QuQnJlYWtwb2ludE9wdGlvbnMuYWRkVGVzdENhc2VzKHN1aXRl
LCB7CisgICAgICAgIHRlc3RDYXNlTmFtZVByZWZpeDogIkFuY2VzdG9yLiIsCisgICAgICAgIGFz
eW5jIGNyZWF0ZUJyZWFrcG9pbnQoKSB7CisgICAgICAgICAgICBsZXQgbm9kZSA9IGF3YWl0IElu
c3BlY3RvclRlc3QuRE9NQnJlYWtwb2ludC5hd2FpdFF1ZXJ5U2VsZWN0b3IoIiNub2RlLXJlbW92
ZWQtYW5jZXN0b3ItdGVzdCIpOworICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvclRlc3QuRE9N
QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KG5vZGUsIFdJLkRPTUJyZWFrcG9pbnQuVHlwZS5O
b2RlUmVtb3ZlZCk7CisgICAgICAgIH0sCisgICAgICAgIGFzeW5jIHRyaWdnZXJCcmVha3BvaW50
KGJyZWFrcG9pbnQpIHsKKyAgICAgICAgICAgIGxldCBub2RlID0gYXdhaXQgSW5zcGVjdG9yVGVz
dC5ET01CcmVha3BvaW50LmF3YWl0UXVlcnlTZWxlY3RvcigiI25vZGUtcmVtb3ZlZC1hbmNlc3Rv
ci10ZXN0Iik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChicmVha3BvaW50LmRv
bU5vZGUgPT09IG5vZGUsICJTaG91bGQgaGF2ZSBkb21Ob2RlLiIpOworICAgICAgICAgICAgcmV0
dXJuIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYHRlc3ROb2RlUmVtb3ZlZEFuY2VzdG9y
KClgKTsKKyAgICAgICAgfSwKKyAgICAgICAgc2tpcDogeworICAgICAgICAgICAgaWdub3JlQ291
bnQ6IHRydWUsCisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNB
bmRGaW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0
KCkiPgorPHA+VGVzdHMgZm9yIERPTSBicmVha3BvaW50cy48L3A+Cis8ZGl2IGlkPSJ0ZXN0LWNv
bnRhaW5lciIgc3R5bGU9ImRpc3BsYXk6IG5vbmUiPgorICAgIDxkaXY+PGRpdiBpZD0ibm9kZS1y
ZW1vdmVkLWFuY2VzdG9yLXRlc3QiPjwvZGl2PjwvZGl2PgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2RvbS1i
cmVha3BvaW50LW5vZGUtcmVtb3ZlZC1kaXJlY3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9kb20tYnJlYWtwb2ludC1ub2RlLXJlbW92ZWQtZGlyZWN0
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmNi
MzJhZDcyZTczMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20t
ZGVidWdnZXIvZG9tLWJyZWFrcG9pbnQtbm9kZS1yZW1vdmVkLWRpcmVjdC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxMTYgQEAKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9H
IDEKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDIKK0NPTlNPTEUgTUVT
U0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDMKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lO
VCBBQ1RJT04gTE9HIDQKK1Rlc3RzIGZvciBET00gYnJlYWtwb2ludHMuCisKKworPT0gUnVubmlu
ZyB0ZXN0IHN1aXRlOiBET01CcmVha3BvaW50Lk5vZGVSZW1vdmVkCistLSBSdW5uaW5nIHRlc3Qg
Y2FzZTogRE9NQnJlYWtwb2ludC5Ob2RlUmVtb3ZlZC5EaXJlY3QuQnJlYWtwb2ludEVuYWJsZWQK
K0FkZGluZyAibm9kZS1yZW1vdmVkOjEsSFRNTCwxLEJPRFksMSxESVYsMCxESVYiIERPTSBCcmVh
a3BvaW50Li4uCitQQVVTRUQ6CitQQVNTOiBQYXVzZSByZWFzb24gc2hvdWxkIGJlIERPTS4KK1BB
U1M6IFBhdXNlIHR5cGUgc2hvdWxkIGJlICdub2RlLXJlbW92ZWQnLgorUEFTUzogUGF1c2Ugbm9k
ZUlkIHNob3VsZCBiZSBleHBlY3RlZCB2YWx1ZS4KK0NBTEwgU1RBQ0s6CiswOiBbRl0gdGVzdE5v
ZGVSZW1vdmVkRGlyZWN0CisxOiBbUF0gR2xvYmFsIENvZGUKKy0tIFJ1bm5pbmcgdGVzdCB0ZWFy
ZG93bi4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTUJyZWFrcG9pbnQuTm9kZVJlbW92ZWQu
RGlyZWN0LkJyZWFrcG9pbnREaXNhYmxlZAorQWRkaW5nICJub2RlLXJlbW92ZWQ6MSxIVE1MLDEs
Qk9EWSwxLERJViwwLERJViIgRE9NIEJyZWFrcG9pbnQuLi4KK0Rpc2FibGluZyBicmVha3BvaW50
Li4uCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UgZm9y
IGRpc2FibGVkIGJyZWFrcG9pbnQuCistLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCisKKy0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBET01CcmVha3BvaW50Lk5vZGVSZW1vdmVkLkRpcmVjdC5EZWJ1Z2dl
ckRpc2FibGVkCitBZGRpbmcgIm5vZGUtcmVtb3ZlZDoxLEhUTUwsMSxCT0RZLDEsRElWLDAsRElW
IiBET00gQnJlYWtwb2ludC4uLgorRGlzYWJsaW5nIGFsbCBicmVha3BvaW50cy4uLgorVHJpZ2dl
cmluZyBicmVha3BvaW50Li4uCitFbmFibGluZyBhbGwgYnJlYWtwb2ludHMuLi4KK1BBU1M6IFNo
b3VsZCBub3QgcGF1c2Ugd2hlbiBhbGwgYnJlYWtwb2ludHMgZGlzYWJsZWQuCistLSBSdW5uaW5n
IHRlc3QgdGVhcmRvd24uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01CcmVha3BvaW50Lk5v
ZGVSZW1vdmVkLkRpcmVjdC5SZW1vdmVCcmVha3BvaW50CitBZGRpbmcgIm5vZGUtcmVtb3ZlZDox
LEhUTUwsMSxCT0RZLDEsRElWLDAsRElWIiBET00gQnJlYWtwb2ludC4uLgorUmVtb3ZpbmcgYnJl
YWtwb2ludC4uLgorVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBh
dXNlIGZvciByZW1vdmVkIGJyZWFrcG9pbnQuCistLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCisK
Ky0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01CcmVha3BvaW50Lk5vZGVSZW1vdmVkLkRpcmVjdC5P
cHRpb25zLkNvbmRpdGlvbgorQWRkaW5nICJub2RlLXJlbW92ZWQ6MSxIVE1MLDEsQk9EWSwxLERJ
ViwwLERJViIgRE9NIEJyZWFrcG9pbnQuLi4KKworU2V0dGluZyBjb25kaXRpb24gdG8gJ2ZhbHNl
Jy4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2Uu
CisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKwor
U2V0dGluZyBjb25kaXRpb24gdG8gJ3RydWUnLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4u
LgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6
IFNob3VsZCBwYXVzZS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTUJyZWFrcG9pbnQuTm9k
ZVJlbW92ZWQuRGlyZWN0Lk9wdGlvbnMuQWN0aW9uLkxvZworQWRkaW5nICJub2RlLXJlbW92ZWQ6
MSxIVE1MLDEsQk9EWSwxLERJViwwLERJViIgRE9NIEJyZWFrcG9pbnQuLi4KKworQWRkaW5nIGxv
ZyBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhl
Y3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBs
b2cgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4
ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcg
bG9nIGFjdGlvbi4uLgorRW5hYmxpbmcgYXV0by1jb250aW51ZS4uLgorCitUcmlnZ2VyaW5nIGJy
ZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFT
UzogU2hvdWxkIG5vdCBwYXVzZS4KKworRWRpdGluZyBsb2cgYWN0aW9uLi4uCisKK1RyaWdnZXJp
bmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24u
CitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NQnJl
YWtwb2ludC5Ob2RlUmVtb3ZlZC5EaXJlY3QuT3B0aW9ucy5BY3Rpb25zLkV2YWx1YXRlCitBZGRp
bmcgIm5vZGUtcmVtb3ZlZDoxLEhUTUwsMSxCT0RZLDEsRElWLDAsRElWIiBET00gQnJlYWtwb2lu
dC4uLgorCitBZGRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2lu
dC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91
bGQgcGF1c2UuCisKK0VkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJl
YWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNT
OiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCitFbmFibGluZyBh
dXRvLWNvbnRpbnVlLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxk
IGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitF
ZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BB
U1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBw
YXVzZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9k
b20tYnJlYWtwb2ludC1ub2RlLXJlbW92ZWQtZGlyZWN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZG9tLWRlYnVnZ2VyL2RvbS1icmVha3BvaW50LW5vZGUtcmVtb3ZlZC1kaXJlY3QuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjI3MGE1N2U4ZjE5ZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZG9t
LWJyZWFrcG9pbnQtbm9kZS1yZW1vdmVkLWRpcmVjdC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8
IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90
ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9kZWJ1Z2dlci9yZXNvdXJjZXMvYnJlYWtwb2ludC1vcHRpb25zLXV0aWxp
dGllcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZGVidWdnZXIvcmVzb3VyY2VzL2xv
Zy1hY3RpdmUtc3RhY2stdHJhY2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9kb20tYnJlYWtwb2ludC11dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0
aW9uIHRlc3ROb2RlUmVtb3ZlZERpcmVjdCgpIHsKKyAgICBsZXQgbm9kZSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJub2RlLXJlbW92ZWQtZGlyZWN0LXRlc3QiKTsKKyAgICBsZXQgcGFyZW50
ID0gbm9kZS5wYXJlbnROb2RlOworICAgIG5vZGUucmVtb3ZlKCk7CisgICAgcGFyZW50LmFwcGVu
ZENoaWxkKG5vZGUpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBJ
bnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIkRPTUJyZWFrcG9pbnQuTm9kZVJlbW92ZWQi
KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogYERPTUJyZWFrcG9p
bnQuTm9kZVJlbW92ZWQuRGlyZWN0LkJyZWFrcG9pbnRFbmFibGVkYCwKKyAgICAgICAgZGVzY3Jp
cHRpb246ICJDaGVjayB0aGF0IGRlYnVnZ2VyIHBhdXNlcyBmb3IgYnJlYWtwb2ludCB0eXBlLiIs
CisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgbm9kZSA9IGF3YWl0IElu
c3BlY3RvclRlc3QuRE9NQnJlYWtwb2ludC5hd2FpdFF1ZXJ5U2VsZWN0b3IoIiNub2RlLXJlbW92
ZWQtZGlyZWN0LXRlc3QiKTsKKworICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBhd2FpdCBJ
bnNwZWN0b3JUZXN0LkRPTUJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludChub2RlLCBXSS5ET01C
cmVha3BvaW50LlR5cGUuTm9kZVJlbW92ZWQpOworCisgICAgICAgICAgICBsZXQgcGF1c2VkID0g
ZmFsc2U7CisgICAgICAgICAgICBsZXQgcGF1c2VkTGlzdGVuZXIgPSBXSS5kZWJ1Z2dlck1hbmFn
ZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCAoZXZl
bnQpID0+IHsKKyAgICAgICAgICAgICAgICBwYXVzZWQgPSB0cnVlOworCisgICAgICAgICAgICAg
ICAgbGV0IHRhcmdldERhdGEgPSBXSS5kZWJ1Z2dlck1hbmFnZXIuZGF0YUZvclRhcmdldChXSS5k
ZWJ1Z2dlck1hbmFnZXIuYWN0aXZlQ2FsbEZyYW1lLnRhcmdldCk7CisgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5sb2coIlBBVVNFRDoiKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdEVxdWFsKHRhcmdldERhdGEucGF1c2VSZWFzb24sIFdJLkRlYnVnZ2VyTWFuYWdl
ci5QYXVzZVJlYXNvbi5ET00sICJQYXVzZSByZWFzb24gc2hvdWxkIGJlIERPTS4iKTsKKworICAg
ICAgICAgICAgICAgIGxldCBwYXVzZURhdGEgPSB0YXJnZXREYXRhLnBhdXNlRGF0YTsKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHBhdXNlRGF0YS50eXBlLCBicmVh
a3BvaW50LnR5cGUsIGBQYXVzZSB0eXBlIHNob3VsZCBiZSAnJHticmVha3BvaW50LnR5cGV9Jy5g
KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHBhdXNlRGF0YS5u
b2RlSWQsIGJyZWFrcG9pbnQuZG9tTm9kZS5pZCwgIlBhdXNlIG5vZGVJZCBzaG91bGQgYmUgZXhw
ZWN0ZWQgdmFsdWUuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoISgi
dGFyZ2V0Tm9kZUlkIiBpbiBwYXVzZURhdGEpLCAiU2hvdWxkIG5vdCBoYXZlICd0YXJnZXROb2Rl
SWQnLiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KCEoImluc2VydGlv
biIgaW4gcGF1c2VEYXRhKSwgIlNob3VsZCBub3QgaGF2ZSAnaW5zZXJ0aW9uJy4iKTsKKworICAg
ICAgICAgICAgICAgIGxvZ0FjdGl2ZVN0YWNrVHJhY2UoKTsKKyAgICAgICAgICAgICAgICBXSS5k
ZWJ1Z2dlck1hbmFnZXIucmVzdW1lKCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAg
YXdhaXQgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgdGVzdE5vZGVSZW1vdmVkRGlyZWN0
KClgKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQocGF1c2VkLCAiU2hvdWxk
IHBhdXNlLiIpOworICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlz
dGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgcGF1c2VkTGlzdGVuZXIpOwor
ICAgICAgICB9LAorICAgICAgICB0ZWFyZG93bjogSW5zcGVjdG9yVGVzdC5ET01CcmVha3BvaW50
LnRlYXJkb3duLAorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBu
YW1lOiBgRE9NQnJlYWtwb2ludC5Ob2RlUmVtb3ZlZC5EaXJlY3QuQnJlYWtwb2ludERpc2FibGVk
YCwKKyAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IGRlYnVnZ2VyIGRvZXMgbm90IHBh
dXNlIGZvciBkaXNhYmxlZCBicmVha3BvaW50LiIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7Cisg
ICAgICAgICAgICBsZXQgcGF1c2VkID0gZmFsc2U7CisgICAgICAgICAgICBsZXQgcGF1c2VkTGlz
dGVuZXIgPSBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1h
bmFnZXIuRXZlbnQuUGF1c2VkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBwYXVzZWQg
PSB0cnVlOworCisgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgpOwor
ICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGxldCBub2RlID0gYXdhaXQgSW5zcGVjdG9y
VGVzdC5ET01CcmVha3BvaW50LmF3YWl0UXVlcnlTZWxlY3RvcigiI25vZGUtcmVtb3ZlZC1kaXJl
Y3QtdGVzdCIpOworCisgICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IGF3YWl0IEluc3BlY3Rv
clRlc3QuRE9NQnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KG5vZGUsIFdJLkRPTUJyZWFrcG9p
bnQuVHlwZS5Ob2RlUmVtb3ZlZCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJE
aXNhYmxpbmcgYnJlYWtwb2ludC4uLiIpOworICAgICAgICAgICAgYnJlYWtwb2ludC5kaXNhYmxl
ZCA9IHRydWU7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJUcmlnZ2VyaW5nIGJy
ZWFrcG9pbnQuLi4iKTsKKyAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QuZXZhbHVhdGVJ
blBhZ2UoYHRlc3ROb2RlUmVtb3ZlZERpcmVjdCgpYCk7CisKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXhwZWN0RmFsc2UocGF1c2VkLCAiU2hvdWxkIG5vdCBwYXVzZSBmb3IgZGlzYWJsZWQg
YnJlYWtwb2ludC4iKTsKKyAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVu
dExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIHBhdXNlZExpc3RlbmVy
KTsKKyAgICAgICAgfSwKKyAgICAgICAgdGVhcmRvd246IEluc3BlY3RvclRlc3QuRE9NQnJlYWtw
b2ludC50ZWFyZG93biwKKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAg
ICAgbmFtZTogYERPTUJyZWFrcG9pbnQuTm9kZVJlbW92ZWQuRGlyZWN0LkRlYnVnZ2VyRGlzYWJs
ZWRgLAorICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgZGVidWdnZXIgZG9lcyBub3Qg
cGF1c2Ugd2hlbiB0aGUgZGVidWdnZXIgaXMgZGlzYWJsZWQuIiwKKyAgICAgICAgYXN5bmMgdGVz
dCgpIHsKKyAgICAgICAgICAgIGxldCBwYXVzZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIGxldCBw
YXVzZWRMaXN0ZW5lciA9IFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRl
YnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIChldmVudCkgPT4geworICAgICAgICAgICAgICAg
IHBhdXNlZCA9IHRydWU7CisKKyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVz
dW1lKCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgbGV0IG5vZGUgPSBhd2FpdCBJ
bnNwZWN0b3JUZXN0LkRPTUJyZWFrcG9pbnQuYXdhaXRRdWVyeVNlbGVjdG9yKCIjbm9kZS1yZW1v
dmVkLWRpcmVjdC10ZXN0Iik7CisKKyAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QuRE9N
QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KG5vZGUsIFdJLkRPTUJyZWFrcG9pbnQuVHlwZS5O
b2RlUmVtb3ZlZCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJEaXNhYmxpbmcg
YWxsIGJyZWFrcG9pbnRzLi4uIik7CisgICAgICAgICAgICBhd2FpdCBEZWJ1Z2dlckFnZW50LnNl
dEJyZWFrcG9pbnRzQWN0aXZlKGZhbHNlKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5s
b2coIlRyaWdnZXJpbmcgYnJlYWtwb2ludC4uLiIpOworICAgICAgICAgICAgYXdhaXQgSW5zcGVj
dG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgdGVzdE5vZGVSZW1vdmVkRGlyZWN0KClgKTsKKworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkVuYWJsaW5nIGFsbCBicmVha3BvaW50cy4uLiIp
OworICAgICAgICAgICAgYXdhaXQgRGVidWdnZXJBZ2VudC5zZXRCcmVha3BvaW50c0FjdGl2ZSh0
cnVlKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZShwYXVzZWQsICJT
aG91bGQgbm90IHBhdXNlIHdoZW4gYWxsIGJyZWFrcG9pbnRzIGRpc2FibGVkLiIpOworICAgICAg
ICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJN
YW5hZ2VyLkV2ZW50LlBhdXNlZCwgcGF1c2VkTGlzdGVuZXIpOworICAgICAgICB9LAorICAgICAg
ICB0ZWFyZG93bjogSW5zcGVjdG9yVGVzdC5ET01CcmVha3BvaW50LnRlYXJkb3duLAorICAgIH0p
OworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiBgRE9NQnJlYWtwb2lu
dC5Ob2RlUmVtb3ZlZC5EaXJlY3QuUmVtb3ZlQnJlYWtwb2ludGAsCisgICAgICAgIGRlc2NyaXB0
aW9uOiAiQ2hlY2sgdGhhdCBkZWJ1Z2dlciBkb2VzIG5vdCBwYXVzZSBmb3IgcmVtb3ZlZCBicmVh
a3BvaW50LiIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgcGF1c2Vk
ID0gZmFsc2U7CisgICAgICAgICAgICBsZXQgcGF1c2VkTGlzdGVuZXIgPSBXSS5kZWJ1Z2dlck1h
bmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCAo
ZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBwYXVzZWQgPSB0cnVlOworCisgICAgICAgICAg
ICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgpOworICAgICAgICAgICAgfSk7CisKKyAg
ICAgICAgICAgIGxldCBub2RlID0gYXdhaXQgSW5zcGVjdG9yVGVzdC5ET01CcmVha3BvaW50LmF3
YWl0UXVlcnlTZWxlY3RvcigiI25vZGUtcmVtb3ZlZC1kaXJlY3QtdGVzdCIpOworCisgICAgICAg
ICAgICBsZXQgYnJlYWtwb2ludCA9IGF3YWl0IEluc3BlY3RvclRlc3QuRE9NQnJlYWtwb2ludC5j
cmVhdGVCcmVha3BvaW50KG5vZGUsIFdJLkRPTUJyZWFrcG9pbnQuVHlwZS5Ob2RlUmVtb3ZlZCk7
CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJSZW1vdmluZyBicmVha3BvaW50Li4u
Iik7CisgICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRE9NQnJlYWtwb2lu
dChicmVha3BvaW50KTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlRyaWdnZXJp
bmcgYnJlYWtwb2ludC4uLiIpOworICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVzdC5ldmFs
dWF0ZUluUGFnZShgdGVzdE5vZGVSZW1vdmVkRGlyZWN0KClgKTsKKworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RGYWxzZShwYXVzZWQsICJTaG91bGQgbm90IHBhdXNlIGZvciByZW1v
dmVkIGJyZWFrcG9pbnQuIik7CisgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVtb3Zl
RXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCBwYXVzZWRMaXN0
ZW5lcik7CisgICAgICAgIH0sCisgICAgICAgIHRlYXJkb3duOiBJbnNwZWN0b3JUZXN0LkRPTUJy
ZWFrcG9pbnQudGVhcmRvd24sCisgICAgfSk7CisKKyAgICBJbnNwZWN0b3JUZXN0LkJyZWFrcG9p
bnRPcHRpb25zLmFkZFRlc3RDYXNlcyhzdWl0ZSwgeworICAgICAgICB0ZXN0Q2FzZU5hbWVQcmVm
aXg6ICJEaXJlY3QuIiwKKyAgICAgICAgYXN5bmMgY3JlYXRlQnJlYWtwb2ludCgpIHsKKyAgICAg
ICAgICAgIGxldCBub2RlID0gYXdhaXQgSW5zcGVjdG9yVGVzdC5ET01CcmVha3BvaW50LmF3YWl0
UXVlcnlTZWxlY3RvcigiI25vZGUtcmVtb3ZlZC1kaXJlY3QtdGVzdCIpOworICAgICAgICAgICAg
cmV0dXJuIEluc3BlY3RvclRlc3QuRE9NQnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KG5vZGUs
IFdJLkRPTUJyZWFrcG9pbnQuVHlwZS5Ob2RlUmVtb3ZlZCk7CisgICAgICAgIH0sCisgICAgICAg
IGFzeW5jIHRyaWdnZXJCcmVha3BvaW50KGJyZWFrcG9pbnQpIHsKKyAgICAgICAgICAgIHJldHVy
biBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGB0ZXN0Tm9kZVJlbW92ZWREaXJlY3QoKWAp
OworICAgICAgICB9LAorICAgICAgICBza2lwOiB7CisgICAgICAgICAgICBpZ25vcmVDb3VudDog
dHJ1ZSwKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZp
bmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+
Cis8cD5UZXN0cyBmb3IgRE9NIGJyZWFrcG9pbnRzLjwvcD4KKzxkaXYgaWQ9InRlc3QtY29udGFp
bmVyIiBzdHlsZT0iZGlzcGxheTogbm9uZSI+CisgICAgPGRpdiBpZD0ibm9kZS1yZW1vdmVkLWRp
cmVjdC10ZXN0Ij48L2Rpdj4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgorICAgIApcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
b20tZGVidWdnZXIvZG9tLWJyZWFrcG9pbnQtc3VidHJlZS1tb2RpZmllZC1hZGQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9kb20tYnJlYWtwb2ludC1z
dWJ0cmVlLW1vZGlmaWVkLWFkZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi4yM2VhMjExYzdjMmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2RvbS1icmVha3BvaW50LXN1YnRyZWUtbW9kaWZp
ZWQtYWRkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzNCBAQAorQ09OU09MRSBNRVNTQUdFOiBC
UkVBS1BPSU5UIEFDVElPTiBMT0cgMQorQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElP
TiBMT0cgMgorQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgMworQ09OU09M
RSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgNAorVGVzdHMgZm9yIERPTSBicmVha3Bv
aW50cy4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IERPTUJyZWFrcG9pbnQuU3VidHJlZU1v
ZGlmaWVkCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NQnJlYWtwb2ludC5TdWJ0cmVlTW9kaWZp
ZWQuQWRkLkJyZWFrcG9pbnRFbmFibGVkCitBZGRpbmcgInN1YnRyZWUtbW9kaWZpZWQ6MSxIVE1M
LDEsQk9EWSwxLERJViwwLERJViIgRE9NIEJyZWFrcG9pbnQuLi4KK1BBVVNFRDoKK1BBU1M6IFBh
dXNlIHJlYXNvbiBzaG91bGQgYmUgRE9NLgorUEFTUzogUGF1c2UgdHlwZSBzaG91bGQgYmUgJ3N1
YnRyZWUtbW9kaWZpZWQnLgorUEFTUzogUGF1c2Ugbm9kZUlkIHNob3VsZCBiZSBleHBlY3RlZCB2
YWx1ZS4KK1BBU1M6IFNob3VsZCBoYXZlICdpbnNlcnRpb24nLgorQ0FMTCBTVEFDSzoKKzA6IFtG
XSB0ZXN0U3VidHJlZU1vZGlmaWVkCisxOiBbUF0gR2xvYmFsIENvZGUKKy0tIFJ1bm5pbmcgdGVz
dCB0ZWFyZG93bi4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTUJyZWFrcG9pbnQuU3VidHJl
ZU1vZGlmaWVkLkFkZC5CcmVha3BvaW50RGlzYWJsZWQKK0FkZGluZyAic3VidHJlZS1tb2RpZmll
ZDoxLEhUTUwsMSxCT0RZLDEsRElWLDAsRElWIiBET00gQnJlYWtwb2ludC4uLgorRGlzYWJsaW5n
IGJyZWFrcG9pbnQuLi4KK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5v
dCBwYXVzZSBmb3IgZGlzYWJsZWQgYnJlYWtwb2ludC4KKy0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93
bi4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTUJyZWFrcG9pbnQuU3VidHJlZU1vZGlmaWVk
LkFkZC5EZWJ1Z2dlckRpc2FibGVkCitBZGRpbmcgInN1YnRyZWUtbW9kaWZpZWQ6MSxIVE1MLDEs
Qk9EWSwxLERJViwwLERJViIgRE9NIEJyZWFrcG9pbnQuLi4KK0Rpc2FibGluZyBhbGwgYnJlYWtw
b2ludHMuLi4KK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorRW5hYmxpbmcgYWxsIGJyZWFrcG9p
bnRzLi4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlIHdoZW4gYWxsIGJyZWFrcG9pbnRzIGRpc2Fi
bGVkLgorLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTog
RE9NQnJlYWtwb2ludC5TdWJ0cmVlTW9kaWZpZWQuQWRkLlJlbW92ZUJyZWFrcG9pbnQKK0FkZGlu
ZyAic3VidHJlZS1tb2RpZmllZDoxLEhUTUwsMSxCT0RZLDEsRElWLDAsRElWIiBET00gQnJlYWtw
b2ludC4uLgorUmVtb3ZpbmcgYnJlYWtwb2ludC4uLgorVHJpZ2dlcmluZyBicmVha3BvaW50Li4u
CitQQVNTOiBTaG91bGQgbm90IHBhdXNlIGZvciByZW1vdmVkIGJyZWFrcG9pbnQuCistLSBSdW5u
aW5nIHRlc3QgdGVhcmRvd24uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01CcmVha3BvaW50
LlN1YnRyZWVNb2RpZmllZC5BZGQuT3B0aW9ucy5Db25kaXRpb24KK0FkZGluZyAic3VidHJlZS1t
b2RpZmllZDoxLEhUTUwsMSxCT0RZLDEsRElWLDAsRElWIiBET00gQnJlYWtwb2ludC4uLgorCitT
ZXR0aW5nIGNvbmRpdGlvbiB0byAnZmFsc2UnLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4u
LgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQ
QVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitTZXR0aW5nIGNvbmRpdGlvbiB0byAndHJ1ZScuLi4K
KworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK1RyaWdn
ZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCistLSBSdW5uaW5nIHRl
c3QgY2FzZTogRE9NQnJlYWtwb2ludC5TdWJ0cmVlTW9kaWZpZWQuQWRkLk9wdGlvbnMuSWdub3Jl
Q291bnQKK0FkZGluZyAic3VidHJlZS1tb2RpZmllZDoxLEhUTUwsMSxCT0RZLDEsRElWLDAsRElW
IiBET00gQnJlYWtwb2ludC4uLgorCitTZXR0aW5nIGlnbm9yZUNvdW50IHRvICcyJy4uLgorCitU
cmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1RyaWdn
ZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworVHJpZ2dlcmlu
ZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtw
b2ludC4uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9N
QnJlYWtwb2ludC5TdWJ0cmVlTW9kaWZpZWQuQWRkLk9wdGlvbnMuQWN0aW9uLkxvZworQWRkaW5n
ICJzdWJ0cmVlLW1vZGlmaWVkOjEsSFRNTCwxLEJPRFksMSxESVYsMCxESVYiIERPTSBCcmVha3Bv
aW50Li4uCisKK0FkZGluZyBsb2cgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4u
LgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQg
cGF1c2UuCisKK0VkaXRpbmcgbG9nIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQu
Li4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxk
IHBhdXNlLgorCitFZGl0aW5nIGxvZyBhY3Rpb24uLi4KK0VuYWJsaW5nIGF1dG8tY29udGludWUu
Li4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVh
a3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK0VkaXRpbmcgbG9nIGFj
dGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRl
IGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworLS0gUnVubmlu
ZyB0ZXN0IGNhc2U6IERPTUJyZWFrcG9pbnQuU3VidHJlZU1vZGlmaWVkLkFkZC5PcHRpb25zLkFj
dGlvbnMuRXZhbHVhdGUKK0FkZGluZyAic3VidHJlZS1tb2RpZmllZDoxLEhUTUwsMSxCT0RZLDEs
RElWLDAsRElWIiBET00gQnJlYWtwb2ludC4uLgorCitBZGRpbmcgZXZhbHVhdGUgYWN0aW9uLi4u
CisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtw
b2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcgZXZhbHVhdGUgYWN0
aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUg
YnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcgZXZhbHVh
dGUgYWN0aW9uLi4uCitFbmFibGluZyBhdXRvLWNvbnRpbnVlLi4uCisKK1RyaWdnZXJpbmcgYnJl
YWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNT
OiBTaG91bGQgbm90IHBhdXNlLgorCitFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorCitUcmln
Z2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0
aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9kb20tYnJlYWtwb2ludC1zdWJ0cmVlLW1vZGlmaWVkLWFk
ZC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9kb20tYnJlYWtwb2lu
dC1zdWJ0cmVlLW1vZGlmaWVkLWFkZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uOWRkZTU1NTZlM2M5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9kb20tYnJlYWtwb2ludC1zdWJ0cmVlLW1vZGlmaWVkLWFk
ZC5odG1sCkBAIC0wLDAgKzEsMTU2IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3Bl
Y3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9kZWJ1Z2dlci9yZXNvdXJj
ZXMvYnJlYWtwb2ludC1vcHRpb25zLXV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vZGVidWdnZXIvcmVzb3VyY2VzL2xvZy1hY3RpdmUtc3RhY2stdHJhY2UuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9kb20tYnJlYWtwb2ludC11dGlsaXRpZXMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3RTdWJ0cmVlTW9kaWZpZWQoKSB7Cisg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN1YnRyZWUtbW9kaWZpZWQtdGVzdCIpLmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsKK30KKworZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJE
T01CcmVha3BvaW50LlN1YnRyZWVNb2RpZmllZCIpOworCisgICAgc3VpdGUuYWRkVGVzdENhc2Uo
eworICAgICAgICBuYW1lOiBgRE9NQnJlYWtwb2ludC5TdWJ0cmVlTW9kaWZpZWQuQWRkLkJyZWFr
cG9pbnRFbmFibGVkYCwKKyAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IGRlYnVnZ2Vy
IHBhdXNlcyBmb3IgYnJlYWtwb2ludCB0eXBlLiIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7Cisg
ICAgICAgICAgICBsZXQgbm9kZSA9IGF3YWl0IEluc3BlY3RvclRlc3QuRE9NQnJlYWtwb2ludC5h
d2FpdFF1ZXJ5U2VsZWN0b3IoIiNzdWJ0cmVlLW1vZGlmaWVkLXRlc3QiKTsKKworICAgICAgICAg
ICAgbGV0IGJyZWFrcG9pbnQgPSBhd2FpdCBJbnNwZWN0b3JUZXN0LkRPTUJyZWFrcG9pbnQuY3Jl
YXRlQnJlYWtwb2ludChub2RlLCBXSS5ET01CcmVha3BvaW50LlR5cGUuU3VidHJlZU1vZGlmaWVk
KTsKKworICAgICAgICAgICAgbGV0IHBhdXNlZCA9IGZhbHNlOworICAgICAgICAgICAgbGV0IHBh
dXNlZExpc3RlbmVyID0gV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVi
dWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAg
cGF1c2VkID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIGxldCB0YXJnZXREYXRhID0gV0kuZGVi
dWdnZXJNYW5hZ2VyLmRhdGFGb3JUYXJnZXQoV0kuZGVidWdnZXJNYW5hZ2VyLmFjdGl2ZUNhbGxG
cmFtZS50YXJnZXQpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJQQVVTRUQ6
Iik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbCh0YXJnZXREYXRh
LnBhdXNlUmVhc29uLCBXSS5EZWJ1Z2dlck1hbmFnZXIuUGF1c2VSZWFzb24uRE9NLCAiUGF1c2Ug
cmVhc29uIHNob3VsZCBiZSBET00uIik7CisKKyAgICAgICAgICAgICAgICBsZXQgcGF1c2VEYXRh
ID0gdGFyZ2V0RGF0YS5wYXVzZURhdGE7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RFcXVhbChwYXVzZURhdGEudHlwZSwgYnJlYWtwb2ludC50eXBlLCBgUGF1c2UgdHlwZSBz
aG91bGQgYmUgJyR7YnJlYWtwb2ludC50eXBlfScuYCk7CisgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3RFcXVhbChwYXVzZURhdGEubm9kZUlkLCBicmVha3BvaW50LmRvbU5vZGUu
aWQsICJQYXVzZSBub2RlSWQgc2hvdWxkIGJlIGV4cGVjdGVkIHZhbHVlLiIpOworICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VHJ1ZShwYXVzZURhdGEuaW5zZXJ0aW9uLCAiU2hv
dWxkIGhhdmUgJ2luc2VydGlvbicuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnQoISgidGFyZ2V0Tm9kZUlkIiBpbiBwYXVzZURhdGEpLCAiU2hvdWxkIG5vdCBoYXZlICd0
YXJnZXROb2RlSWQnLiIpOworCisgICAgICAgICAgICAgICAgbG9nQWN0aXZlU3RhY2tUcmFjZSgp
OworICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKTsKKyAgICAgICAg
ICAgIH0pOworCisgICAgICAgICAgICBhd2FpdCBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdl
KGB0ZXN0U3VidHJlZU1vZGlmaWVkKClgKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnQocGF1c2VkLCAiU2hvdWxkIHBhdXNlLiIpOworICAgICAgICAgICAgV0kuZGVidWdnZXJN
YW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNl
ZCwgcGF1c2VkTGlzdGVuZXIpOworICAgICAgICB9LAorICAgICAgICB0ZWFyZG93bjogSW5zcGVj
dG9yVGVzdC5ET01CcmVha3BvaW50LnRlYXJkb3duLAorICAgIH0pOworCisgICAgc3VpdGUuYWRk
VGVzdENhc2UoeworICAgICAgICBuYW1lOiBgRE9NQnJlYWtwb2ludC5TdWJ0cmVlTW9kaWZpZWQu
QWRkLkJyZWFrcG9pbnREaXNhYmxlZGAsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhh
dCBkZWJ1Z2dlciBkb2VzIG5vdCBwYXVzZSBmb3IgZGlzYWJsZWQgYnJlYWtwb2ludC4iLAorICAg
ICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IHBhdXNlZCA9IGZhbHNlOworICAg
ICAgICAgICAgbGV0IHBhdXNlZExpc3RlbmVyID0gV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50
TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7Cisg
ICAgICAgICAgICAgICAgcGF1c2VkID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIFdJLmRlYnVn
Z2VyTWFuYWdlci5yZXN1bWUoKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBsZXQg
bm9kZSA9IGF3YWl0IEluc3BlY3RvclRlc3QuRE9NQnJlYWtwb2ludC5hd2FpdFF1ZXJ5U2VsZWN0
b3IoIiNzdWJ0cmVlLW1vZGlmaWVkLXRlc3QiKTsKKworICAgICAgICAgICAgbGV0IGJyZWFrcG9p
bnQgPSBhd2FpdCBJbnNwZWN0b3JUZXN0LkRPTUJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludChu
b2RlLCBXSS5ET01CcmVha3BvaW50LlR5cGUuU3VidHJlZU1vZGlmaWVkKTsKKworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5sb2coIkRpc2FibGluZyBicmVha3BvaW50Li4uIik7CisgICAgICAg
ICAgICBicmVha3BvaW50LmRpc2FibGVkID0gdHJ1ZTsKKworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5sb2coIlRyaWdnZXJpbmcgYnJlYWtwb2ludC4uLiIpOworICAgICAgICAgICAgYXdhaXQg
SW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgdGVzdFN1YnRyZWVNb2RpZmllZCgpYCk7CisK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RmFsc2UocGF1c2VkLCAiU2hvdWxkIG5v
dCBwYXVzZSBmb3IgZGlzYWJsZWQgYnJlYWtwb2ludC4iKTsKKyAgICAgICAgICAgIFdJLmRlYnVn
Z2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5Q
YXVzZWQsIHBhdXNlZExpc3RlbmVyKTsKKyAgICAgICAgfSwKKyAgICAgICAgdGVhcmRvd246IElu
c3BlY3RvclRlc3QuRE9NQnJlYWtwb2ludC50ZWFyZG93biwKKyAgICB9KTsKKworICAgIHN1aXRl
LmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogYERPTUJyZWFrcG9pbnQuU3VidHJlZU1vZGlm
aWVkLkFkZC5EZWJ1Z2dlckRpc2FibGVkYCwKKyAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0
aGF0IGRlYnVnZ2VyIGRvZXMgbm90IHBhdXNlIHdoZW4gdGhlIGRlYnVnZ2VyIGlzIGRpc2FibGVk
LiIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgcGF1c2VkID0gZmFs
c2U7CisgICAgICAgICAgICBsZXQgcGF1c2VkTGlzdGVuZXIgPSBXSS5kZWJ1Z2dlck1hbmFnZXIu
YWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCAoZXZlbnQp
ID0+IHsKKyAgICAgICAgICAgICAgICBwYXVzZWQgPSB0cnVlOworCisgICAgICAgICAgICAgICAg
V0kuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAg
ICAgIGxldCBub2RlID0gYXdhaXQgSW5zcGVjdG9yVGVzdC5ET01CcmVha3BvaW50LmF3YWl0UXVl
cnlTZWxlY3RvcigiI3N1YnRyZWUtbW9kaWZpZWQtdGVzdCIpOworCisgICAgICAgICAgICBhd2Fp
dCBJbnNwZWN0b3JUZXN0LkRPTUJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludChub2RlLCBXSS5E
T01CcmVha3BvaW50LlR5cGUuU3VidHJlZU1vZGlmaWVkKTsKKworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5sb2coIkRpc2FibGluZyBhbGwgYnJlYWtwb2ludHMuLi4iKTsKKyAgICAgICAgICAg
IGF3YWl0IERlYnVnZ2VyQWdlbnQuc2V0QnJlYWtwb2ludHNBY3RpdmUoZmFsc2UpOworCisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBicmVha3BvaW50Li4uIik7Cisg
ICAgICAgICAgICBhd2FpdCBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGB0ZXN0U3VidHJl
ZU1vZGlmaWVkKClgKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkVuYWJsaW5n
IGFsbCBicmVha3BvaW50cy4uLiIpOworICAgICAgICAgICAgYXdhaXQgRGVidWdnZXJBZ2VudC5z
ZXRCcmVha3BvaW50c0FjdGl2ZSh0cnVlKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RGYWxzZShwYXVzZWQsICJTaG91bGQgbm90IHBhdXNlIHdoZW4gYWxsIGJyZWFrcG9pbnRz
IGRpc2FibGVkLiIpOworICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50
TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgcGF1c2VkTGlzdGVuZXIp
OworICAgICAgICB9LAorICAgICAgICB0ZWFyZG93bjogSW5zcGVjdG9yVGVzdC5ET01CcmVha3Bv
aW50LnRlYXJkb3duLAorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAg
ICBuYW1lOiBgRE9NQnJlYWtwb2ludC5TdWJ0cmVlTW9kaWZpZWQuQWRkLlJlbW92ZUJyZWFrcG9p
bnRgLAorICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgZGVidWdnZXIgZG9lcyBub3Qg
cGF1c2UgZm9yIHJlbW92ZWQgYnJlYWtwb2ludC4iLAorICAgICAgICBhc3luYyB0ZXN0KCkgewor
ICAgICAgICAgICAgbGV0IHBhdXNlZCA9IGZhbHNlOworICAgICAgICAgICAgbGV0IHBhdXNlZExp
c3RlbmVyID0gV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJN
YW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgcGF1c2Vk
ID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKTsK
KyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBsZXQgbm9kZSA9IGF3YWl0IEluc3BlY3Rv
clRlc3QuRE9NQnJlYWtwb2ludC5hd2FpdFF1ZXJ5U2VsZWN0b3IoIiNzdWJ0cmVlLW1vZGlmaWVk
LXRlc3QiKTsKKworICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBhd2FpdCBJbnNwZWN0b3JU
ZXN0LkRPTUJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludChub2RlLCBXSS5ET01CcmVha3BvaW50
LlR5cGUuU3VidHJlZU1vZGlmaWVkKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2co
IlJlbW92aW5nIGJyZWFrcG9pbnQuLi4iKTsKKyAgICAgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFu
YWdlci5yZW1vdmVET01CcmVha3BvaW50KGJyZWFrcG9pbnQpOworCisgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBicmVha3BvaW50Li4uIik7CisgICAgICAgICAgICBh
d2FpdCBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGB0ZXN0U3VidHJlZU1vZGlmaWVkKClg
KTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZShwYXVzZWQsICJTaG91
bGQgbm90IHBhdXNlIGZvciByZW1vdmVkIGJyZWFrcG9pbnQuIik7CisgICAgICAgICAgICBXSS5k
ZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZl
bnQuUGF1c2VkLCBwYXVzZWRMaXN0ZW5lcik7CisgICAgICAgIH0sCisgICAgICAgIHRlYXJkb3du
OiBJbnNwZWN0b3JUZXN0LkRPTUJyZWFrcG9pbnQudGVhcmRvd24sCisgICAgfSk7CisKKyAgICBJ
bnNwZWN0b3JUZXN0LkJyZWFrcG9pbnRPcHRpb25zLmFkZFRlc3RDYXNlcyhzdWl0ZSwgeworICAg
ICAgICB0ZXN0Q2FzZU5hbWVQcmVmaXg6ICJBZGQuIiwKKyAgICAgICAgYXN5bmMgY3JlYXRlQnJl
YWtwb2ludCgpIHsKKyAgICAgICAgICAgIGxldCBub2RlID0gYXdhaXQgSW5zcGVjdG9yVGVzdC5E
T01CcmVha3BvaW50LmF3YWl0UXVlcnlTZWxlY3RvcigiI3N1YnRyZWUtbW9kaWZpZWQtdGVzdCIp
OworICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvclRlc3QuRE9NQnJlYWtwb2ludC5jcmVhdGVC
cmVha3BvaW50KG5vZGUsIFdJLkRPTUJyZWFrcG9pbnQuVHlwZS5TdWJ0cmVlTW9kaWZpZWQpOwor
ICAgICAgICB9LAorICAgICAgICBhc3luYyB0cmlnZ2VyQnJlYWtwb2ludChicmVha3BvaW50KSB7
CisgICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgdGVzdFN1
YnRyZWVNb2RpZmllZCgpYCk7CisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5U
ZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2Fk
PSJydW5UZXN0KCkiPgorPHA+VGVzdHMgZm9yIERPTSBicmVha3BvaW50cy48L3A+Cis8ZGl2IGlk
PSJ0ZXN0LWNvbnRhaW5lciIgc3R5bGU9ImRpc3BsYXk6IG5vbmUiPgorICAgIDxkaXYgaWQ9InN1
YnRyZWUtbW9kaWZpZWQtdGVzdCI+PC9kaXY+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZG9tLWJyZWFrcG9p
bnQtc3VidHJlZS1tb2RpZmllZC1yZW1vdmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RvbS1kZWJ1Z2dlci9kb20tYnJlYWtwb2ludC1zdWJ0cmVlLW1vZGlmaWVkLXJlbW92
ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5h
ODQ2ZTMwNDM5MzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9t
LWRlYnVnZ2VyL2RvbS1icmVha3BvaW50LXN1YnRyZWUtbW9kaWZpZWQtcmVtb3ZlLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDEzNCBAQAorQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElP
TiBMT0cgMQorQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgMgorQ09OU09M
RSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgMworQ09OU09MRSBNRVNTQUdFOiBCUkVB
S1BPSU5UIEFDVElPTiBMT0cgNAorVGVzdHMgZm9yIERPTSBicmVha3BvaW50cy4KKworCis9PSBS
dW5uaW5nIHRlc3Qgc3VpdGU6IERPTUJyZWFrcG9pbnQuU3VidHJlZU1vZGlmaWVkCistLSBSdW5u
aW5nIHRlc3QgY2FzZTogRE9NQnJlYWtwb2ludC5TdWJ0cmVlTW9kaWZpZWQuUmVtb3ZlLkJyZWFr
cG9pbnRFbmFibGVkCitBZGRpbmcgInN1YnRyZWUtbW9kaWZpZWQ6MSxIVE1MLDEsQk9EWSwxLERJ
ViwwLERJViIgRE9NIEJyZWFrcG9pbnQuLi4KK1BBVVNFRDoKK1BBU1M6IFBhdXNlIHJlYXNvbiBz
aG91bGQgYmUgRE9NLgorUEFTUzogUGF1c2UgdHlwZSBzaG91bGQgYmUgJ3N1YnRyZWUtbW9kaWZp
ZWQnLgorUEFTUzogUGF1c2Ugbm9kZUlkIHNob3VsZCBiZSBleHBlY3RlZCB2YWx1ZS4KK1BBU1M6
IFNob3VsZCBoYXZlICdpbnNlcnRpb24nLgorQ0FMTCBTVEFDSzoKKzA6IFtGXSB0ZXN0U3VidHJl
ZU1vZGlmaWVkCisxOiBbUF0gR2xvYmFsIENvZGUKKy0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4K
KworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTUJyZWFrcG9pbnQuU3VidHJlZU1vZGlmaWVkLlJl
bW92ZS5CcmVha3BvaW50RGlzYWJsZWQKK0FkZGluZyAic3VidHJlZS1tb2RpZmllZDoxLEhUTUws
MSxCT0RZLDEsRElWLDAsRElWIiBET00gQnJlYWtwb2ludC4uLgorRGlzYWJsaW5nIGJyZWFrcG9p
bnQuLi4KK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZSBm
b3IgZGlzYWJsZWQgYnJlYWtwb2ludC4KKy0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KKworLS0g
UnVubmluZyB0ZXN0IGNhc2U6IERPTUJyZWFrcG9pbnQuU3VidHJlZU1vZGlmaWVkLlJlbW92ZS5E
ZWJ1Z2dlckRpc2FibGVkCitBZGRpbmcgInN1YnRyZWUtbW9kaWZpZWQ6MSxIVE1MLDEsQk9EWSwx
LERJViwwLERJViIgRE9NIEJyZWFrcG9pbnQuLi4KK0Rpc2FibGluZyBhbGwgYnJlYWtwb2ludHMu
Li4KK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorRW5hYmxpbmcgYWxsIGJyZWFrcG9pbnRzLi4u
CitQQVNTOiBTaG91bGQgbm90IHBhdXNlIHdoZW4gYWxsIGJyZWFrcG9pbnRzIGRpc2FibGVkLgor
LS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NQnJl
YWtwb2ludC5TdWJ0cmVlTW9kaWZpZWQuUmVtb3ZlLlJlbW92ZUJyZWFrcG9pbnQKK0FkZGluZyAi
c3VidHJlZS1tb2RpZmllZDoxLEhUTUwsMSxCT0RZLDEsRElWLDAsRElWIiBET00gQnJlYWtwb2lu
dC4uLgorUmVtb3ZpbmcgYnJlYWtwb2ludC4uLgorVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQ
QVNTOiBTaG91bGQgbm90IHBhdXNlIGZvciByZW1vdmVkIGJyZWFrcG9pbnQuCistLSBSdW5uaW5n
IHRlc3QgdGVhcmRvd24uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01CcmVha3BvaW50LlN1
YnRyZWVNb2RpZmllZC5SZW1vdmUuT3B0aW9ucy5Db25kaXRpb24KK0FkZGluZyAic3VidHJlZS1t
b2RpZmllZDoxLEhUTUwsMSxCT0RZLDEsRElWLDAsRElWIiBET00gQnJlYWtwb2ludC4uLgorCitT
ZXR0aW5nIGNvbmRpdGlvbiB0byAnZmFsc2UnLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4u
LgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQ
QVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitTZXR0aW5nIGNvbmRpdGlvbiB0byAndHJ1ZScuLi4K
KworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK1RyaWdn
ZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCistLSBSdW5uaW5nIHRl
c3QgY2FzZTogRE9NQnJlYWtwb2ludC5TdWJ0cmVlTW9kaWZpZWQuUmVtb3ZlLk9wdGlvbnMuSWdu
b3JlQ291bnQKK0FkZGluZyAic3VidHJlZS1tb2RpZmllZDoxLEhUTUwsMSxCT0RZLDEsRElWLDAs
RElWIiBET00gQnJlYWtwb2ludC4uLgorCitTZXR0aW5nIGlnbm9yZUNvdW50IHRvICcyJy4uLgor
CitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1Ry
aWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworVHJpZ2dl
cmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJl
YWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTog
RE9NQnJlYWtwb2ludC5TdWJ0cmVlTW9kaWZpZWQuUmVtb3ZlLk9wdGlvbnMuQWN0aW9uLkxvZwor
QWRkaW5nICJzdWJ0cmVlLW1vZGlmaWVkOjEsSFRNTCwxLEJPRFksMSxESVYsMCxESVYiIERPTSBC
cmVha3BvaW50Li4uCisKK0FkZGluZyBsb2cgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtw
b2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBT
aG91bGQgcGF1c2UuCisKK0VkaXRpbmcgbG9nIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFr
cG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzog
U2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGxvZyBhY3Rpb24uLi4KK0VuYWJsaW5nIGF1dG8tY29u
dGludWUuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0
ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK0VkaXRpbmcg
bG9nIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBl
eGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworLS0g
UnVubmluZyB0ZXN0IGNhc2U6IERPTUJyZWFrcG9pbnQuU3VidHJlZU1vZGlmaWVkLlJlbW92ZS5P
cHRpb25zLkFjdGlvbnMuRXZhbHVhdGUKK0FkZGluZyAic3VidHJlZS1tb2RpZmllZDoxLEhUTUws
MSxCT0RZLDEsRElWLDAsRElWIiBET00gQnJlYWtwb2ludC4uLgorCitBZGRpbmcgZXZhbHVhdGUg
YWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1
dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcgZXZh
bHVhdGUgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxk
IGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRp
bmcgZXZhbHVhdGUgYWN0aW9uLi4uCitFbmFibGluZyBhdXRvLWNvbnRpbnVlLi4uCisKK1RyaWdn
ZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rp
b24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4u
LgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFr
cG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9kb20tYnJlYWtwb2ludC1zdWJ0cmVlLW1v
ZGlmaWVkLXJlbW92ZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9k
b20tYnJlYWtwb2ludC1zdWJ0cmVlLW1vZGlmaWVkLXJlbW92ZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOTZkZTc4MDdhNTAzCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9kb20tYnJlYWtwb2ludC1zdWJ0
cmVlLW1vZGlmaWVkLXJlbW92ZS5odG1sCkBAIC0wLDAgKzEsMTY5IEBACis8IWRvY3R5cGUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0
b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9kZWJ1Z2dlci9yZXNvdXJjZXMvYnJlYWtwb2ludC1vcHRpb25zLXV0aWxpdGllcy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZGVidWdnZXIvcmVzb3VyY2VzL2xvZy1hY3RpdmUtc3Rh
Y2stdHJhY2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9kb20tYnJlYWtw
b2ludC11dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3RTdWJ0
cmVlTW9kaWZpZWQoKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN1YnRyZWUtbW9k
aWZpZWQtdGVzdCIpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsK
K30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5j
cmVhdGVBc3luY1N1aXRlKCJET01CcmVha3BvaW50LlN1YnRyZWVNb2RpZmllZCIpOworCisgICAg
c3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiBgRE9NQnJlYWtwb2ludC5TdWJ0cmVl
TW9kaWZpZWQuUmVtb3ZlLkJyZWFrcG9pbnRFbmFibGVkYCwKKyAgICAgICAgZGVzY3JpcHRpb246
ICJDaGVjayB0aGF0IGRlYnVnZ2VyIHBhdXNlcyBmb3IgYnJlYWtwb2ludCB0eXBlLiIsCisgICAg
ICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgbm9kZSA9IGF3YWl0IEluc3BlY3Rv
clRlc3QuRE9NQnJlYWtwb2ludC5hd2FpdFF1ZXJ5U2VsZWN0b3IoIiNzdWJ0cmVlLW1vZGlmaWVk
LXRlc3QiKTsKKworICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBhd2FpdCBJbnNwZWN0b3JU
ZXN0LkRPTUJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludChub2RlLCBXSS5ET01CcmVha3BvaW50
LlR5cGUuU3VidHJlZU1vZGlmaWVkKTsKKworICAgICAgICAgICAgbGV0IHBhdXNlZCA9IGZhbHNl
OworICAgICAgICAgICAgbGV0IHBhdXNlZExpc3RlbmVyID0gV0kuZGVidWdnZXJNYW5hZ2VyLmFk
ZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9
PiB7CisgICAgICAgICAgICAgICAgcGF1c2VkID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIGxl
dCB0YXJnZXREYXRhID0gV0kuZGVidWdnZXJNYW5hZ2VyLmRhdGFGb3JUYXJnZXQoV0kuZGVidWdn
ZXJNYW5hZ2VyLmFjdGl2ZUNhbGxGcmFtZS50YXJnZXQpOworICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QubG9nKCJQQVVTRUQ6Iik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RFcXVhbCh0YXJnZXREYXRhLnBhdXNlUmVhc29uLCBXSS5EZWJ1Z2dlck1hbmFnZXIuUGF1
c2VSZWFzb24uRE9NLCAiUGF1c2UgcmVhc29uIHNob3VsZCBiZSBET00uIik7CisKKyAgICAgICAg
ICAgICAgICBsZXQgcGF1c2VEYXRhID0gdGFyZ2V0RGF0YS5wYXVzZURhdGE7CisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXVzZURhdGEudHlwZSwgYnJlYWtwb2lu
dC50eXBlLCBgUGF1c2UgdHlwZSBzaG91bGQgYmUgJyR7YnJlYWtwb2ludC50eXBlfScuYCk7Cisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXVzZURhdGEubm9kZUlk
LCBicmVha3BvaW50LmRvbU5vZGUuaWQsICJQYXVzZSBub2RlSWQgc2hvdWxkIGJlIGV4cGVjdGVk
IHZhbHVlLiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VHJ1ZShwYXVz
ZURhdGEuaW5zZXJ0aW9uLCAiU2hvdWxkIGhhdmUgJ2luc2VydGlvbicuIik7CisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoISgidGFyZ2V0Tm9kZUlkIiBpbiBwYXVzZURhdGEp
LCAiU2hvdWxkIG5vdCBoYXZlICd0YXJnZXROb2RlSWQnLiIpOworCisgICAgICAgICAgICAgICAg
bG9nQWN0aXZlU3RhY2tUcmFjZSgpOworICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdl
ci5yZXN1bWUoKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBhd2FpdCBJbnNwZWN0
b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGB0ZXN0U3VidHJlZU1vZGlmaWVkKClgKTsKKworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoYnJlYWtwb2ludC5kb21Ob2RlID09PSBub2RlLCAi
U2hvdWxkIGhhdmUgZG9tTm9kZS4iKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3Nl
cnQocGF1c2VkLCAiU2hvdWxkIHBhdXNlLiIpOworICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5h
Z2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwg
cGF1c2VkTGlzdGVuZXIpOworICAgICAgICB9LAorICAgICAgICB0ZWFyZG93bjogSW5zcGVjdG9y
VGVzdC5ET01CcmVha3BvaW50LnRlYXJkb3duLAorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVz
dENhc2UoeworICAgICAgICBuYW1lOiBgRE9NQnJlYWtwb2ludC5TdWJ0cmVlTW9kaWZpZWQuUmVt
b3ZlLkJyZWFrcG9pbnREaXNhYmxlZGAsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhh
dCBkZWJ1Z2dlciBkb2VzIG5vdCBwYXVzZSBmb3IgZGlzYWJsZWQgYnJlYWtwb2ludC4iLAorICAg
ICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IHBhdXNlZCA9IGZhbHNlOworICAg
ICAgICAgICAgbGV0IHBhdXNlZExpc3RlbmVyID0gV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50
TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7Cisg
ICAgICAgICAgICAgICAgcGF1c2VkID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIFdJLmRlYnVn
Z2VyTWFuYWdlci5yZXN1bWUoKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBsZXQg
bm9kZSA9IGF3YWl0IEluc3BlY3RvclRlc3QuRE9NQnJlYWtwb2ludC5hd2FpdFF1ZXJ5U2VsZWN0
b3IoIiNzdWJ0cmVlLW1vZGlmaWVkLXRlc3QiKTsKKworICAgICAgICAgICAgbGV0IGJyZWFrcG9p
bnQgPSBhd2FpdCBJbnNwZWN0b3JUZXN0LkRPTUJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludChu
b2RlLCBXSS5ET01CcmVha3BvaW50LlR5cGUuU3VidHJlZU1vZGlmaWVkKTsKKworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5sb2coIkRpc2FibGluZyBicmVha3BvaW50Li4uIik7CisgICAgICAg
ICAgICBicmVha3BvaW50LmRpc2FibGVkID0gdHJ1ZTsKKworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hc3NlcnQoYnJlYWtwb2ludC5kb21Ob2RlID09PSBub2RlLCAiU2hvdWxkIGhhdmUgZG9t
Tm9kZS4iKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlRyaWdnZXJpbmcgYnJl
YWtwb2ludC4uLiIpOworICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUlu
UGFnZShgdGVzdFN1YnRyZWVNb2RpZmllZCgpYCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYXNzZXJ0KGJyZWFrcG9pbnQuZG9tTm9kZSA9PT0gbm9kZSwgIlNob3VsZCBoYXZlIGRvbU5v
ZGUuIik7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RmFsc2UocGF1c2VkLCAi
U2hvdWxkIG5vdCBwYXVzZSBmb3IgZGlzYWJsZWQgYnJlYWtwb2ludC4iKTsKKyAgICAgICAgICAg
IFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdl
ci5FdmVudC5QYXVzZWQsIHBhdXNlZExpc3RlbmVyKTsKKyAgICAgICAgfSwKKyAgICAgICAgdGVh
cmRvd246IEluc3BlY3RvclRlc3QuRE9NQnJlYWtwb2ludC50ZWFyZG93biwKKyAgICB9KTsKKwor
ICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogYERPTUJyZWFrcG9pbnQuU3Vi
dHJlZU1vZGlmaWVkLlJlbW92ZS5EZWJ1Z2dlckRpc2FibGVkYCwKKyAgICAgICAgZGVzY3JpcHRp
b246ICJDaGVjayB0aGF0IGRlYnVnZ2VyIGRvZXMgbm90IHBhdXNlIHdoZW4gdGhlIGRlYnVnZ2Vy
IGlzIGRpc2FibGVkLiIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQg
cGF1c2VkID0gZmFsc2U7CisgICAgICAgICAgICBsZXQgcGF1c2VkTGlzdGVuZXIgPSBXSS5kZWJ1
Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1
c2VkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBwYXVzZWQgPSB0cnVlOworCisgICAg
ICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgpOworICAgICAgICAgICAgfSk7
CisKKyAgICAgICAgICAgIGxldCBub2RlID0gYXdhaXQgSW5zcGVjdG9yVGVzdC5ET01CcmVha3Bv
aW50LmF3YWl0UXVlcnlTZWxlY3RvcigiI3N1YnRyZWUtbW9kaWZpZWQtdGVzdCIpOworCisgICAg
ICAgICAgICBsZXQgYnJlYWtwb2ludCA9IGF3YWl0IEluc3BlY3RvclRlc3QuRE9NQnJlYWtwb2lu
dC5jcmVhdGVCcmVha3BvaW50KG5vZGUsIFdJLkRPTUJyZWFrcG9pbnQuVHlwZS5TdWJ0cmVlTW9k
aWZpZWQpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiRGlzYWJsaW5nIGFsbCBi
cmVha3BvaW50cy4uLiIpOworICAgICAgICAgICAgYXdhaXQgRGVidWdnZXJBZ2VudC5zZXRCcmVh
a3BvaW50c0FjdGl2ZShmYWxzZSk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJU
cmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4iKTsKKyAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRl
c3QuZXZhbHVhdGVJblBhZ2UoYHRlc3RTdWJ0cmVlTW9kaWZpZWQoKWApOworCisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFzc2VydChicmVha3BvaW50LmRvbU5vZGUgPT09IG5vZGUsICJTaG91
bGQgaGF2ZSBkb21Ob2RlLiIpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiRW5h
YmxpbmcgYWxsIGJyZWFrcG9pbnRzLi4uIik7CisgICAgICAgICAgICBhd2FpdCBEZWJ1Z2dlckFn
ZW50LnNldEJyZWFrcG9pbnRzQWN0aXZlKHRydWUpOworCisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdEZhbHNlKHBhdXNlZCwgIlNob3VsZCBub3QgcGF1c2Ugd2hlbiBhbGwgYnJlYWtw
b2ludHMgZGlzYWJsZWQuIik7CisgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVtb3Zl
RXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCBwYXVzZWRMaXN0
ZW5lcik7CisgICAgICAgIH0sCisgICAgICAgIHRlYXJkb3duOiBJbnNwZWN0b3JUZXN0LkRPTUJy
ZWFrcG9pbnQudGVhcmRvd24sCisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Cisg
ICAgICAgIG5hbWU6IGBET01CcmVha3BvaW50LlN1YnRyZWVNb2RpZmllZC5SZW1vdmUuUmVtb3Zl
QnJlYWtwb2ludGAsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBkZWJ1Z2dlciBk
b2VzIG5vdCBwYXVzZSBmb3IgcmVtb3ZlZCBicmVha3BvaW50LiIsCisgICAgICAgIGFzeW5jIHRl
c3QoKSB7CisgICAgICAgICAgICBsZXQgcGF1c2VkID0gZmFsc2U7CisgICAgICAgICAgICBsZXQg
cGF1c2VkTGlzdGVuZXIgPSBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5E
ZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAg
ICBwYXVzZWQgPSB0cnVlOworCisgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJl
c3VtZSgpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGxldCBub2RlID0gYXdhaXQg
SW5zcGVjdG9yVGVzdC5ET01CcmVha3BvaW50LmF3YWl0UXVlcnlTZWxlY3RvcigiI3N1YnRyZWUt
bW9kaWZpZWQtdGVzdCIpOworCisgICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IGF3YWl0IElu
c3BlY3RvclRlc3QuRE9NQnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KG5vZGUsIFdJLkRPTUJy
ZWFrcG9pbnQuVHlwZS5TdWJ0cmVlTW9kaWZpZWQpOworCisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmxvZygiUmVtb3ZpbmcgYnJlYWtwb2ludC4uLiIpOworICAgICAgICAgICAgV0kuZG9tRGVi
dWdnZXJNYW5hZ2VyLnJlbW92ZURPTUJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CisKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KCFicmVha3BvaW50LmRvbU5vZGUsICJTaG91bGQgbm90
IGhhdmUgZG9tTm9kZS4iKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlRyaWdn
ZXJpbmcgYnJlYWtwb2ludC4uLiIpOworICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVzdC5l
dmFsdWF0ZUluUGFnZShgdGVzdFN1YnRyZWVNb2RpZmllZCgpYCk7CisKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0KCFicmVha3BvaW50LmRvbU5vZGUsICJTaG91bGQgbm90IGhhdmUg
ZG9tTm9kZS4iKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZShwYXVz
ZWQsICJTaG91bGQgbm90IHBhdXNlIGZvciByZW1vdmVkIGJyZWFrcG9pbnQuIik7CisgICAgICAg
ICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1h
bmFnZXIuRXZlbnQuUGF1c2VkLCBwYXVzZWRMaXN0ZW5lcik7CisgICAgICAgIH0sCisgICAgICAg
IHRlYXJkb3duOiBJbnNwZWN0b3JUZXN0LkRPTUJyZWFrcG9pbnQudGVhcmRvd24sCisgICAgfSk7
CisKKyAgICBJbnNwZWN0b3JUZXN0LkJyZWFrcG9pbnRPcHRpb25zLmFkZFRlc3RDYXNlcyhzdWl0
ZSwgeworICAgICAgICB0ZXN0Q2FzZU5hbWVQcmVmaXg6ICJSZW1vdmUuIiwKKyAgICAgICAgYXN5
bmMgY3JlYXRlQnJlYWtwb2ludCgpIHsKKyAgICAgICAgICAgIGxldCBub2RlID0gYXdhaXQgSW5z
cGVjdG9yVGVzdC5ET01CcmVha3BvaW50LmF3YWl0UXVlcnlTZWxlY3RvcigiI3N1YnRyZWUtbW9k
aWZpZWQtdGVzdCIpOworICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvclRlc3QuRE9NQnJlYWtw
b2ludC5jcmVhdGVCcmVha3BvaW50KG5vZGUsIFdJLkRPTUJyZWFrcG9pbnQuVHlwZS5TdWJ0cmVl
TW9kaWZpZWQpOworICAgICAgICB9LAorICAgICAgICBhc3luYyB0cmlnZ2VyQnJlYWtwb2ludChi
cmVha3BvaW50KSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChicmVha3BvaW50
LmRvbU5vZGUsICJTaG91bGQgaGF2ZSBkb21Ob2RlLiIpOworICAgICAgICAgICAgcmV0dXJuIElu
c3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYHRlc3RTdWJ0cmVlTW9kaWZpZWQoKWApOworICAg
ICAgICB9LAorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3Rz
IGZvciBET00gYnJlYWtwb2ludHMuPC9wPgorPGRpdiBpZD0idGVzdC1jb250YWluZXIiIHN0eWxl
PSJkaXNwbGF5OiBub25lIj4KKyAgICA8ZGl2IGlkPSJzdWJ0cmVlLW1vZGlmaWVkLXRlc3QiPjwv
ZGl2PgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2RvbS1icmVha3BvaW50cy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2RvbS1icmVha3BvaW50cy1leHBlY3RlZC50
eHQKaW5kZXggMmE3NjcyMGRmYjNkLi4wYjk1NWM2NWU5YjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZG9tLWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2RvbS1icmVha3BvaW50cy1l
eHBlY3RlZC50eHQKQEAgLTEsMTc0ICsxLDQwIEBACiBUZXN0cyBmb3IgRE9NIGJyZWFrcG9pbnRz
LgogCiAKLT09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogRE9NQnJlYWtwb2ludHMKLS0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBCYXNpY0JyZWFrcG9pbnQKLVBBU1M6IEFkZGVkICdzdWJ0cmVlLW1vZGlmaWVk
JyBicmVha3BvaW50LgorPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBET01CcmVha3BvaW50CistLSBS
dW5uaW5nIHRlc3QgY2FzZTogRE9NQnJlYWtwb2ludC5CYXNpYworQWRkaW5nICJzdWJ0cmVlLW1v
ZGlmaWVkOjEsSFRNTCwxLEJPRFksMSxESVYsMCxESVYiIERPTSBCcmVha3BvaW50Li4uCiBQQVNT
OiBCcmVha3BvaW50IHNob3VsZCBub3QgYmUgZGlzYWJsZWQuCiBQQVNTOiBCcmVha3BvaW50IHNo
b3VsZCBoYXZlIG5vZGUgaWRlbnRpZmllci4KIFBBU1M6IEJyZWFrcG9pbnQgVVJMIHNob3VsZCBt
YXRjaCBkb2N1bWVudCBVUkwuCiAtLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCiAKLS0tIFJ1bm5p
bmcgdGVzdCBjYXNlOiBET01CcmVha3BvaW50cy5TdWJ0cmVlTW9kaWZpZWQuQnJlYWtwb2ludEVu
YWJsZWQKLVBBU1M6IEFkZGVkICdzdWJ0cmVlLW1vZGlmaWVkJyBicmVha3BvaW50LgotUEFTUzog
QnJlYWtwb2ludCBzaG91bGQgaGF2ZSBleHBlY3RlZCB0eXBlLgotQ2FsbCBET00gb3BlcmF0aW9u
LgotUEFVU0VEOgotUEFTUzogUGF1c2UgcmVhc29uIHNob3VsZCBiZSBET00uCi1QQVNTOiBQYXVz
ZSB0eXBlIHNob3VsZCBiZSAnc3VidHJlZS1tb2RpZmllZCcuCi1QQVNTOiBQYXVzZSBub2RlSWQg
c2hvdWxkIGJlIGV4cGVjdGVkIHZhbHVlLgotUEFTUzogUGF1c2UgaW5zZXJ0aW9uIHNob3VsZCBi
ZSAndHJ1ZScuCi1QQVNTOiBQYXVzZSB0YXJnZXROb2RlSWQgc2hvdWxkIG1hdGNoIG5vZGVJZC4K
LUNBTEwgU1RBQ0s6Ci0wOiBbRl0gc3VidHJlZU1vZGlmaWVkVGVzdAotMTogW1BdIEdsb2JhbCBD
b2RlCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NQnJlYWtwb2ludC5SZW1vdmVBbGxCcmVha3Bv
aW50c0Zvck5vZGUKK0FkZGluZyAic3VidHJlZS1tb2RpZmllZDoxLEhUTUwsMSxCT0RZLDEsRElW
LDEsRElWIiBET00gQnJlYWtwb2ludC4uLgorQWRkaW5nICJhdHRyaWJ1dGUtbW9kaWZpZWQ6MSxI
VE1MLDEsQk9EWSwxLERJViwxLERJViIgRE9NIEJyZWFrcG9pbnQuLi4KK0FkZGluZyAibm9kZS1y
ZW1vdmVkOjEsSFRNTCwxLEJPRFksMSxESVYsMSxESVYiIERPTSBCcmVha3BvaW50Li4uCitQQVNT
OiBTaG91bGQgaGF2ZSAzIGJyZWFrcG9pbnRzLgorUmVtb3ZpbmcgYWxsIGJyZWFrcG9pbnRzIGZv
ciAjbXVsdGlwbGUtYnJlYWtwb2ludHMtdGVzdC4uLgorUEFTUzogU2hvdWxkIHJlbW92ZSBhbGwg
YnJlYWtwb2ludHMuCiAtLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCiAKLS0tIFJ1bm5pbmcgdGVz
dCBjYXNlOiBET01CcmVha3BvaW50cy5TdWJ0cmVlTW9kaWZpZWQuQnJlYWtwb2ludERpc2FibGVk
Ci1QQVNTOiBBZGRlZCAnc3VidHJlZS1tb2RpZmllZCcgYnJlYWtwb2ludC4KLVdhaXQgZm9yIGV2
YWx1YXRlIGluIHBhZ2UgdG8gcmV0dXJuLgotUEFTUzogU2hvdWxkIG5vdCBwYXVzZSBmb3IgZGlz
YWJsZWQgYnJlYWtwb2ludC4KLS0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KKy0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBET01CcmVha3BvaW50LlNldEJyZWFrcG9pbnRXaXRoSW52YWxpZE5vZGVJZAor
U2V0dGluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcHJvZHVjZSBhbiBleGNlcHRpb24u
CitFcnJvcjogTWlzc2luZyBub2RlIGZvciBnaXZlbiBub2RlSWQKIAotLS0gUnVubmluZyB0ZXN0
IGNhc2U6IERPTUJyZWFrcG9pbnRzLlN1YnRyZWVNb2RpZmllZC5EZWJ1Z2dlckRpc2FibGVkCi1Q
QVNTOiBBZGRlZCAnc3VidHJlZS1tb2RpZmllZCcgYnJlYWtwb2ludC4KLVdhaXQgZm9yIGV2YWx1
YXRlIGluIHBhZ2UgdG8gcmV0dXJuLgotUEFTUzogU2hvdWxkIG5vdCBwYXVzZSBmb3IgZGlzYWJs
ZWQgYnJlYWtwb2ludC4KLS0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KKy0tIFJ1bm5pbmcgdGVz
dCBjYXNlOiBET01CcmVha3BvaW50LlNldEJyZWFrcG9pbnRXaXRoSW52YWxpZFR5cGUKK1NldHRp
bmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHByb2R1Y2UgYW4gZXhjZXB0aW9uLgorRXJy
b3I6IFVua25vd24gdHlwZTogY3VzdG9tLWJyZWFrcG9pbnQtdHlwZQogCi0tLSBSdW5uaW5nIHRl
c3QgY2FzZTogRE9NQnJlYWtwb2ludHMuU3VidHJlZU1vZGlmaWVkLlJlbW92ZUJyZWFrcG9pbnQK
LVBBU1M6IEFkZGVkICdzdWJ0cmVlLW1vZGlmaWVkJyBicmVha3BvaW50LgotUmVtb3ZlIGJyZWFr
cG9pbnQuCi1XYWl0IGZvciBldmFsdWF0ZSBpbiBwYWdlIHRvIHJldHVybi4KLVBBU1M6IFNob3Vs
ZCBub3QgcGF1c2UgZm9yIHJlbW92ZWQgYnJlYWtwb2ludC4KLS0tIFJ1bm5pbmcgdGVzdCB0ZWFy
ZG93bi4KKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01CcmVha3BvaW50LlJlbW92ZUJyZWFrcG9p
bnRXaXRoSW52YWxpZE5vZGVJZAorUmVtb3ZpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxk
IHByb2R1Y2UgYW4gZXhjZXB0aW9uLgorRXJyb3I6IE1pc3Npbmcgbm9kZSBmb3IgZ2l2ZW4gbm9k
ZUlkCiAKLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01CcmVha3BvaW50cy5BdHRyaWJ1dGVNb2Rp
ZmllZC5CcmVha3BvaW50RW5hYmxlZAotUEFTUzogQWRkZWQgJ2F0dHJpYnV0ZS1tb2RpZmllZCcg
YnJlYWtwb2ludC4KLVBBU1M6IEJyZWFrcG9pbnQgc2hvdWxkIGhhdmUgZXhwZWN0ZWQgdHlwZS4K
LUNhbGwgRE9NIG9wZXJhdGlvbi4KLVBBVVNFRDoKLVBBU1M6IFBhdXNlIHJlYXNvbiBzaG91bGQg
YmUgRE9NLgotUEFTUzogUGF1c2UgdHlwZSBzaG91bGQgYmUgJ2F0dHJpYnV0ZS1tb2RpZmllZCcu
Ci1QQVNTOiBQYXVzZSBub2RlSWQgc2hvdWxkIGJlIGV4cGVjdGVkIHZhbHVlLgotQ0FMTCBTVEFD
SzoKLTA6IFtGXSBhdHRyaWJ1dGVNb2RpZmllZFRlc3QKLTE6IFtQXSBHbG9iYWwgQ29kZQotLS0g
UnVubmluZyB0ZXN0IHRlYXJkb3duLgotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NQnJlYWtw
b2ludHMuQXR0cmlidXRlTW9kaWZpZWQuQnJlYWtwb2ludERpc2FibGVkCi1QQVNTOiBBZGRlZCAn
YXR0cmlidXRlLW1vZGlmaWVkJyBicmVha3BvaW50LgotV2FpdCBmb3IgZXZhbHVhdGUgaW4gcGFn
ZSB0byByZXR1cm4uCi1QQVNTOiBTaG91bGQgbm90IHBhdXNlIGZvciBkaXNhYmxlZCBicmVha3Bv
aW50LgotLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTog
RE9NQnJlYWtwb2ludHMuQXR0cmlidXRlTW9kaWZpZWQuRGVidWdnZXJEaXNhYmxlZAotUEFTUzog
QWRkZWQgJ2F0dHJpYnV0ZS1tb2RpZmllZCcgYnJlYWtwb2ludC4KLVdhaXQgZm9yIGV2YWx1YXRl
IGluIHBhZ2UgdG8gcmV0dXJuLgotUEFTUzogU2hvdWxkIG5vdCBwYXVzZSBmb3IgZGlzYWJsZWQg
YnJlYWtwb2ludC4KLS0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KLQotLS0gUnVubmluZyB0ZXN0
IGNhc2U6IERPTUJyZWFrcG9pbnRzLkF0dHJpYnV0ZU1vZGlmaWVkLlJlbW92ZUJyZWFrcG9pbnQK
LVBBU1M6IEFkZGVkICdhdHRyaWJ1dGUtbW9kaWZpZWQnIGJyZWFrcG9pbnQuCi1SZW1vdmUgYnJl
YWtwb2ludC4KLVdhaXQgZm9yIGV2YWx1YXRlIGluIHBhZ2UgdG8gcmV0dXJuLgotUEFTUzogU2hv
dWxkIG5vdCBwYXVzZSBmb3IgcmVtb3ZlZCBicmVha3BvaW50LgotLS0gUnVubmluZyB0ZXN0IHRl
YXJkb3duLgotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NQnJlYWtwb2ludHMuTm9kZVJlbW92
ZWRTZWxmLkJyZWFrcG9pbnRFbmFibGVkCi1QQVNTOiBBZGRlZCAnbm9kZS1yZW1vdmVkJyBicmVh
a3BvaW50LgotUEFTUzogQnJlYWtwb2ludCBzaG91bGQgaGF2ZSBleHBlY3RlZCB0eXBlLgotQ2Fs
bCBET00gb3BlcmF0aW9uLgotUEFVU0VEOgotUEFTUzogUGF1c2UgcmVhc29uIHNob3VsZCBiZSBE
T00uCi1QQVNTOiBQYXVzZSB0eXBlIHNob3VsZCBiZSAnbm9kZS1yZW1vdmVkJy4KLVBBU1M6IFBh
dXNlIG5vZGVJZCBzaG91bGQgYmUgZXhwZWN0ZWQgdmFsdWUuCi1DQUxMIFNUQUNLOgotMDogW0Zd
IG5vZGVSZW1vdmVkRGlyZWN0VGVzdAotMTogW1BdIEdsb2JhbCBDb2RlCi0tLSBSdW5uaW5nIHRl
c3QgdGVhcmRvd24uCi0KLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01CcmVha3BvaW50cy5Ob2Rl
UmVtb3ZlZFNlbGYuQnJlYWtwb2ludERpc2FibGVkCi1QQVNTOiBBZGRlZCAnbm9kZS1yZW1vdmVk
JyBicmVha3BvaW50LgotV2FpdCBmb3IgZXZhbHVhdGUgaW4gcGFnZSB0byByZXR1cm4uCi1QQVNT
OiBTaG91bGQgbm90IHBhdXNlIGZvciBkaXNhYmxlZCBicmVha3BvaW50LgotLS0gUnVubmluZyB0
ZXN0IHRlYXJkb3duLgotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NQnJlYWtwb2ludHMuTm9k
ZVJlbW92ZWRTZWxmLkRlYnVnZ2VyRGlzYWJsZWQKLVBBU1M6IEFkZGVkICdub2RlLXJlbW92ZWQn
IGJyZWFrcG9pbnQuCi1XYWl0IGZvciBldmFsdWF0ZSBpbiBwYWdlIHRvIHJldHVybi4KLVBBU1M6
IFNob3VsZCBub3QgcGF1c2UgZm9yIGRpc2FibGVkIGJyZWFrcG9pbnQuCi0tLSBSdW5uaW5nIHRl
c3QgdGVhcmRvd24uCi0KLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01CcmVha3BvaW50cy5Ob2Rl
UmVtb3ZlZFNlbGYuUmVtb3ZlQnJlYWtwb2ludAotUEFTUzogQWRkZWQgJ25vZGUtcmVtb3ZlZCcg
YnJlYWtwb2ludC4KLVJlbW92ZSBicmVha3BvaW50LgotV2FpdCBmb3IgZXZhbHVhdGUgaW4gcGFn
ZSB0byByZXR1cm4uCi1QQVNTOiBTaG91bGQgbm90IHBhdXNlIGZvciByZW1vdmVkIGJyZWFrcG9p
bnQuCi0tLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCi0KLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBE
T01CcmVha3BvaW50cy5Ob2RlUmVtb3ZlZEFuY2VzdG9yLkJyZWFrcG9pbnRFbmFibGVkCi1QQVNT
OiBBZGRlZCAnbm9kZS1yZW1vdmVkJyBicmVha3BvaW50LgotUEFTUzogQnJlYWtwb2ludCBzaG91
bGQgaGF2ZSBleHBlY3RlZCB0eXBlLgotQ2FsbCBET00gb3BlcmF0aW9uLgotUEFVU0VEOgotUEFT
UzogUGF1c2UgcmVhc29uIHNob3VsZCBiZSBET00uCi1QQVNTOiBQYXVzZSB0eXBlIHNob3VsZCBi
ZSAnbm9kZS1yZW1vdmVkJy4KLVBBU1M6IFBhdXNlIG5vZGVJZCBzaG91bGQgYmUgZXhwZWN0ZWQg
dmFsdWUuCi1QQVNTOiBQYXVzZSB0YXJnZXROb2RlSWQgc2hvdWxkIG5vdCBtYXRjaCBub2RlSWQu
Ci1DQUxMIFNUQUNLOgotMDogW0ZdIG5vZGVSZW1vdmVkQW5jZXN0b3JUZXN0Ci0xOiBbUF0gR2xv
YmFsIENvZGUKLS0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KLQotLS0gUnVubmluZyB0ZXN0IGNh
c2U6IERPTUJyZWFrcG9pbnRzLk5vZGVSZW1vdmVkQW5jZXN0b3IuQnJlYWtwb2ludERpc2FibGVk
Ci1QQVNTOiBBZGRlZCAnbm9kZS1yZW1vdmVkJyBicmVha3BvaW50LgotV2FpdCBmb3IgZXZhbHVh
dGUgaW4gcGFnZSB0byByZXR1cm4uCi1QQVNTOiBTaG91bGQgbm90IHBhdXNlIGZvciBkaXNhYmxl
ZCBicmVha3BvaW50LgotLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgotCi0tLSBSdW5uaW5nIHRl
c3QgY2FzZTogRE9NQnJlYWtwb2ludHMuTm9kZVJlbW92ZWRBbmNlc3Rvci5EZWJ1Z2dlckRpc2Fi
bGVkCi1QQVNTOiBBZGRlZCAnbm9kZS1yZW1vdmVkJyBicmVha3BvaW50LgotV2FpdCBmb3IgZXZh
bHVhdGUgaW4gcGFnZSB0byByZXR1cm4uCi1QQVNTOiBTaG91bGQgbm90IHBhdXNlIGZvciBkaXNh
YmxlZCBicmVha3BvaW50LgotLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgotCi0tLSBSdW5uaW5n
IHRlc3QgY2FzZTogRE9NQnJlYWtwb2ludHMuTm9kZVJlbW92ZWRBbmNlc3Rvci5SZW1vdmVCcmVh
a3BvaW50Ci1QQVNTOiBBZGRlZCAnbm9kZS1yZW1vdmVkJyBicmVha3BvaW50LgotUmVtb3ZlIGJy
ZWFrcG9pbnQuCi1XYWl0IGZvciBldmFsdWF0ZSBpbiBwYWdlIHRvIHJldHVybi4KLVBBU1M6IFNo
b3VsZCBub3QgcGF1c2UgZm9yIHJlbW92ZWQgYnJlYWtwb2ludC4KLS0tIFJ1bm5pbmcgdGVzdCB0
ZWFyZG93bi4KLQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IFJlbW92ZUFsbEJyZWFrcG9pbnRzRm9y
Tm9kZQotUEFTUzogQWRkZWQgJ3N1YnRyZWUtbW9kaWZpZWQnIGJyZWFrcG9pbnQuCi1QQVNTOiBB
ZGRlZCAnYXR0cmlidXRlLW1vZGlmaWVkJyBicmVha3BvaW50LgotUEFTUzogQWRkZWQgJ25vZGUt
cmVtb3ZlZCcgYnJlYWtwb2ludC4KLVBBU1M6IFJlbW92ZWQgMyBicmVha3BvaW50cy4KLVBBU1M6
IERPTSBub2RlIHNob3VsZCBoYXZlIG5vIGJyZWFrcG9pbnRzLgotLS0gUnVubmluZyB0ZXN0IHRl
YXJkb3duLgotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogU2V0QnJlYWtwb2ludFdpdGhJbnZhbGlk
Tm9kZUlkCi1BdHRlbXB0aW5nIHRvIHNldCBicmVha3BvaW50LgotUHJvdG9jb2wgcmVzdWx0OiBN
aXNzaW5nIG5vZGUgZm9yIGdpdmVuIG5vZGVJZAotUEFTUzogUHJvdG9jb2wgc2hvdWxkIHJldHVy
biBhbiBlcnJvci4KLS0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KLQotLS0gUnVubmluZyB0ZXN0
IGNhc2U6IFNldEJyZWFrcG9pbnRXaXRoSW52YWxpZFR5cGUKLUF0dGVtcHRpbmcgdG8gc2V0IGJy
ZWFrcG9pbnQuCi1Qcm90b2NvbCByZXN1bHQ6IFVua25vd24gRE9NIGJyZWFrcG9pbnQgdHlwZTog
Y3VzdG9tLWJyZWFrcG9pbnQtdHlwZQotUEFTUzogUHJvdG9jb2wgc2hvdWxkIHJldHVybiBhbiBl
cnJvci4KLS0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KLQotLS0gUnVubmluZyB0ZXN0IGNhc2U6
IFJlbW92ZUJyZWFrcG9pbnRXaXRoSW52YWxpZE5vZGVJZAotQXR0ZW1wdGluZyB0byByZW1vdmUg
YnJlYWtwb2ludC4KLVByb3RvY29sIHJlc3VsdDogTWlzc2luZyBub2RlIGZvciBnaXZlbiBub2Rl
SWQKLVBBU1M6IFByb3RvY29sIHNob3VsZCByZXR1cm4gYW4gZXJyb3IuCi0tLSBSdW5uaW5nIHRl
c3QgdGVhcmRvd24uCi0KLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBSZW1vdmVCcmVha3BvaW50V2l0
aEludmFsaWRUeXBlCi1BdHRlbXB0aW5nIHRvIHJlbW92ZSBicmVha3BvaW50LgotUHJvdG9jb2wg
cmVzdWx0OiBVbmtub3duIERPTSBicmVha3BvaW50IHR5cGU6IGN1c3RvbS1icmVha3BvaW50LXR5
cGUKLVBBU1M6IFByb3RvY29sIHNob3VsZCByZXR1cm4gYW4gZXJyb3IuCi0tLSBSdW5uaW5nIHRl
c3QgdGVhcmRvd24uCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NQnJlYWtwb2ludC5SZW1vdmVC
cmVha3BvaW50V2l0aEludmFsaWRUeXBlCitSZW1vdmluZyBicmVha3BvaW50Li4uCitQQVNTOiBT
aG91bGQgcHJvZHVjZSBhbiBleGNlcHRpb24uCitFcnJvcjogVW5rbm93biB0eXBlOiBjdXN0b20t
YnJlYWtwb2ludC10eXBlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20t
ZGVidWdnZXIvZG9tLWJyZWFrcG9pbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9t
LWRlYnVnZ2VyL2RvbS1icmVha3BvaW50cy5odG1sCmluZGV4IDJmMjUwOWZhNzllMS4uNmM4YWJk
YjhjMWI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2Rv
bS1icmVha3BvaW50cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdn
ZXIvZG9tLWJyZWFrcG9pbnRzLmh0bWwKQEAgLTMsMzc4ICszLDkyIEBACiA8aGVhZD4KIDxzY3Jp
cHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRl
c3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL2RlYnVnZ2VyL3Jlc291cmNlcy9sb2ct
YWN0aXZlLXN0YWNrLXRyYWNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
ZG9tLWJyZWFrcG9pbnQtdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci1mdW5jdGlv
biBzdWJ0cmVlTW9kaWZpZWRUZXN0KCkgewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJz
dWJ0cmVlLW1vZGlmaWVkLXRlc3QiKS5hcHBlbmQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIp
KTsKLX0KLQotZnVuY3Rpb24gYXR0cmlidXRlTW9kaWZpZWRUZXN0KCkgewotICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJhdHRyaWJ1dGUtbW9kaWZpZWQtdGVzdCIpLnNldEF0dHJpYnV0ZSgi
ZGlzcGxheSIsICJub25lIik7Ci19Ci0KLWZ1bmN0aW9uIG5vZGVSZW1vdmVkRGlyZWN0VGVzdCgp
IHsKLSAgICBsZXQgbm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJub2RlLXJlbW92ZWQt
ZGlyZWN0LXRlc3QiKTsKLSAgICBsZXQgcGFyZW50ID0gbm9kZS5wYXJlbnROb2RlOwotICAgIG5v
ZGUucmVtb3ZlKCk7Ci0gICAgcGFyZW50LmFwcGVuZChub2RlKTsKLX0KLQotZnVuY3Rpb24gbm9k
ZVJlbW92ZWRBbmNlc3RvclRlc3QoKSB7Ci0gICAgbGV0IG5vZGUgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgibm9kZS1yZW1vdmVkLWFuY2VzdG9yLXRlc3QiKTsKLSAgICBsZXQgcGFyZW50ID0g
bm9kZS5wYXJlbnROb2RlOwotICAgIGxldCBncmFuZHBhcmVudCA9IHBhcmVudC5wYXJlbnROb2Rl
OwotICAgIHBhcmVudC5yZW1vdmUobm9kZSk7Ci0gICAgZ3JhbmRwYXJlbnQuYXBwZW5kKHBhcmVu
dCk7Ci19Ci0KIGZ1bmN0aW9uIHRlc3QoKQogewotICAgIGNvbnN0IHN1YnRyZWVNb2RpZmllZFRl
c3RJZCA9ICJzdWJ0cmVlLW1vZGlmaWVkLXRlc3QiOwotICAgIGNvbnN0IGF0dHJpYnV0ZU1vZGlm
aWVkVGVzdElkID0gImF0dHJpYnV0ZS1tb2RpZmllZC10ZXN0IjsKLSAgICBjb25zdCBub2RlUmVt
b3ZlZERpcmVjdFRlc3RJZCA9ICJub2RlLXJlbW92ZWQtZGlyZWN0LXRlc3QiOwotICAgIGNvbnN0
IG5vZGVSZW1vdmVkQW5jZXN0b3JUZXN0SWQgPSAibm9kZS1yZW1vdmVkLWFuY2VzdG9yLXRlc3Qi
OwotICAgIGNvbnN0IG11bHRpcGxlQnJlYWtwb2ludHNUZXN0SWQgPSAibXVsdGlwbGUtYnJlYWtw
b2ludHMtdGVzdCI7Ci0KLSAgICBsZXQgZGVidWdnZXJQYXVzZWRMaXN0ZW5lciA9IG51bGw7Ci0K
LSAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIkRPTUJyZWFr
cG9pbnRzIik7Ci0KLSAgICBmdW5jdGlvbiB0ZWFyZG93bihyZXNvbHZlKSB7Ci0gICAgICAgIGxl
dCBicmVha3BvaW50cyA9IFdJLmRvbURlYnVnZ2VyTWFuYWdlci5kb21CcmVha3BvaW50czsKLSAg
ICAgICAgZm9yIChsZXQgYnJlYWtwb2ludCBvZiBicmVha3BvaW50cykKLSAgICAgICAgICAgIFdJ
LmRvbURlYnVnZ2VyTWFuYWdlci5yZW1vdmVET01CcmVha3BvaW50KGJyZWFrcG9pbnQpOwotICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydCghV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmRvbUJyZWFr
cG9pbnRzLmxlbmd0aCk7Ci0KLSAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50
TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgZGVidWdnZXJQYXVzZWRM
aXN0ZW5lcik7Ci0gICAgICAgIGRlYnVnZ2VyUGF1c2VkTGlzdGVuZXIgPSBudWxsOwotCi0gICAg
ICAgIHJlc29sdmUoKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiByZWplY3RPblBhdXNlKCkgewot
ICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewotICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoIWRlYnVnZ2VyUGF1c2VkTGlzdGVuZXIpOwotICAg
ICAgICAgICAgZGVidWdnZXJQYXVzZWRMaXN0ZW5lciA9IFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRF
dmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIChldmVudCkgPT4g
ewotICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKTsKLSAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmZhaWwoIlNob3VsZCBub3QgcGF1c2UuIik7Ci0gICAgICAg
ICAgICAgICAgcmVqZWN0KCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0gICAgfQot
Ci0gICAgZnVuY3Rpb24gYXdhaXRFdmFsdWF0ZUluUGFnZShleHByZXNzaW9uKSB7Ci0gICAgICAg
IHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7Ci0gICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmxvZygiV2FpdCBmb3IgZXZhbHVhdGUgaW4gcGFnZSB0byByZXR1cm4uIik7
Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGV4cHJlc3Npb24sIChl
cnJvcikgPT4gewotICAgICAgICAgICAgICAgIGlmIChlcnJvcikKLSAgICAgICAgICAgICAgICAg
ICAgcmVqZWN0KGVycm9yKTsKLQotICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKLSAgICAgICAg
ICAgIH0pOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBhd2FpdFF1ZXJ5U2Vs
ZWN0b3Ioc2VsZWN0b3IpIHsKLSAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCBy
ZWplY3QpID0+IHsKLSAgICAgICAgICAgIFdJLmRvbU1hbmFnZXIucmVxdWVzdERvY3VtZW50KChk
b2N1bWVudE5vZGUpID0+IHsKLSAgICAgICAgICAgICAgICBpZiAoIWRvY3VtZW50Tm9kZSkgewot
ICAgICAgICAgICAgICAgICAgICByZWplY3QoKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGRvY3VtZW50Tm9kZS5xdWVy
eVNlbGVjdG9yKHNlbGVjdG9yLCAobm9kZUlkKSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIGlm
ICghbm9kZUlkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmZhaWwo
IlNlbGVjdG9yIHJldHVybmVkIG5vIG5vZGVzLiIsIHNlbGVjdG9yKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJlamVjdCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGUgPSBXSS5k
b21NYW5hZ2VyLm5vZGVGb3JJZChub2RlSWQpOwotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmFzc2VydChub2RlLCAiTWlzc2luZyBub2RlIGZvciBpZC4iLCBub2RlSWQpOwotICAg
ICAgICAgICAgICAgICAgICBpZiAoIW5vZGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
amVjdCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShub2RlKTsKLSAgICAgICAgICAg
ICAgICB9KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBmdW5j
dGlvbiBhZGRCcmVha3BvaW50Rm9yRWxlbWVudElkZW50aWZpZXIoZWxlbWVudElkZW50aWZpZXIs
IHR5cGUsIGRpc2FibGVkKSB7Ci0gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwg
cmVqZWN0KSA9PiB7Ci0gICAgICAgICAgICBhd2FpdFF1ZXJ5U2VsZWN0b3IoIiMiICsgZWxlbWVu
dElkZW50aWZpZXIpCi0gICAgICAgICAgICAudGhlbigobm9kZSkgPT4gewotICAgICAgICAgICAg
ICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hd2FpdEV2ZW50KFdJLkRPTURlYnVnZ2VyTWFuYWdl
ci5FdmVudC5ET01CcmVha3BvaW50QWRkZWQpCi0gICAgICAgICAgICAgICAgLnRoZW4oKGV2ZW50
KSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIGxldCBicmVha3BvaW50ID0gZXZlbnQuZGF0YS5i
cmVha3BvaW50OwotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoYEFkZGVk
ICcke3R5cGV9JyBicmVha3BvaW50LmApOwotICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGV2
ZW50KTsKLSAgICAgICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgICAgIFdJLmRvbURlYnVn
Z2VyTWFuYWdlci5hZGRET01CcmVha3BvaW50KG5ldyBXSS5ET01CcmVha3BvaW50KG5vZGUsIHR5
cGUsIHtkaXNhYmxlZH0pKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICB9Ci0K
LSAgICBmdW5jdGlvbiBhZGRUZXN0c0ZvckJyZWFrcG9pbnRUeXBlKHtuYW1lLCBlbGVtZW50SWRl
bnRpZmllciwgdHlwZSwgZXhwcmVzc2lvbiwgaW5zZXJ0aW9uLCBzaG91bGRNYXRjaH0pIHsKLSAg
ICAgICAgc3VpdGUuYWRkVGVzdENhc2UoewotICAgICAgICAgICAgbmFtZTogYERPTUJyZWFrcG9p
bnRzLiR7bmFtZX0uQnJlYWtwb2ludEVuYWJsZWRgLAotICAgICAgICAgICAgZGVzY3JpcHRpb246
ICJDaGVjayB0aGF0IGRlYnVnZ2VyIHBhdXNlcyBmb3IgYnJlYWtwb2ludCB0eXBlLiIsCi0gICAg
ICAgICAgICB0ZWFyZG93biwKLSAgICAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0g
ICAgICAgICAgICAgICAgYWRkQnJlYWtwb2ludEZvckVsZW1lbnRJZGVudGlmaWVyKGVsZW1lbnRJ
ZGVudGlmaWVyLCB0eXBlKQotICAgICAgICAgICAgICAgIC50aGVuKChldmVudCkgPT4gewotICAg
ICAgICAgICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IGV2ZW50LmRhdGEuYnJlYWtwb2ludDsK
LSAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChicmVha3BvaW50
LnR5cGUsIHR5cGUsICJCcmVha3BvaW50IHNob3VsZCBoYXZlIGV4cGVjdGVkIHR5cGUuIik7Ci0K
LSAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkNhbGwgRE9NIG9wZXJhdGlv
bi4iKTsKLSAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShl
eHByZXNzaW9uKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFdJLmRlYnVnZ2VyTWFuYWdl
ci5hd2FpdEV2ZW50KFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQpOwotICAgICAgICAg
ICAgICAgIH0pCi0gICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAg
ICAgICBsZXQgdGFyZ2V0RGF0YSA9IFdJLmRlYnVnZ2VyTWFuYWdlci5kYXRhRm9yVGFyZ2V0KFdJ
LmRlYnVnZ2VyTWFuYWdlci5hY3RpdmVDYWxsRnJhbWUudGFyZ2V0KTsKLSAgICAgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlBBVVNFRDoiKTsKLSAgICAgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbCh0YXJnZXREYXRhLnBhdXNlUmVhc29uLCBXSS5EZWJ1
Z2dlck1hbmFnZXIuUGF1c2VSZWFzb24uRE9NLCAiUGF1c2UgcmVhc29uIHNob3VsZCBiZSBET00u
Iik7Ci0KLSAgICAgICAgICAgICAgICAgICAgbGV0IHBhdXNlRGF0YSA9IHRhcmdldERhdGEucGF1
c2VEYXRhOwotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHBh
dXNlRGF0YS50eXBlLCB0eXBlLCBgUGF1c2UgdHlwZSBzaG91bGQgYmUgJyR7dHlwZX0nLmApOwot
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHBhdXNlRGF0YS5u
b2RlSWQsIGRvbU5vZGVJZGVudGlmaWVyLCBgUGF1c2Ugbm9kZUlkIHNob3VsZCBiZSBleHBlY3Rl
ZCB2YWx1ZS5gKTsKLQotICAgICAgICAgICAgICAgICAgICBpZiAoaW5zZXJ0aW9uICE9PSB1bmRl
ZmluZWQpCi0gICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFs
KGluc2VydGlvbiwgdGFyZ2V0LnBhdXNlRGF0YS5pbnNlcnRpb24sIGBQYXVzZSBpbnNlcnRpb24g
c2hvdWxkIGJlICcke2luc2VydGlvbn0nLmApOwotCi0gICAgICAgICAgICAgICAgICAgIGlmIChw
YXVzZURhdGEudGFyZ2V0Tm9kZUlkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2hv
dWxkTWF0Y2gpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBl
Y3RFcXVhbChwYXVzZURhdGEudGFyZ2V0Tm9kZUlkLCBwYXVzZURhdGEubm9kZUlkLCAiUGF1c2Ug
dGFyZ2V0Tm9kZUlkIHNob3VsZCBtYXRjaCBub2RlSWQuIik7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBl
Y3ROb3RFcXVhbChwYXVzZURhdGEudGFyZ2V0Tm9kZUlkLCBwYXVzZURhdGEubm9kZUlkLCAiUGF1
c2UgdGFyZ2V0Tm9kZUlkIHNob3VsZCBub3QgbWF0Y2ggbm9kZUlkLiIpOwotICAgICAgICAgICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgbG9nQWN0aXZlU3RhY2tUcmFjZSgpOwot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gV0kuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgpOwot
ICAgICAgICAgICAgICAgIH0pCi0gICAgICAgICAgICAgICAgLnRoZW4ocmVzb2x2ZSwgcmVqZWN0
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0KLSAgICAgICAgc3VpdGUuYWRkVGVzdENh
c2UoewotICAgICAgICAgICAgbmFtZTogYERPTUJyZWFrcG9pbnRzLiR7bmFtZX0uQnJlYWtwb2lu
dERpc2FibGVkYCwKLSAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBkZWJ1Z2dl
ciBkb2VzIG5vdCBwYXVzZSBmb3IgZGlzYWJsZWQgYnJlYWtwb2ludC4iLAotICAgICAgICAgICAg
dGVhcmRvd24sCi0gICAgICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAg
ICAgICAgIGNvbnN0IGRpc2FibGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBhZGRCcmVha3Bv
aW50Rm9yRWxlbWVudElkZW50aWZpZXIoZWxlbWVudElkZW50aWZpZXIsIHR5cGUsIGRpc2FibGVk
KQotICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IFByb21pc2UucmFjZShbYXdhaXRFdmFsdWF0
ZUluUGFnZShleHByZXNzaW9uKSwgcmVqZWN0T25QYXVzZSgpXSkpCi0gICAgICAgICAgICAgICAg
LnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoIlNo
b3VsZCBub3QgcGF1c2UgZm9yIGRpc2FibGVkIGJyZWFrcG9pbnQuIik7Ci0gICAgICAgICAgICAg
ICAgICAgIHJlc29sdmUoKTsKLSAgICAgICAgICAgICAgICB9KQotICAgICAgICAgICAgICAgIC5j
YXRjaChyZWplY3QpOwotICAgICAgICAgICAgfQotICAgICAgICB9KTsKLQotICAgICAgICBzdWl0
ZS5hZGRUZXN0Q2FzZSh7Ci0gICAgICAgICAgICBuYW1lOiBgRE9NQnJlYWtwb2ludHMuJHtuYW1l
fS5EZWJ1Z2dlckRpc2FibGVkYCwKLSAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhh
dCBkZWJ1Z2dlciBkb2VzIG5vdCBwYXVzZSB3aGVuIHRoZSBkZWJ1Z2dlciBpcyBkaXNhYmxlZC4i
LAotICAgICAgICAgICAgdGVhcmRvd24sCi0gICAgICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVj
dCkgewotICAgICAgICAgICAgICAgIGFkZEJyZWFrcG9pbnRGb3JFbGVtZW50SWRlbnRpZmllcihl
bGVtZW50SWRlbnRpZmllciwgdHlwZSkKLSAgICAgICAgICAgICAgICAudGhlbigoKSA9PiBEZWJ1
Z2dlckFnZW50LnNldEJyZWFrcG9pbnRzQWN0aXZlKGZhbHNlKSkKLSAgICAgICAgICAgICAgICAu
dGhlbigoKSA9PiBQcm9taXNlLnJhY2UoW2F3YWl0RXZhbHVhdGVJblBhZ2UoZXhwcmVzc2lvbiks
IHJlamVjdE9uUGF1c2UoKV0pKQotICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IERlYnVnZ2Vy
QWdlbnQuc2V0QnJlYWtwb2ludHNBY3RpdmUodHJ1ZSkpCi0gICAgICAgICAgICAgICAgLnRoZW4o
KCkgPT4gewotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoIlNob3VsZCBu
b3QgcGF1c2UgZm9yIGRpc2FibGVkIGJyZWFrcG9pbnQuIik7Ci0gICAgICAgICAgICAgICAgICAg
IHJlc29sdmUoKTsKLSAgICAgICAgICAgICAgICB9KQotICAgICAgICAgICAgICAgIC5jYXRjaChy
ZWplY3QpOwotICAgICAgICAgICAgfQotICAgICAgICB9KTsKLQotICAgICAgICBzdWl0ZS5hZGRU
ZXN0Q2FzZSh7Ci0gICAgICAgICAgICBuYW1lOiBgRE9NQnJlYWtwb2ludHMuJHtuYW1lfS5SZW1v
dmVCcmVha3BvaW50YCwKLSAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBkZWJ1
Z2dlciBkb2VzIG5vdCBwYXVzZSBmb3IgcmVtb3ZlZCBicmVha3BvaW50LiIsCi0gICAgICAgICAg
ICB0ZWFyZG93biwKLSAgICAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAg
ICAgICAgICAgYWRkQnJlYWtwb2ludEZvckVsZW1lbnRJZGVudGlmaWVyKGVsZW1lbnRJZGVudGlm
aWVyLCB0eXBlKQotICAgICAgICAgICAgICAgIC50aGVuKChldmVudCkgPT4gewotICAgICAgICAg
ICAgICAgICAgICBsZXQgcHJvbWlzZSA9IFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hd2FpdEV2ZW50
KFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudC5ET01CcmVha3BvaW50UmVtb3ZlZCk7Ci0gICAg
ICAgICAgICAgICAgICAgIGxldCBicmVha3BvaW50ID0gZXZlbnQuZGF0YS5icmVha3BvaW50Owot
Ci0gICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJSZW1vdmUgYnJlYWtwb2lu
dC4iKTsKLSAgICAgICAgICAgICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnJlbW92ZURP
TUJyZWFrcG9pbnQoYnJlYWtwb2ludCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9t
aXNlOwotICAgICAgICAgICAgICAgIH0pCi0gICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4gUHJv
bWlzZS5yYWNlKFthd2FpdEV2YWx1YXRlSW5QYWdlKGV4cHJlc3Npb24pLCByZWplY3RPblBhdXNl
KCldKSkKLSAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QucGFzcygiU2hvdWxkIG5vdCBwYXVzZSBmb3IgcmVtb3ZlZCBicmVha3Bv
aW50LiIpOwotICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgICAgICAgICAg
fSkKLSAgICAgICAgICAgICAgICAuY2F0Y2gocmVqZWN0KTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfSk7Ci0gICAgfQorICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNT
dWl0ZSgiRE9NQnJlYWtwb2ludCIpOwogCiAgICAgc3VpdGUuYWRkVGVzdENhc2UoewotICAgICAg
ICBuYW1lOiAiQmFzaWNCcmVha3BvaW50IiwKKyAgICAgICAgbmFtZTogIkRPTUJyZWFrcG9pbnQu
QmFzaWMiLAogICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgYnJlYWtwb2ludCBpcyBp
biBhIHZhbGlkIGluaXRpYWwgc3RhdGUuIiwKLSAgICAgICAgdGVhcmRvd24sCi0gICAgICAgIHRl
c3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICBhZGRCcmVha3BvaW50Rm9yRWxlbWVu
dElkZW50aWZpZXIoc3VidHJlZU1vZGlmaWVkVGVzdElkLCBXSS5ET01CcmVha3BvaW50LlR5cGUu
U3VidHJlZU1vZGlmaWVkKQotICAgICAgICAgICAgLnRoZW4oKGV2ZW50KSA9PiB7Ci0gICAgICAg
ICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBldmVudC5kYXRhLmJyZWFrcG9pbnQ7Ci0gICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZShicmVha3BvaW50LmRpc2FibGVkLCAi
QnJlYWtwb2ludCBzaG91bGQgbm90IGJlIGRpc2FibGVkLiIpOwotICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0VGhhdChicmVha3BvaW50LmRvbU5vZGVJZGVudGlmaWVyLCAiQnJl
YWtwb2ludCBzaG91bGQgaGF2ZSBub2RlIGlkZW50aWZpZXIuIik7CisgICAgICAgIGFzeW5jIHRl
c3QoKSB7CisgICAgICAgICAgICBsZXQgbm9kZSA9IGF3YWl0IEluc3BlY3RvclRlc3QuRE9NQnJl
YWtwb2ludC5hd2FpdFF1ZXJ5U2VsZWN0b3IoIiNiYXNpYy10ZXN0Iik7CiAKLSAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUsICJN
aXNzaW5nIG1haW4gZnJhbWUuIik7Ci0gICAgICAgICAgICAgICAgbGV0IGRvY3VtZW50VVJMID0g
V0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLnVybDsKLSAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV4cGVjdEVxdWFsKGJyZWFrcG9pbnQudXJsLCBkb2N1bWVudFVSTCwgIkJyZWFrcG9p
bnQgVVJMIHNob3VsZCBtYXRjaCBkb2N1bWVudCBVUkwuIik7Ci0gICAgICAgICAgICB9KQotICAg
ICAgICAgICAgLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTsKLSAgICAgICAgfQotICAgIH0pOwotCi0g
ICAgYWRkVGVzdHNGb3JCcmVha3BvaW50VHlwZSh7Ci0gICAgICAgIG5hbWU6ICJTdWJ0cmVlTW9k
aWZpZWQiLAotICAgICAgICBlbGVtZW50SWRlbnRpZmllcjogc3VidHJlZU1vZGlmaWVkVGVzdElk
LAotICAgICAgICB0eXBlOiBXSS5ET01CcmVha3BvaW50LlR5cGUuU3VidHJlZU1vZGlmaWVkLAot
ICAgICAgICBleHByZXNzaW9uOiAic3VidHJlZU1vZGlmaWVkVGVzdCgpIiwKLSAgICAgICAgaW5z
ZXJ0aW9uOiB0cnVlLAotICAgICAgICBzaG91bGRNYXRjaDogdHJ1ZSwKLSAgICB9KTsKLQotICAg
IGFkZFRlc3RzRm9yQnJlYWtwb2ludFR5cGUoewotICAgICAgICBuYW1lOiAiQXR0cmlidXRlTW9k
aWZpZWQiLAotICAgICAgICBlbGVtZW50SWRlbnRpZmllcjogYXR0cmlidXRlTW9kaWZpZWRUZXN0
SWQsCi0gICAgICAgIHR5cGU6IFdJLkRPTUJyZWFrcG9pbnQuVHlwZS5BdHRyaWJ1dGVNb2RpZmll
ZCwKLSAgICAgICAgZXhwcmVzc2lvbjogImF0dHJpYnV0ZU1vZGlmaWVkVGVzdCgpIiwKLSAgICB9
KTsKLQotICAgIGFkZFRlc3RzRm9yQnJlYWtwb2ludFR5cGUoewotICAgICAgICBuYW1lOiAiTm9k
ZVJlbW92ZWRTZWxmIiwKLSAgICAgICAgZWxlbWVudElkZW50aWZpZXI6IG5vZGVSZW1vdmVkRGly
ZWN0VGVzdElkLAotICAgICAgICB0eXBlOiBXSS5ET01CcmVha3BvaW50LlR5cGUuTm9kZVJlbW92
ZWQsCi0gICAgICAgIGV4cHJlc3Npb246ICJub2RlUmVtb3ZlZERpcmVjdFRlc3QoKSIsCi0gICAg
fSk7Ci0KLSAgICBhZGRUZXN0c0ZvckJyZWFrcG9pbnRUeXBlKHsKLSAgICAgICAgbmFtZTogIk5v
ZGVSZW1vdmVkQW5jZXN0b3IiLAotICAgICAgICBlbGVtZW50SWRlbnRpZmllcjogbm9kZVJlbW92
ZWRBbmNlc3RvclRlc3RJZCwKLSAgICAgICAgdHlwZTogV0kuRE9NQnJlYWtwb2ludC5UeXBlLk5v
ZGVSZW1vdmVkLAotICAgICAgICBleHByZXNzaW9uOiAibm9kZVJlbW92ZWRBbmNlc3RvclRlc3Qo
KSIsCi0gICAgICAgIHNob3VsZE1hdGNoOiB0cnVlLAorICAgICAgICAgICAgbGV0IGJyZWFrcG9p
bnQgPSBhd2FpdCBJbnNwZWN0b3JUZXN0LkRPTUJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludChu
b2RlLCBXSS5ET01CcmVha3BvaW50LlR5cGUuU3VidHJlZU1vZGlmaWVkKTsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0RmFsc2UoYnJlYWtwb2ludC5kaXNhYmxlZCwgIkJyZWFrcG9p
bnQgc2hvdWxkIG5vdCBiZSBkaXNhYmxlZC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0RXF1YWwoYnJlYWtwb2ludC5kb21Ob2RlLCBub2RlLCAiQnJlYWtwb2ludCBzaG91bGQg
aGF2ZSBub2RlIGlkZW50aWZpZXIuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVj
dEVxdWFsKGJyZWFrcG9pbnQudXJsLCBXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUudXJsLCAi
QnJlYWtwb2ludCBVUkwgc2hvdWxkIG1hdGNoIGRvY3VtZW50IFVSTC4iKTsKKyAgICAgICAgfSwK
KyAgICAgICAgdGVhcmRvd246IEluc3BlY3RvclRlc3QuRE9NQnJlYWtwb2ludC50ZWFyZG93biwK
ICAgICB9KTsKIAogICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKLSAgICAgICAgbmFtZTogIlJlbW92
ZUFsbEJyZWFrcG9pbnRzRm9yTm9kZSIsCisgICAgICAgIG5hbWU6ICJET01CcmVha3BvaW50LlJl
bW92ZUFsbEJyZWFrcG9pbnRzRm9yTm9kZSIsCiAgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sg
dGhhdCBkZWJ1Z2dlciBkb2VzIG5vdCBwYXVzZSBmb3IgcmVtb3ZlZCBicmVha3BvaW50cyBvbiBu
b2RlLiIsCi0gICAgICAgIHRlYXJkb3duLAotICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkg
ewotICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnRUeXBlcyA9IE9iamVjdC52YWx1ZXMoV0kuRE9N
QnJlYWtwb2ludC5UeXBlKTsKLSAgICAgICAgICAgIGxldCBicmVha3BvaW50UHJvbWlzZXMgPSBi
cmVha3BvaW50VHlwZXMubWFwKHR5cGUgPT4gYWRkQnJlYWtwb2ludEZvckVsZW1lbnRJZGVudGlm
aWVyKG11bHRpcGxlQnJlYWtwb2ludHNUZXN0SWQsIHR5cGUpKTsKKyAgICAgICAgYXN5bmMgdGVz
dCgpIHsKKyAgICAgICAgICAgIGNvbnN0IHR5cGVzID0gT2JqZWN0LnZhbHVlcyhXSS5ET01CcmVh
a3BvaW50LlR5cGUpOwogCi0gICAgICAgICAgICBQcm9taXNlLmFsbChicmVha3BvaW50UHJvbWlz
ZXMpCi0gICAgICAgICAgICAudGhlbigodmFsdWVzKSA9PiB7Ci0gICAgICAgICAgICAgICAgbGV0
IGJyZWFrcG9pbnRzID0gdmFsdWVzLm1hcChldmVudCA9PiBldmVudC5kYXRhLmJyZWFrcG9pbnQp
OwotICAgICAgICAgICAgICAgIGlmICghYnJlYWtwb2ludHMubGVuZ3RoKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZmFpbCgiTm8gYnJlYWtwb2ludHMgYWRkZWQuIik7Ci0g
ICAgICAgICAgICAgICAgICAgIHJlamVjdCgpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgbGV0IG5vZGUgPSBhd2FpdCBJbnNwZWN0
b3JUZXN0LkRPTUJyZWFrcG9pbnQuYXdhaXRRdWVyeVNlbGVjdG9yKCIjcmVtb3ZlLWFsbC1icmVh
a3BvaW50cy1mb3Itbm9kZS10ZXN0Iik7CiAKLSAgICAgICAgICAgICAgICBsZXQgbm9kZSA9IFdJ
LmRvbU1hbmFnZXIubm9kZUZvcklkKGJyZWFrcG9pbnRzWzBdLmRvbU5vZGVJZGVudGlmaWVyKTsK
LSAgICAgICAgICAgICAgICBpZiAoIW5vZGUpIHsKLSAgICAgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5mYWlsKCJObyBET00gbm9kZSBhc3NvY2lhdGVkIHdpdGggYnJlYWtwb2ludC4iKTsK
LSAgICAgICAgICAgICAgICAgICAgcmVqZWN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBsZXQgYnJlYWtwb2ludHNCZWZvcmUg
PSBhd2FpdCBQcm9taXNlLmFsbCh0eXBlcy5tYXAoKHR5cGUpID0+IEluc3BlY3RvclRlc3QuRE9N
QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KG5vZGUsIHR5cGUpKSk7CisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGJyZWFrcG9pbnRzQmVmb3JlLmxlbmd0aCwgdHlwZXMu
bGVuZ3RoLCBgU2hvdWxkIGhhdmUgJHt0eXBlcy5sZW5ndGh9IGJyZWFrcG9pbnRzLmApOwogCi0g
ICAgICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnRzUmVtb3ZlZCA9IDA7CisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmxvZygiUmVtb3ZpbmcgYWxsIGJyZWFrcG9pbnRzIGZvciAjbXVsdGlwbGUt
YnJlYWtwb2ludHMtdGVzdC4uLiIpOworICAgICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2Vy
LnJlbW92ZURPTUJyZWFrcG9pbnRzRm9yTm9kZShub2RlKTsKIAotICAgICAgICAgICAgICAgIGZ1
bmN0aW9uIGJyZWFrcG9pbnRSZW1vdmVkKCkgewotICAgICAgICAgICAgICAgICAgICBpZiAoKyti
cmVha3BvaW50c1JlbW92ZWQgPT09IGJyZWFrcG9pbnRzLmxlbmd0aCkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKGBSZW1vdmVkICR7YnJlYWtwb2ludHNSZW1v
dmVkfSBicmVha3BvaW50cy5gKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGVC
cmVha3BvaW50cyA9IFdJLmRvbURlYnVnZ2VyTWFuYWdlci5kb21CcmVha3BvaW50c0Zvck5vZGUo
bm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQo
IW5vZGVCcmVha3BvaW50cy5sZW5ndGgsICJET00gbm9kZSBzaG91bGQgaGF2ZSBubyBicmVha3Bv
aW50cy4iKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2Vy
LnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkRPTUJyZWFr
cG9pbnRSZW1vdmVkLCBicmVha3BvaW50UmVtb3ZlZCk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICByZXNvbHZlKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihX
SS5ET01EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuRE9NQnJlYWtwb2ludFJlbW92ZWQsIGJyZWFrcG9p
bnRSZW1vdmVkKTsKLSAgICAgICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIucmVtb3Zl
RE9NQnJlYWtwb2ludHNGb3JOb2RlKG5vZGUpOwotICAgICAgICAgICAgfSkKLSAgICAgICAgICAg
IC50aGVuKHJlc29sdmUsIHJlamVjdCk7Ci0gICAgICAgIH0KKyAgICAgICAgICAgIGxldCBicmVh
a3BvaW50c0FmdGVyID0gV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmRvbUJyZWFrcG9pbnRzRm9yTm9k
ZShub2RlKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoYnJlYWtwb2lu
dHNBZnRlci5sZW5ndGgsIDAsICJTaG91bGQgcmVtb3ZlIGFsbCBicmVha3BvaW50cy4iKTsKKyAg
ICAgICAgfSwKKyAgICAgICAgdGVhcmRvd246IEluc3BlY3RvclRlc3QuRE9NQnJlYWtwb2ludC50
ZWFyZG93biwKICAgICB9KTsKIAogICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKLSAgICAgICAgbmFt
ZTogIlNldEJyZWFrcG9pbnRXaXRoSW52YWxpZE5vZGVJZCIsCisgICAgICAgIG5hbWU6ICJET01C
cmVha3BvaW50LlNldEJyZWFrcG9pbnRXaXRoSW52YWxpZE5vZGVJZCIsCiAgICAgICAgIGRlc2Ny
aXB0aW9uOiAiQ2hlY2sgdGhhdCBzZXR0aW5nIGEgYnJlYWtwb2ludCBmb3IgYSBub25leGlzdGFu
dCBub2RlIHJldHVybnMgYW4gZXJyb3IuIiwKLSAgICAgICAgdGVhcmRvd24sCi0gICAgICAgIHRl
c3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiQXR0
ZW1wdGluZyB0byBzZXQgYnJlYWtwb2ludC4iKTsKLQotICAgICAgICAgICAgRE9NRGVidWdnZXJB
Z2VudC5zZXRET01CcmVha3BvaW50KDAsIFdJLkRPTUJyZWFrcG9pbnQuVHlwZS5TdWJ0cmVlTW9k
aWZpZWQsIChlcnJvcikgPT4gewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJQ
cm90b2NvbCByZXN1bHQ6ICIgKyBlcnJvcik7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RUaGF0KGVycm9yLCAiUHJvdG9jb2wgc2hvdWxkIHJldHVybiBhbiBlcnJvci4iKQot
ICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJTZXR0aW5nIGJyZWFrcG9pbnQuLi4iKTsKKyAgICAg
ICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QuZXhwZWN0RXhjZXB0aW9uKGFzeW5jICgpID0+IHsK
KyAgICAgICAgICAgICAgICBhd2FpdCBET01EZWJ1Z2dlckFnZW50LnNldERPTUJyZWFrcG9pbnQo
MCwgV0kuRE9NQnJlYWtwb2ludC5UeXBlLlN1YnRyZWVNb2RpZmllZCk7CiAgICAgICAgICAgICB9
KTsKLSAgICAgICAgfQorICAgICAgICB9LAogICAgIH0pOwogCiAgICAgc3VpdGUuYWRkVGVzdENh
c2UoewotICAgICAgICBuYW1lOiAiU2V0QnJlYWtwb2ludFdpdGhJbnZhbGlkVHlwZSIsCisgICAg
ICAgIG5hbWU6ICJET01CcmVha3BvaW50LlNldEJyZWFrcG9pbnRXaXRoSW52YWxpZFR5cGUiLAog
ICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgc2V0dGluZyBhIGJyZWFrcG9pbnQgd2l0
aCBhbiBpbnZhbGlkIHR5cGUgcmV0dXJucyBhbiBlcnJvci4iLAotICAgICAgICB0ZWFyZG93biwK
LSAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIGF3YWl0UXVlcnlT
ZWxlY3RvcigiYm9keSIpCi0gICAgICAgICAgICAudGhlbigobm9kZSkgPT4gewotICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJBdHRlbXB0aW5nIHRvIHNldCBicmVha3BvaW50LiIp
OworICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IG5vZGUgPSBhd2FpdCBJ
bnNwZWN0b3JUZXN0LkRPTUJyZWFrcG9pbnQuYXdhaXRRdWVyeVNlbGVjdG9yKCJib2R5Iik7CiAK
LSAgICAgICAgICAgICAgICBET01EZWJ1Z2dlckFnZW50LnNldERPTUJyZWFrcG9pbnQobm9kZS5p
ZCwgImN1c3RvbS1icmVha3BvaW50LXR5cGUiLCAoZXJyb3IpID0+IHsKLSAgICAgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlByb3RvY29sIHJlc3VsdDogIiArIGVycm9yKTsKLSAg
ICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGVycm9yLCAiUHJvdG9j
b2wgc2hvdWxkIHJldHVybiBhbiBlcnJvci4iKQotICAgICAgICAgICAgICAgICAgICByZXNvbHZl
KCk7Ci0gICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygi
U2V0dGluZyBicmVha3BvaW50Li4uIik7CisgICAgICAgICAgICBhd2FpdCBJbnNwZWN0b3JUZXN0
LmV4cGVjdEV4Y2VwdGlvbihhc3luYyAoKSA9PiB7CisgICAgICAgICAgICAgICAgYXdhaXQgRE9N
RGVidWdnZXJBZ2VudC5zZXRET01CcmVha3BvaW50KG5vZGUuaWQsICJjdXN0b20tYnJlYWtwb2lu
dC10eXBlIik7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgfQorICAgICAgICB9LAogICAgIH0p
OwogCiAgICAgc3VpdGUuYWRkVGVzdENhc2UoewotICAgICAgICBuYW1lOiAiUmVtb3ZlQnJlYWtw
b2ludFdpdGhJbnZhbGlkTm9kZUlkIiwKKyAgICAgICAgbmFtZTogIkRPTUJyZWFrcG9pbnQuUmVt
b3ZlQnJlYWtwb2ludFdpdGhJbnZhbGlkTm9kZUlkIiwKICAgICAgICAgZGVzY3JpcHRpb246ICJD
aGVjayB0aGF0IHJlbW92aW5nIGEgYnJlYWtwb2ludCBmb3IgYSBub25leGlzdGFudCBub2RlIHJl
dHVybnMgYW4gZXJyb3IuIiwKLSAgICAgICAgdGVhcmRvd24sCi0gICAgICAgIHRlc3QocmVzb2x2
ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiQXR0ZW1wdGluZyB0
byByZW1vdmUgYnJlYWtwb2ludC4iKTsKLQotICAgICAgICAgICAgRE9NRGVidWdnZXJBZ2VudC5y
ZW1vdmVET01CcmVha3BvaW50KDAsIFdJLkRPTUJyZWFrcG9pbnQuVHlwZS5TdWJ0cmVlTW9kaWZp
ZWQsIChlcnJvcikgPT4gewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJQcm90
b2NvbCByZXN1bHQ6ICIgKyBlcnJvcik7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RUaGF0KGVycm9yLCAiUHJvdG9jb2wgc2hvdWxkIHJldHVybiBhbiBlcnJvci4iKQotICAg
ICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QubG9nKCJSZW1vdmluZyBicmVha3BvaW50Li4uIik7CisgICAgICAg
ICAgICBhd2FpdCBJbnNwZWN0b3JUZXN0LmV4cGVjdEV4Y2VwdGlvbihhc3luYyAoKSA9PiB7Cisg
ICAgICAgICAgICAgICAgYXdhaXQgRE9NRGVidWdnZXJBZ2VudC5yZW1vdmVET01CcmVha3BvaW50
KDAsIFdJLkRPTUJyZWFrcG9pbnQuVHlwZS5TdWJ0cmVlTW9kaWZpZWQpOwogICAgICAgICAgICAg
fSk7Ci0gICAgICAgIH0KKyAgICAgICAgfSwKICAgICB9KTsKIAogICAgIHN1aXRlLmFkZFRlc3RD
YXNlKHsKLSAgICAgICAgbmFtZTogIlJlbW92ZUJyZWFrcG9pbnRXaXRoSW52YWxpZFR5cGUiLAor
ICAgICAgICBuYW1lOiAiRE9NQnJlYWtwb2ludC5SZW1vdmVCcmVha3BvaW50V2l0aEludmFsaWRU
eXBlIiwKICAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IHJlbW92aW5nIGEgYnJlYWtw
b2ludCB3aXRoIGFuIGludmFsaWQgdHlwZSByZXR1cm5zIGFuIGVycm9yLiIsCi0gICAgICAgIHRl
YXJkb3duLAotICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAgYXdh
aXRRdWVyeVNlbGVjdG9yKCJib2R5IikKLSAgICAgICAgICAgIC50aGVuKChub2RlKSA9PiB7Ci0g
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkF0dGVtcHRpbmcgdG8gcmVtb3ZlIGJy
ZWFrcG9pbnQuIik7CisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgbm9k
ZSA9IGF3YWl0IEluc3BlY3RvclRlc3QuRE9NQnJlYWtwb2ludC5hd2FpdFF1ZXJ5U2VsZWN0b3Io
ImJvZHkiKTsKIAotICAgICAgICAgICAgICAgIERPTURlYnVnZ2VyQWdlbnQucmVtb3ZlRE9NQnJl
YWtwb2ludChub2RlLmlkLCAiY3VzdG9tLWJyZWFrcG9pbnQtdHlwZSIsIChlcnJvcikgPT4gewot
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUHJvdG9jb2wgcmVzdWx0OiAi
ICsgZXJyb3IpOwotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQo
ZXJyb3IsICJQcm90b2NvbCBzaG91bGQgcmV0dXJuIGFuIGVycm9yLiIpCi0gICAgICAgICAgICAg
ICAgICAgIHJlc29sdmUoKTsKLSAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QubG9nKCJSZW1vdmluZyBicmVha3BvaW50Li4uIik7CisgICAgICAgICAgICBhd2Fp
dCBJbnNwZWN0b3JUZXN0LmV4cGVjdEV4Y2VwdGlvbihhc3luYyAoKSA9PiB7CisgICAgICAgICAg
ICAgICAgYXdhaXQgRE9NRGVidWdnZXJBZ2VudC5yZW1vdmVET01CcmVha3BvaW50KG5vZGUuaWQs
ICJjdXN0b20tYnJlYWtwb2ludC10eXBlIik7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgfQor
ICAgICAgICB9LAogICAgIH0pOwogCiAgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7
CkBAIC0zODQsMTEgKzk4LDggQEAgZnVuY3Rpb24gdGVzdCgpCiA8Ym9keSBvbmxvYWQ9InJ1blRl
c3QoKSI+CiA8cD5UZXN0cyBmb3IgRE9NIGJyZWFrcG9pbnRzLjwvcD4KIDxkaXYgaWQ9InRlc3Qt
Y29udGFpbmVyIiBzdHlsZT0iZGlzcGxheTogbm9uZSI+Ci0gICAgPGRpdiBpZD0ic3VidHJlZS1t
b2RpZmllZC10ZXN0Ij48L2Rpdj4KLSAgICA8ZGl2IGlkPSJhdHRyaWJ1dGUtbW9kaWZpZWQtdGVz
dCI+PC9kaXY+Ci0gICAgPGRpdiBpZD0ibm9kZS1yZW1vdmVkLWRpcmVjdC10ZXN0Ij48L2Rpdj4K
LSAgICA8ZGl2PjxkaXYgaWQ9Im5vZGUtcmVtb3ZlZC1hbmNlc3Rvci10ZXN0Ij48L2Rpdj48L2Rp
dj4KLSAgICA8ZGl2IGlkPSJtdWx0aXBsZS1icmVha3BvaW50cy10ZXN0Ij48L2Rpdj4KKyAgICA8
ZGl2IGlkPSJiYXNpYy10ZXN0Ij48L2Rpdj4KKyAgICA8ZGl2IGlkPSJyZW1vdmUtYWxsLWJyZWFr
cG9pbnRzLWZvci1ub2RlLXRlc3QiPjwvZGl2PgogPC9kaXY+CiA8L2JvZHk+CiA8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL3Jlc291cmNlcy9k
b20tYnJlYWtwb2ludC11dGlsaXRpZXMuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRl
YnVnZ2VyL3Jlc291cmNlcy9kb20tYnJlYWtwb2ludC11dGlsaXRpZXMuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45NWI0M2E5NTFiOGIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL3Jlc291cmNlcy9kb20tYnJl
YWtwb2ludC11dGlsaXRpZXMuanMKQEAgLTAsMCArMSw1OCBAQAorVGVzdFBhZ2UucmVnaXN0ZXJJ
bml0aWFsaXplcigoKSA9PiB7CisgICAgSW5zcGVjdG9yVGVzdC5ET01CcmVha3BvaW50ID0ge307
CisKKyAgICBJbnNwZWN0b3JUZXN0LkRPTUJyZWFrcG9pbnQudGVhcmRvd24gPSBmdW5jdGlvbihy
ZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgZm9yIChsZXQgYnJlYWtwb2ludCBvZiBXSS5kb21E
ZWJ1Z2dlck1hbmFnZXIuZG9tQnJlYWtwb2ludHMpCisgICAgICAgICAgICBicmVha3BvaW50LnJl
bW92ZSgpOworCisgICAgICAgIHJlc29sdmUoKTsKKyAgICB9OworCisgICAgSW5zcGVjdG9yVGVz
dC5ET01CcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQgPSBmdW5jdGlvbihkb21Ob2RlLCB0eXBl
KSB7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3JUZXN0LkRPTUJyZWFrcG9pbnQuYWRkQnJlYWtw
b2ludChuZXcgV0kuRE9NQnJlYWtwb2ludChkb21Ob2RlLCB0eXBlKSk7CisgICAgfTsKKworICAg
IEluc3BlY3RvclRlc3QuRE9NQnJlYWtwb2ludC5hZGRCcmVha3BvaW50ID0gZnVuY3Rpb24oYnJl
YWtwb2ludCkgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgQWRkaW5nICIke2JyZWFrcG9p
bnQudHlwZX06JHticmVha3BvaW50LnBhdGh9IiBET00gQnJlYWtwb2ludC4uLmApOworCisgICAg
ICAgIGJyZWFrcG9pbnQuZGlzYWJsZWQgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9t
aXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFu
YWdlci5hd2FpdEV2ZW50KFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudC5ET01CcmVha3BvaW50
QWRkZWQpCisgICAgICAgICAgICAudGhlbigoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydChldmVudC5kYXRhLmJyZWFrcG9pbnQgPT09IGJyZWFrcG9pbnQs
ICJBZGRlZCBCcmVha3BvaW50IHNob3VsZCBiZSBleHBlY3RlZCBvYmplY3QuIik7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoIWV2ZW50LmRhdGEuYnJlYWtwb2ludC5kaXNh
YmxlZCwgIkJyZWFrcG9pbnQgc2hvdWxkIG5vdCBiZSBkaXNhYmxlZCBpbml0aWFsbHkuIik7Cisg
ICAgICAgICAgICAgICAgcmVzb2x2ZShicmVha3BvaW50KTsKKyAgICAgICAgICAgIH0pOworCisg
ICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWRkRE9NQnJlYWtwb2ludChicmVha3Bv
aW50KTsKKyAgICAgICAgfSk7CisgICAgfTsKKworICAgIEluc3BlY3RvclRlc3QuRE9NQnJlYWtw
b2ludC5hd2FpdFF1ZXJ5U2VsZWN0b3IgPSBmdW5jdGlvbihzZWxlY3RvcikgeworICAgICAgICBy
ZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAgV0ku
ZG9tTWFuYWdlci5yZXF1ZXN0RG9jdW1lbnQoKGRvY3VtZW50Tm9kZSkgPT4geworICAgICAgICAg
ICAgICAgIGlmICghZG9jdW1lbnROb2RlKSB7CisgICAgICAgICAgICAgICAgICAgIHJlamVjdCgp
OworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgZG9jdW1lbnROb2RlLnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IsIChub2RlSWQp
ID0+IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlSWQpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZmFpbCgiU2VsZWN0b3IgcmV0dXJuZWQgbm8gbm9kZXMu
Iiwgc2VsZWN0b3IpOworICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgICAgICBsZXQgbm9kZSA9IFdJLmRvbU1hbmFnZXIubm9kZUZvcklkKG5vZGVJZCk7
CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUsICJNaXNzaW5n
IG5vZGUgZm9yIGlkLiIsIG5vZGVJZCk7CisgICAgICAgICAgICAgICAgICAgIGlmICghbm9kZSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAg
ICByZXNvbHZlKG5vZGUpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgIH0pOworICAgIH07Cit9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDU3OGM5
Zjg0NWYxNy4uNzljZmQ2YzI5YTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAyMC0wOS0wNCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogYWxsb3cgRE9NIGJyZWFrcG9pbnRzIHRvIGJlIGNvbmZp
Z3VyZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
NTc5NQorCisgICAgICAgIFJldmlld2VkIGJ5IEJyaWFuIEJ1cmcuCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvcHJvdG9jb2wvRE9NRGVidWdnZXIuanNvbjoKKyAgICAgICAgQWRkIGFuIGBvcHRpb25z
YCBwYXJhbWV0ZXIgdG8gYERPTURlYnVnZ2VyLnNldERPTUJyZWFrcG9pbnRgIHRvIGFsbG93IGNv
bmZpZ3VyYXRpb24uCisKIDIwMjAtMDktMDQgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hA
Z21haWwuY29tPgogCiAgICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoIHNob3VsZCBhbHdheXMg
cGVyZm9ybSBbW1NldF1dIGluIHN0cmljdCBtb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0RPTURlYnVnZ2VyLmpzb24gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0RPTURlYnVnZ2VyLmpzb24KaW5kZXggMDQz
ZjliZjU2ODU5Li45NzFkNWRlMjA0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcHJvdG9jb2wvRE9NRGVidWdnZXIuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0RPTURlYnVnZ2VyLmpzb24KQEAgLTIzLDcgKzIz
LDggQEAKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTZXRzIGJyZWFrcG9pbnQgb24gcGFy
dGljdWxhciBvcGVyYXRpb24gd2l0aCBET00uIiwKICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjog
WwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibm9kZUlkIiwgIiRyZWYiOiAiRE9NLk5vZGVJ
ZCIsICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIG9mIHRoZSBub2RlIHRvIHNldCBicmVha3Bv
aW50IG9uLiIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogInR5cGUiLCAiJHJlZiI6ICJE
T01CcmVha3BvaW50VHlwZSIsICJkZXNjcmlwdGlvbiI6ICJUeXBlIG9mIHRoZSBvcGVyYXRpb24g
dG8gc3RvcCB1cG9uLiIgfQorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidHlwZSIsICIkcmVm
IjogIkRPTUJyZWFrcG9pbnRUeXBlIiwgImRlc2NyaXB0aW9uIjogIlR5cGUgb2YgdGhlIG9wZXJh
dGlvbiB0byBzdG9wIHVwb24uIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAib3B0aW9u
cyIsICIkcmVmIjogIkRlYnVnZ2VyLkJyZWFrcG9pbnRPcHRpb25zIiwgIm9wdGlvbmFsIjogdHJ1
ZSwgImRlc2NyaXB0aW9uIjogIk9wdGlvbnMgdG8gYXBwbHkgdG8gdGhpcyBicmVha3BvaW50IHRv
IG1vZGlmeSBpdHMgYmVoYXZpb3IuIiB9CiAgICAgICAgICAgICBdCiAgICAgICAgIH0sCiAgICAg
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCBhNzhmYzEyODY2ODkuLjc4YmU3OTc2NzQ3OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDUyIEBACisyMDIwLTA5LTA0ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFw
cGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBhbGxvdyBET00gYnJlYWtwb2ludHMg
dG8gYmUgY29uZmlndXJlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE1Nzk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJpYW4gQnVyZy4KKworICAg
ICAgICBUZXN0czogaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9hdHRyaWJ1dGUtbW9kaWZpZWQtc3R5
bGUuaHRtbAorICAgICAgICAgICAgICAgaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9kb20tYnJlYWtw
b2ludHMuaHRtbAorICAgICAgICAgICAgICAgaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9kb20tYnJl
YWtwb2ludC1hdHRyaWJ1dGUtbW9kaWZpZWQuaHRtbAorICAgICAgICAgICAgICAgaW5zcGVjdG9y
L2RvbS1kZWJ1Z2dlci9kb20tYnJlYWtwb2ludC1ub2RlLXJlbW92ZWQtYW5jZXN0b3IuaHRtbAor
ICAgICAgICAgICAgICAgaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9kb20tYnJlYWtwb2ludC1ub2Rl
LXJlbW92ZWQtZGlyZWN0Lmh0bWwKKyAgICAgICAgICAgICAgIGluc3BlY3Rvci9kb20tZGVidWdn
ZXIvZG9tLWJyZWFrcG9pbnQtc3VidHJlZS1tb2RpZmllZC1hZGQuaHRtbAorICAgICAgICAgICAg
ICAgaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9kb20tYnJlYWtwb2ludC1zdWJ0cmVlLW1vZGlmaWVk
LXJlbW92ZS5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURl
YnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURl
YnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURPTURlYnVnZ2VyQWdlbnQ6
OmRpc2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURPTURlYnVnZ2VyQWdlbnQ6OnNldERP
TUJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURPTURlYnVnZ2VyQWdlbnQ6OnJl
bW92ZURPTUJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURPTURlYnVnZ2VyQWdl
bnQ6OmZyYW1lRG9jdW1lbnRVcGRhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OmNhbGN1bGF0ZURp
c3RhbmNlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlRE9NRGVidWdnZXJBZ2VudDo6
d2lsbEluc2VydERPTU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURPTURlYnVnZ2VyQWdl
bnQ6OndpbGxSZW1vdmVET01Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VET01EZWJ1Z2dl
ckFnZW50OjpkaWRSZW1vdmVET01Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VET01EZWJ1
Z2dlckFnZW50Ojp3aWxsTW9kaWZ5RE9NQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRE9N
RGVidWdnZXJBZ2VudDo6d2lsbEludmFsaWRhdGVTdHlsZUF0dHIpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZURPTURlYnVnZ2VyQWdlbnQ6OmJ1aWxkUGF1c2VEYXRhRm9yRE9NQnJlYWtwb2ludCk6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6ZG9tVHlwZUZvck5hbWUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6ZG9tVHlwZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
UGFnZURPTURlYnVnZ2VyQWdlbnQ6OmRpZEluc2VydERPTU5vZGUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UGFnZURPTURlYnVnZ2VyQWdlbnQ6OmRlc2NyaXB0aW9uRm9yRE9NRXZlbnQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGFnZURPTURlYnVnZ2VyQWdlbnQ6OnVwZGF0
ZVN1YnRyZWVCcmVha3BvaW50cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlRE9N
RGVidWdnZXJBZ2VudDo6aGFzQnJlYWtwb2ludCk6IERlbGV0ZWQuCisgICAgICAgIFJlcGxhY2Ug
dGhlIGJpdG1hc2sgd2l0aCBzZXBhcmF0ZSBgSGFzaE1hcGAgZm9yIGVhY2ggdHlwZSBvZiBET00g
YnJlYWtwb2ludC4gSW5zdGVhZCBvZgorICAgICAgICBwcm9wYWdhdGluZyB0aGUgYFN1YnRyZWVN
b2RpZmllZGAgYml0IHRvIHRoZSBlbnRpcmUgc3VidHJlZSB3aGVuIG5ldyBub2RlcyBhcmUgYWRk
ZWQgKHdoaWNoCisgICAgICAgIG1lYW5zIHRoZXJlJ3MgYW4gZW50cnkgaW4gdGhlIGBIYXNoTWFw
YCBmb3IgZXZlcnkgZGVzY2VuZGFudCkgYW5kIHJlbW92aW5nIHRoZW0gYWxsIHdoZW4KKyAgICAg
ICAgdGhhdCBub2RlIGlzIHJlbW92ZWQsIG9ubHkga2VlcCBub2RlcyBpbiBlYWNoIGBIYXNoTWFw
YCBpZiBpdCBkaXJlY3RseSBoYXMgYSBET00gYnJlYWtwb2ludC4KKyAgICAgICAgV2FsayB1cCB0
aGUgYW5jZXN0b3IgY2hhaW4gd2hlbiBub2RlcyBhcmUgYWRkZWQvcmVtb3ZlZCB0byBkZXRlcm1p
bmUgaWYgdGhlcmUgaXMgYSBuZWFyYnkKKyAgICAgICAgYnJlYWtwb2ludCB0byBwYXVzZS4gV2hl
biBhIG5vZGUgaXMgcmVtb3ZlZCwgcmVtb3ZlIGFueSBleGlzdGluZyBET00gYnJlYWtwb2ludCBp
ZiBpdCdzCisgICAgICAgIG93bmVyIGlzIHBhcnQgb2YgdGhlIHJlbW92ZWQgc3VidHJlZS4KKwor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRPTURlYnVnZ2VyQWdlbnQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJET01EZWJ1Z2dlckFn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckRPTURlYnVnZ2VyQWdlbnQ6OnNldERP
TUJyZWFrcG9pbnQpOgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZEluc2VydERPTU5vZGVJbXBsKToKKwogMjAyMC0wOS0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgogCiAgICAgICAgIEltcHJvdmUgaW50ZXJwb2xhdGlvbiBhbGdvcml0aG0gaW4g
T3NjaWxsYXRvck5vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggMGEwODE4MDc5OGZjLi4xZDY1YTQ1Mjc1OWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uY3BwCkBAIC0xNjAsOCArMTYwLDYgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZEluc2VydERPTU5vZGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW0K
IHsKICAgICBpZiAoYXV0byogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3Rl
bnRET01BZ2VudCgpKQogICAgICAgICBkb21BZ2VudC0+ZGlkSW5zZXJ0RE9NTm9kZShub2RlKTsK
LSAgICBpZiAoYXV0byogcGFnZURPTURlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRz
LmVuYWJsZWRQYWdlRE9NRGVidWdnZXJBZ2VudCgpKQotICAgICAgICBwYWdlRE9NRGVidWdnZXJB
Z2VudC0+ZGlkSW5zZXJ0RE9NTm9kZShub2RlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxSZW1vdmVET01Ob2RlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0
cnVtZW50aW5nQWdlbnRzLCBOb2RlJiBub2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5jcHAKaW5k
ZXggN2Y0ODc1NGFmMTZhLi43YzVmZmE0ZTM4M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFnZW50LmNw
cApAQCAtMzEsNDUgKzMxLDEyIEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9NQWdlbnQuaCIKICNp
bmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgorI2luY2x1
ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CiAKLWVudW0gRE9NQnJlYWtwb2ludFR5cGUgewotICAgIFN1YnRyZWVN
b2RpZmllZCwKLSAgICBBdHRyaWJ1dGVNb2RpZmllZCwKLSAgICBOb2RlUmVtb3ZlZCwKLX07Ci0K
LWNvbnN0IHVpbnQzMl90IGluaGVyaXRhYmxlRE9NQnJlYWtwb2ludFR5cGVzTWFzayA9ICgxIDw8
IFN1YnRyZWVNb2RpZmllZCk7Ci1jb25zdCBpbnQgZG9tQnJlYWtwb2ludERlcml2ZWRUeXBlU2hp
ZnQgPSAxNjsKLQotc3RhdGljIGludCBkb21UeXBlRm9yTmFtZShFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGNvbnN0IFN0cmluZyYgdHlwZVN0cmluZykKLXsKLSAgICBpZiAodHlwZVN0cmluZyA9
PSAic3VidHJlZS1tb2RpZmllZCIpCi0gICAgICAgIHJldHVybiBTdWJ0cmVlTW9kaWZpZWQ7Ci0g
ICAgaWYgKHR5cGVTdHJpbmcgPT0gImF0dHJpYnV0ZS1tb2RpZmllZCIpCi0gICAgICAgIHJldHVy
biBBdHRyaWJ1dGVNb2RpZmllZDsKLSAgICBpZiAodHlwZVN0cmluZyA9PSAibm9kZS1yZW1vdmVk
IikKLSAgICAgICAgcmV0dXJuIE5vZGVSZW1vdmVkOwotICAgIGVycm9yU3RyaW5nID0gbWFrZVN0
cmluZygiVW5rbm93biBET00gYnJlYWtwb2ludCB0eXBlOiAiLCB0eXBlU3RyaW5nKTsKLSAgICBy
ZXR1cm4gLTE7Ci19Ci0KLXN0YXRpYyBTdHJpbmcgZG9tVHlwZU5hbWUoaW50IHR5cGUpCi17Ci0g
ICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBTdWJ0cmVlTW9kaWZpZWQ6Ci0gICAgICAgIHJl
dHVybiAic3VidHJlZS1tb2RpZmllZCJfczsKLSAgICBjYXNlIEF0dHJpYnV0ZU1vZGlmaWVkOgot
ICAgICAgICByZXR1cm4gImF0dHJpYnV0ZS1tb2RpZmllZCJfczsKLSAgICBjYXNlIE5vZGVSZW1v
dmVkOgotICAgICAgICByZXR1cm4gIm5vZGUtcmVtb3ZlZCJfczsKLSAgICB9Ci0gICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7Ci19Ci0KIFBhZ2VET01EZWJ1Z2dlckFnZW50OjpQYWdlRE9NRGVidWdn
ZXJBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0LCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
KiBkZWJ1Z2dlckFnZW50KQogICAgIDogSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudChjb250ZXh0
LCBkZWJ1Z2dlckFnZW50KQogewpAQCAtOTMsMTQgKzYwLDE2IEBAIHZvaWQgUGFnZURPTURlYnVn
Z2VyQWdlbnQ6OmRpc2FibGUoKQogewogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRFbmFi
bGVkUGFnZURPTURlYnVnZ2VyQWdlbnQobnVsbHB0cik7CiAKLSAgICBtX2RvbUJyZWFrcG9pbnRz
LmNsZWFyKCk7CisgICAgbV9kb21TdWJ0cmVlTW9kaWZpZWRCcmVha3BvaW50cy5jbGVhcigpOwor
ICAgIG1fZG9tQXR0cmlidXRlTW9kaWZpZWRCcmVha3BvaW50cy5jbGVhcigpOworICAgIG1fZG9t
Tm9kZVJlbW92ZWRCcmVha3BvaW50cy5jbGVhcigpOwogCiAgICAgbV9wYXVzZU9uQWxsQW5pbWF0
aW9uRnJhbWVzQnJlYWtwb2ludCA9IG51bGxwdHI7CiAKICAgICBJbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50OjpkaXNhYmxlKCk7CiB9CiAKLXZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6OnNldERP
TUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBT
dHJpbmcmIHR5cGVTdHJpbmcpCit2b2lkIFBhZ2VET01EZWJ1Z2dlckFnZW50OjpzZXRET01CcmVh
a3BvaW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5n
JiB0eXBlU3RyaW5nLCBjb25zdCBKU09OOjpPYmplY3QqIG9wdGlvbnNQYXlsb2FkKQogewogICAg
IGF1dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRET01BZ2Vu
dCgpOwogICAgIGlmICghZG9tQWdlbnQpIHsKQEAgLTExMiwxNiArODEsMzQgQEAgdm9pZCBQYWdl
RE9NRGVidWdnZXJBZ2VudDo6c2V0RE9NQnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIGludCBub2RlSWQKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlu
dCB0eXBlID0gZG9tVHlwZUZvck5hbWUoZXJyb3JTdHJpbmcsIHR5cGVTdHJpbmcpOwotICAgIGlm
ICh0eXBlID09IC0xKQorICAgIGF1dG8gdHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Okluc3Bl
Y3RvckhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29s
OjpET01EZWJ1Z2dlcjo6RE9NQnJlYWtwb2ludFR5cGU+KHR5cGVTdHJpbmcpOworICAgIGlmICgh
dHlwZSkgeworICAgICAgICBlcnJvclN0cmluZyA9IG1ha2VTdHJpbmcoIlVua25vd24gdHlwZTog
Il9zLCB0eXBlU3RyaW5nKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gYnJl
YWtwb2ludCA9IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRlYnVnZ2VyQnJlYWtwb2ludEZyb21Q
YXlsb2FkKGVycm9yU3RyaW5nLCBvcHRpb25zUGF5bG9hZCk7CisgICAgaWYgKCFicmVha3BvaW50
KQogICAgICAgICByZXR1cm47CiAKLSAgICB1aW50MzJfdCByb290Qml0ID0gMSA8PCB0eXBlOwot
ICAgIG1fZG9tQnJlYWtwb2ludHMuc2V0KG5vZGUsIG1fZG9tQnJlYWtwb2ludHMuZ2V0KG5vZGUp
IHwgcm9vdEJpdCk7Ci0gICAgaWYgKHJvb3RCaXQgJiBpbmhlcml0YWJsZURPTUJyZWFrcG9pbnRU
eXBlc01hc2spIHsKLSAgICAgICAgZm9yIChOb2RlKiBjaGlsZCA9IEluc3BlY3RvckRPTUFnZW50
Ojppbm5lckZpcnN0Q2hpbGQobm9kZSk7IGNoaWxkOyBjaGlsZCA9IEluc3BlY3RvckRPTUFnZW50
Ojppbm5lck5leHRTaWJsaW5nKGNoaWxkKSkKLSAgICAgICAgICAgIHVwZGF0ZVN1YnRyZWVCcmVh
a3BvaW50cyhjaGlsZCwgcm9vdEJpdCwgdHJ1ZSk7CisgICAgc3dpdGNoICgqdHlwZSkgeworICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NRGVidWdnZXI6OkRPTUJyZWFrcG9pbnRUeXBl
OjpTdWJ0cmVlTW9kaWZpZWQ6CisgICAgICAgIGlmICghbV9kb21TdWJ0cmVlTW9kaWZpZWRCcmVh
a3BvaW50cy5hZGQobm9kZSwgYnJlYWtwb2ludC5yZWxlYXNlTm9uTnVsbCgpKSkKKyAgICAgICAg
ICAgIGVycm9yU3RyaW5nID0gIkJyZWFrcG9pbnQgZm9yIGdpdmVuIG5vZGUgYW5kIGdpdmVuIHR5
cGUgYWxyZWFkeSBleGlzdHMiX3M7CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgSW5zcGVj
dG9yOjpQcm90b2NvbDo6RE9NRGVidWdnZXI6OkRPTUJyZWFrcG9pbnRUeXBlOjpBdHRyaWJ1dGVN
b2RpZmllZDoKKyAgICAgICAgaWYgKCFtX2RvbUF0dHJpYnV0ZU1vZGlmaWVkQnJlYWtwb2ludHMu
YWRkKG5vZGUsIGJyZWFrcG9pbnQucmVsZWFzZU5vbk51bGwoKSkpCisgICAgICAgICAgICBlcnJv
clN0cmluZyA9ICJCcmVha3BvaW50IGZvciBnaXZlbiBub2RlIGFuZCBnaXZlbiB0eXBlIGFscmVh
ZHkgZXhpc3RzIl9zOworICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRPTURlYnVnZ2VyOjpET01CcmVha3BvaW50VHlwZTo6Tm9kZVJlbW92ZWQ6CisgICAg
ICAgIGlmICghbV9kb21Ob2RlUmVtb3ZlZEJyZWFrcG9pbnRzLmFkZChub2RlLCBicmVha3BvaW50
LnJlbGVhc2VOb25OdWxsKCkpKQorICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiQnJlYWtwb2lu
dCBmb3IgZ2l2ZW4gbm9kZSBhbmQgZ2l2ZW4gdHlwZSBhbHJlYWR5IGV4aXN0cyJfczsKKyAgICAg
ICAgcmV0dXJuOwogICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCiB2b2lk
IFBhZ2VET01EZWJ1Z2dlckFnZW50OjpyZW1vdmVET01CcmVha3BvaW50KEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiB0eXBlU3RyaW5nKQpAQCAtMTM2
LDIxICsxMjMsMzAgQEAgdm9pZCBQYWdlRE9NRGVidWdnZXJBZ2VudDo6cmVtb3ZlRE9NQnJlYWtw
b2ludChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2QKICAgICBpZiAoIW5vZGUpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGludCB0eXBlID0gZG9tVHlwZUZvck5hbWUoZXJyb3JTdHJp
bmcsIHR5cGVTdHJpbmcpOwotICAgIGlmICh0eXBlID09IC0xKQorICAgIGF1dG8gdHlwZSA9IElu
c3BlY3Rvcjo6UHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0
cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpET01EZWJ1Z2dlcjo6RE9NQnJlYWtwb2ludFR5cGU+
KHR5cGVTdHJpbmcpOworICAgIGlmICghdHlwZSkgeworICAgICAgICBlcnJvclN0cmluZyA9IG1h
a2VTdHJpbmcoIlVua25vd24gdHlwZTogIl9zLCB0eXBlU3RyaW5nKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIHN3aXRjaCAoKnR5cGUpIHsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRPTURlYnVnZ2VyOjpET01CcmVha3BvaW50VHlwZTo6U3VidHJlZU1vZGlmaWVkOgor
ICAgICAgICBpZiAoIW1fZG9tU3VidHJlZU1vZGlmaWVkQnJlYWtwb2ludHMucmVtb3ZlKG5vZGUp
KQorICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiQnJlYWtwb2ludCBmb3IgZ2l2ZW4gbm9kZSBh
bmQgZ2l2ZW4gdHlwZSBtaXNzaW5nIl9zOwogICAgICAgICByZXR1cm47CiAKLSAgICB1aW50MzJf
dCByb290Qml0ID0gMSA8PCB0eXBlOwotICAgIHVpbnQzMl90IG1hc2sgPSBtX2RvbUJyZWFrcG9p
bnRzLmdldChub2RlKSAmIH5yb290Qml0OwotICAgIGlmIChtYXNrKQotICAgICAgICBtX2RvbUJy
ZWFrcG9pbnRzLnNldChub2RlLCBtYXNrKTsKLSAgICBlbHNlCi0gICAgICAgIG1fZG9tQnJlYWtw
b2ludHMucmVtb3ZlKG5vZGUpOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NRGVi
dWdnZXI6OkRPTUJyZWFrcG9pbnRUeXBlOjpBdHRyaWJ1dGVNb2RpZmllZDoKKyAgICAgICAgaWYg
KCFtX2RvbUF0dHJpYnV0ZU1vZGlmaWVkQnJlYWtwb2ludHMucmVtb3ZlKG5vZGUpKQorICAgICAg
ICAgICAgZXJyb3JTdHJpbmcgPSAiQnJlYWtwb2ludCBmb3IgZ2l2ZW4gbm9kZSBhbmQgZ2l2ZW4g
dHlwZSBtaXNzaW5nIl9zOworICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoKHJvb3RCaXQgJiBp
bmhlcml0YWJsZURPTUJyZWFrcG9pbnRUeXBlc01hc2spICYmICEobWFzayAmIChyb290Qml0IDw8
IGRvbUJyZWFrcG9pbnREZXJpdmVkVHlwZVNoaWZ0KSkpIHsKLSAgICAgICAgZm9yIChOb2RlKiBj
aGlsZCA9IEluc3BlY3RvckRPTUFnZW50Ojppbm5lckZpcnN0Q2hpbGQobm9kZSk7IGNoaWxkOyBj
aGlsZCA9IEluc3BlY3RvckRPTUFnZW50Ojppbm5lck5leHRTaWJsaW5nKGNoaWxkKSkKLSAgICAg
ICAgICAgIHVwZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhjaGlsZCwgcm9vdEJpdCwgZmFsc2UpOwor
ICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NRGVidWdnZXI6OkRPTUJyZWFrcG9pbnRU
eXBlOjpOb2RlUmVtb3ZlZDoKKyAgICAgICAgaWYgKCFtX2RvbU5vZGVSZW1vdmVkQnJlYWtwb2lu
dHMucmVtb3ZlKG5vZGUpKQorICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiQnJlYWtwb2ludCBm
b3IgZ2l2ZW4gbm9kZSBhbmQgZ2l2ZW4gdHlwZSBtaXNzaW5nIl9zOworICAgICAgICByZXR1cm47
CiAgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKIHZvaWQgUGFnZURPTURl
YnVnZ2VyQWdlbnQ6Om1haW5GcmFtZU5hdmlnYXRlZCgpCkBAIC0xNjYsNyArMTYyLDI2IEBAIHZv
aWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6OmZyYW1lRG9jdW1lbnRVcGRhdGVkKEZyYW1lJiBmcmFt
ZSkKICAgICBpZiAoIWZyYW1lLmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fZG9tQnJlYWtwb2ludHMuY2xlYXIoKTsKKyAgICBtX2RvbVN1YnRyZWVNb2RpZmllZEJyZWFr
cG9pbnRzLmNsZWFyKCk7CisgICAgbV9kb21BdHRyaWJ1dGVNb2RpZmllZEJyZWFrcG9pbnRzLmNs
ZWFyKCk7CisgICAgbV9kb21Ob2RlUmVtb3ZlZEJyZWFrcG9pbnRzLmNsZWFyKCk7Cit9CisKKwor
c3RhdGljIE9wdGlvbmFsPHNpemVfdD4gY2FsY3VsYXRlRGlzdGFuY2UoTm9kZSYgY2hpbGQsIE5v
ZGUmIGFuY2VzdG9yKQoreworICAgIHNpemVfdCBkaXN0YW5jZSA9IDA7CisKKyAgICBhdXRvKiBj
dXJyZW50ID0gJmNoaWxkOworICAgIHdoaWxlIChjdXJyZW50ICE9ICZhbmNlc3RvcikgeworICAg
ICAgICArK2Rpc3RhbmNlOworCisgICAgICAgIGN1cnJlbnQgPSBJbnNwZWN0b3JET01BZ2VudDo6
aW5uZXJQYXJlbnROb2RlKGN1cnJlbnQpOworICAgICAgICBpZiAoIWN1cnJlbnQpCisgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIH0KKworICAgIHJldHVybiBkaXN0YW5jZTsK
IH0KIAogdm9pZCBQYWdlRE9NRGVidWdnZXJBZ2VudDo6d2lsbEluc2VydERPTU5vZGUoTm9kZSYg
cGFyZW50KQpAQCAtMTc0LDIxICsxODksMzUgQEAgdm9pZCBQYWdlRE9NRGVidWdnZXJBZ2VudDo6
d2lsbEluc2VydERPTU5vZGUoTm9kZSYgcGFyZW50KQogICAgIGlmICghbV9kZWJ1Z2dlckFnZW50
LT5icmVha3BvaW50c0FjdGl2ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaGFzQnJl
YWtwb2ludCgmcGFyZW50LCBTdWJ0cmVlTW9kaWZpZWQpKSB7Ci0gICAgICAgIFJlZjxKU09OOjpP
YmplY3Q+IGV2ZW50RGF0YSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgIGRlc2Ny
aXB0aW9uRm9yRE9NRXZlbnQocGFyZW50LCBTdWJ0cmVlTW9kaWZpZWQsIHRydWUsIGV2ZW50RGF0
YS5nZXQoKSk7Ci0gICAgICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKEluc3BlY3Rv
cjo6RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RE9NLCBXVEZNb3ZlKGV2ZW50
RGF0YSkpOwotICAgIH0KLX0KKyAgICBpZiAobV9kb21TdWJ0cmVlTW9kaWZpZWRCcmVha3BvaW50
cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKIAotdm9pZCBQYWdlRE9NRGVidWdnZXJBZ2Vu
dDo6ZGlkSW5zZXJ0RE9NTm9kZShOb2RlJiBub2RlKQotewotICAgIGlmIChtX2RvbUJyZWFrcG9p
bnRzLnNpemUoKSkgewotICAgICAgICB1aW50MzJfdCBtYXNrID0gbV9kb21CcmVha3BvaW50cy5n
ZXQoSW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVyUGFyZW50Tm9kZSgmbm9kZSkpOwotICAgICAgICB1
aW50MzJfdCBpbmhlcml0YWJsZVR5cGVzTWFzayA9IChtYXNrIHwgKG1hc2sgPj4gZG9tQnJlYWtw
b2ludERlcml2ZWRUeXBlU2hpZnQpKSAmIGluaGVyaXRhYmxlRE9NQnJlYWtwb2ludFR5cGVzTWFz
azsKLSAgICAgICAgaWYgKGluaGVyaXRhYmxlVHlwZXNNYXNrKQotICAgICAgICAgICAgdXBkYXRl
U3VidHJlZUJyZWFrcG9pbnRzKCZub2RlLCBpbmhlcml0YWJsZVR5cGVzTWFzaywgdHJ1ZSk7Cisg
ICAgT3B0aW9uYWw8c2l6ZV90PiBjbG9zZXN0RGlzdGFuY2U7CisgICAgUmVmUHRyPEpTQzo6QnJl
YWtwb2ludD4gY2xvc2VzdEJyZWFrcG9pbnQ7CisgICAgTm9kZSogY2xvc2VzdEJyZWFrcG9pbnRP
d25lciA9IG51bGxwdHI7CisKKyAgICBmb3IgKGF1dG8gW2JyZWFrcG9pbnRPd25lciwgYnJlYWtw
b2ludF0gOiBtX2RvbVN1YnRyZWVNb2RpZmllZEJyZWFrcG9pbnRzKSB7CisgICAgICAgIGF1dG8g
ZGlzdGFuY2UgPSBjYWxjdWxhdGVEaXN0YW5jZShwYXJlbnQsICpicmVha3BvaW50T3duZXIpOwor
ICAgICAgICBpZiAoIWRpc3RhbmNlKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
aWYgKCFjbG9zZXN0RGlzdGFuY2UgfHwgZGlzdGFuY2UgPCBjbG9zZXN0RGlzdGFuY2UpIHsKKyAg
ICAgICAgICAgIGNsb3Nlc3REaXN0YW5jZSA9IGRpc3RhbmNlOworICAgICAgICAgICAgY2xvc2Vz
dEJyZWFrcG9pbnQgPSBicmVha3BvaW50LmNvcHlSZWYoKTsKKyAgICAgICAgICAgIGNsb3Nlc3RC
cmVha3BvaW50T3duZXIgPSBicmVha3BvaW50T3duZXI7CisgICAgICAgIH0KICAgICB9CisKKyAg
ICBpZiAoIWNsb3Nlc3RCcmVha3BvaW50KQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQo
Y2xvc2VzdEJyZWFrcG9pbnRPd25lcik7CisKKyAgICBhdXRvIHBhdXNlRGF0YSA9IGJ1aWxkUGF1
c2VEYXRhRm9yRE9NQnJlYWtwb2ludChJbnNwZWN0b3I6OlByb3RvY29sOjpET01EZWJ1Z2dlcjo6
RE9NQnJlYWtwb2ludFR5cGU6OlN1YnRyZWVNb2RpZmllZCwgKmNsb3Nlc3RCcmVha3BvaW50T3du
ZXIpOworICAgIHBhdXNlRGF0YS0+c2V0Qm9vbGVhbigiaW5zZXJ0aW9uIiwgdHJ1ZSk7CisgICAg
Ly8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8yMTM0OTk+IFdlYiBJbnNwZWN0b3I6IGFs
bG93IERPTSBub2RlcyB0byBiZSBpbnN0cnVtZW50ZWQgYXQgYW55IHBvaW50LCByZWdhcmRsZXNz
IG9mIHdoZXRoZXIgdGhlIG1haW4gZG9jdW1lbnQgaGFzIGFsc28gYmVlbiBpbnN0cnVtZW50ZWQK
KyAgICAvLyBJbmNsdWRlIHRoZSBuZXcgY2hpbGQgbm9kZSBJRCBzbyB0aGUgZnJvbnRlbmQgY2Fu
IHNob3cgdGhlIG5vZGUgdGhhdCdzIGFib3V0IHRvIGJlIGluc2VydGVkLgorICAgIG1fZGVidWdn
ZXJBZ2VudC0+YnJlYWtQcm9ncmFtKEluc3BlY3Rvcjo6RGVidWdnZXJGcm9udGVuZERpc3BhdGNo
ZXI6OlJlYXNvbjo6RE9NLCBXVEZNb3ZlKHBhdXNlRGF0YSksIFdURk1vdmUoY2xvc2VzdEJyZWFr
cG9pbnQpKTsKIH0KIAogdm9pZCBQYWdlRE9NRGVidWdnZXJBZ2VudDo6d2lsbFJlbW92ZURPTU5v
ZGUoTm9kZSYgbm9kZSkKQEAgLTE5Niw1MiArMjI1LDY2IEBAIHZvaWQgUGFnZURPTURlYnVnZ2Vy
QWdlbnQ6OndpbGxSZW1vdmVET01Ob2RlKE5vZGUmIG5vZGUpCiAgICAgaWYgKCFtX2RlYnVnZ2Vy
QWdlbnQtPmJyZWFrcG9pbnRzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICho
YXNCcmVha3BvaW50KCZub2RlLCBOb2RlUmVtb3ZlZCkpIHsKLSAgICAgICAgYXV0byBldmVudERh
dGEgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgICAgICBkZXNjcmlwdGlvbkZvckRPTUV2
ZW50KG5vZGUsIE5vZGVSZW1vdmVkLCBmYWxzZSwgZXZlbnREYXRhLmdldCgpKTsKLSAgICAgICAg
bV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5k
RGlzcGF0Y2hlcjo6UmVhc29uOjpET00sIFdURk1vdmUoZXZlbnREYXRhKSk7CisgICAgaWYgKG1f
ZG9tTm9kZVJlbW92ZWRCcmVha3BvaW50cy5pc0VtcHR5KCkgJiYgbV9kb21TdWJ0cmVlTW9kaWZp
ZWRCcmVha3BvaW50cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKLSAgICB1
aW50MzJfdCByb290Qml0ID0gMSA8PCBOb2RlUmVtb3ZlZDsKLSAgICB1aW50MzJfdCBkZXJpdmVk
Qml0ID0gcm9vdEJpdCA8PCBkb21CcmVha3BvaW50RGVyaXZlZFR5cGVTaGlmdDsKLSAgICB1aW50
MzJfdCBtYXRjaEJpdCA9IHJvb3RCaXQgfCBkZXJpdmVkQml0OwotICAgIGZvciAoYXV0byYgW25v
ZGVXaXRoQnJlYWtwb2ludCwgYnJlYWtwb2ludFR5cGVzXSA6IG1fZG9tQnJlYWtwb2ludHMpIHsK
LSAgICAgICAgaWYgKG5vZGUuY29udGFpbnMobm9kZVdpdGhCcmVha3BvaW50KSAmJiAoYnJlYWtw
b2ludFR5cGVzICYgbWF0Y2hCaXQpKSB7Ci0gICAgICAgICAgICBhdXRvIGV2ZW50RGF0YSA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICBkZXNjcmlwdGlvbkZvckRPTUV2ZW50
KCpub2RlV2l0aEJyZWFrcG9pbnQsIE5vZGVSZW1vdmVkLCBmYWxzZSwgZXZlbnREYXRhLmdldCgp
KTsKLSAgICAgICAgICAgIGlmIChhdXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50
cy5wZXJzaXN0ZW50RE9NQWdlbnQoKSkKLSAgICAgICAgICAgICAgICBldmVudERhdGEtPnNldElu
dGVnZXIoInRhcmdldE5vZGVJZCJfcywgZG9tQWdlbnQtPnB1c2hOb2RlVG9Gcm9udGVuZCgmbm9k
ZSkpOwotICAgICAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oSW5zcGVjdG9y
OjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpET00sIFdURk1vdmUoZXZlbnRE
YXRhKSk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgT3B0aW9uYWw8c2l6ZV90PiBjbG9zZXN0
RGlzdGFuY2U7CisgICAgUmVmUHRyPEpTQzo6QnJlYWtwb2ludD4gY2xvc2VzdEJyZWFrcG9pbnQ7
CisgICAgT3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NRGVidWdnZXI6OkRPTUJyZWFr
cG9pbnRUeXBlPiBjbG9zZXN0QnJlYWtwb2ludFR5cGU7CisgICAgTm9kZSogY2xvc2VzdEJyZWFr
cG9pbnRPd25lciA9IG51bGxwdHI7CisKKyAgICBmb3IgKGF1dG8gW2JyZWFrcG9pbnRPd25lciwg
YnJlYWtwb2ludF0gOiBtX2RvbU5vZGVSZW1vdmVkQnJlYWtwb2ludHMpIHsKKyAgICAgICAgYXV0
byBkaXN0YW5jZSA9IGNhbGN1bGF0ZURpc3RhbmNlKCpicmVha3BvaW50T3duZXIsIG5vZGUpOwor
ICAgICAgICBpZiAoIWRpc3RhbmNlKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
aWYgKCFjbG9zZXN0RGlzdGFuY2UgfHwgZGlzdGFuY2UgPCBjbG9zZXN0RGlzdGFuY2UpIHsKKyAg
ICAgICAgICAgIGNsb3Nlc3REaXN0YW5jZSA9IGRpc3RhbmNlOworICAgICAgICAgICAgY2xvc2Vz
dEJyZWFrcG9pbnQgPSBicmVha3BvaW50LmNvcHlSZWYoKTsKKyAgICAgICAgICAgIGNsb3Nlc3RC
cmVha3BvaW50VHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTURlYnVnZ2VyOjpET01CcmVh
a3BvaW50VHlwZTo6Tm9kZVJlbW92ZWQ7CisgICAgICAgICAgICBjbG9zZXN0QnJlYWtwb2ludE93
bmVyID0gYnJlYWtwb2ludE93bmVyOwogICAgICAgICB9CiAgICAgfQogCi0gICAgYXV0byogcGFy
ZW50Tm9kZSA9IEluc3BlY3RvckRPTUFnZW50Ojppbm5lclBhcmVudE5vZGUoJm5vZGUpOwotICAg
IGlmIChwYXJlbnROb2RlICYmIGhhc0JyZWFrcG9pbnQocGFyZW50Tm9kZSwgU3VidHJlZU1vZGlm
aWVkKSkgewotICAgICAgICBhdXRvIGV2ZW50RGF0YSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7
Ci0gICAgICAgIGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQobm9kZSwgU3VidHJlZU1vZGlmaWVkLCBm
YWxzZSwgZXZlbnREYXRhLmdldCgpKTsKLSAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1By
b2dyYW0oSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpET00s
IFdURk1vdmUoZXZlbnREYXRhKSk7Ci0gICAgICAgIHJldHVybjsKKyAgICBpZiAoIWNsb3Nlc3RC
cmVha3BvaW50KSB7CisgICAgICAgIGZvciAoYXV0byBbYnJlYWtwb2ludE93bmVyLCBicmVha3Bv
aW50XSA6IG1fZG9tU3VidHJlZU1vZGlmaWVkQnJlYWtwb2ludHMpIHsKKyAgICAgICAgICAgIGF1
dG8gZGlzdGFuY2UgPSBjYWxjdWxhdGVEaXN0YW5jZShub2RlLCAqYnJlYWtwb2ludE93bmVyKTsK
KyAgICAgICAgICAgIGlmICghZGlzdGFuY2UpCisgICAgICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgICAgIGlmICghY2xvc2VzdERpc3RhbmNlIHx8IGRpc3RhbmNlIDwgY2xvc2VzdERp
c3RhbmNlKSB7CisgICAgICAgICAgICAgICAgY2xvc2VzdERpc3RhbmNlID0gZGlzdGFuY2U7Cisg
ICAgICAgICAgICAgICAgY2xvc2VzdEJyZWFrcG9pbnQgPSBicmVha3BvaW50LmNvcHlSZWYoKTsK
KyAgICAgICAgICAgICAgICBjbG9zZXN0QnJlYWtwb2ludFR5cGUgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpET01EZWJ1Z2dlcjo6RE9NQnJlYWtwb2ludFR5cGU6OlN1YnRyZWVNb2RpZmllZDsKKyAg
ICAgICAgICAgICAgICBjbG9zZXN0QnJlYWtwb2ludE93bmVyID0gYnJlYWtwb2ludE93bmVyOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQorCisgICAgaWYgKCFjbG9zZXN0QnJlYWtw
b2ludCkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKGNsb3Nlc3RCcmVha3BvaW50VHlw
ZSk7CisgICAgQVNTRVJUKGNsb3Nlc3RCcmVha3BvaW50T3duZXIpOworCisgICAgYXV0byBwYXVz
ZURhdGEgPSBidWlsZFBhdXNlRGF0YUZvckRPTUJyZWFrcG9pbnQoKmNsb3Nlc3RCcmVha3BvaW50
VHlwZSwgKmNsb3Nlc3RCcmVha3BvaW50T3duZXIpOworICAgIGlmIChhdXRvKiBkb21BZ2VudCA9
IG1faW5zdHJ1bWVudGluZ0FnZW50cy5wZXJzaXN0ZW50RE9NQWdlbnQoKSkgeworICAgICAgICBp
ZiAoJm5vZGUgIT0gY2xvc2VzdEJyZWFrcG9pbnRPd25lcikgeworICAgICAgICAgICAgaWYgKGF1
dG8gdGFyZ2V0Tm9kZUlkID0gZG9tQWdlbnQtPnB1c2hOb2RlVG9Gcm9udGVuZCgmbm9kZSkpCisg
ICAgICAgICAgICAgICAgcGF1c2VEYXRhLT5zZXRJbnRlZ2VyKCJ0YXJnZXROb2RlSWQiLCB0YXJn
ZXROb2RlSWQpOworICAgICAgICB9CisgICAgfQorICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQ
cm9ncmFtKEluc3BlY3Rvcjo6RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RE9N
LCBXVEZNb3ZlKHBhdXNlRGF0YSksIFdURk1vdmUoY2xvc2VzdEJyZWFrcG9pbnQpKTsKIH0KIAog
dm9pZCBQYWdlRE9NRGVidWdnZXJBZ2VudDo6ZGlkUmVtb3ZlRE9NTm9kZShOb2RlJiBub2RlKQog
ewotICAgIGlmIChtX2RvbUJyZWFrcG9pbnRzLnNpemUoKSkgewotICAgICAgICAvLyBSZW1vdmUg
c3VidHJlZSBicmVha3BvaW50cy4KLSAgICAgICAgbV9kb21CcmVha3BvaW50cy5yZW1vdmUoJm5v
ZGUpOwotICAgICAgICBWZWN0b3I8Tm9kZSo+IHN0YWNrKDEsIEluc3BlY3RvckRPTUFnZW50Ojpp
bm5lckZpcnN0Q2hpbGQoJm5vZGUpKTsKLSAgICAgICAgZG8gewotICAgICAgICAgICAgTm9kZSog
bm9kZSA9IHN0YWNrLmxhc3QoKTsKLSAgICAgICAgICAgIHN0YWNrLnJlbW92ZUxhc3QoKTsKLSAg
ICAgICAgICAgIGlmICghbm9kZSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgIG1fZG9tQnJlYWtwb2ludHMucmVtb3ZlKG5vZGUpOwotICAgICAgICAgICAgc3RhY2suYXBw
ZW5kKEluc3BlY3RvckRPTUFnZW50Ojppbm5lckZpcnN0Q2hpbGQobm9kZSkpOwotICAgICAgICAg
ICAgc3RhY2suYXBwZW5kKEluc3BlY3RvckRPTUFnZW50Ojppbm5lck5leHRTaWJsaW5nKG5vZGUp
KTsKLSAgICAgICAgfSB3aGlsZSAoIXN0YWNrLmlzRW1wdHkoKSk7Ci0gICAgfQorICAgIGF1dG8g
bm9kZUNvbnRhaW5zQnJlYWtwb2ludE93bmVyID0gWyZdIChhdXRvJiBlbnRyeSkgeworICAgICAg
ICByZXR1cm4gbm9kZS5jb250YWlucyhlbnRyeS5rZXkpOworICAgIH07CisgICAgbV9kb21TdWJ0
cmVlTW9kaWZpZWRCcmVha3BvaW50cy5yZW1vdmVJZihub2RlQ29udGFpbnNCcmVha3BvaW50T3du
ZXIpOworICAgIG1fZG9tQXR0cmlidXRlTW9kaWZpZWRCcmVha3BvaW50cy5yZW1vdmVJZihub2Rl
Q29udGFpbnNCcmVha3BvaW50T3duZXIpOworICAgIG1fZG9tTm9kZVJlbW92ZWRCcmVha3BvaW50
cy5yZW1vdmVJZihub2RlQ29udGFpbnNCcmVha3BvaW50T3duZXIpOwogfQogCiB2b2lkIFBhZ2VE
T01EZWJ1Z2dlckFnZW50Ojp3aWxsTW9kaWZ5RE9NQXR0cihFbGVtZW50JiBlbGVtZW50KQpAQCAt
MjQ5LDExICsyOTIsMTIgQEAgdm9pZCBQYWdlRE9NRGVidWdnZXJBZ2VudDo6d2lsbE1vZGlmeURP
TUF0dHIoRWxlbWVudCYgZWxlbWVudCkKICAgICBpZiAoIW1fZGVidWdnZXJBZ2VudC0+YnJlYWtw
b2ludHNBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGhhc0JyZWFrcG9pbnQo
JmVsZW1lbnQsIEF0dHJpYnV0ZU1vZGlmaWVkKSkgewotICAgICAgICBSZWY8SlNPTjo6T2JqZWN0
PiBldmVudERhdGEgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgICAgICBkZXNjcmlwdGlv
bkZvckRPTUV2ZW50KGVsZW1lbnQsIEF0dHJpYnV0ZU1vZGlmaWVkLCBmYWxzZSwgZXZlbnREYXRh
LmdldCgpKTsKLSAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oSW5zcGVjdG9y
OjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpET00sIFdURk1vdmUoZXZlbnRE
YXRhKSk7Ci0gICAgfQorICAgIGF1dG8gaXQgPSBtX2RvbUF0dHJpYnV0ZU1vZGlmaWVkQnJlYWtw
b2ludHMuZmluZCgmZWxlbWVudCk7CisgICAgaWYgKGl0ID09IG1fZG9tQXR0cmlidXRlTW9kaWZp
ZWRCcmVha3BvaW50cy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBwYXVzZURh
dGEgPSBidWlsZFBhdXNlRGF0YUZvckRPTUJyZWFrcG9pbnQoSW5zcGVjdG9yOjpQcm90b2NvbDo6
RE9NRGVidWdnZXI6OkRPTUJyZWFrcG9pbnRUeXBlOjpBdHRyaWJ1dGVNb2RpZmllZCwgZWxlbWVu
dCk7CisgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oSW5zcGVjdG9yOjpEZWJ1Z2dl
ckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpET00sIFdURk1vdmUocGF1c2VEYXRhKSwgaXQt
PnZhbHVlLmNvcHlSZWYoKSk7CiB9CiAKIHZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6OndpbGxG
aXJlQW5pbWF0aW9uRnJhbWUoKQpAQCAtMjg1LDExICszMjksMTIgQEAgdm9pZCBQYWdlRE9NRGVi
dWdnZXJBZ2VudDo6d2lsbEludmFsaWRhdGVTdHlsZUF0dHIoRWxlbWVudCYgZWxlbWVudCkKICAg
ICBpZiAoIW1fZGVidWdnZXJBZ2VudC0+YnJlYWtwb2ludHNBY3RpdmUoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKGhhc0JyZWFrcG9pbnQoJmVsZW1lbnQsIEF0dHJpYnV0ZU1vZGlmaWVk
KSkgewotICAgICAgICBSZWY8SlNPTjo6T2JqZWN0PiBldmVudERhdGEgPSBKU09OOjpPYmplY3Q6
OmNyZWF0ZSgpOwotICAgICAgICBkZXNjcmlwdGlvbkZvckRPTUV2ZW50KGVsZW1lbnQsIEF0dHJp
YnV0ZU1vZGlmaWVkLCBmYWxzZSwgZXZlbnREYXRhLmdldCgpKTsKLSAgICAgICAgbV9kZWJ1Z2dl
ckFnZW50LT5icmVha1Byb2dyYW0oSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hl
cjo6UmVhc29uOjpET00sIFdURk1vdmUoZXZlbnREYXRhKSk7Ci0gICAgfQorICAgIGF1dG8gaXQg
PSBtX2RvbUF0dHJpYnV0ZU1vZGlmaWVkQnJlYWtwb2ludHMuZmluZCgmZWxlbWVudCk7CisgICAg
aWYgKGl0ID09IG1fZG9tQXR0cmlidXRlTW9kaWZpZWRCcmVha3BvaW50cy5lbmQoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYXV0byBwYXVzZURhdGEgPSBidWlsZFBhdXNlRGF0YUZvckRPTUJy
ZWFrcG9pbnQoSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NRGVidWdnZXI6OkRPTUJyZWFrcG9pbnRU
eXBlOjpBdHRyaWJ1dGVNb2RpZmllZCwgZWxlbWVudCk7CisgICAgbV9kZWJ1Z2dlckFnZW50LT5i
cmVha1Byb2dyYW0oSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29u
OjpET00sIFdURk1vdmUocGF1c2VEYXRhKSwgaXQtPnZhbHVlLmNvcHlSZWYoKSk7CiB9CiAKIHZv
aWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6OnNldEFuaW1hdGlvbkZyYW1lQnJlYWtwb2ludChFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIFJlZlB0cjxKU0M6OkJyZWFrcG9pbnQ+JiYgYnJlYWtwb2lu
dCkKQEAgLTMwMiw2OCArMzQ3LDE4IEBAIHZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6OnNldEFu
aW1hdGlvbkZyYW1lQnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsCiAgICAgbV9w
YXVzZU9uQWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludCA9IFdURk1vdmUoYnJlYWtwb2ludCk7
CiB9CiAKLXZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6OmRlc2NyaXB0aW9uRm9yRE9NRXZlbnQo
Tm9kZSYgdGFyZ2V0LCBpbnQgYnJlYWtwb2ludFR5cGUsIGJvb2wgaW5zZXJ0aW9uLCBKU09OOjpP
YmplY3QmIGRlc2NyaXB0aW9uKQorUmVmPEpTT046Ok9iamVjdD4gUGFnZURPTURlYnVnZ2VyQWdl
bnQ6OmJ1aWxkUGF1c2VEYXRhRm9yRE9NQnJlYWtwb2ludChJbnNwZWN0b3I6OlByb3RvY29sOjpE
T01EZWJ1Z2dlcjo6RE9NQnJlYWtwb2ludFR5cGUgYnJlYWtwb2ludFR5cGUsIE5vZGUmIGJyZWFr
cG9pbnRPd25lcikKIHsKICAgICBBU1NFUlQobV9kZWJ1Z2dlckFnZW50LT5icmVha3BvaW50c0Fj
dGl2ZSgpKTsKLSAgICBBU1NFUlQoaGFzQnJlYWtwb2ludCgmdGFyZ2V0LCBicmVha3BvaW50VHlw
ZSkpOworICAgIEFTU0VSVChtX2RvbVN1YnRyZWVNb2RpZmllZEJyZWFrcG9pbnRzLmNvbnRhaW5z
KCZicmVha3BvaW50T3duZXIpIHx8IG1fZG9tQXR0cmlidXRlTW9kaWZpZWRCcmVha3BvaW50cy5j
b250YWlucygmYnJlYWtwb2ludE93bmVyKSB8fCBtX2RvbU5vZGVSZW1vdmVkQnJlYWtwb2ludHMu
Y29udGFpbnMoJmJyZWFrcG9pbnRPd25lcikpOwogCi0gICAgYXV0byogZG9tQWdlbnQgPSBtX2lu
c3RydW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudERPTUFnZW50KCk7Ci0KLSAgICBOb2RlKiBicmVh
a3BvaW50T3duZXIgPSAmdGFyZ2V0OwotICAgIGlmICgoMSA8PCBicmVha3BvaW50VHlwZSkgJiBp
bmhlcml0YWJsZURPTUJyZWFrcG9pbnRUeXBlc01hc2spIHsKLSAgICAgICAgaWYgKGRvbUFnZW50
KSB7Ci0gICAgICAgICAgICAvLyBGb3IgaW5oZXJpdGFibGUgYnJlYWtwb2ludCB0eXBlcywgdGFy
Z2V0IG5vZGUgaXNuJ3QgYWx3YXlzIHRoZSBzYW1lIGFzIHRoZSBub2RlIHRoYXQgb3ducyBhIGJy
ZWFrcG9pbnQuCi0gICAgICAgICAgICAvLyBUYXJnZXQgbm9kZSBtYXkgYmUgdW5rbm93biB0byBm
cm9udGVuZCwgc28gd2UgbmVlZCB0byBwdXNoIGl0IGZpcnN0LgotICAgICAgICAgICAgZGVzY3Jp
cHRpb24uc2V0SW50ZWdlcigidGFyZ2V0Tm9kZUlkIl9zLCBkb21BZ2VudC0+cHVzaE5vZGVUb0Zy
b250ZW5kKCZ0YXJnZXQpKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEZpbmQgYnJlYWtwb2lu
dCBvd25lciBub2RlLgotICAgICAgICBpZiAoIWluc2VydGlvbikKLSAgICAgICAgICAgIGJyZWFr
cG9pbnRPd25lciA9IEluc3BlY3RvckRPTUFnZW50Ojppbm5lclBhcmVudE5vZGUoJnRhcmdldCk7
Ci0gICAgICAgIEFTU0VSVChicmVha3BvaW50T3duZXIpOwotICAgICAgICB3aGlsZSAoIShtX2Rv
bUJyZWFrcG9pbnRzLmdldChicmVha3BvaW50T3duZXIpICYgKDEgPDwgYnJlYWtwb2ludFR5cGUp
KSkgewotICAgICAgICAgICAgTm9kZSogcGFyZW50Tm9kZSA9IEluc3BlY3RvckRPTUFnZW50Ojpp
bm5lclBhcmVudE5vZGUoYnJlYWtwb2ludE93bmVyKTsKLSAgICAgICAgICAgIGlmICghcGFyZW50
Tm9kZSkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGJyZWFrcG9pbnRPd25l
ciA9IHBhcmVudE5vZGU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoYnJlYWtwb2ludFR5cGUg
PT0gU3VidHJlZU1vZGlmaWVkKQotICAgICAgICAgICAgZGVzY3JpcHRpb24uc2V0Qm9vbGVhbigi
aW5zZXJ0aW9uIiwgaW5zZXJ0aW9uKTsKKyAgICBhdXRvIHBhdXNlRGF0YSA9IEpTT046Ok9iamVj
dDo6Y3JlYXRlKCk7CisgICAgcGF1c2VEYXRhLT5zZXRTdHJpbmcoInR5cGUiLCBJbnNwZWN0b3I6
OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShicmVha3Bv
aW50VHlwZSkpOworICAgIGlmIChhdXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50
cy5wZXJzaXN0ZW50RE9NQWdlbnQoKSkgeworICAgICAgICBpZiAoYXV0byBicmVha3BvaW50T3du
ZXJOb2RlSWQgPSBkb21BZ2VudC0+cHVzaE5vZGVUb0Zyb250ZW5kKCZicmVha3BvaW50T3duZXIp
KQorICAgICAgICAgICAgcGF1c2VEYXRhLT5zZXRJbnRlZ2VyKCJub2RlSWQiLCBicmVha3BvaW50
T3duZXJOb2RlSWQpOwogICAgIH0KLQotICAgIGlmIChkb21BZ2VudCkgewotICAgICAgICBpbnQg
YnJlYWtwb2ludE93bmVyTm9kZUlkID0gZG9tQWdlbnQtPmJvdW5kTm9kZUlkKGJyZWFrcG9pbnRP
d25lcik7Ci0gICAgICAgIEFTU0VSVChicmVha3BvaW50T3duZXJOb2RlSWQpOwotICAgICAgICBk
ZXNjcmlwdGlvbi5zZXRJbnRlZ2VyKCJub2RlSWQiLCBicmVha3BvaW50T3duZXJOb2RlSWQpOwot
ICAgIH0KLQotICAgIGRlc2NyaXB0aW9uLnNldFN0cmluZygidHlwZSIsIGRvbVR5cGVOYW1lKGJy
ZWFrcG9pbnRUeXBlKSk7Ci19Ci0KLXZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6OnVwZGF0ZVN1
YnRyZWVCcmVha3BvaW50cyhOb2RlKiBub2RlLCB1aW50MzJfdCByb290TWFzaywgYm9vbCBzZXQp
Ci17Ci0gICAgdWludDMyX3Qgb2xkTWFzayA9IG1fZG9tQnJlYWtwb2ludHMuZ2V0KG5vZGUpOwot
ICAgIHVpbnQzMl90IGRlcml2ZWRNYXNrID0gcm9vdE1hc2sgPDwgZG9tQnJlYWtwb2ludERlcml2
ZWRUeXBlU2hpZnQ7Ci0gICAgdWludDMyX3QgbmV3TWFzayA9IHNldCA/IG9sZE1hc2sgfCBkZXJp
dmVkTWFzayA6IG9sZE1hc2sgJiB+ZGVyaXZlZE1hc2s7Ci0gICAgaWYgKG5ld01hc2spCi0gICAg
ICAgIG1fZG9tQnJlYWtwb2ludHMuc2V0KG5vZGUsIG5ld01hc2spOwotICAgIGVsc2UKLSAgICAg
ICAgbV9kb21CcmVha3BvaW50cy5yZW1vdmUobm9kZSk7Ci0KLSAgICB1aW50MzJfdCBuZXdSb290
TWFzayA9IHJvb3RNYXNrICYgfm5ld01hc2s7Ci0gICAgaWYgKCFuZXdSb290TWFzaykKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZm9yIChOb2RlKiBjaGlsZCA9IEluc3BlY3RvckRPTUFnZW50Ojpp
bm5lckZpcnN0Q2hpbGQobm9kZSk7IGNoaWxkOyBjaGlsZCA9IEluc3BlY3RvckRPTUFnZW50Ojpp
bm5lck5leHRTaWJsaW5nKGNoaWxkKSkKLSAgICAgICAgdXBkYXRlU3VidHJlZUJyZWFrcG9pbnRz
KGNoaWxkLCBuZXdSb290TWFzaywgc2V0KTsKLX0KLQotYm9vbCBQYWdlRE9NRGVidWdnZXJBZ2Vu
dDo6aGFzQnJlYWtwb2ludChOb2RlKiBub2RlLCBpbnQgdHlwZSkKLXsKLSAgICB1aW50MzJfdCBy
b290Qml0ID0gMSA8PCB0eXBlOwotICAgIHVpbnQzMl90IGRlcml2ZWRCaXQgPSByb290Qml0IDw8
IGRvbUJyZWFrcG9pbnREZXJpdmVkVHlwZVNoaWZ0OwotICAgIHJldHVybiBtX2RvbUJyZWFrcG9p
bnRzLmdldChub2RlKSAmIChyb290Qml0IHwgZGVyaXZlZEJpdCk7CisgICAgcmV0dXJuIHBhdXNl
RGF0YTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2VyQWdlbnQuaApp
bmRleCBiYTRlZjYwMjNkYWIuLmFkMDFjNjc3ZTVkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFnZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFnZW50LmgK
QEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CcmVha3BvaW50Lmg+CisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSW5zcGVjdG9yUHJvdG9jb2xPYmplY3RzLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NSwxNCArNDYsMTMgQEAgcHVibGlj
OgogICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gRE9NRGVidWdn
ZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIKLSAgICB2b2lkIHNldERPTUJyZWFrcG9pbnQoRXJy
b3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHR5cGUpIG92ZXJyaWRlOworICAg
IHZvaWQgc2V0RE9NQnJlYWtwb2ludChFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFN0
cmluZyYgdHlwZSwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zKSBvdmVycmlkZTsKICAgICB2
b2lkIHJlbW92ZURPTUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBT
dHJpbmcmIHR5cGUpIG92ZXJyaWRlOwogCiAgICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
CiAgICAgdm9pZCBtYWluRnJhbWVOYXZpZ2F0ZWQoKSBmaW5hbDsKICAgICB2b2lkIGZyYW1lRG9j
dW1lbnRVcGRhdGVkKEZyYW1lJik7CiAgICAgdm9pZCB3aWxsSW5zZXJ0RE9NTm9kZShOb2RlJiBw
YXJlbnQpOwotICAgIHZvaWQgZGlkSW5zZXJ0RE9NTm9kZShOb2RlJik7CiAgICAgdm9pZCB3aWxs
UmVtb3ZlRE9NTm9kZShOb2RlJik7CiAgICAgdm9pZCBkaWRSZW1vdmVET01Ob2RlKE5vZGUmKTsK
ICAgICB2b2lkIHdpbGxNb2RpZnlET01BdHRyKEVsZW1lbnQmKTsKQEAgLTY2LDEyICs2NiwxMSBA
QCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRBbmltYXRpb25GcmFtZUJyZWFrcG9pbnQoRXJyb3JT
dHJpbmcmLCBSZWZQdHI8SlNDOjpCcmVha3BvaW50PiYmKSBvdmVycmlkZTsKIAotICAgIHZvaWQg
ZGVzY3JpcHRpb25Gb3JET01FdmVudChOb2RlJiwgaW50IGJyZWFrcG9pbnRUeXBlLCBib29sIGlu
c2VydGlvbiwgSlNPTjo6T2JqZWN0JiBkZXNjcmlwdGlvbik7Ci0gICAgdm9pZCB1cGRhdGVTdWJ0
cmVlQnJlYWtwb2ludHMoTm9kZSosIHVpbnQzMl90IHJvb3RNYXNrLCBib29sIHNldCk7Ci0gICAg
Ym9vbCBjaGVja1N1YnRyZWVGb3JOb2RlUmVtb3ZlZChOb2RlKik7Ci0gICAgYm9vbCBoYXNCcmVh
a3BvaW50KE5vZGUqLCBpbnQgdHlwZSk7CisgICAgUmVmPEpTT046Ok9iamVjdD4gYnVpbGRQYXVz
ZURhdGFGb3JET01CcmVha3BvaW50KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTURlYnVnZ2VyOjpE
T01CcmVha3BvaW50VHlwZSwgTm9kZSYgYnJlYWtwb2ludE93bmVyKTsKIAotICAgIEhhc2hNYXA8
Tm9kZSosIHVpbnQzMl90PiBtX2RvbUJyZWFrcG9pbnRzOworICAgIEhhc2hNYXA8Tm9kZSosIFJl
ZjxKU0M6OkJyZWFrcG9pbnQ+PiBtX2RvbVN1YnRyZWVNb2RpZmllZEJyZWFrcG9pbnRzOworICAg
IEhhc2hNYXA8Tm9kZSosIFJlZjxKU0M6OkJyZWFrcG9pbnQ+PiBtX2RvbUF0dHJpYnV0ZU1vZGlm
aWVkQnJlYWtwb2ludHM7CisgICAgSGFzaE1hcDxOb2RlKiwgUmVmPEpTQzo6QnJlYWtwb2ludD4+
IG1fZG9tTm9kZVJlbW92ZWRCcmVha3BvaW50czsKIAogICAgIFJlZlB0cjxKU0M6OkJyZWFrcG9p
bnQ+IG1fcGF1c2VPbkFsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQ7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRE9NRGVidWdn
ZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3Jr
ZXJET01EZWJ1Z2dlckFnZW50LmNwcAppbmRleCAxNDc2ZmJjODE5NjMuLmJkNWQ4YTgzNGVhZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2Vy
RE9NRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy93b3JrZXIvV29ya2VyRE9NRGVidWdnZXJBZ2VudC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgV29y
a2VyRE9NRGVidWdnZXJBZ2VudDo6V29ya2VyRE9NRGVidWdnZXJBZ2VudChXb3JrZXJBZ2VudENv
bnRleHQmIGNvbnRleHQsIEluc3AKIAogV29ya2VyRE9NRGVidWdnZXJBZ2VudDo6fldvcmtlckRP
TURlYnVnZ2VyQWdlbnQoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgV29ya2VyRE9NRGVidWdnZXJBZ2Vu
dDo6c2V0RE9NQnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCAvKiBub2Rl
SWQgKi8sIGNvbnN0IFN0cmluZyYgLyogdHlwZVN0cmluZyAqLykKK3ZvaWQgV29ya2VyRE9NRGVi
dWdnZXJBZ2VudDo6c2V0RE9NQnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGlu
dCAvKiBub2RlSWQgKi8sIGNvbnN0IFN0cmluZyYgLyogdHlwZVN0cmluZyAqLywgY29uc3QgSlNP
Tjo6T2JqZWN0KiAvKiBvcHRpb25zUGF5bG9hZCAqLykKIHsKICAgICBlcnJvclN0cmluZyA9ICJO
b3Qgc3VwcG9ydGVkIl9zOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy93b3JrZXIvV29ya2VyRE9NRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRE9NRGVidWdnZXJBZ2VudC5oCmluZGV4IGRh
ZDE4ZjVjMGVjOC4uODZlYjkzZjVlMTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJET01EZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRE9NRGVidWdnZXJBZ2VudC5o
CkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICB+V29ya2VyRE9NRGVidWdnZXJBZ2VudCgp
IG92ZXJyaWRlOwogCiAgICAgLy8gRE9NRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIK
LSAgICB2b2lkIHNldERPTUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25z
dCBTdHJpbmcmIHR5cGUpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0RE9NQnJlYWtwb2ludChFcnJv
clN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgSlNPTjo6T2Jq
ZWN0KiBvcHRpb25zKSBvdmVycmlkZTsKICAgICB2b2lkIHJlbW92ZURPTUJyZWFrcG9pbnQoRXJy
b3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHR5cGUpIG92ZXJyaWRlOwogCiBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggOTc5NWE2MzM0NTAyLi45ZjY5YTgx
MmU5ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDIwLTA5
LTA0ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBhbGxvdyBET00gYnJlYWtwb2ludHMgdG8gYmUgY29uZmlndXJlZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1Nzk1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQnJpYW4gQnVyZy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJv
bGxlcnMvRE9NTWFuYWdlci5qczoKKyAgICAgICAgKFdJLkRPTU1hbmFnZXIucHJvdG90eXBlLl9z
ZXRDaGlsZE5vZGVzKToKKyAgICAgICAgRGlzcGF0Y2ggZXZlbnRzIGZvciBlYWNoIG5ldyBjaGls
ZCBub2RlIGFkZGVkIGFuZCBlYWNoIGV4aXN0aW5nIGNoaWxkIG5vZGUgcmVtb3ZlZCBzbyB0aGF0
CisgICAgICAgIGFueSBsaXN0ZW5lcnMgY2FuIGFsc28ga25vdyB3aGVuIG5ldyBub2RlcyBhcmUg
YWRkZWQgdmlhIGEgZnVsbCBjaGlsZHJlbiBwYXlsb2FkIHVwZGF0ZS4KKworICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NRGVidWdnZXJNYW5hZ2VyLmpzOgorICAgICAgICAo
V0kuRE9NRGVidWdnZXJNYW5hZ2VyKToKKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5w
cm90b3R5cGUuYWRkRE9NQnJlYWtwb2ludCk6CisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFn
ZXIucHJvdG90eXBlLnJlbW92ZURPTUJyZWFrcG9pbnQpOgorICAgICAgICAoV0kuRE9NRGVidWdn
ZXJNYW5hZ2VyLnByb3RvdHlwZS5fZGV0YWNoRE9NQnJlYWtwb2ludHNGb3JGcmFtZSk6IEFkZGVk
LgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5fc3BlY3VsYXRpdmVs
eVJlc29sdmVET01CcmVha3BvaW50c0ZvclVSTCk6CisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1h
bmFnZXIucHJvdG90eXBlLl9zcGVjdWxhdGl2ZWx5UmVzb2x2ZURPTUJyZWFrcG9pbnQpOiBBZGRl
ZC4KKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX3Jlc29sdmVET01C
cmVha3BvaW50KToKKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX3Nl
dERPTUJyZWFrcG9pbnQpOiBBZGRlZC4KKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5w
cm90b3R5cGUuX3JlbW92ZURPTUJyZWFrcG9pbnQpOiBBZGRlZC4KKyAgICAgICAgKFdJLkRPTURl
YnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX2hhbmRsZURPTUJyZWFrcG9pbnREaXNhYmxlZFN0YXRl
Q2hhbmdlZCk6CisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl9oYW5k
bGVET01CcmVha3BvaW50RWRpdGFibGVQcm9wZXJ0eUNoYW5nZWQpOiBBZGRlZC4KKyAgICAgICAg
KFdJLkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX2hhbmRsZURPTUJyZWFrcG9pbnRBY3Rp
b25zQ2hhbmdlZCk6IEFkZGVkLgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3Rv
dHlwZS5faGFuZGxlRE9NQnJlYWtwb2ludERPTU5vZGVXaWxsQ2hhbmdlKTogQWRkZWQuCisgICAg
ICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl9oYW5kbGVET01CcmVha3BvaW50
RE9NTm9kZURpZENoYW5nZSk6IEFkZGVkLgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2Vy
LnByb3RvdHlwZS5fY2hpbGRGcmFtZVdhc1JlbW92ZWQpOgorICAgICAgICAoV0kuRE9NRGVidWdn
ZXJNYW5hZ2VyLnByb3RvdHlwZS5fbWFpblJlc291cmNlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdJ
LkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX25vZGVJbnNlcnRlZCk6CisgICAgICAgIChX
SS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl9ub2RlUmVtb3ZlZCk6CisgICAgICAgIChX
SS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl9kZXRhY2hET01CcmVha3BvaW50KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX2RldGFjaEJy
ZWFrcG9pbnRzRm9yRnJhbWUpOiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5h
Z2VyLnByb3RvdHlwZS5fdXBkYXRlRE9NQnJlYWtwb2ludCk6IERlbGV0ZWQuCisgICAgICAgIFJl
Y3Vyc2l2ZWx5IHdhbGsgYW55IGFkZGVkIG5vZGUncyBzdWJ0cmVlIHRvIHJlc29sdmUgYW5kIHNl
dCBhbnkgbWF0Y2hpbmcgRE9NIGJyZWFrcG9pbnRzLgorICAgICAgICBJdGVyYXRlIGFsbCBleGlz
dGluZyBET00gYnJlYWtwb2ludHMgdG8gc2VlIGlmIHRoZSBvd25lciBub2RlIGlzIHBhcnQgb2Yg
dGhlIHN1YnRyZWUgb2YgYW55CisgICAgICAgIHJlbW92ZWQgbm9kZXMgYW5kIHJlbW92ZSBvdCBp
ZiBzby4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTUJyZWFrcG9pbnQuanM6
CisgICAgICAgIChXSS5ET01CcmVha3BvaW50KToKKyAgICAgICAgKFdJLkRPTUJyZWFrcG9pbnQu
ZGlzcGxheU5hbWVGb3JUeXBlKToKKyAgICAgICAgKFdJLkRPTUJyZWFrcG9pbnQuZnJvbUpTT04p
OgorICAgICAgICAoV0kuRE9NQnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IGVkaXRhYmxlKTogQWRk
ZWQuCisgICAgICAgIChXSS5ET01CcmVha3BvaW50LnByb3RvdHlwZS5nZXQgZG9tTm9kZSk6IEFk
ZGVkLgorICAgICAgICAoV0kuRE9NQnJlYWtwb2ludC5wcm90b3R5cGUuc2V0IGRvbU5vZGUpOiBB
ZGRlZC4KKyAgICAgICAgKFdJLkRPTUJyZWFrcG9pbnQucHJvdG90eXBlLmdldCBkb21Ob2RlSWRl
bnRpZmllcik6IERlbGV0ZWQuCisgICAgICAgIChXSS5ET01CcmVha3BvaW50LnByb3RvdHlwZS5z
ZXQgZG9tTm9kZUlkZW50aWZpZXIpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvRE9NVHJlZUNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV0kuRE9NVHJlZUNvbnRlbnRW
aWV3KToKKyAgICAgICAgKFdJLkRPTVRyZWVDb250ZW50Vmlldy5wcm90b3R5cGUuY2xvc2VkKToK
KyAgICAgICAgKFdJLkRPTVRyZWVDb250ZW50Vmlldy5wcm90b3R5cGUuX2RvbVRyZWVFbGVtZW50
QWRkZWQpOgorICAgICAgICAoV0kuRE9NVHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fZG9tQnJl
YWtwb2ludEFkZGVkT3JSZW1vdmVkKToKKyAgICAgICAgKFdJLkRPTVRyZWVDb250ZW50Vmlldy5w
cm90b3R5cGUuX2hhbmRsZURPTUJyZWFrcG9pbnREaXNhYmxlZFN0YXRlQ2hhbmdlZCk6CisgICAg
ICAgIChXSS5ET01UcmVlQ29udGVudFZpZXcucHJvdG90eXBlLl9oYW5kbGVET01CcmVha3BvaW50
RE9NTm9kZVdpbGxDaGFuZ2UpOiBBZGRlZC4KKyAgICAgICAgKFdJLkRPTVRyZWVDb250ZW50Vmll
dy5wcm90b3R5cGUuX2hhbmRsZURPTUJyZWFrcG9pbnRET01Ob2RlRGlkQ2hhbmdlKTogQWRkZWQu
CisgICAgICAgIChXSS5ET01UcmVlQ29udGVudFZpZXcucHJvdG90eXBlLl91cGRhdGVCcmVha3Bv
aW50U3RhdHVzKToKKyAgICAgICAgKFdJLkRPTVRyZWVDb250ZW50Vmlldy5wcm90b3R5cGUuX3Jl
c3RvcmVCcmVha3BvaW50c0FmdGVyVXBkYXRlKToKKyAgICAgICAgKFdJLkRPTVRyZWVDb250ZW50
Vmlldy5wcm90b3R5cGUuX2hhbmRsZURPTUJyZWFrcG9pbnRET01Ob2RlQ2hhbmdlZCk6IERlbGV0
ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VzTmF2aWdhdGlvblNpZGVi
YXJQYW5lbC5qczoKKyAgICAgICAgKFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsKToK
KyAgICAgICAgKFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fdXBk
YXRlUGF1c2VSZWFzb25TZWN0aW9uKToKKyAgICAgICAgKFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lk
ZWJhclBhbmVsLnByb3RvdHlwZS5faGFuZGxlRE9NQnJlYWtwb2ludERPTU5vZGVXaWxsQ2hhbmdl
KTogQWRkZWQuCisgICAgICAgIChXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90
b3R5cGUuX2hhbmRsZURPTUJyZWFrcG9pbnRET01Ob2RlRGlkQ2hhbmdlKTogQWRkZWQuCisgICAg
ICAgIChXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUuX2hhbmRsZURP
TUJyZWFrcG9pbnRET01Ob2RlQ2hhbmdlZCk6IERlbGV0ZWQuCisgICAgICAgIFVzZSBhIGBXSS5E
T01Ob2RlYCBpbnN0ZWFkIG9mIGFuIGlkZW50aWZpZXIgaW5zdGVhZCBvZiBmZXRjaGluZyB0aGUg
bm9kZSBmb3IgdGhlIGlkZW50aWZpZXIKKyAgICAgICAgZWFjaCB0aW1lIGFuZCBjaGVja2luZyBp
ZiBpcyB2YWxpZC4KKwogMjAyMC0wOS0wNCAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5j
b20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogTG9jYWxpemF0aW9uOiB0eXBvIGluIFdBSS1B
UklBIHN0cmluZyAoIlt0aGVdIGVsZW1lbnQgaGF2ZSIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01EZWJ1Z2dlck1hbmFnZXIu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01E
ZWJ1Z2dlck1hbmFnZXIuanMKaW5kZXggYzg4NmJmMThiYjFiLi5hZTRiMTU4ZjMwY2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RP
TURlYnVnZ2VyTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9ET01EZWJ1Z2dlck1hbmFnZXIuanMKQEAgLTMxLDYgKzMxLDcgQEAg
V0kuRE9NRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMg
V0kuT2JqZWN0CiAKICAgICAgICAgdGhpcy5fZG9tQnJlYWtwb2ludFVSTE1hcCA9IG5ldyBNdWx0
aW1hcDsKICAgICAgICAgdGhpcy5fZG9tQnJlYWtwb2ludEZyYW1lSWRlbnRpZmllck1hcCA9IG5l
dyBNYXA7CisgICAgICAgIHRoaXMuX2NsZWFyaW5nRE9NQnJlYWtwb2ludHNGb3JSZW1vdmVkRE9N
Tm9kZSA9IGZhbHNlOwogCiAgICAgICAgIHRoaXMuX2xpc3RlbmVyQnJlYWtwb2ludHMgPSBbXTsK
ICAgICAgICAgdGhpcy5fYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludCA9IG51bGw7CkBAIC00
Miw2ICs0MywxMiBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1h
bmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5fYWxsUmVxdWVzdHNCcmVha3Bv
aW50ID0gbnVsbDsKIAogICAgICAgICBXSS5ET01CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIo
V0kuQnJlYWtwb2ludC5FdmVudC5EaXNhYmxlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVE
T01CcmVha3BvaW50RGlzYWJsZWRTdGF0ZUNoYW5nZWQsIHRoaXMpOworICAgICAgICBXSS5ET01C
cmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5Db25kaXRpb25E
aWRDaGFuZ2UsIHRoaXMuX2hhbmRsZURPTUJyZWFrcG9pbnRFZGl0YWJsZVByb3BlcnR5Q2hhbmdl
ZCwgdGhpcyk7CisgICAgICAgIFdJLkRPTUJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5C
cmVha3BvaW50LkV2ZW50Lklnbm9yZUNvdW50RGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVET01CcmVh
a3BvaW50RWRpdGFibGVQcm9wZXJ0eUNoYW5nZWQsIHRoaXMpOworICAgICAgICBXSS5ET01CcmVh
a3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5BdXRvQ29udGludWVE
aWRDaGFuZ2UsIHRoaXMuX2hhbmRsZURPTUJyZWFrcG9pbnRFZGl0YWJsZVByb3BlcnR5Q2hhbmdl
ZCwgdGhpcyk7CisgICAgICAgIFdJLkRPTUJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5C
cmVha3BvaW50LkV2ZW50LkFjdGlvbnNEaWRDaGFuZ2UsIHRoaXMuX2hhbmRsZURPTUJyZWFrcG9p
bnRBY3Rpb25zQ2hhbmdlZCwgdGhpcyk7CisgICAgICAgIFdJLkRPTUJyZWFrcG9pbnQuYWRkRXZl
bnRMaXN0ZW5lcihXSS5ET01CcmVha3BvaW50LkV2ZW50LkRPTU5vZGVXaWxsQ2hhbmdlLCB0aGlz
Ll9oYW5kbGVET01CcmVha3BvaW50RE9NTm9kZVdpbGxDaGFuZ2UsIHRoaXMpOworICAgICAgICBX
SS5ET01CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NQnJlYWtwb2ludC5FdmVudC5E
T01Ob2RlRGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVET01CcmVha3BvaW50RE9NTm9kZURpZENoYW5n
ZSwgdGhpcyk7CiAKICAgICAgICAgV0kuRXZlbnRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIo
V0kuQnJlYWtwb2ludC5FdmVudC5EaXNhYmxlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVF
dmVudEJyZWFrcG9pbnREaXNhYmxlZFN0YXRlQ2hhbmdlZCwgdGhpcyk7CiAgICAgICAgIFdJLkV2
ZW50QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQ29uZGl0
aW9uRGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVFdmVudEJyZWFrcG9pbnRFZGl0YWJsZVByb3BlcnR5
Q2hhbmdlZCwgdGhpcyk7CkBAIC0yMzAsNyArMjM3LDcgQEAgV0kuRE9NRGVidWdnZXJNYW5hZ2Vy
ID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHdo
aWxlIChmcmFtZXMubGVuZ3RoKSB7CiAgICAgICAgICAgICBsZXQgZnJhbWUgPSBmcmFtZXMuc2hp
ZnQoKTsKIAotICAgICAgICAgICAgbGV0IGRvbUJyZWFrcG9pbnROb2RlSWRlbnRpZmllck1hcCA9
IHRoaXMuX2RvbUJyZWFrcG9pbnRGcmFtZUlkZW50aWZpZXJNYXAuZ2V0KGZyYW1lLmlkKTsKKyAg
ICAgICAgICAgIGxldCBkb21CcmVha3BvaW50Tm9kZUlkZW50aWZpZXJNYXAgPSB0aGlzLl9kb21C
cmVha3BvaW50RnJhbWVJZGVudGlmaWVyTWFwLmdldChmcmFtZSk7CiAgICAgICAgICAgICBpZiAo
ZG9tQnJlYWtwb2ludE5vZGVJZGVudGlmaWVyTWFwKQogICAgICAgICAgICAgICAgIHJlc29sdmVk
QnJlYWtwb2ludHMucHVzaEFsbChkb21CcmVha3BvaW50Tm9kZUlkZW50aWZpZXJNYXAudmFsdWVz
KCkpOwogCkBAIC0yNTAsMTEgKzI1NywxMSBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFz
cyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgaWYgKCFub2Rl
IHx8ICFub2RlLmZyYW1lKQogICAgICAgICAgICAgcmV0dXJuIFtdOwogCi0gICAgICAgIGxldCBk
b21CcmVha3BvaW50Tm9kZUlkZW50aWZpZXJNYXAgPSB0aGlzLl9kb21CcmVha3BvaW50RnJhbWVJ
ZGVudGlmaWVyTWFwLmdldChub2RlLmZyYW1lLmlkKTsKKyAgICAgICAgbGV0IGRvbUJyZWFrcG9p
bnROb2RlSWRlbnRpZmllck1hcCA9IHRoaXMuX2RvbUJyZWFrcG9pbnRGcmFtZUlkZW50aWZpZXJN
YXAuZ2V0KG5vZGUuZnJhbWUpOwogICAgICAgICBpZiAoIWRvbUJyZWFrcG9pbnROb2RlSWRlbnRp
Zmllck1hcCkKICAgICAgICAgICAgIHJldHVybiBbXTsKIAotICAgICAgICBsZXQgYnJlYWtwb2lu
dHMgPSBkb21CcmVha3BvaW50Tm9kZUlkZW50aWZpZXJNYXAuZ2V0KG5vZGUuaWQpOworICAgICAg
ICBsZXQgYnJlYWtwb2ludHMgPSBkb21CcmVha3BvaW50Tm9kZUlkZW50aWZpZXJNYXAuZ2V0KG5v
ZGUpOwogICAgICAgICByZXR1cm4gYnJlYWtwb2ludHMgPyBBcnJheS5mcm9tKGJyZWFrcG9pbnRz
KSA6IFtdOwogICAgIH0KIApAQCAtMjc5LDIxICsyODYsMzAgQEAgV0kuRE9NRGVidWdnZXJNYW5h
Z2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICBh
ZGRET01CcmVha3BvaW50KGJyZWFrcG9pbnQpCiAgICAgewotICAgICAgICBjb25zb2xlLmFzc2Vy
dChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuRE9NQnJlYWtwb2ludCk7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5ET01CcmVha3BvaW50LCBicmVha3Bv
aW50KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludC51cmwsIGJyZWFrcG9pbnQp
OwogICAgICAgICBpZiAoIWJyZWFrcG9pbnQgfHwgIWJyZWFrcG9pbnQudXJsKQogICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChicmVha3BvaW50LnNwZWNpYWwpIHsKLSAgICAgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5F
dmVudC5ET01CcmVha3BvaW50QWRkZWQsIHticmVha3BvaW50fSk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KKyAgICAgICAgY29uc29sZS5hc3NlcnQoIWJyZWFrcG9pbnQuc3BlY2lh
bCwgYnJlYWtwb2ludCk7CiAKICAgICAgICAgdGhpcy5fZG9tQnJlYWtwb2ludFVSTE1hcC5hZGQo
YnJlYWtwb2ludC51cmwsIGJyZWFrcG9pbnQpOwogCi0gICAgICAgIGlmIChicmVha3BvaW50LmRv
bU5vZGVJZGVudGlmaWVyKQotICAgICAgICAgICAgdGhpcy5fcmVzb2x2ZURPTUJyZWFrcG9pbnQo
YnJlYWtwb2ludCwgYnJlYWtwb2ludC5kb21Ob2RlSWRlbnRpZmllcik7CisgICAgICAgIGlmIChi
cmVha3BvaW50LmRvbU5vZGUpIHsKKyAgICAgICAgICAgIHRoaXMuX3Jlc29sdmVET01CcmVha3Bv
aW50KGJyZWFrcG9pbnQsIGJyZWFrcG9pbnQuZG9tTm9kZSk7CiAKLSAgICAgICAgdGhpcy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkRPTUJyZWFr
cG9pbnRBZGRlZCwge2JyZWFrcG9pbnR9KTsKKyAgICAgICAgICAgIGlmICghYnJlYWtwb2ludC5k
aXNhYmxlZCkgeworICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBnZXQgdGhlIHRhcmdldCBh
c3NvY2lhdGVkIHdpdGggdGhlIG5vZGVJZGVudGlmaWVyIG9mIHRoaXMgYnJlYWtwb2ludC4KKyAg
ICAgICAgICAgICAgICBsZXQgdGFyZ2V0ID0gV0kuYXNzdW1pbmdNYWluVGFyZ2V0KCk7CisgICAg
ICAgICAgICAgICAgaWYgKHRhcmdldCkKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2V0RE9N
QnJlYWtwb2ludChicmVha3BvaW50LCB0YXJnZXQpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01EZWJ1Z2dlck1hbmFnZXIu
RXZlbnQuRE9NQnJlYWtwb2ludEFkZGVkLCB7YnJlYWtwb2ludH0pOworCisgICAgICAgICAgICBX
SS5kZWJ1Z2dlck1hbmFnZXIuYWRkUHJvYmVzRm9yQnJlYWtwb2ludChicmVha3BvaW50KTsKKyAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICB0aGlzLl9zcGVjdWxhdGl2ZWx5UmVzb2x2ZURPTUJy
ZWFrcG9pbnQoYnJlYWtwb2ludCk7CiAKICAgICAgICAgaWYgKCF0aGlzLl9yZXN0b3JpbmdCcmVh
a3BvaW50cykKICAgICAgICAgICAgIFdJLm9iamVjdFN0b3Jlcy5kb21CcmVha3BvaW50cy5wdXRP
YmplY3QoYnJlYWtwb2ludCk7CkBAIC0zMDEsMzAgKzMxNywzMiBAQCBXSS5ET01EZWJ1Z2dlck1h
bmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAg
IHJlbW92ZURPTUJyZWFrcG9pbnQoYnJlYWtwb2ludCkKICAgICB7Ci0gICAgICAgIGNvbnNvbGUu
YXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5ET01CcmVha3BvaW50KTsKLSAgICAgICAg
aWYgKCFicmVha3BvaW50KQorICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3Rh
bmNlb2YgV0kuRE9NQnJlYWtwb2ludCwgYnJlYWtwb2ludCk7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KGJyZWFrcG9pbnQudXJsLCBicmVha3BvaW50KTsKKyAgICAgICAgaWYgKCFicmVha3BvaW50
IHx8ICFicmVha3BvaW50LnVybCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAo
YnJlYWtwb2ludC5zcGVjaWFsKSB7Ci0gICAgICAgICAgICBicmVha3BvaW50LmRpc2FibGVkID0g
dHJ1ZTsKLSAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTURl
YnVnZ2VyTWFuYWdlci5FdmVudC5ET01CcmVha3BvaW50UmVtb3ZlZCwge2JyZWFrcG9pbnR9KTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICBjb25zb2xlLmFzc2VydCgh
YnJlYWtwb2ludC5zcGVjaWFsLCBicmVha3BvaW50KTsKIAotICAgICAgICB0aGlzLl9kZXRhY2hE
T01CcmVha3BvaW50KGJyZWFrcG9pbnQpOworICAgICAgICAvLyBEaXNhYmxlIHRoZSBicmVha3Bv
aW50IGZpcnN0LCBzbyByZW1vdmluZyBhY3Rpb25zIGRvZXNuJ3QgcmUtYWRkIHRoZSBicmVha3Bv
aW50LgorICAgICAgICBicmVha3BvaW50LmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgYnJlYWtw
b2ludC5jbGVhckFjdGlvbnMoKTsKIAogICAgICAgICB0aGlzLl9kb21CcmVha3BvaW50VVJMTWFw
LmRlbGV0ZShicmVha3BvaW50LnVybCk7CiAKLSAgICAgICAgaWYgKCFicmVha3BvaW50LmRpc2Fi
bGVkKSB7Ci0gICAgICAgICAgICAvLyBXZSBzaG91bGQgZ2V0IHRoZSB0YXJnZXQgYXNzb2NpYXRl
ZCB3aXRoIHRoZSBub2RlSWRlbnRpZmllciBvZiB0aGlzIGJyZWFrcG9pbnQuCi0gICAgICAgICAg
ICBsZXQgdGFyZ2V0ID0gV0kuYXNzdW1pbmdNYWluVGFyZ2V0KCk7Ci0gICAgICAgICAgICB0YXJn
ZXQuRE9NRGVidWdnZXJBZ2VudC5yZW1vdmVET01CcmVha3BvaW50KGJyZWFrcG9pbnQuZG9tTm9k
ZUlkZW50aWZpZXIsIGJyZWFrcG9pbnQudHlwZSk7CisgICAgICAgIGlmIChicmVha3BvaW50LmRv
bU5vZGUpIHsKKyAgICAgICAgICAgIGlmIChicmVha3BvaW50LmRvbU5vZGUuZnJhbWUpIHsKKyAg
ICAgICAgICAgICAgICBsZXQgZG9tQnJlYWtwb2ludE5vZGVJZGVudGlmaWVyTWFwID0gdGhpcy5f
ZG9tQnJlYWtwb2ludEZyYW1lSWRlbnRpZmllck1hcC5nZXQoYnJlYWtwb2ludC5kb21Ob2RlLmZy
YW1lKTsKKyAgICAgICAgICAgICAgICBkb21CcmVha3BvaW50Tm9kZUlkZW50aWZpZXJNYXAuZGVs
ZXRlKGJyZWFrcG9pbnQuZG9tTm9kZSwgYnJlYWtwb2ludCk7CisgICAgICAgICAgICAgICAgaWYg
KCFkb21CcmVha3BvaW50Tm9kZUlkZW50aWZpZXJNYXAuc2l6ZSkKKyAgICAgICAgICAgICAgICAg
ICAgdGhpcy5fZG9tQnJlYWtwb2ludEZyYW1lSWRlbnRpZmllck1hcC5kZWxldGUoYnJlYWtwb2lu
dC5kb21Ob2RlLmZyYW1lKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGhpcy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkRPTUJyZWFr
cG9pbnRSZW1vdmVkLCB7YnJlYWtwb2ludH0pOworCisgICAgICAgICAgICBicmVha3BvaW50LmRv
bU5vZGUgPSBudWxsOwogICAgICAgICB9CiAKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkRPTUJyZWFrcG9pbnRSZW1vdmVk
LCB7YnJlYWtwb2ludH0pOwotCi0gICAgICAgIGJyZWFrcG9pbnQuZG9tTm9kZUlkZW50aWZpZXIg
PSBudWxsOwotCiAgICAgICAgIGlmICghdGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMpCiAgICAg
ICAgICAgICBXSS5vYmplY3RTdG9yZXMuZG9tQnJlYWtwb2ludHMuZGVsZXRlT2JqZWN0KGJyZWFr
cG9pbnQpOwogICAgIH0KQEAgLTUwOSwzNiArNTI3LDIwIEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdl
ciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgLy8g
UHJpdmF0ZQogCi0gICAgX2RldGFjaERPTUJyZWFrcG9pbnQoYnJlYWtwb2ludCkKKyAgICBfZGV0
YWNoRE9NQnJlYWtwb2ludHNGb3JGcmFtZShmcmFtZSkKICAgICB7Ci0gICAgICAgIGxldCBub2Rl
SWRlbnRpZmllciA9IGJyZWFrcG9pbnQuZG9tTm9kZUlkZW50aWZpZXI7Ci0gICAgICAgIGxldCBu
b2RlID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkZW50aWZpZXIpOwotICAgICAgICBj
b25zb2xlLmFzc2VydChub2RlLCAiTWlzc2luZyBET00gbm9kZSBmb3IgYnJlYWtwb2ludC4iLCBi
cmVha3BvaW50KTsKLSAgICAgICAgaWYgKCFub2RlIHx8ICFub2RlLmZyYW1lKQotICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBsZXQgZG9tQnJlYWtwb2ludE5vZGVJZGVudGlmaWVyTWFwID0g
dGhpcy5fZG9tQnJlYWtwb2ludEZyYW1lSWRlbnRpZmllck1hcC5nZXQoZnJhbWUpOworICAgICAg
ICBpZiAoZG9tQnJlYWtwb2ludE5vZGVJZGVudGlmaWVyTWFwKSB7CisgICAgICAgICAgICB0aGlz
Ll9kb21CcmVha3BvaW50RnJhbWVJZGVudGlmaWVyTWFwLmRlbGV0ZShmcmFtZSk7CiAKLSAgICAg
ICAgbGV0IGZyYW1lSWRlbnRpZmllciA9IG5vZGUuZnJhbWUuaWQ7Ci0gICAgICAgIGxldCBkb21C
cmVha3BvaW50Tm9kZUlkZW50aWZpZXJNYXAgPSB0aGlzLl9kb21CcmVha3BvaW50RnJhbWVJZGVu
dGlmaWVyTWFwLmdldChmcmFtZUlkZW50aWZpZXIpOwotICAgICAgICBjb25zb2xlLmFzc2VydChk
b21CcmVha3BvaW50Tm9kZUlkZW50aWZpZXJNYXAsICJNaXNzaW5nIERPTSBicmVha3BvaW50cyBm
b3Igbm9kZSBwYXJlbnQgZnJhbWUuIiwgbm9kZSk7Ci0gICAgICAgIGlmICghZG9tQnJlYWtwb2lu
dE5vZGVJZGVudGlmaWVyTWFwKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgdGhp
cy5fY2xlYXJpbmdET01CcmVha3BvaW50c0ZvclJlbW92ZWRET01Ob2RlID0gdHJ1ZTsKKyAgICAg
ICAgICAgIGZvciAobGV0IGJyZWFrcG9pbnQgb2YgZG9tQnJlYWtwb2ludE5vZGVJZGVudGlmaWVy
TWFwLnZhbHVlcygpKQorICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQuZG9tTm9kZSA9IG51bGw7
CisgICAgICAgICAgICB0aGlzLl9jbGVhcmluZ0RPTUJyZWFrcG9pbnRzRm9yUmVtb3ZlZERPTU5v
ZGUgPSBmYWxzZTsKKyAgICAgICAgfQogCi0gICAgICAgIGRvbUJyZWFrcG9pbnROb2RlSWRlbnRp
Zmllck1hcC5kZWxldGUobm9kZUlkZW50aWZpZXIsIGJyZWFrcG9pbnQpOwotCi0gICAgICAgIGlm
ICghZG9tQnJlYWtwb2ludE5vZGVJZGVudGlmaWVyTWFwLnNpemUpCi0gICAgICAgICAgICB0aGlz
Ll9kb21CcmVha3BvaW50RnJhbWVJZGVudGlmaWVyTWFwLmRlbGV0ZShmcmFtZUlkZW50aWZpZXIp
OwotICAgIH0KLQotICAgIF9kZXRhY2hCcmVha3BvaW50c0ZvckZyYW1lKGZyYW1lKQotICAgIHsK
LSAgICAgICAgbGV0IGRvbUJyZWFrcG9pbnROb2RlSWRlbnRpZmllck1hcCA9IHRoaXMuX2RvbUJy
ZWFrcG9pbnRGcmFtZUlkZW50aWZpZXJNYXAuZ2V0KGZyYW1lLmlkKTsKLSAgICAgICAgaWYgKCFk
b21CcmVha3BvaW50Tm9kZUlkZW50aWZpZXJNYXApCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgdGhpcy5fZG9tQnJlYWtwb2ludEZyYW1lSWRlbnRpZmllck1hcC5kZWxldGUoZnJhbWUu
aWQpOwotCi0gICAgICAgIGZvciAobGV0IGJyZWFrcG9pbnQgb2YgZG9tQnJlYWtwb2ludE5vZGVJ
ZGVudGlmaWVyTWFwLnZhbHVlcygpKQotICAgICAgICAgICAgYnJlYWtwb2ludC5kb21Ob2RlSWRl
bnRpZmllciA9IG51bGw7CisgICAgICAgIGZvciAobGV0IGNoaWxkRnJhbWUgb2YgZnJhbWUuY2hp
bGRGcmFtZUNvbGxlY3Rpb24pCisgICAgICAgICAgICB0aGlzLl9kZXRhY2hET01CcmVha3BvaW50
c0ZvckZyYW1lKGNoaWxkRnJhbWUpOwogICAgIH0KIAogICAgIF9zcGVjdWxhdGl2ZWx5UmVzb2x2
ZURPTUJyZWFrcG9pbnRzRm9yVVJMKHVybCkKQEAgLTU0Nyw3NSArNTQ5LDgxIEBAIFdJLkRPTURl
YnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVj
dAogICAgICAgICBpZiAoIWRvbUJyZWFrcG9pbnRzKQogICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIGZvciAobGV0IGJyZWFrcG9pbnQgb2YgZG9tQnJlYWtwb2ludHMpIHsKLSAgICAgICAg
ICAgIGlmIChicmVha3BvaW50LmRvbU5vZGVJZGVudGlmaWVyKQotICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotCi0gICAgICAgICAgICBXSS5kb21NYW5hZ2VyLnB1c2hOb2RlQnlQYXRoVG9Gcm9u
dGVuZChicmVha3BvaW50LnBhdGgsIChub2RlSWRlbnRpZmllcikgPT4gewotICAgICAgICAgICAg
ICAgIGlmIChicmVha3BvaW50LmRvbU5vZGVJZGVudGlmaWVyKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIC8vIFRoaXMgYnJlYWtwb2ludCBtYXkgaGF2ZSBiZWVuIHJlc29sdmVkIGJ5IGEgbm9kZSBi
ZWluZyBpbnNlcnRlZCBiZWZvcmUgdGhpcwotICAgICAgICAgICAgICAgICAgICAvLyBjYWxsYmFj
ayBpcyBpbnZva2VkLiAgSWYgc28sIHRoZSBgbm9kZUlkZW50aWZpZXJgIHNob3VsZCBtYXRjaCwg
c28gZG9uJ3QgdHJ5Ci0gICAgICAgICAgICAgICAgICAgIC8vIHRvIHJlc29sdmUgaXQgYWdhaW4g
YXMgaXQgd291bGQndmUgYWxyZWFkeSBiZWVuIHJlc29sdmVkLgotICAgICAgICAgICAgICAgICAg
ICBjb25zb2xlLmFzc2VydChicmVha3BvaW50LmRvbU5vZGVJZGVudGlmaWVyID09PSBub2RlSWRl
bnRpZmllcik7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgICAgICBpZiAoIW5vZGVJZGVudGlmaWVyKQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICB0aGlzLl9yZXN0b3JpbmdCcmVha3BvaW50
cyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgdGhpcy5fcmVzb2x2ZURPTUJyZWFrcG9pbnQoYnJl
YWtwb2ludCwgbm9kZUlkZW50aWZpZXIpOwotICAgICAgICAgICAgICAgIHRoaXMuX3Jlc3Rvcmlu
Z0JyZWFrcG9pbnRzID0gZmFsc2U7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfQorICAgICAg
ICBmb3IgKGxldCBicmVha3BvaW50IG9mIGRvbUJyZWFrcG9pbnRzKQorICAgICAgICAgICAgdGhp
cy5fc3BlY3VsYXRpdmVseVJlc29sdmVET01CcmVha3BvaW50KGJyZWFrcG9pbnQpOwogICAgIH0K
IAotICAgIF9yZXNvbHZlRE9NQnJlYWtwb2ludChicmVha3BvaW50LCBub2RlSWRlbnRpZmllcikK
KyAgICBfc3BlY3VsYXRpdmVseVJlc29sdmVET01CcmVha3BvaW50KGJyZWFrcG9pbnQpCiAgICAg
ewotICAgICAgICBsZXQgbm9kZSA9IFdJLmRvbU1hbmFnZXIubm9kZUZvcklkKG5vZGVJZGVudGlm
aWVyKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQobm9kZSwgIk1pc3NpbmcgRE9NIG5vZGUgZm9y
IG5vZGVJZGVudGlmaWVyLiIsIG5vZGVJZGVudGlmaWVyKTsKLSAgICAgICAgaWYgKCFub2RlIHx8
ICFub2RlLmZyYW1lKQorICAgICAgICBpZiAoYnJlYWtwb2ludC5kb21Ob2RlKQogICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgIGxldCBmcmFtZUlkZW50aWZpZXIgPSBub2RlLmZyYW1lLmlk
OwotICAgICAgICBsZXQgZG9tQnJlYWtwb2ludE5vZGVJZGVudGlmaWVyTWFwID0gdGhpcy5fZG9t
QnJlYWtwb2ludEZyYW1lSWRlbnRpZmllck1hcC5nZXQoZnJhbWVJZGVudGlmaWVyKTsKKyAgICAg
ICAgV0kuZG9tTWFuYWdlci5wdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQoYnJlYWtwb2ludC5wYXRo
LCAobm9kZUlkZW50aWZpZXIpID0+IHsKKyAgICAgICAgICAgIGlmICghbm9kZUlkZW50aWZpZXIp
CisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBpZiAoYnJlYWtwb2ludC5k
b21Ob2RlKSB7CisgICAgICAgICAgICAgICAgLy8gVGhpcyBicmVha3BvaW50IG1heSBoYXZlIGJl
ZW4gcmVzb2x2ZWQgYnkgYSBub2RlIGJlaW5nIGluc2VydGVkIGJlZm9yZSB0aGlzCisgICAgICAg
ICAgICAgICAgLy8gY2FsbGJhY2sgaXMgaW52b2tlZC4gIElmIHNvLCB0aGUgYG5vZGVJZGVudGlm
aWVyYCBzaG91bGQgbWF0Y2gsIHNvIGRvbid0IHRyeQorICAgICAgICAgICAgICAgIC8vIHRvIHJl
c29sdmUgaXQgYWdhaW4gYXMgaXQgd291bGQndmUgYWxyZWFkeSBiZWVuIHJlc29sdmVkLgorICAg
ICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQuZG9tTm9kZS5pZCA9PT0gbm9k
ZUlkZW50aWZpZXIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgdGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMgPSB0cnVlOworICAgICAgICAg
ICAgdGhpcy5fcmVzb2x2ZURPTUJyZWFrcG9pbnQoYnJlYWtwb2ludCwgV0kuZG9tTWFuYWdlci5u
b2RlRm9ySWQobm9kZUlkZW50aWZpZXIpKTsKKyAgICAgICAgICAgIHRoaXMuX3Jlc3RvcmluZ0Jy
ZWFrcG9pbnRzID0gZmFsc2U7CisgICAgICAgIH0pOworICAgIH0KKworICAgIF9yZXNvbHZlRE9N
QnJlYWtwb2ludChicmVha3BvaW50LCBub2RlKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3Nl
cnQobm9kZSBpbnN0YW5jZW9mIFdJLkRPTU5vZGUsIG5vZGUpOworCisgICAgICAgIGlmICghbm9k
ZS5mcmFtZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBsZXQgZG9tQnJlYWtwb2lu
dE5vZGVJZGVudGlmaWVyTWFwID0gdGhpcy5fZG9tQnJlYWtwb2ludEZyYW1lSWRlbnRpZmllck1h
cC5nZXQobm9kZS5mcmFtZSk7CiAgICAgICAgIGlmICghZG9tQnJlYWtwb2ludE5vZGVJZGVudGlm
aWVyTWFwKSB7CiAgICAgICAgICAgICBkb21CcmVha3BvaW50Tm9kZUlkZW50aWZpZXJNYXAgPSBu
ZXcgTXVsdGltYXA7Ci0gICAgICAgICAgICB0aGlzLl9kb21CcmVha3BvaW50RnJhbWVJZGVudGlm
aWVyTWFwLnNldChmcmFtZUlkZW50aWZpZXIsIGRvbUJyZWFrcG9pbnROb2RlSWRlbnRpZmllck1h
cCk7CisgICAgICAgICAgICB0aGlzLl9kb21CcmVha3BvaW50RnJhbWVJZGVudGlmaWVyTWFwLnNl
dChub2RlLmZyYW1lLCBkb21CcmVha3BvaW50Tm9kZUlkZW50aWZpZXJNYXApOwogICAgICAgICB9
CiAKLSAgICAgICAgZG9tQnJlYWtwb2ludE5vZGVJZGVudGlmaWVyTWFwLmFkZChub2RlSWRlbnRp
ZmllciwgYnJlYWtwb2ludCk7CisgICAgICAgIGRvbUJyZWFrcG9pbnROb2RlSWRlbnRpZmllck1h
cC5hZGQobm9kZSwgYnJlYWtwb2ludCk7CiAKLSAgICAgICAgYnJlYWtwb2ludC5kb21Ob2RlSWRl
bnRpZmllciA9IG5vZGVJZGVudGlmaWVyOwotCi0gICAgICAgIGlmICghYnJlYWtwb2ludC5kaXNh
YmxlZCkgewotICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIGdldCB0aGUgdGFyZ2V0IGFzc29jaWF0
ZWQgd2l0aCB0aGUgbm9kZUlkZW50aWZpZXIgb2YgdGhpcyBicmVha3BvaW50LgotICAgICAgICAg
ICAgbGV0IHRhcmdldCA9IFdJLmFzc3VtaW5nTWFpblRhcmdldCgpOwotICAgICAgICAgICAgaWYg
KHRhcmdldCkKLSAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVET01CcmVha3BvaW50KGJyZWFr
cG9pbnQsIHRhcmdldCk7Ci0gICAgICAgIH0KKyAgICAgICAgYnJlYWtwb2ludC5kb21Ob2RlID0g
bm9kZTsKICAgICB9CiAKLSAgICBfdXBkYXRlRE9NQnJlYWtwb2ludChicmVha3BvaW50LCB0YXJn
ZXQpCisgICAgX3NldERPTUJyZWFrcG9pbnQoYnJlYWtwb2ludCwgdGFyZ2V0KQogICAgIHsKLSAg
ICAgICAgY29uc29sZS5hc3NlcnQodGFyZ2V0LnR5cGUgIT09IFdJLlRhcmdldFR5cGUuV29ya2Vy
LCAiV29ya2VyIHRhcmdldHMgZG8gbm90IHN1cHBvcnQgRE9NIGJyZWFrcG9pbnRzIik7Ci0gICAg
ICAgIGlmICh0YXJnZXQudHlwZSA9PT0gV0kuVGFyZ2V0VHlwZS5Xb3JrZXIpCisgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KCFicmVha3BvaW50LmRpc2FibGVkLCBicmVha3BvaW50KTsKKyAgICAgICAg
Y29uc29sZS5hc3NlcnQoYnJlYWtwb2ludC5kb21Ob2RlIGluc3RhbmNlb2YgV0kuRE9NTm9kZSwg
YnJlYWtwb2ludCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRhcmdldC50eXBlICE9PSBXSS5U
YXJnZXRUeXBlLldvcmtlciwgIldvcmtlciB0YXJnZXRzIGRvIG5vdCBzdXBwb3J0IERPTSBicmVh
a3BvaW50cyIsIHRhcmdldCk7CisKKyAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEwLjMp
OiBET01EZWJ1Z2dlci5zZXRET01CcmVha3BvaW50IGRpZCBub3QgZXhpc3QgeWV0LgorICAgICAg
ICBpZiAoIXRhcmdldC5oYXNDb21tYW5kKCJET01EZWJ1Z2dlci5zZXRET01CcmVha3BvaW50Iikp
CiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKCF0YXJnZXQuaGFzQ29tbWFuZCgi
RE9NRGVidWdnZXIuc2V0RE9NQnJlYWtwb2ludCIpIHx8ICF0YXJnZXQuaGFzQ29tbWFuZCgiRE9N
RGVidWdnZXIucmVtb3ZlRE9NQnJlYWtwb2ludCIpKQorICAgICAgICBpZiAoIXRoaXMuX3Jlc3Rv
cmluZ0JyZWFrcG9pbnRzICYmICFXSS5kZWJ1Z2dlck1hbmFnZXIuYnJlYWtwb2ludHNEaXNhYmxl
ZFRlbXBvcmFyaWx5KQorICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmJyZWFrcG9pbnRz
RW5hYmxlZCA9IHRydWU7CisKKyAgICAgICAgdGFyZ2V0LkRPTURlYnVnZ2VyQWdlbnQuc2V0RE9N
QnJlYWtwb2ludC5pbnZva2UoeworICAgICAgICAgICAgbm9kZUlkOiBicmVha3BvaW50LmRvbU5v
ZGUuaWQsCisgICAgICAgICAgICB0eXBlOiBicmVha3BvaW50LnR5cGUsCisgICAgICAgICAgICBv
cHRpb25zOiBicmVha3BvaW50Lm9wdGlvbnNUb1Byb3RvY29sKCksCisgICAgICAgIH0pOworICAg
IH0KKworICAgIF9yZW1vdmVET01CcmVha3BvaW50KGJyZWFrcG9pbnQsIHRhcmdldCkKKyAgICB7
CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQuZG9tTm9kZSBpbnN0YW5jZW9mIFdJ
LkRPTU5vZGUsIGJyZWFrcG9pbnQpOworICAgICAgICBjb25zb2xlLmFzc2VydCh0YXJnZXQudHlw
ZSAhPT0gV0kuVGFyZ2V0VHlwZS5Xb3JrZXIsICJXb3JrZXIgdGFyZ2V0cyBkbyBub3Qgc3VwcG9y
dCBET00gYnJlYWtwb2ludHMiLCB0YXJnZXQpOworCisgICAgICAgIC8vIENPTVBBVElCSUxJVFkg
KGlPUyAxMC4zKTogRE9NRGVidWdnZXIucmVtb3ZlRE9NQnJlYWtwb2ludCBkaWQgbm90IGV4aXN0
IHlldC4KKyAgICAgICAgaWYgKCF0YXJnZXQuaGFzQ29tbWFuZCgiRE9NRGVidWdnZXIucmVtb3Zl
RE9NQnJlYWtwb2ludCIpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmICghYnJl
YWtwb2ludC5kb21Ob2RlSWRlbnRpZmllcikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICBpZiAoYnJlYWtwb2ludC5kaXNhYmxlZCkKLSAgICAgICAgICAgIHRhcmdldC5ET01EZWJ1Z2dl
ckFnZW50LnJlbW92ZURPTUJyZWFrcG9pbnQoYnJlYWtwb2ludC5kb21Ob2RlSWRlbnRpZmllciwg
YnJlYWtwb2ludC50eXBlKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAoIXRoaXMu
X3Jlc3RvcmluZ0JyZWFrcG9pbnRzICYmICFXSS5kZWJ1Z2dlck1hbmFnZXIuYnJlYWtwb2ludHNE
aXNhYmxlZFRlbXBvcmFyaWx5KQotICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5i
cmVha3BvaW50c0VuYWJsZWQgPSB0cnVlOwotCi0gICAgICAgICAgICB0YXJnZXQuRE9NRGVidWdn
ZXJBZ2VudC5zZXRET01CcmVha3BvaW50KGJyZWFrcG9pbnQuZG9tTm9kZUlkZW50aWZpZXIsIGJy
ZWFrcG9pbnQudHlwZSk7Ci0gICAgICAgIH0KKyAgICAgICAgdGFyZ2V0LkRPTURlYnVnZ2VyQWdl
bnQucmVtb3ZlRE9NQnJlYWtwb2ludChicmVha3BvaW50LmRvbU5vZGUuaWQsIGJyZWFrcG9pbnQu
dHlwZSk7CiAgICAgfQogCiAgICAgX2NvbW1hbmRBcmd1bWVudHNGb3JFdmVudEJyZWFrcG9pbnQo
YnJlYWtwb2ludCkKQEAgLTc3MiwxMiArNzgwLDk0IEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9
IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgIF9oYW5kbGVE
T01CcmVha3BvaW50RGlzYWJsZWRTdGF0ZUNoYW5nZWQoZXZlbnQpCiAgICAgewogICAgICAgICBs
ZXQgYnJlYWtwb2ludCA9IGV2ZW50LnRhcmdldDsKLSAgICAgICAgbGV0IHRhcmdldCA9IFdJLmFz
c3VtaW5nTWFpblRhcmdldCgpOwotICAgICAgICBpZiAodGFyZ2V0KQotICAgICAgICAgICAgdGhp
cy5fdXBkYXRlRE9NQnJlYWtwb2ludChicmVha3BvaW50LCB0YXJnZXQpOwogCiAgICAgICAgIGlm
ICghdGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMpCiAgICAgICAgICAgICBXSS5vYmplY3RTdG9y
ZXMuZG9tQnJlYWtwb2ludHMucHV0T2JqZWN0KGJyZWFrcG9pbnQpOworCisgICAgICAgIGlmICgh
YnJlYWtwb2ludC5kb21Ob2RlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIFdl
IHNob3VsZCBnZXQgdGhlIHRhcmdldCBhc3NvY2lhdGVkIHdpdGggdGhlIG5vZGVJZGVudGlmaWVy
IG9mIHRoaXMgYnJlYWtwb2ludC4KKyAgICAgICAgbGV0IHRhcmdldCA9IFdJLmFzc3VtaW5nTWFp
blRhcmdldCgpOworICAgICAgICBpZiAodGFyZ2V0KSB7CisgICAgICAgICAgICBpZiAoYnJlYWtw
b2ludC5kaXNhYmxlZCkKKyAgICAgICAgICAgICAgICB0aGlzLl9yZW1vdmVET01CcmVha3BvaW50
KGJyZWFrcG9pbnQsIHRhcmdldCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGhpcy5fc2V0RE9NQnJlYWtwb2ludChicmVha3BvaW50LCB0YXJnZXQpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgX2hhbmRsZURPTUJyZWFrcG9pbnRFZGl0YWJsZVByb3BlcnR5Q2hhbmdlZChl
dmVudCkKKyAgICB7CisgICAgICAgIGxldCBicmVha3BvaW50ID0gZXZlbnQudGFyZ2V0OworCisg
ICAgICAgIGlmICghdGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMpCisgICAgICAgICAgICBXSS5v
YmplY3RTdG9yZXMuZG9tQnJlYWtwb2ludHMucHV0T2JqZWN0KGJyZWFrcG9pbnQpOworCisgICAg
ICAgIGlmICghYnJlYWtwb2ludC5kb21Ob2RlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGlmIChicmVha3BvaW50LmRpc2FibGVkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIHRoaXMuX3Jlc3RvcmluZ0JyZWFrcG9pbnRzID0gdHJ1ZTsKKyAgICAgICAgLy8gV2Ugc2hv
dWxkIGdldCB0aGUgdGFyZ2V0IGFzc29jaWF0ZWQgd2l0aCB0aGUgbm9kZUlkZW50aWZpZXIgb2Yg
dGhpcyBicmVha3BvaW50LgorICAgICAgICBsZXQgdGFyZ2V0ID0gV0kuYXNzdW1pbmdNYWluVGFy
Z2V0KCk7CisgICAgICAgIGlmICh0YXJnZXQpIHsKKyAgICAgICAgICAgIC8vIENsZWFyIHRoZSBv
bGQgYnJlYWtwb2ludCBmcm9tIHRoZSBiYWNrZW5kIGJlZm9yZSBzZXR0aW5nIHRoZSBuZXcgb25l
LgorICAgICAgICAgICAgdGhpcy5fcmVtb3ZlRE9NQnJlYWtwb2ludChicmVha3BvaW50LCB0YXJn
ZXQpOworICAgICAgICAgICAgdGhpcy5fc2V0RE9NQnJlYWtwb2ludChicmVha3BvaW50LCB0YXJn
ZXQpOworICAgICAgICB9CisgICAgICAgIHRoaXMuX3Jlc3RvcmluZ0JyZWFrcG9pbnRzID0gZmFs
c2U7CisgICAgfQorCisgICAgX2hhbmRsZURPTUJyZWFrcG9pbnRBY3Rpb25zQ2hhbmdlZChldmVu
dCkKKyAgICB7CisgICAgICAgIGxldCBicmVha3BvaW50ID0gZXZlbnQudGFyZ2V0OworCisgICAg
ICAgIHRoaXMuX2hhbmRsZURPTUJyZWFrcG9pbnRFZGl0YWJsZVByb3BlcnR5Q2hhbmdlZChldmVu
dCk7CisKKyAgICAgICAgaWYgKCFicmVha3BvaW50LmRvbU5vZGUpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnVwZGF0ZVByb2Jlc0ZvckJyZWFrcG9p
bnQoYnJlYWtwb2ludCk7CisgICAgfQorCisgICAgX2hhbmRsZURPTUJyZWFrcG9pbnRET01Ob2Rl
V2lsbENoYW5nZShldmVudCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9jbGVhcmluZ0RPTUJy
ZWFrcG9pbnRzRm9yUmVtb3ZlZERPTU5vZGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgbGV0IGJyZWFrcG9pbnQgPSBldmVudC50YXJnZXQ7CisKKyAgICAgICAgaWYgKCFicmVha3Bv
aW50LmRvbU5vZGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKCFicmVha3Bv
aW50LmRpc2FibGVkKSB7CisgICAgICAgICAgICAvLyBXZSBzaG91bGQgZ2V0IHRoZSB0YXJnZXQg
YXNzb2NpYXRlZCB3aXRoIHRoZSBub2RlSWRlbnRpZmllciBvZiB0aGlzIGJyZWFrcG9pbnQuCisg
ICAgICAgICAgICBsZXQgdGFyZ2V0ID0gV0kuYXNzdW1pbmdNYWluVGFyZ2V0KCk7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0KQorICAgICAgICAgICAgICAgIHRoaXMuX3JlbW92ZURPTUJyZWFrcG9p
bnQoYnJlYWtwb2ludCwgdGFyZ2V0KTsKKyAgICAgICAgfQorCisgICAgICAgIFdJLmRlYnVnZ2Vy
TWFuYWdlci5yZW1vdmVQcm9iZXNGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpOworICAgIH0KKwor
ICAgIF9oYW5kbGVET01CcmVha3BvaW50RE9NTm9kZURpZENoYW5nZShldmVudCkKKyAgICB7Cisg
ICAgICAgIGxldCBicmVha3BvaW50ID0gZXZlbnQudGFyZ2V0OworCisgICAgICAgIGlmICghYnJl
YWtwb2ludC5kb21Ob2RlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICghYnJl
YWtwb2ludC5kaXNhYmxlZCkgeworICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIGdldCB0aGUgdGFy
Z2V0IGFzc29jaWF0ZWQgd2l0aCB0aGUgbm9kZUlkZW50aWZpZXIgb2YgdGhpcyBicmVha3BvaW50
LgorICAgICAgICAgICAgbGV0IHRhcmdldCA9IFdJLmFzc3VtaW5nTWFpblRhcmdldCgpOworICAg
ICAgICAgICAgaWYgKHRhcmdldCkKKyAgICAgICAgICAgICAgICB0aGlzLl9zZXRET01CcmVha3Bv
aW50KGJyZWFrcG9pbnQsIHRhcmdldCk7CisgICAgICAgIH0KKworICAgICAgICBXSS5kZWJ1Z2dl
ck1hbmFnZXIuYWRkUHJvYmVzRm9yQnJlYWtwb2ludChicmVha3BvaW50KTsKICAgICB9CiAKICAg
ICBfaGFuZGxlRXZlbnRCcmVha3BvaW50RGlzYWJsZWRTdGF0ZUNoYW5nZWQoZXZlbnQpCkBAIC04
ODEsNyArOTcxLDcgQEAgV0kuRE9NRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJN
YW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgX2NoaWxkRnJhbWVXYXNSZW1vdmVkKGV2ZW50
KQogICAgIHsKICAgICAgICAgbGV0IGZyYW1lID0gZXZlbnQuZGF0YS5jaGlsZEZyYW1lOwotICAg
ICAgICB0aGlzLl9kZXRhY2hCcmVha3BvaW50c0ZvckZyYW1lKGZyYW1lKTsKKyAgICAgICAgdGhp
cy5fZGV0YWNoRE9NQnJlYWtwb2ludHNGb3JGcmFtZShmcmFtZSk7CiAgICAgfQogCiAgICAgX21h
aW5GcmFtZURpZENoYW5nZShldmVudCkKQEAgLTg5MywxMiArOTgzLDE0IEBAIFdJLkRPTURlYnVn
Z2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAog
ICAgIHsKICAgICAgICAgbGV0IGZyYW1lID0gZXZlbnQudGFyZ2V0OwogICAgICAgICBpZiAoZnJh
bWUuaXNNYWluRnJhbWUoKSkgeworICAgICAgICAgICAgdGhpcy5fY2xlYXJpbmdET01CcmVha3Bv
aW50c0ZvclJlbW92ZWRET01Ob2RlID0gdHJ1ZTsKICAgICAgICAgICAgIGZvciAobGV0IGJyZWFr
cG9pbnQgb2YgdGhpcy5fZG9tQnJlYWtwb2ludFVSTE1hcC52YWx1ZXMoKSkKLSAgICAgICAgICAg
ICAgICBicmVha3BvaW50LmRvbU5vZGVJZGVudGlmaWVyID0gbnVsbDsKKyAgICAgICAgICAgICAg
ICBicmVha3BvaW50LmRvbU5vZGUgPSBudWxsOworICAgICAgICAgICAgdGhpcy5fY2xlYXJpbmdE
T01CcmVha3BvaW50c0ZvclJlbW92ZWRET01Ob2RlID0gZmFsc2U7CiAKICAgICAgICAgICAgIHRo
aXMuX2RvbUJyZWFrcG9pbnRGcmFtZUlkZW50aWZpZXJNYXAuY2xlYXIoKTsKICAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICB0aGlzLl9kZXRhY2hCcmVha3BvaW50c0ZvckZyYW1lKGZyYW1lKTsK
KyAgICAgICAgICAgIHRoaXMuX2RldGFjaERPTUJyZWFrcG9pbnRzRm9yRnJhbWUoZnJhbWUpOwog
CiAgICAgICAgIHRoaXMuX3NwZWN1bGF0aXZlbHlSZXNvbHZlRE9NQnJlYWtwb2ludHNGb3JVUkwo
ZnJhbWUudXJsKTsKICAgICB9CkBAIC05MTQsMTYgKzEwMDYsMzUgQEAgV0kuRE9NRGVidWdnZXJN
YW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAg
ICAgIGlmICghYnJlYWtwb2ludHMpCiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgbGV0
IHJlc29sdmFibGVCcmVha3BvaW50cyA9IFtdOwogICAgICAgICBmb3IgKGxldCBicmVha3BvaW50
IG9mIGJyZWFrcG9pbnRzKSB7Ci0gICAgICAgICAgICBpZiAoYnJlYWtwb2ludC5kb21Ob2RlSWRl
bnRpZmllcikKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmICghYnJl
YWtwb2ludC5kb21Ob2RlKQorICAgICAgICAgICAgICAgIHJlc29sdmFibGVCcmVha3BvaW50cy5w
dXNoKGJyZWFrcG9pbnQpOworICAgICAgICB9CisgICAgICAgIGlmICghcmVzb2x2YWJsZUJyZWFr
cG9pbnRzLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgaWYgKGJy
ZWFrcG9pbnQucGF0aCAhPT0gbm9kZS5wYXRoKCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIC8vIFRoaXMgaXMgbm90IHZlcnkgZXhwZW5zaXZlIGJlY2F1c2UgYFdJLkRPTU5v
ZGVgIGNoaWxkcmVuIGFyZSBsYXppbHkgcG9wdWxhdGVkLCBzbyBpdCdzCisgICAgICAgIC8vIHVu
bGlrZWx5IHRoYXQgdGhlcmUgd2lsbCBiZSBhIGRlZXAgc3VidHJlZSB0byB3YWxrLgorICAgICAg
ICBsZXQgc3RhY2sgPSBbbm9kZV07CisgICAgICAgIHdoaWxlIChzdGFjay5sZW5ndGgpIHsKKyAg
ICAgICAgICAgIGxldCBjaGlsZCA9IHN0YWNrLnBvcCgpOworICAgICAgICAgICAgbGV0IHBhdGgg
PSBjaGlsZC5wYXRoKCk7CiAKLSAgICAgICAgICAgIHRoaXMuX3Jlc3RvcmluZ0JyZWFrcG9pbnRz
ID0gdHJ1ZTsKLSAgICAgICAgICAgIHRoaXMuX3Jlc29sdmVET01CcmVha3BvaW50KGJyZWFrcG9p
bnQsIG5vZGUuaWQpOwotICAgICAgICAgICAgdGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMgPSBm
YWxzZTsKKyAgICAgICAgICAgIGZvciAobGV0IGkgPSByZXNvbHZhYmxlQnJlYWtwb2ludHMubGVu
Z3RoIC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgICAgICAgICBpZiAocmVzb2x2YWJsZUJy
ZWFrcG9pbnRzW2ldLnBhdGggPT09IHBhdGgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5f
cmVzdG9yaW5nQnJlYWtwb2ludHMgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB0aGlzLl9y
ZXNvbHZlRE9NQnJlYWtwb2ludChyZXNvbHZhYmxlQnJlYWtwb2ludHNbaV0sIGNoaWxkKTsKKyAg
ICAgICAgICAgICAgICAgICAgdGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMgPSBmYWxzZTsKKwor
ICAgICAgICAgICAgICAgICAgICByZXNvbHZhYmxlQnJlYWtwb2ludHMuc3BsaWNlKGksIDEpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghcmVzb2x2
YWJsZUJyZWFrcG9pbnRzLmxlbmd0aCkKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgaWYgKGNoaWxkLmNoaWxkcmVuPy5sZW5ndGgpCisgICAgICAgICAgICAgICAgc3RhY2su
cHVzaEFsbChjaGlsZC5jaGlsZHJlbik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTkzMywyMSAr
MTA0NCwyNCBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFn
ZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUoKSAhPT0gTm9k
ZS5FTEVNRU5UX05PREUgfHwgIW5vZGUuZnJhbWUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgbGV0IGRvbUJyZWFrcG9pbnROb2RlSWRlbnRpZmllck1hcCA9IHRoaXMuX2RvbUJyZWFr
cG9pbnRGcmFtZUlkZW50aWZpZXJNYXAuZ2V0KG5vZGUuZnJhbWUuaWQpOworICAgICAgICBsZXQg
ZG9tQnJlYWtwb2ludE5vZGVJZGVudGlmaWVyTWFwID0gdGhpcy5fZG9tQnJlYWtwb2ludEZyYW1l
SWRlbnRpZmllck1hcC5nZXQobm9kZS5mcmFtZSk7CiAgICAgICAgIGlmICghZG9tQnJlYWtwb2lu
dE5vZGVJZGVudGlmaWVyTWFwKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGxldCBi
cmVha3BvaW50cyA9IGRvbUJyZWFrcG9pbnROb2RlSWRlbnRpZmllck1hcC5nZXQobm9kZS5pZCk7
Ci0gICAgICAgIGlmICghYnJlYWtwb2ludHMpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAg
IGZvciAobGV0IFticmVha3BvaW50T3duZXIsIGJyZWFrcG9pbnRzXSBvZiBkb21CcmVha3BvaW50
Tm9kZUlkZW50aWZpZXJNYXAuc2V0cygpKSB7CisgICAgICAgICAgICBpZiAoYnJlYWtwb2ludE93
bmVyID09IG5vZGUgfHwgbm9kZS5pc0FuY2VzdG9yKGJyZWFrcG9pbnRPd25lcikpIHsKKyAgICAg
ICAgICAgICAgICB0aGlzLl9jbGVhcmluZ0RPTUJyZWFrcG9pbnRzRm9yUmVtb3ZlZERPTU5vZGUg
PSB0cnVlOworICAgICAgICAgICAgICAgIGZvciAobGV0IGJyZWFrcG9pbnQgb2YgYnJlYWtwb2lu
dHMpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQuZG9tTm9kZSA9IG51bGw7CisgICAg
ICAgICAgICAgICAgdGhpcy5fY2xlYXJpbmdET01CcmVha3BvaW50c0ZvclJlbW92ZWRET01Ob2Rl
ID0gZmFsc2U7CiAKLSAgICAgICAgZG9tQnJlYWtwb2ludE5vZGVJZGVudGlmaWVyTWFwLmRlbGV0
ZShub2RlLmlkKTsKLQotICAgICAgICBpZiAoIWRvbUJyZWFrcG9pbnROb2RlSWRlbnRpZmllck1h
cC5zaXplKQotICAgICAgICAgICAgdGhpcy5fZG9tQnJlYWtwb2ludEZyYW1lSWRlbnRpZmllck1h
cC5kZWxldGUobm9kZS5mcmFtZS5pZCk7Ci0KLSAgICAgICAgZm9yIChsZXQgYnJlYWtwb2ludCBv
ZiBicmVha3BvaW50cykKLSAgICAgICAgICAgIGJyZWFrcG9pbnQuZG9tTm9kZUlkZW50aWZpZXIg
PSBudWxsOworICAgICAgICAgICAgICAgIGRvbUJyZWFrcG9pbnROb2RlSWRlbnRpZmllck1hcC5k
ZWxldGUoYnJlYWtwb2ludE93bmVyKTsKKyAgICAgICAgICAgICAgICBpZiAoIWRvbUJyZWFrcG9p
bnROb2RlSWRlbnRpZmllck1hcC5zaXplKSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX2Rv
bUJyZWFrcG9pbnRGcmFtZUlkZW50aWZpZXJNYXAuZGVsZXRlKG5vZGUuZnJhbWUpOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01NYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NTWFuYWdlci5qcwppbmRleCBmZjdl
MjExNzMyZTQuLjQ1ZmRjYTg3NzEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01NYW5hZ2VyLmpzCkBAIC0z
ODAsNyArMzgwLDE2IEBAIFdJLkRPTU1hbmFnZXIgPSBjbGFzcyBET01NYW5hZ2VyIGV4dGVuZHMg
V0kuT2JqZWN0CiAgICAgICAgIH0KIAogICAgICAgICB2YXIgcGFyZW50ID0gdGhpcy5faWRUb0RP
TU5vZGVbcGFyZW50SWRdOworCisgICAgICAgIGlmIChwYXJlbnQuY2hpbGRyZW4pIHsKKyAgICAg
ICAgICAgIGZvciAobGV0IG5vZGUgb2YgcGFyZW50LmNoaWxkcmVuKQorICAgICAgICAgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTU1hbmFnZXIuRXZlbnQuTm9kZVJl
bW92ZWQsIHtub2RlLCBwYXJlbnR9KTsKKyAgICAgICAgfQorCiAgICAgICAgIHBhcmVudC5fc2V0
Q2hpbGRyZW5QYXlsb2FkKHBheWxvYWRzKTsKKworICAgICAgICBmb3IgKGxldCBub2RlIG9mIHBh
cmVudC5jaGlsZHJlbikKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdJLkRPTU1hbmFnZXIuRXZlbnQuTm9kZUluc2VydGVkLCB7bm9kZSwgcGFyZW50fSk7CiAgICAg
fQogCiAgICAgX2NoaWxkTm9kZUNvdW50VXBkYXRlZChub2RlSWQsIG5ld1ZhbHVlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTUJyZWFr
cG9pbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9N
QnJlYWtwb2ludC5qcwppbmRleCAzZWRhMmY4ZmQwZjEuLjg1OWI1NjA1ZWRiYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTUJyZWFrcG9p
bnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RP
TUJyZWFrcG9pbnQuanMKQEAgLTI1LDIwICsyNSwyMCBAQAogCiBXSS5ET01CcmVha3BvaW50ID0g
Y2xhc3MgRE9NQnJlYWtwb2ludCBleHRlbmRzIFdJLkJyZWFrcG9pbnQKIHsKLSAgICBjb25zdHJ1
Y3Rvcihkb21Ob2RlT3JJbmZvLCB0eXBlLCB7ZGlzYWJsZWR9ID0ge30pCisgICAgY29uc3RydWN0
b3IoZG9tTm9kZU9ySW5mbywgdHlwZSwge2Rpc2FibGVkLCBhY3Rpb25zLCBjb25kaXRpb24sIGln
bm9yZUNvdW50LCBhdXRvQ29udGludWV9ID0ge30pCiAgICAgewogICAgICAgICBjb25zb2xlLmFz
c2VydChkb21Ob2RlT3JJbmZvIGluc3RhbmNlb2YgV0kuRE9NTm9kZSB8fCB0eXBlb2YgZG9tTm9k
ZU9ySW5mbyA9PT0gIm9iamVjdCIsIGRvbU5vZGVPckluZm8pOwogICAgICAgICBjb25zb2xlLmFz
c2VydChPYmplY3QudmFsdWVzKFdJLkRPTUJyZWFrcG9pbnQuVHlwZSkuaW5jbHVkZXModHlwZSks
IHR5cGUpOwogCi0gICAgICAgIHN1cGVyKHtkaXNhYmxlZH0pOworICAgICAgICBzdXBlcih7ZGlz
YWJsZWQsIGFjdGlvbnMsIGNvbmRpdGlvbiwgaWdub3JlQ291bnQsIGF1dG9Db250aW51ZX0pOwog
CiAgICAgICAgIGlmIChkb21Ob2RlT3JJbmZvIGluc3RhbmNlb2YgV0kuRE9NTm9kZSkgewotICAg
ICAgICAgICAgdGhpcy5fZG9tTm9kZUlkZW50aWZpZXIgPSBkb21Ob2RlT3JJbmZvLmlkOworICAg
ICAgICAgICAgdGhpcy5fZG9tTm9kZSA9IGRvbU5vZGVPckluZm87CiAgICAgICAgICAgICB0aGlz
Ll9wYXRoID0gZG9tTm9kZU9ySW5mby5wYXRoKCk7CiAgICAgICAgICAgICBjb25zb2xlLmFzc2Vy
dChXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUpOwogICAgICAgICAgICAgdGhpcy5fdXJsID0g
V0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLnVybDsKICAgICAgICAgfSBlbHNlIGlmIChkb21O
b2RlT3JJbmZvICYmIHR5cGVvZiBkb21Ob2RlT3JJbmZvID09PSAib2JqZWN0IikgewotICAgICAg
ICAgICAgdGhpcy5fZG9tTm9kZUlkZW50aWZpZXIgPSBudWxsOworICAgICAgICAgICAgdGhpcy5f
ZG9tTm9kZSA9IG51bGw7CiAgICAgICAgICAgICB0aGlzLl9wYXRoID0gZG9tTm9kZU9ySW5mby5w
YXRoOwogICAgICAgICAgICAgdGhpcy5fdXJsID0gZG9tTm9kZU9ySW5mby51cmw7CiAgICAgICAg
IH0KQEAgLTYzLDcgKzYzLDcgQEAgV0kuRE9NQnJlYWtwb2ludCA9IGNsYXNzIERPTUJyZWFrcG9p
bnQgZXh0ZW5kcyBXSS5CcmVha3BvaW50CiAgICAgICAgICAgICByZXR1cm4gV0kuVUlTdHJpbmco
Ik5vZGUgUmVtb3ZlZCIsICJOb2RlIFJlbW92ZWQgQCBET00gQnJlYWtwb2ludCIsICJBIHN1Ym1l
bnUgaXRlbSBvZiAnQnJlYWsgT24nIHRoYXQgYnJlYWtzIChwYXVzZXMpIGJlZm9yZSBET00gbm9k
ZSBpcyByZW1vdmVkIik7CiAgICAgICAgIH0KIAotICAgICAgICBjb25zb2xlLmVycm9yKCk7Cisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KGZhbHNlLCAiVW5rbm93biBET00gYnJlYWtwb2ludCB0eXBl
IiwgdHlwZSk7CiAgICAgICAgIHJldHVybiBXSS5VSVN0cmluZygiRE9NIik7CiAgICAgfQogCkBA
IC03MSw2ICs3MSwxMCBAQCBXSS5ET01CcmVha3BvaW50ID0gY2xhc3MgRE9NQnJlYWtwb2ludCBl
eHRlbmRzIFdJLkJyZWFrcG9pbnQKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgV0kuRE9NQnJl
YWtwb2ludChqc29uLCBqc29uLnR5cGUsIHsKICAgICAgICAgICAgIGRpc2FibGVkOiBqc29uLmRp
c2FibGVkLAorICAgICAgICAgICAgY29uZGl0aW9uOiBqc29uLmNvbmRpdGlvbiwKKyAgICAgICAg
ICAgIGFjdGlvbnM6IGpzb24uYWN0aW9ucz8ubWFwKChhY3Rpb25KU09OKSA9PiBXSS5CcmVha3Bv
aW50QWN0aW9uLmZyb21KU09OKGFjdGlvbkpTT04pKSB8fCBbXSwKKyAgICAgICAgICAgIGlnbm9y
ZUNvdW50OiBqc29uLmlnbm9yZUNvdW50LAorICAgICAgICAgICAgYXV0b0NvbnRpbnVlOiBqc29u
LmF1dG9Db250aW51ZSwKICAgICAgICAgfSk7CiAgICAgfQogCkBAIC04NSwyMyArODksMjcgQEAg
V0kuRE9NQnJlYWtwb2ludCA9IGNsYXNzIERPTUJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5CcmVha3Bv
aW50CiAgICAgICAgIHJldHVybiBXSS5ET01CcmVha3BvaW50LmRpc3BsYXlOYW1lRm9yVHlwZSh0
aGlzLl90eXBlKTsKICAgICB9CiAKLSAgICBnZXQgZG9tTm9kZUlkZW50aWZpZXIoKQorICAgIGdl
dCBlZGl0YWJsZSgpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fZG9tTm9kZUlkZW50aWZp
ZXI7CisgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAxNCk6IERPTURlYnVnZ2VyLnNldERP
TUJyZWFrcG9pbnQgZGlkIG5vdCBoYXZlIGFuICJvcHRpb25zIiBwYXJhbWV0ZXIgeWV0LgorICAg
ICAgICByZXR1cm4gSW5zcGVjdG9yQmFja2VuZC5oYXNDb21tYW5kKCJET01EZWJ1Z2dlci5zZXRE
T01CcmVha3BvaW50IiwgIm9wdGlvbnMiKTsKICAgICB9CiAKLSAgICBzZXQgZG9tTm9kZUlkZW50
aWZpZXIobm9kZUlkZW50aWZpZXIpCisgICAgZ2V0IGRvbU5vZGUoKQogICAgIHsKLSAgICAgICAg
aWYgKHRoaXMuX2RvbU5vZGVJZGVudGlmaWVyID09PSBub2RlSWRlbnRpZmllcikKKyAgICAgICAg
cmV0dXJuIHRoaXMuX2RvbU5vZGU7CisgICAgfQorCisgICAgc2V0IGRvbU5vZGUoZG9tTm9kZSkK
KyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRvbU5vZGUgaW5zdGFuY2VvZiBXSS5ET01O
b2RlLCBkb21Ob2RlKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX2RvbU5vZGUgIT09
ICFkb21Ob2RlLCAiZG9tTm9kZSBzaG91bGQgbm90IGNoYW5nZSBvbmNlIHNldCIpOworICAgICAg
ICBpZiAoIXRoaXMuX2RvbU5vZGUgPT09ICFkb21Ob2RlKQogICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgIGxldCBkYXRhID0ge307Ci0gICAgICAgIGlmICghbm9kZUlkZW50aWZpZXIpCi0g
ICAgICAgICAgICBkYXRhLm9sZE5vZGVJZGVudGlmaWVyID0gdGhpcy5fZG9tTm9kZUlkZW50aWZp
ZXI7Ci0KLSAgICAgICAgdGhpcy5fZG9tTm9kZUlkZW50aWZpZXIgPSBub2RlSWRlbnRpZmllcjsK
LQotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01CcmVha3BvaW50
LkV2ZW50LkRPTU5vZGVDaGFuZ2VkLCBkYXRhKTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV0kuRE9NQnJlYWtwb2ludC5FdmVudC5ET01Ob2RlV2lsbENoYW5nZSk7Cisg
ICAgICAgIHRoaXMuX2RvbU5vZGUgPSBkb21Ob2RlOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXSS5ET01CcmVha3BvaW50LkV2ZW50LkRPTU5vZGVEaWRDaGFuZ2UpOwog
ICAgIH0KIAogICAgIHJlbW92ZSgpCkBAIC0xMzcsNyArMTQ1LDggQEAgV0kuRE9NQnJlYWtwb2lu
dC5UeXBlID0gewogfTsKIAogV0kuRE9NQnJlYWtwb2ludC5FdmVudCA9IHsKLSAgICBET01Ob2Rl
Q2hhbmdlZDogImRvbS1icmVha3BvaW50LWRvbS1ub2RlLWNoYW5nZWQiLAorICAgIERPTU5vZGVE
aWRDaGFuZ2U6ICJkb20tYnJlYWtwb2ludC1kb20tbm9kZS1kaWQtY2hhbmdlIiwKKyAgICBET01O
b2RlV2lsbENoYW5nZTogImRvbS1icmVha3BvaW50LWRvbS1ub2RlLXdpbGwtY2hhbmdlIiwKIH07
CiAKIFdJLkRPTUJyZWFrcG9pbnQuUmVmZXJlbmNlUGFnZSA9IFdJLlJlZmVyZW5jZVBhZ2UuRE9N
QnJlYWtwb2ludHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9ET01UcmVlQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlQ29udGVudFZpZXcuanMKaW5kZXggZjUzYjFmNDU0
NWZhLi45OTRiYzQ3ZDc2YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlQ29udGVudFZpZXcuanMKQEAgLTg1
LDcgKzg1LDcgQEAgV0kuRE9NVHJlZUNvbnRlbnRWaWV3ID0gY2xhc3MgRE9NVHJlZUNvbnRlbnRW
aWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKICAgICAgICAgdGhpcy5fbnVtYmVyT2ZTZWFyY2hS
ZXN1bHRzID0gbnVsbDsKIAogICAgICAgICB0aGlzLl9icmVha3BvaW50R3V0dGVyRW5hYmxlZCA9
IGZhbHNlOwotICAgICAgICB0aGlzLl9wZW5kaW5nQnJlYWtwb2ludE5vZGVJZGVudGlmaWVycyA9
IG5ldyBTZXQ7CisgICAgICAgIHRoaXMuX3BlbmRpbmdCcmVha3BvaW50Tm9kZXMgPSBuZXcgU2V0
OwogCiAgICAgICAgIHRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlRGlkQ2hhbmdlKCk7CiAKQEAgLTk2
LDcgKzk2LDggQEAgV0kuRE9NVHJlZUNvbnRlbnRWaWV3ID0gY2xhc3MgRE9NVHJlZUNvbnRlbnRW
aWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKICAgICAgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFu
YWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudC5ET01CcmVh
a3BvaW50UmVtb3ZlZCwgdGhpcy5fZG9tQnJlYWtwb2ludEFkZGVkT3JSZW1vdmVkLCB0aGlzKTsK
IAogICAgICAgICAgICAgV0kuRE9NQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFr
cG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5faGFuZGxlRE9NQnJlYWtw
b2ludERpc2FibGVkU3RhdGVDaGFuZ2VkLCB0aGlzKTsKLSAgICAgICAgICAgIFdJLkRPTUJyZWFr
cG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01CcmVha3BvaW50LkV2ZW50LkRPTU5vZGVDaGFu
Z2VkLCB0aGlzLl9oYW5kbGVET01CcmVha3BvaW50RE9NTm9kZUNoYW5nZWQsIHRoaXMpOworICAg
ICAgICAgICAgV0kuRE9NQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkRPTUJyZWFrcG9p
bnQuRXZlbnQuRE9NTm9kZVdpbGxDaGFuZ2UsIHRoaXMuX2hhbmRsZURPTUJyZWFrcG9pbnRET01O
b2RlV2lsbENoYW5nZSwgdGhpcyk7CisgICAgICAgICAgICBXSS5ET01CcmVha3BvaW50LmFkZEV2
ZW50TGlzdGVuZXIoV0kuRE9NQnJlYWtwb2ludC5FdmVudC5ET01Ob2RlRGlkQ2hhbmdlLCB0aGlz
Ll9oYW5kbGVET01CcmVha3BvaW50RE9NTm9kZURpZENoYW5nZSwgdGhpcyk7CiAKICAgICAgICAg
ICAgIHRoaXMuX2JyZWFrcG9pbnRzRW5hYmxlZERpZENoYW5nZSgpOwogICAgICAgICB9CkBAIC0x
NzAsNyArMTcxLDcgQEAgV0kuRE9NVHJlZUNvbnRlbnRWaWV3ID0gY2xhc3MgRE9NVHJlZUNvbnRl
bnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKICAgICAgICAgV0kuRE9NQnJlYWtwb2ludC5y
ZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwogCiAgICAgICAgIHRoaXMuX2Rv
bVRyZWVPdXRsaW5lLmNsb3NlKCk7Ci0gICAgICAgIHRoaXMuX3BlbmRpbmdCcmVha3BvaW50Tm9k
ZUlkZW50aWZpZXJzLmNsZWFyKCk7CisgICAgICAgIHRoaXMuX3BlbmRpbmdCcmVha3BvaW50Tm9k
ZXMuY2xlYXIoKTsKICAgICB9CiAKICAgICBnZXQgc2VsZWN0aW9uUGF0aENvbXBvbmVudHMoKQpA
QCAtNDg3LDcgKzQ4OCw3IEBAIFdJLkRPTVRyZWVDb250ZW50VmlldyA9IGNsYXNzIERPTVRyZWVD
b250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3CiAKICAgICBfZG9tVHJlZUVsZW1lbnRB
ZGRlZChldmVudCkKICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fcGVuZGluZ0JyZWFrcG9pbnRO
b2RlSWRlbnRpZmllcnMuc2l6ZSkKKyAgICAgICAgaWYgKCF0aGlzLl9wZW5kaW5nQnJlYWtwb2lu
dE5vZGVzLnNpemUpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgbGV0IHRyZWVFbGVt
ZW50ID0gZXZlbnQuZGF0YS5lbGVtZW50OwpAQCAtNDk2LDcgKzQ5Nyw3IEBAIFdJLkRPTVRyZWVD
b250ZW50VmlldyA9IGNsYXNzIERPTVRyZWVDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRW
aWV3CiAgICAgICAgIGlmICghKG5vZGUgaW5zdGFuY2VvZiBXSS5ET01Ob2RlKSkKICAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICBpZiAoIXRoaXMuX3BlbmRpbmdCcmVha3BvaW50Tm9kZUlk
ZW50aWZpZXJzLmRlbGV0ZShub2RlLmlkKSkKKyAgICAgICAgaWYgKCF0aGlzLl9wZW5kaW5nQnJl
YWtwb2ludE5vZGVzLmRlbGV0ZShub2RlKSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICB0aGlzLl91cGRhdGVCcmVha3BvaW50U3RhdHVzKG5vZGUuaWQpOwpAQCAtNzUzLDMxICs3NTQs
MzUgQEAgV0kuRE9NVHJlZUNvbnRlbnRWaWV3ID0gY2xhc3MgRE9NVHJlZUNvbnRlbnRWaWV3IGV4
dGVuZHMgV0kuQ29udGVudFZpZXcKICAgICBfZG9tQnJlYWtwb2ludEFkZGVkT3JSZW1vdmVkKGV2
ZW50KQogICAgIHsKICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBldmVudC5kYXRhLmJyZWFrcG9p
bnQ7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZUJyZWFrcG9pbnRTdGF0dXMoYnJlYWtwb2ludC5kb21O
b2RlSWRlbnRpZmllcik7CisgICAgICAgIHRoaXMuX3VwZGF0ZUJyZWFrcG9pbnRTdGF0dXMoYnJl
YWtwb2ludC5kb21Ob2RlKTsKICAgICB9CiAKICAgICBfaGFuZGxlRE9NQnJlYWtwb2ludERpc2Fi
bGVkU3RhdGVDaGFuZ2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBl
dmVudC50YXJnZXQ7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZUJyZWFrcG9pbnRTdGF0dXMoYnJlYWtw
b2ludC5kb21Ob2RlSWRlbnRpZmllcik7CisgICAgICAgIHRoaXMuX3VwZGF0ZUJyZWFrcG9pbnRT
dGF0dXMoYnJlYWtwb2ludC5kb21Ob2RlKTsKICAgICB9CiAKLSAgICBfaGFuZGxlRE9NQnJlYWtw
b2ludERPTU5vZGVDaGFuZ2VkKGV2ZW50KQorICAgIF9oYW5kbGVET01CcmVha3BvaW50RE9NTm9k
ZVdpbGxDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICBsZXQgYnJlYWtwb2ludCA9IGV2ZW50
LnRhcmdldDsKLSAgICAgICAgbGV0IG5vZGVJZGVudGlmaWVyID0gYnJlYWtwb2ludC5kb21Ob2Rl
SWRlbnRpZmllciB8fCBldmVudC5kYXRhLm9sZE5vZGVJZGVudGlmaWVyOwotICAgICAgICB0aGlz
Ll91cGRhdGVCcmVha3BvaW50U3RhdHVzKG5vZGVJZGVudGlmaWVyKTsKKyAgICAgICAgdGhpcy5f
dXBkYXRlQnJlYWtwb2ludFN0YXR1cyhicmVha3BvaW50LmRvbU5vZGUpOwogICAgIH0KIAotICAg
IF91cGRhdGVCcmVha3BvaW50U3RhdHVzKG5vZGVJZGVudGlmaWVyKQorICAgIF9oYW5kbGVET01C
cmVha3BvaW50RE9NTm9kZURpZENoYW5nZShldmVudCkKKyAgICB7CisgICAgICAgIGxldCBicmVh
a3BvaW50ID0gZXZlbnQudGFyZ2V0OworICAgICAgICB0aGlzLl91cGRhdGVCcmVha3BvaW50U3Rh
dHVzKGJyZWFrcG9pbnQuZG9tTm9kZSk7CisgICAgfQorCisgICAgX3VwZGF0ZUJyZWFrcG9pbnRT
dGF0dXMoZG9tTm9kZSkKICAgICB7Ci0gICAgICAgIGxldCBkb21Ob2RlID0gV0kuZG9tTWFuYWdl
ci5ub2RlRm9ySWQobm9kZUlkZW50aWZpZXIpOwogICAgICAgICBpZiAoIWRvbU5vZGUpCiAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgbGV0IHRyZWVFbGVtZW50ID0gdGhpcy5fZG9tVHJl
ZU91dGxpbmUuZmluZFRyZWVFbGVtZW50KGRvbU5vZGUpOwogICAgICAgICBpZiAoIXRyZWVFbGVt
ZW50KSB7Ci0gICAgICAgICAgICB0aGlzLl9wZW5kaW5nQnJlYWtwb2ludE5vZGVJZGVudGlmaWVy
cy5hZGQobm9kZUlkZW50aWZpZXIpOworICAgICAgICAgICAgdGhpcy5fcGVuZGluZ0JyZWFrcG9p
bnROb2Rlcy5hZGQoZG9tTm9kZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApA
QCAtNzk1LDE2ICs4MDAsMTYgQEAgV0kuRE9NVHJlZUNvbnRlbnRWaWV3ID0gY2xhc3MgRE9NVHJl
ZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKIAogICAgIF9yZXN0b3JlQnJlYWtw
b2ludHNBZnRlclVwZGF0ZSgpCiAgICAgewotICAgICAgICB0aGlzLl9wZW5kaW5nQnJlYWtwb2lu
dE5vZGVJZGVudGlmaWVycy5jbGVhcigpOworICAgICAgICB0aGlzLl9wZW5kaW5nQnJlYWtwb2lu
dE5vZGVzLmNsZWFyKCk7CiAKICAgICAgICAgdGhpcy5icmVha3BvaW50R3V0dGVyRW5hYmxlZCA9
IGZhbHNlOwogCiAgICAgICAgIGxldCB1cGRhdGVkTm9kZXMgPSBuZXcgU2V0OwogICAgICAgICBm
b3IgKGxldCBicmVha3BvaW50IG9mIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5kb21CcmVha3BvaW50
cykgewotICAgICAgICAgICAgaWYgKHVwZGF0ZWROb2Rlcy5oYXMoYnJlYWtwb2ludC5kb21Ob2Rl
SWRlbnRpZmllcikpCisgICAgICAgICAgICBpZiAodXBkYXRlZE5vZGVzLmhhcyhicmVha3BvaW50
LmRvbU5vZGUpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICB0aGlz
Ll91cGRhdGVCcmVha3BvaW50U3RhdHVzKGJyZWFrcG9pbnQuZG9tTm9kZUlkZW50aWZpZXIpOwor
ICAgICAgICAgICAgdGhpcy5fdXBkYXRlQnJlYWtwb2ludFN0YXR1cyhicmVha3BvaW50LmRvbU5v
ZGUpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbC5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZXNOYXZpZ2F0
aW9uU2lkZWJhclBhbmVsLmpzCmluZGV4IGJkYjA3ZjUxN2M4My4uZjNiZDQ0YmY3YWZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2Vz
TmF2aWdhdGlvblNpZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbC5qcwpAQCAtMzI4
LDcgKzMyOCw4IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgU291
cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXCiAgICAgICAgIFdJLkphdmFTY3Jp
cHRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuRXZl
bnQuRGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVEZWJ1Z2dlck9iamVjdERp
c3BsYXlMb2NhdGlvbkRpZENoYW5nZSwgdGhpcyk7CiAgICAgICAgIFdJLklzc3VlTWVzc2FnZS5h
ZGRFdmVudExpc3RlbmVyKFdJLklzc3VlTWVzc2FnZS5FdmVudC5EaXNwbGF5TG9jYXRpb25EaWRD
aGFuZ2UsIHRoaXMuX2hhbmRsZURlYnVnZ2VyT2JqZWN0RGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdl
LCB0aGlzKTsKIAotICAgICAgICBXSS5ET01CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0ku
RE9NQnJlYWtwb2ludC5FdmVudC5ET01Ob2RlQ2hhbmdlZCwgdGhpcy5faGFuZGxlRE9NQnJlYWtw
b2ludERPTU5vZGVDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgV0kuRE9NQnJlYWtwb2ludC5hZGRF
dmVudExpc3RlbmVyKFdJLkRPTUJyZWFrcG9pbnQuRXZlbnQuRE9NTm9kZVdpbGxDaGFuZ2UsIHRo
aXMuX2hhbmRsZURPTUJyZWFrcG9pbnRET01Ob2RlV2lsbENoYW5nZSwgdGhpcyk7CisgICAgICAg
IFdJLkRPTUJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01CcmVha3BvaW50LkV2ZW50
LkRPTU5vZGVEaWRDaGFuZ2UsIHRoaXMuX2hhbmRsZURPTUJyZWFrcG9pbnRET01Ob2RlRGlkQ2hh
bmdlLCB0aGlzKTsKIAogICAgICAgICBXSS5jb25zb2xlTWFuYWdlci5hZGRFdmVudExpc3RlbmVy
KFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50Lklzc3VlQWRkZWQsIHRoaXMuX2hhbmRsZUNvbnNvbGVJ
c3N1ZUFkZGVkLCB0aGlzKTsKICAgICAgICAgV0kuY29uc29sZU1hbmFnZXIuYWRkRXZlbnRMaXN0
ZW5lcihXSS5Db25zb2xlTWFuYWdlci5FdmVudC5DbGVhcmVkLCB0aGlzLl9oYW5kbGVDb25zb2xl
Q2xlYXJlZCwgdGhpcyk7CkBAIC0xMjU3LDEwICsxMjU4LDYgQEAgV0kuU291cmNlc05hdmlnYXRp
b25TaWRlYmFyUGFuZWwgPSBjbGFzcyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRl
bmRzIFcKICAgICAgICAgbGV0IHBhcmVudFRyZWVFbGVtZW50ID0gdGhpcy5fYnJlYWtwb2ludHNU
cmVlT3V0bGluZTsKIAogICAgICAgICBsZXQgZ2V0RE9NTm9kZVRyZWVFbGVtZW50ID0gKGRvbU5v
ZGUpID0+IHsKLSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRvbU5vZGUsICJNaXNzaW5nIERP
TU5vZGUgZm9yIGlkZW50aWZpZXIiLCBicmVha3BvaW50LmRvbU5vZGVJZGVudGlmaWVyKTsKLSAg
ICAgICAgICAgIGlmICghZG9tTm9kZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKLQog
ICAgICAgICAgICAgbGV0IGRvbU5vZGVUcmVlRWxlbWVudCA9IHRoaXMuX2JyZWFrcG9pbnRzVHJl
ZU91dGxpbmUuZmluZFRyZWVFbGVtZW50KGRvbU5vZGUpOwogICAgICAgICAgICAgaWYgKCFkb21O
b2RlVHJlZUVsZW1lbnQpIHsKICAgICAgICAgICAgICAgICBkb21Ob2RlVHJlZUVsZW1lbnQgPSBu
ZXcgV0kuRE9NTm9kZVRyZWVFbGVtZW50KGRvbU5vZGUpOwpAQCAtMTI4MCwxMyArMTI3NywxMiBA
QCBXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0
aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgVwogICAgICAgICBlbHNlIGlmIChicmVha3BvaW50ID09
PSBXSS5kZWJ1Z2dlck1hbmFnZXIuYWxsTWljcm90YXNrc0JyZWFrcG9pbnQpCiAgICAgICAgICAg
ICBvcHRpb25zLmNsYXNzTmFtZXMgPSBbIm1pY3JvdGFzayJdOwogICAgICAgICBlbHNlIGlmIChi
cmVha3BvaW50IGluc3RhbmNlb2YgV0kuRE9NQnJlYWtwb2ludCkgewotICAgICAgICAgICAgaWYg
KCFicmVha3BvaW50LmRvbU5vZGVJZGVudGlmaWVyKQorICAgICAgICAgICAgaWYgKCFicmVha3Bv
aW50LmRvbU5vZGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAKICAgICAgICAgICAg
IGNvbnN0cnVjdG9yID0gV0kuRE9NQnJlYWtwb2ludFRyZWVFbGVtZW50OwogCi0gICAgICAgICAg
ICBsZXQgZG9tTm9kZSA9IFdJLmRvbU1hbmFnZXIubm9kZUZvcklkKGJyZWFrcG9pbnQuZG9tTm9k
ZUlkZW50aWZpZXIpOwotICAgICAgICAgICAgcGFyZW50VHJlZUVsZW1lbnQgPSBnZXRET01Ob2Rl
VHJlZUVsZW1lbnQoZG9tTm9kZSk7CisgICAgICAgICAgICBwYXJlbnRUcmVlRWxlbWVudCA9IGdl
dERPTU5vZGVUcmVlRWxlbWVudChicmVha3BvaW50LmRvbU5vZGUpOwogICAgICAgICB9IGVsc2Ug
aWYgKGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5FdmVudEJyZWFrcG9pbnQpIHsKICAgICAgICAg
ICAgIGNvbnN0cnVjdG9yID0gV0kuRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQ7CiAKQEAgLTE2
NzEsNiArMTY2Nyw3IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3Mg
U291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXCiAKICAgICAgICAgICAgIGlm
IChwYXVzZURhdGEudGFyZ2V0Tm9kZUlkKSB7CiAgICAgICAgICAgICAgICAgY29uc29sZS5hc3Nl
cnQoZG9tQnJlYWtwb2ludC50eXBlID09PSBXSS5ET01CcmVha3BvaW50LlR5cGUuU3VidHJlZU1v
ZGlmaWVkIHx8IGRvbUJyZWFrcG9pbnQudHlwZSA9PT0gV0kuRE9NQnJlYWtwb2ludC5UeXBlLk5v
ZGVSZW1vdmVkKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChwYXVzZURhdGEudGFy
Z2V0Tm9kZUlkICE9PSBkb21CcmVha3BvaW50LmRvbU5vZGUuaWQsIHBhdXNlRGF0YS50YXJnZXRO
b2RlSWQsIGRvbUJyZWFrcG9pbnQpOwogICAgICAgICAgICAgICAgIHVwZGF0ZVRhcmdldERlc2Ny
aXB0aW9uKHBhdXNlRGF0YS50YXJnZXROb2RlSWQpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChw
YXVzZURhdGEudGFyZ2V0Tm9kZSkgeyAvLyBDT01QQVRJQklMSVRZIChpT1MgMTMpOiBgdGFyZ2V0
Tm9kZWAgd2FzIHJlbmFtZWQgdG8gYHRhcmdldE5vZGVJZGAgYW5kIHdhcyBjaGFuZ2VkIGZyb20g
YSBgUnVudGltZS5SZW1vdGVPYmplY3RgIHRvIGEgYERPTS5Ob2RlSWRgLgogICAgICAgICAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KGRvbUJyZWFrcG9pbnQudHlwZSA9PT0gV0kuRE9NQnJlYWtwb2lu
dC5UeXBlLlN1YnRyZWVNb2RpZmllZCk7CkBAIC0yMzgxLDEzICsyMzc4LDE2IEBAIFdJLlNvdXJj
ZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFy
UGFuZWwgZXh0ZW5kcyBXCiAgICAgICAgICAgICBuZXdEZWJ1Z2dlclRyZWVFbGVtZW50LnJldmVh
bEFuZFNlbGVjdCh0cnVlLCBmYWxzZSwgdHJ1ZSk7CiAgICAgfQogCi0gICAgX2hhbmRsZURPTUJy
ZWFrcG9pbnRET01Ob2RlQ2hhbmdlZChldmVudCkKKyAgICBfaGFuZGxlRE9NQnJlYWtwb2ludERP
TU5vZGVXaWxsQ2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBl
dmVudC50YXJnZXQ7Ci0gICAgICAgIGlmIChicmVha3BvaW50LmRvbU5vZGVJZGVudGlmaWVyKQot
ICAgICAgICAgICAgdGhpcy5fYWRkQnJlYWtwb2ludChicmVha3BvaW50KTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgdGhpcy5fcmVtb3ZlQnJlYWtwb2ludChicmVha3BvaW50KTsKKyAgICAg
ICAgdGhpcy5fcmVtb3ZlQnJlYWtwb2ludChicmVha3BvaW50KTsKKyAgICB9CisKKyAgICBfaGFu
ZGxlRE9NQnJlYWtwb2ludERPTU5vZGVEaWRDaGFuZ2UoZXZlbnQpCisgICAgeworICAgICAgICBs
ZXQgYnJlYWtwb2ludCA9IGV2ZW50LnRhcmdldDsKKyAgICAgICAgdGhpcy5fYWRkQnJlYWtwb2lu
dChicmVha3BvaW50KTsKICAgICB9CiAKICAgICBfaGFuZGxlQ29uc29sZUlzc3VlQWRkZWQoZXZl
bnQpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>