<?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>74648</bug_id>
          
          <creation_ts>2011-12-15 14:04:48 -0800</creation_ts>
          <short_desc>DOM: prepend, append, before, after &amp; replace</short_desc>
          <delta_ts>2015-07-14 09:32:31 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>https://dom.spec.whatwg.org</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Erik Arvidsson">arv</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>50167214</cc>
    
    <cc>abarth</cc>
    
    <cc>adamk</cc>
    
    <cc>bjonesbe</cc>
    
    <cc>bronislav.klucka</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>eae</cc>
    
    <cc>ericbidelman</cc>
    
    <cc>esprehn</cc>
    
    <cc>gustavo</cc>
    
    <cc>haraken</cc>
    
    <cc>heycam</cc>
    
    <cc>japhet</cc>
    
    <cc>jsbell</cc>
    
    <cc>mathias</cc>
    
    <cc>ojan</cc>
    
    <cc>philn</cc>
    
    <cc>sam</cc>
    
    <cc>skyul</cc>
    
    <cc>syoichi</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>522227</commentid>
    <comment_count>0</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2011-12-15 14:04:48 -0800</bug_when>
    <thetext>DOM4 has these methods which all takes var args of union types

// NEW (using experimental IDL)
  void prepend(Node | DOMString... nodes);
  void append(Node | DOMString... nodes);
  void before(Node | DOMString... nodes);
  void after(Node | DOMString... nodes);
  void replace(Node | DOMString... nodes);

The way I was envisioning implementing these was to add methods to Node.h that takes a WTF::Vector&lt;WebCore::NodeOrString&gt;. The class NodeOrString would have isNode/toNode and isString/toString methods and there would be one constructor per type. The binding code would check the type and call the right constructor.

Does this seem reasonable?

Is it worth adding support for this in the code generators at this point?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522238</commentid>
    <comment_count>1</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-12-15 14:23:11 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; DOM4 has these methods which all takes var args of union types
&gt; 
&gt; // NEW (using experimental IDL)
&gt;   void prepend(Node | DOMString... nodes);
&gt;   void append(Node | DOMString... nodes);
&gt;   void before(Node | DOMString... nodes);
&gt;   void after(Node | DOMString... nodes);
&gt;   void replace(Node | DOMString... nodes);
&gt; 
&gt; The way I was envisioning implementing these was to add methods to Node.h that takes a WTF::Vector&lt;WebCore::NodeOrString&gt;. The class NodeOrString would have isNode/toNode and isString/toString methods and there would be one constructor per type. The binding code would check the type and call the right constructor.

I would have isNode/node and isString/string.

&gt; Does this seem reasonable?

Yes.

&gt; Is it worth adding support for this in the code generators at this point?

Yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522291</commentid>
    <comment_count>2</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2011-12-15 16:02:07 -0800</bug_when>
    <thetext>Just to point out that union types haven&apos;t been defined in Web IDL yet (Anne is using them speculatively).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724625</commentid>
    <comment_count>3</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-09-20 10:45:46 -0700</bug_when>
    <thetext>*** Bug 97234 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724634</commentid>
    <comment_count>4</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-09-20 10:49:02 -0700</bug_when>
    <thetext>FYI: http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#mutation-methods</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730846</commentid>
    <comment_count>5</comment_count>
      <attachid>166287</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-09-28 11:47:49 -0700</bug_when>
    <thetext>Created attachment 166287
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730852</commentid>
    <comment_count>6</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-09-28 11:49:05 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Created an attachment (id=166287) [details]
&gt; WIP

This is a work in progress. It currently only does append(Node... nodes)

Next step is to see what it takes to do append((Node or String) nodes)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730854</commentid>
    <comment_count>7</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-09-28 11:50:54 -0700</bug_when>
    <thetext>Exciting times!

Wouldn&apos;t it make more sense to add the append and prepend methods to ContainerNode instead of Node though?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730864</commentid>
    <comment_count>8</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-09-28 12:07:06 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Wouldn&apos;t it make more sense to add the append and prepend methods to ContainerNode instead of Node though?

Yes. That would be better</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760061</commentid>
    <comment_count>9</comment_count>
      <attachid>172653</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-11-06 14:37:50 -0800</bug_when>
    <thetext>Created attachment 172653
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760064</commentid>
    <comment_count>10</comment_count>
      <attachid>172653</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-11-06 14:41:06 -0800</bug_when>
    <thetext>Comment on attachment 172653
Patch

This is another WIP patch. This time it does union types

prepend((Node or DOMString) value)

Next step is to combine these two patches to do

prepend((Node or DOMString)... values)

Feedback is wanted on the approach.

This is V8 only at this point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760078</commentid>
    <comment_count>11</comment_count>
      <attachid>172653</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-06 14:51:52 -0800</bug_when>
    <thetext>Comment on attachment 172653
Patch

Attachment 172653 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14755244</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760081</commentid>
    <comment_count>12</comment_count>
      <attachid>172653</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-06 14:54:20 -0800</bug_when>
    <thetext>Comment on attachment 172653
Patch

Attachment 172653 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14745473</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760120</commentid>
    <comment_count>13</comment_count>
      <attachid>172653</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-06 15:34:32 -0800</bug_when>
    <thetext>Comment on attachment 172653
Patch

Attachment 172653 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14744539</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760183</commentid>
    <comment_count>14</comment_count>
      <attachid>172653</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-06 16:24:48 -0800</bug_when>
    <thetext>Comment on attachment 172653
Patch

Attachment 172653 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14733881</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760223</commentid>
    <comment_count>15</comment_count>
      <attachid>172653</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-11-06 17:02:57 -0800</bug_when>
    <thetext>Comment on attachment 172653
Patch

Attachment 172653 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14744576</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761732</commentid>
    <comment_count>16</comment_count>
      <attachid>173033</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-11-08 06:35:42 -0800</bug_when>
    <thetext>Created attachment 173033
WIP. Fully working V8 variadic union type</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106997</commentid>
    <comment_count>17</comment_count>
      <attachid>256188</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-07-05 20:18:07 -0700</bug_when>
    <thetext>Created attachment 256188
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106998</commentid>
    <comment_count>18</comment_count>
      <attachid>256188</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-07-05 20:19:35 -0700</bug_when>
    <thetext>Comment on attachment 256188
WIP patch

WIP patch. There are still some questions I have for the spec editor about replaceWith. Putting this up here to EWS test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1108553</commentid>
    <comment_count>19</comment_count>
    <who name="yisibl">50167214</who>
    <bug_when>2015-07-10 00:51:12 -0700</bug_when>
    <thetext>Blink has supported: https://code.google.com/p/chromium/issues/detail?id=255482#c11</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1108923</commentid>
    <comment_count>20</comment_count>
      <attachid>256654</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-07-11 07:26:52 -0700</bug_when>
    <thetext>Created attachment 256654
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1108924</commentid>
    <comment_count>21</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-07-11 07:28:25 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; Comment on attachment 256188 [details]
&gt; WIP patch
&gt; 
&gt; WIP patch. There are still some questions I have for the spec editor about
&gt; replaceWith. Putting this up here to EWS test.

I got my question, which was how can parentNode change between steps 1 and 5 min replaceWith, answered. Answer being, &quot;If the context object is one of the nodes passed in, that will no longer be true due to it being inserted into the DocumentFragment&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1108925</commentid>
    <comment_count>22</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-07-11 07:30:10 -0700</bug_when>
    <thetext>I did not add support for general variadic unions in IDL as it does not seem like something that is used too often, and the custom code was easy enough to write. If there are more uses of variadic unions (or unions at all really), we should add better support to the generator and remove the custom code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1108963</commentid>
    <comment_count>23</comment_count>
      <attachid>256654</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-07-11 13:52:03 -0700</bug_when>
    <thetext>Comment on attachment 256654
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Tests: fast/dom/ChildNode-after.html

What are you doing? Adding new features? Removing things? Fixing things?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1108993</commentid>
    <comment_count>24</comment_count>
      <attachid>256654</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-07-11 15:46:34 -0700</bug_when>
    <thetext>Comment on attachment 256654
Patch

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

&gt; Source/WebCore/bindings/js/JSCharacterDataCustom.cpp:36
&gt; +JSValue JSCharacterData::before(ExecState* exec)

I’ve been using the word “state” instead of ”exec” in new code. Maybe you would consider doing the same?

&gt; Source/WebCore/bindings/js/JSCharacterDataCustom.cpp:38
&gt; +    auto nodes = toNodeOrStringVector(exec);

Seems like something we could teach the code generator to do pretty easily. We just need to come up with some magic type name and/or IDL keyword that means this.

&gt; Source/WebCore/bindings/js/JSCharacterDataCustom.cpp:41
&gt; +    impl().before(WTF::move(nodes), ec);

If the call to toNodeOrStringVector(exec) was in the expression here, we wouldn’t need the WTF::move. I think that would be better.

&gt; Source/WebCore/bindings/js/JSNodeOrString.cpp:38
&gt; +    Vector&lt;NodeOrString&gt; nodeOrStringVector;

Should use a shorter name. No need to reiterate the type. Maybe vector or result.

&gt; Source/WebCore/bindings/js/JSNodeOrString.cpp:40
&gt; +    size_t argumentCount = exec-&gt;argumentCount();

Needs:

    nodeOrStringVector.reserveInitialCapacity(argumentCount);

&gt; Source/WebCore/bindings/js/JSNodeOrString.cpp:42
&gt; +        JSValue value = exec-&gt;argument(i);

Should be uncheckedArgument(i) since we already looked at argumentCount.

&gt; Source/WebCore/bindings/js/JSNodeOrString.cpp:44
&gt; +            nodeOrStringVector.append(NodeOrString(&amp;node-&gt;impl()));

Could be uncheckedAppend if we do reserveInitialCapacity. I don’t think the typecast to NodeOrString is needed here. If so, I am surprised that it is.

&gt; Source/WebCore/bindings/js/JSNodeOrString.cpp:48
&gt; +                return Vector&lt;NodeOrString&gt;();

Another way to write that is return { }

&gt; Source/WebCore/bindings/js/JSNodeOrString.cpp:49
&gt; +            nodeOrStringVector.append(NodeOrString(string));

Could be uncheckedAppend if we do reserveInitialCapacity. I don’t think the typecast to NodeOrString is needed here. If so, I am surprised that it is.

&gt; Source/WebCore/bindings/js/JSNodeOrString.h:38
&gt; +Vector&lt;NodeOrString&gt; toNodeOrStringVector(JSC::ExecState*);

I suggest ExecState&amp; state instead of ExecState* exec.

&gt; Source/WebCore/dom/ContainerNode.cpp:928
&gt; +    if (ec || !node)
&gt; +        return;

I suggest omitting the !node check here.

Since this code is checking ec, it needs to initialize it to zero. Caller is not required to do that.

&gt; Source/WebCore/dom/ContainerNode.cpp:937
&gt; +    if (ec || !node)
&gt; +        return;

I suggest omitting the !node check here.

Since this code is checking ec, it needs to initialize it to zero. Caller is not required to do that.

&gt; Source/WebCore/dom/Node.cpp:494
&gt; +static RefPtr&lt;Node&gt; firstPrecedingSiblingNotInNodeSet(Node&amp; context, HashSet&lt;RefPtr&lt;Node&gt;&gt; nodeSet)

Please use const HashSet&amp;; no need to copy the set every time this is called.

&gt; Source/WebCore/dom/Node.cpp:503
&gt; +static RefPtr&lt;Node&gt; firstFollowingSiblingNotInNodeSet(Node&amp; context, HashSet&lt;RefPtr&lt;Node&gt;&gt; nodeSet)

Ditto.

&gt; Source/WebCore/dom/Node.cpp:516
&gt; +    if (!parent)
&gt; +        return;

Should we be setting ec here? Do we have test coverage for this?

&gt; Source/WebCore/dom/Node.cpp:518
&gt; +    HashSet&lt;RefPtr&lt;Node&gt;&gt; nodeSet = nodeSetPreTransformedFromNodeOrStringVector(nodeOrStringVector);

auto?

&gt; Source/WebCore/dom/Node.cpp:523
&gt; +    if (ec || !node)
&gt; +        return;

I suggest omitting the !node check here.

Since this code is checking ec, it needs to initialize it to zero. Caller is not required to do that.

&gt; Source/WebCore/dom/Node.cpp:537
&gt; +    if (!parent)
&gt; +        return;

Should we be setting ec here? Do we have test coverage for this?

&gt; Source/WebCore/dom/Node.cpp:539
&gt; +    HashSet&lt;RefPtr&lt;Node&gt;&gt; nodeSet = nodeSetPreTransformedFromNodeOrStringVector(nodeOrStringVector);

auto?

&gt; Source/WebCore/dom/Node.cpp:544
&gt; +    if (ec || !node)
&gt; +        return;

I suggest omitting the !node check here.

Since this code is checking ec, it needs to initialize it to zero. Caller is not required to do that.

&gt; Source/WebCore/dom/Node.cpp:546
&gt; +    parent-&gt;insertBefore(node, viableNextSibling.get(), ec);

node.release() here too

&gt; Source/WebCore/dom/Node.cpp:555
&gt; +    HashSet&lt;RefPtr&lt;Node&gt;&gt; nodeSet = nodeSetPreTransformedFromNodeOrStringVector(nodeOrStringVector);

auto?

&gt; Source/WebCore/dom/Node.cpp:565
&gt; +        parent-&gt;insertBefore(node, viableNextSibling.get(), ec);

node.release() here too

&gt; Source/WebCore/dom/NodeOrString.cpp:39
&gt; +    Vector&lt;RefPtr&lt;Node&gt;&gt; nodes;

reserveInitialCapacity(nodeOrStringVector.size());

&gt; Source/WebCore/dom/NodeOrString.cpp:43
&gt; +            nodes.append(Text::create(context.document(), nodeOrString.string()));

uncheckedAppend

&gt; Source/WebCore/dom/NodeOrString.cpp:46
&gt; +            nodes.append(nodeOrString.node());

uncheckedAppend

&gt; Source/WebCore/dom/NodeOrString.cpp:59
&gt; +            if (ec)
&gt; +                return nullptr;

Since we are checking ec here, we need to initialize it to zero. Caller is not required to do that. Or maybe the caller should be required to do that in this case?

&gt; Source/WebCore/dom/NodeOrString.h:56
&gt; +    NodeOrString(const NodeOrString&amp; other)

Consider also writing a move constructor.

Please either write the copy and move assignment operators or delete them.

&gt; Source/WebCore/dom/NodeOrString.h:86
&gt; +    Node* node() const { ASSERT(m_type == Type::Node); return m_data.node; }
&gt; +    StringImpl* string() const { ASSERT(m_type == Type::String); return m_data.string; }

I suppose we support null for both of these, so these can’t return references.

&gt; Source/WebCore/dom/NodeOrString.h:96
&gt; +RefPtr&lt;Node&gt; convertNodesOrStringsIntoNode(Node&amp; context, Vector&lt;NodeOrString&gt;&amp;&amp;, ExceptionCode&amp;);

Name seems oblique. How can I convert a vector of nodes or strings into a single node? I think the point is that it converts them into a little DOM tree, not always a single node. Maybe it should be named something like makeDOMTree. What would be a colloquial way to refer to it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1108999</commentid>
    <comment_count>25</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-07-11 17:53:15 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; Comment on attachment 256654 [details]
&gt; Patch

Thanks for the review. It probably wasn&apos;t quite ready, I accidentally left on the r? when I put it up for the bots to chew through. I don&apos;t even have a changelog filled out yet.

&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=256654&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSCharacterDataCustom.cpp:36
&gt; &gt; +JSValue JSCharacterData::before(ExecState* exec)
&gt; 
&gt; I’ve been using the word “state” instead of ”exec” in new code. Maybe you
&gt; would consider doing the same?

Will change.

&gt; &gt; Source/WebCore/bindings/js/JSCharacterDataCustom.cpp:38
&gt; &gt; +    auto nodes = toNodeOrStringVector(exec);
&gt; 
&gt; Seems like something we could teach the code generator to do pretty easily.
&gt; We just need to come up with some magic type name and/or IDL keyword that
&gt; means this.

I went down this path and decided against it due to how messy it got for the small cost of the custom code.

&gt; &gt; Source/WebCore/bindings/js/JSCharacterDataCustom.cpp:41
&gt; &gt; +    impl().before(WTF::move(nodes), ec);
&gt; 
&gt; If the call to toNodeOrStringVector(exec) was in the expression here, we
&gt; wouldn’t need the WTF::move. I think that would be better.

Will change.

&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSNodeOrString.cpp:38
&gt; &gt; +    Vector&lt;NodeOrString&gt; nodeOrStringVector;
&gt; 
&gt; Should use a shorter name. No need to reiterate the type. Maybe vector or
&gt; result.
&gt; 

Changed to result.

&gt; &gt; Source/WebCore/bindings/js/JSNodeOrString.cpp:40
&gt; &gt; +    size_t argumentCount = exec-&gt;argumentCount();
&gt; 
&gt; Needs:
&gt; 
&gt;     nodeOrStringVector.reserveInitialCapacity(argumentCount);
&gt; 

Done.

&gt; &gt; Source/WebCore/bindings/js/JSNodeOrString.cpp:42
&gt; &gt; +        JSValue value = exec-&gt;argument(i);
&gt; 
&gt; Should be uncheckedArgument(i) since we already looked at argumentCount.
&gt; 

Done.

&gt; &gt; Source/WebCore/bindings/js/JSNodeOrString.cpp:44
&gt; &gt; +            nodeOrStringVector.append(NodeOrString(&amp;node-&gt;impl()));
&gt; 
&gt; Could be uncheckedAppend if we do reserveInitialCapacity. I don’t think the
&gt; typecast to NodeOrString is needed here. If so, I am surprised that it is.
&gt; 

Done.

&gt; &gt; Source/WebCore/bindings/js/JSNodeOrString.cpp:48
&gt; &gt; +                return Vector&lt;NodeOrString&gt;();
&gt; 
&gt; Another way to write that is return { }

Done.

&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSNodeOrString.cpp:49
&gt; &gt; +            nodeOrStringVector.append(NodeOrString(string));
&gt; 
&gt; Could be uncheckedAppend if we do reserveInitialCapacity. I don’t think the
&gt; typecast to NodeOrString is needed here. If so, I am surprised that it is.

Done.

&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSNodeOrString.h:38
&gt; &gt; +Vector&lt;NodeOrString&gt; toNodeOrStringVector(JSC::ExecState*);
&gt; 
&gt; I suggest ExecState&amp; state instead of ExecState* exec.

Done.

&gt; 
&gt; &gt; Source/WebCore/dom/ContainerNode.cpp:928
&gt; &gt; +    if (ec || !node)
&gt; &gt; +        return;
&gt; 
&gt; I suggest omitting the !node check here.

I don&apos;t think I can. convertNodesOrStringsIntoNode can return null in a non-exceptional case and we should still return.

&gt; 
&gt; Since this code is checking ec, it needs to initialize it to zero. Caller is
&gt; not required to do that.

Are you sure? This is a pretty common pattern in the DOM, and I believe the expectation is that the top caller zeros out the ec. 

&gt; 
&gt; &gt; Source/WebCore/dom/Node.cpp:494
&gt; &gt; +static RefPtr&lt;Node&gt; firstPrecedingSiblingNotInNodeSet(Node&amp; context, HashSet&lt;RefPtr&lt;Node&gt;&gt; nodeSet)
&gt; 
&gt; Please use const HashSet&amp;; no need to copy the set every time this is called.

Done.

&gt; 
&gt; &gt; Source/WebCore/dom/Node.cpp:503
&gt; &gt; +static RefPtr&lt;Node&gt; firstFollowingSiblingNotInNodeSet(Node&amp; context, HashSet&lt;RefPtr&lt;Node&gt;&gt; nodeSet)
&gt; 
&gt; Ditto.

Done.

&gt; 
&gt; &gt; Source/WebCore/dom/Node.cpp:516
&gt; &gt; +    if (!parent)
&gt; &gt; +        return;
&gt; 
&gt; Should we be setting ec here? Do we have test coverage for this?

No. The spec (https://dom.spec.whatwg.org/#dom-childnode-before) says to terminate the steps cleanly in this case. I believe I do have a test for this.

&gt; 
&gt; &gt; Source/WebCore/dom/Node.cpp:518
&gt; &gt; +    HashSet&lt;RefPtr&lt;Node&gt;&gt; nodeSet = nodeSetPreTransformedFromNodeOrStringVector(nodeOrStringVector);
&gt; 
&gt; auto?

Done.

&gt; 
&gt; &gt; Source/WebCore/dom/Node.cpp:546
&gt; &gt; +    parent-&gt;insertBefore(node, viableNextSibling.get(), ec);
&gt; 
&gt; node.release() here too

Done.

&gt; &gt; Source/WebCore/dom/NodeOrString.cpp:39
&gt; &gt; +    Vector&lt;RefPtr&lt;Node&gt;&gt; nodes;
&gt; 
&gt; reserveInitialCapacity(nodeOrStringVector.size());

Done.

&gt; 
&gt; &gt; Source/WebCore/dom/NodeOrString.cpp:43
&gt; &gt; +            nodes.append(Text::create(context.document(), nodeOrString.string()));
&gt; 
&gt; uncheckedAppend

Done.

&gt; 
&gt; &gt; Source/WebCore/dom/NodeOrString.cpp:46
&gt; &gt; +            nodes.append(nodeOrString.node());
&gt; 
&gt; uncheckedAppend

Done.

&gt; &gt; Source/WebCore/dom/NodeOrString.h:56
&gt; &gt; +    NodeOrString(const NodeOrString&amp; other)
&gt; 
&gt; Consider also writing a move constructor.
&gt; 
&gt; Please either write the copy and move assignment operators or delete them.

Will do.

&gt; 
&gt; &gt; Source/WebCore/dom/NodeOrString.h:86
&gt; &gt; +    Node* node() const { ASSERT(m_type == Type::Node); return m_data.node; }
&gt; &gt; +    StringImpl* string() const { ASSERT(m_type == Type::String); return m_data.string; }
&gt; 
&gt; I suppose we support null for both of these, so these can’t return
&gt; references.

I don&apos;t think they can be null. I made them references.

&gt; 
&gt; &gt; Source/WebCore/dom/NodeOrString.h:96
&gt; &gt; +RefPtr&lt;Node&gt; convertNodesOrStringsIntoNode(Node&amp; context, Vector&lt;NodeOrString&gt;&amp;&amp;, ExceptionCode&amp;);
&gt; 
&gt; Name seems oblique. How can I convert a vector of nodes or strings into a
&gt; single node? I think the point is that it converts them into a little DOM
&gt; tree, not always a single node. Maybe it should be named something like
&gt; makeDOMTree. What would be a colloquial way to refer to it?

The name comes from the spec - https://dom.spec.whatwg.org/#converting-nodes-into-a-node.  I will try to make it clearer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109368</commentid>
    <comment_count>26</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-07-14 08:59:45 -0700</bug_when>
    <thetext>Committed revision 186803.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109376</commentid>
    <comment_count>27</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-07-14 09:32:31 -0700</bug_when>
    <thetext>&lt;rdar://problem/21814964&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166287</attachid>
            <date>2012-09-28 11:47:49 -0700</date>
            <delta_ts>2012-11-06 14:37:46 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-74648-20120928144706.patch</filename>
            <type>text/plain</type>
            <size>15432</size>
            <attacher name="Erik Arvidsson">arv</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5OTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjFkZGM2MGZhNjQ4MzBl
MmUzZjAzMzZiOTM2NTNhY2NiZGVhOGM1NS4uZjI2MWMyZDliMWY5MjcyNWI0OWMxY2U2YTYwMjZm
NTI4MjkxNTI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA5LTI4ICBFcmlr
IEFydmlkc3NvbiAgPGFydkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRE9NNDogcHJlcGVuZCwg
YXBwZW5kLCBiZWZvcmUsIGFmdGVyICYgcmVwbGFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ2NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFu
Z2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBk
ZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogZmFzdC9kb20vRG9j
dW1lbnQvcHJlcGVuZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9FbGVtZW50L3ByZXBl
bmQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vZG9jdW1lbnQtZnJhZ21lbnQtcHJlcGVu
ZC5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToK
KyAgICAgICAgKEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKToKKyAgICAgICAgKFJlcXVpcmVzQ3Vz
dG9tU2lnbmF0dXJlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGRv
bS9Eb2N1bWVudEZyYWdtZW50LmlkbDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5pZGw6CisgICAg
ICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6bXV0YXRpb25NZXRo
b2RNYWNybyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnBy
ZXBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6YXBwZW5kKToKKyAgICAgICAgKiBkb20v
Tm9kZS5oOgorICAgICAgICAoTm9kZSk6CisKIDIwMTItMDktMjggIE1pa2hhaWwgUG96ZG55YWtv
diAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CiAKICAgICAgICAgQ29kZSBpbnNpZGUg
RnJhbWVMb2FkZXJDbGllbnQ6OmNhblNob3dNSU1FVHlwZSgpIGltcGxlbWVudGF0aW9ucyBjYW4g
YmUgc2hhcmVkIGFtb25nIGRpZmZlcmVudCBXSyBwb3J0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCAyZDM1ZDNkNmYyMjll
YzU4OGZjYWJiZWNlYWYzNjc3Y2IyOWM3ZjhlLi42MzAwYzY0MTZmYmMyMTI4YzZiMzk0MTE1MmFm
NDJmYTQ3Y2MxNzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtMTc2OCwxMiArMTc2OCwxNyBAQCBzdWIgR2VuZXJhdGVQ
YXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAg
ICAgICBnb3RvIGZhaWw7XG4iOwogICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49
ICIgICAgfVxuIjsKICAgICAgICAgfSBlbHNpZiAoJHBhcmFtZXRlci0+aXNWYXJpYWRpYykgewot
ICAgICAgICAgICAgbXkgJG5hdGl2ZUVsZW1lbnRUeXBlID0gR2V0TmF0aXZlVHlwZSgkcGFyYW1l
dGVyLT50eXBlKTsKLSAgICAgICAgICAgIGlmICgkbmF0aXZlRWxlbWVudFR5cGUgPX4gLz4kLykg
ewotICAgICAgICAgICAgICAgICRuYXRpdmVFbGVtZW50VHlwZSAuPSAiICI7CisgICAgICAgICAg
ICBteSAkYXJnVHlwZSA9IEdldFR5cGVGcm9tU2lnbmF0dXJlKCRwYXJhbWV0ZXIpOworICAgICAg
ICAgICAgbXkgJG5hdGl2ZUVsZW1lbnRUeXBlOworICAgICAgICAgICAgaWYgKCRhcmdUeXBlIGVx
ICJET01TdHJpbmciKSB7CisgICAgICAgICAgICAgICAgJG5hdGl2ZUVsZW1lbnRUeXBlID0gIlN0
cmluZyI7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICRuYXRpdmVFbGVt
ZW50VHlwZSA9ICRuYXRpdmVUeXBlOworICAgICAgICAgICAgICAgIGlmICgkbmF0aXZlRWxlbWVu
dFR5cGUgPX4gLz4kLykgeworICAgICAgICAgICAgICAgICAgICAkbmF0aXZlRWxlbWVudFR5cGUg
Lj0gIiAiOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
bXkgJGFyZ1R5cGUgPSBHZXRUeXBlRnJvbVNpZ25hdHVyZSgkcGFyYW1ldGVyKTsKICAgICAgICAg
ICAgIGlmIChJc1dyYXBwZXJUeXBlKCRhcmdUeXBlKSkgewogICAgICAgICAgICAgICAgICRwYXJh
bWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIFZlY3RvcjwkbmF0aXZlRWxlbWVudFR5cGU+ICRwYXJh
bWV0ZXJOYW1lO1xuIjsKICAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0g
IiAgICBmb3IgKGludCBpID0gJHBhcmFtSW5kZXg7IGkgPCBhcmdzLkxlbmd0aCgpOyArK2kpIHtc
biI7CkBAIC0zOTIyLDkgKzM5MjcsOCBAQCBzdWIgUmVxdWlyZXNDdXN0b21TaWduYXR1cmUKICAg
ICB9CiAKICAgICBmb3JlYWNoIG15ICRwYXJhbWV0ZXIgKEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJz
fSkgewotICAgICAgICBpZiAoSXNXcmFwcGVyVHlwZSgkcGFyYW1ldGVyLT50eXBlKSkgewotICAg
ICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDAgaWYgKCRwYXJh
bWV0ZXItPmlzVmFyaWFkaWMpOworICAgICAgICByZXR1cm4gMSBpZiAoSXNXcmFwcGVyVHlwZSgk
cGFyYW1ldGVyLT50eXBlKSk7CiAgICAgfQogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5pZGwKaW5kZXggMzAzZDJkNzVlZjI3MThhOTI4NjljNTI1ZDY1ZGM4MTM4Yjc0NmUwNi4u
YzMyZjk3MzkwYjM5NTFmNzk5NDRhNDgyNzkyZGJlYmQ3ODcyYWJmZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaWRsCkBAIC0yNTIsNiArMjUyLDE2IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgTm9k
ZUxpc3QgcXVlcnlTZWxlY3RvckFsbChpbiBET01TdHJpbmcgc2VsZWN0b3JzKQogICAgICAgICAg
ICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKKyAgICAgICAgLy8gRE9NIDQKKyNpZiBkZWZpbmVk
KExBTkdVQUdFX0pBVkFTQ1JJUFQpICYmIExBTkdVQUdFX0pBVkFTQ1JJUFQKKyAgICAgICAgLy8g
dm9pZCBwcmVwZW5kKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOworICAgICAgICAvLyB2
b2lkIGFwcGVuZCgoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKKyAgICAgICAgdm9pZCBw
cmVwZW5kKE5vZGUuLi4gbm9kZXMpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsK
KyAgICAgICAgdm9pZCBhcHBlbmQoTm9kZS4uLiBub2RlcykKKyAgICAgICAgICAgIHJhaXNlcyhE
T01FeGNlcHRpb24pOworI2VuZGlmCisKICNpZiBkZWZpbmVkKEVOQUJMRV9GVUxMU0NSRUVOX0FQ
SSkgJiYgRU5BQkxFX0ZVTExTQ1JFRU5fQVBJCiAgICAgICAgIC8vIE1vemlsbGEgdmVyc2lvbgog
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZV0gYm9vbGVhbiB3
ZWJraXRJc0Z1bGxTY3JlZW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRGcmFnbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5pZGwK
aW5kZXggODgyYjYyZGIzOWViN2YyZTA1MDQ3ODIwNDkyYjdlOTM2MWE4ZWRlZC4uOTk3MjdiN2Vi
NzdhNWEwOGY4YTYxYWE0MDY2ODU1MTNmMzRiN2NjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudEZyYWdtZW50LmlkbApAQCAtMjUsNiArMjUsMTYgQEAgbW9kdWxlIGNvcmUgewogICAgICAg
ICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIE5vZGVMaXN0IHF1ZXJ5U2VsZWN0
b3JBbGwoaW4gRE9NU3RyaW5nIHNlbGVjdG9ycykKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNl
cHRpb24pOworCisgICAgICAgIC8vIERPTSA0CisjaWYgZGVmaW5lZChMQU5HVUFHRV9KQVZBU0NS
SVBUKSAmJiBMQU5HVUFHRV9KQVZBU0NSSVBUCisgICAgICAgIC8vIHZvaWQgcHJlcGVuZCgoTm9k
ZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKKyAgICAgICAgLy8gdm9pZCBhcHBlbmQoKE5vZGUg
b3IgRE9NU3RyaW5nKS4uLiBub2Rlcyk7CisgICAgICAgIHZvaWQgcHJlcGVuZChOb2RlLi4uIG5v
ZGVzKQorICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIHZvaWQgYXBw
ZW5kKE5vZGUuLi4gbm9kZXMpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyNl
bmRpZgogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAppbmRleCA2YjM0MjdjM2FjODIy
YWNmNzE1NjNhM2ZhNDE3YWU0MWY1MTY2ZTQ0Li5mNDgyNjNlYWQ4YmZiMjJiNGZjOWUzOWMwYzZm
ZmJkOGI2ZmRjZjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCkBAIC0xMjMsNiArMTIzLDE0IEBA
IG1vZHVsZSBjb3JlIHsKICAgICAgICAgLy8gRE9NIDQKICAgICAgICAgdm9pZCByZW1vdmUoKQog
ICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisjaWYgZGVmaW5lZChMQU5HVUFHRV9K
QVZBU0NSSVBUKSAmJiBMQU5HVUFHRV9KQVZBU0NSSVBUCisgICAgICAgIC8vIHZvaWQgcHJlcGVu
ZCgoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKTsKKyAgICAgICAgLy8gdm9pZCBhcHBlbmQo
KE5vZGUgb3IgRE9NU3RyaW5nKS4uLiBub2Rlcyk7CisgICAgICAgIHZvaWQgcHJlcGVuZChOb2Rl
Li4uIG5vZGVzKQorICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIHZv
aWQgYXBwZW5kKE5vZGUuLi4gbm9kZXMpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9u
KTsKKyNlbmRpZgogCiAjaWYgZGVmaW5lZChMQU5HVUFHRV9KQVZBU0NSSVBUKSAmJiBMQU5HVUFH
RV9KQVZBU0NSSVBUCiAgICAgICAgIC8vIENTU09NIFZpZXcgTW9kdWxlIEFQSQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
Y3BwCmluZGV4IDY3MzQ0YzcwOTUzMTM5ZjI0YjBmMGYzY2Q5NjEzMzZjZjhiMjI5NmEuLmU2MWMw
MTkwNTMzZmRmNGM1NDY3NzdhMDJhM2YyYmEwZTMzNzhkZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAg
LTYzMiw2ICs2MzIsNDIgQEAgdm9pZCBOb2RlOjpyZW1vdmUoRXhjZXB0aW9uQ29kZSYgZWMpCiAg
ICAgICAgIHBhcmVudC0+cmVtb3ZlQ2hpbGQodGhpcywgZWMpOwogfQogCitQYXNzUmVmUHRyPE5v
ZGU+IE5vZGU6Om11dGF0aW9uTWV0aG9kTWFjcm8oY29uc3QgVmVjdG9yPE5vZGUqPiYgbm9kZXMs
IEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIFJlZlB0cjxOb2RlPiBub2RlOworICAgIGlmIChu
b2Rlcy5zaXplKCkgPT0gMSkKKyAgICAgICAgbm9kZSA9IG5vZGVzWzBdOworICAgIGVsc2UgIHsK
KyAgICAgICAgbm9kZSA9IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKTsKKyAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBub2Rlcy5zaXplKCk7ICsraSkgeworICAgICAg
ICAgICAgbm9kZS0+YXBwZW5kQ2hpbGQobm9kZXNbaV0sIGVjKTsKKyAgICAgICAgICAgIGlmIChl
YykKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4g
bm9kZS5yZWxlYXNlKCk7Cit9CisKK3ZvaWQgTm9kZTo6cHJlcGVuZChjb25zdCBWZWN0b3I8Tm9k
ZSo+JiBub2RlcywgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgQVNTRVJUKG5vZGVUeXBlKCkg
PT0gRE9DVU1FTlRfTk9ERSB8fCBub2RlVHlwZSgpID09IERPQ1VNRU5UX0ZSQUdNRU5UX05PREUg
fHwgbm9kZVR5cGUoKSA9PSBFTEVNRU5UX05PREUpOworCisgICAgUmVmUHRyPE5vZGU+IG5vZGVU
b1ByZXBlbmQgPSBtdXRhdGlvbk1ldGhvZE1hY3JvKG5vZGVzLCBlYyk7CisgICAgaWYgKGVjKQor
ICAgICAgICByZXR1cm47CisgICAgaW5zZXJ0QmVmb3JlKG5vZGVUb1ByZXBlbmQsIGZpcnN0Q2hp
bGQoKSwgZWMpOworfQorCit2b2lkIE5vZGU6OmFwcGVuZChjb25zdCBWZWN0b3I8Tm9kZSo+JiBu
b2RlcywgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgQVNTRVJUKG5vZGVUeXBlKCkgPT0gRE9D
VU1FTlRfTk9ERSB8fCBub2RlVHlwZSgpID09IERPQ1VNRU5UX0ZSQUdNRU5UX05PREUgfHwgbm9k
ZVR5cGUoKSA9PSBFTEVNRU5UX05PREUpOworCisgICAgUmVmUHRyPE5vZGU+IG5vZGVUb0FwcGVu
ZCA9IG11dGF0aW9uTWV0aG9kTWFjcm8obm9kZXMsIGVjKTsKKyAgICBpZiAoZWMpCisgICAgICAg
IHJldHVybjsKKyAgICBhcHBlbmRDaGlsZChub2RlVG9BcHBlbmQsIGVjKTsKK30KKwogdm9pZCBO
b2RlOjpub3JtYWxpemUoKQogewogICAgIC8vIEdvIHRocm91Z2ggdGhlIHN1YnRyZWUgYmVuZWF0
aCB1cywgbm9ybWFsaXppbmcgYWxsIG5vZGVzLiBUaGlzIG1lYW5zIHRoYXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmlu
ZGV4IDE2NmFjMmEyZjIyYjA2NDkzYTM0N2ViNTdjMGY4ZGE0MDQxMmMyYzEuLjg4YzIzZDM4YmEx
OWRiZTk0ODAyY2FiYTY2M2Q4ODI3MTI5YmZmOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMTg1LDYgKzE4
NSw5IEBAIHB1YmxpYzoKICAgICBib29sIGFwcGVuZENoaWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3
Q2hpbGQsIEV4Y2VwdGlvbkNvZGUmLCBib29sIHNob3VsZExhenlBdHRhY2ggPSBmYWxzZSk7CiAK
ICAgICB2b2lkIHJlbW92ZShFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBwcmVwZW5kKGNvbnN0
IFZlY3RvcjxOb2RlKj4mLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBhcHBlbmQoY29uc3Qg
VmVjdG9yPE5vZGUqPiYsIEV4Y2VwdGlvbkNvZGUmKTsKKwogICAgIGJvb2wgaGFzQ2hpbGROb2Rl
cygpIGNvbnN0IHsgcmV0dXJuIGZpcnN0Q2hpbGQoKTsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxOb2RlPiBjbG9uZU5vZGUoYm9vbCBkZWVwKSA9IDA7CiAgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBsb2NhbE5hbWUoKSBjb25zdCB7IHJldHVybiB2aXJ0dWFsTG9jYWxOYW1lKCk7IH0KQEAgLTc2
OCw2ICs3NzEsOCBAQCBwcml2YXRlOgogICAgIC8vIFVzZWQgdG8gc2hhcmUgY29kZSBiZXR3ZWVu
IGxhenlBdHRhY2ggYW5kIHNldE5lZWRzU3R5bGVSZWNhbGMuCiAgICAgdm9pZCBtYXJrQW5jZXN0
b3JzV2l0aENoaWxkTmVlZHNTdHlsZVJlY2FsYygpOwogCisgICAgUGFzc1JlZlB0cjxOb2RlPiBt
dXRhdGlvbk1ldGhvZE1hY3JvKGNvbnN0IFZlY3RvcjxOb2RlKj4mLCBFeGNlcHRpb25Db2RlJik7
CisKICAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGVyZWZFdmVudFRhcmdldCgpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzdkNTBmZGI3YzA5Y2ExYWRjYWIwMzMwNTY1
MGNhNTYyZTIyYjE1Yi4uOTk3NDViY2E1MDc5YzIzNjljZjE1YTVjNTI1MmJkODMwOTg1ZjdiYSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA5LTI4ICBFcmlrIEFydmlkc3NvbiAgPGFydkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgRE9NNDogcHJlcGVuZCwgYXBwZW5kLCBiZWZvcmUsIGFm
dGVyICYgcmVwbGFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzQ2NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2Fj
aCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cg
KE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL0RvY3VtZW50L3ByZXBlbmQtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9Eb2N1bWVudC9wcmVwZW5kLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0VsZW1lbnQvcHJlcGVuZC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0VsZW1lbnQvcHJlcGVuZC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9kb2N1bWVudC1mcmFnbWVudC1wcmVwZW5kLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9kb20vZG9jdW1lbnQtZnJhZ21lbnQtcHJlcGVuZC5odG1s
OiBBZGRlZC4KKwogMjAxMi0wOS0yOCAgT2phbiBWYWZhaSAgPG9qYW5AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFRoZSB2aXJ0dWFsIHBhdGggZm9yIHRoaXMgdGVzdCBpcyBpbmNvcnJlY3QuIEl0
IGFwcGVhcnMgdG8gYmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50
L3ByZXBlbmQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvcHJl
cGVuZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmE1MmY5ZmQ2N2MyNjAwNGE0MGYzZDg0MjE5
YzVjOWRmZGYyZGYwNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0Rv
Y3VtZW50L3ByZXBlbmQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1RoaXMgdGVzdHMg
dGhlIERPTSA0IHByZXBlbmQgbWV0aG9kIG9uIGFuIEVsZW1lbnQuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIGRvY3VtZW50LmZpcnN0Q2hpbGQgaXMgYQorUEFTUyBkb2N1
bWVudC5jaGlsZE5vZGVzWzFdIGlzIGIKK1BBU1MgZG9jdW1lbnQucHJlcGVuZChudWxsKSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBkb2N1bWVudC5wcmVwZW5k
KHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1Mg
ZG9jdW1lbnQucHJlcGVuZChkb2N1bWVudC5jcmVhdGVDb21tZW50KCJjIiksIG51bGwpIHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIGRvY3VtZW50LmZpcnN0Q2hp
bGQgaXMgYQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L3ByZXBlbmQuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L3ByZXBlbmQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zMTViZDNlMGVhMzE4ZWZlYjcyODI1Zjg0ZjA4MDE3NzUxYjliYzI0Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvcHJlcGVuZC5odG1sCkBAIC0wLDAg
KzEsMjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8ZGl2IGlkPSJ0ZXN0Ij48L2Rpdj4KKzxzY3Jp
cHQ+CisKK2Rlc2NyaXB0aW9uKCdUaGlzIHRlc3RzIHRoZSBET00gNCBwcmVwZW5kIG1ldGhvZCBv
biBhIERvY3VtZW50LicpOworCit2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoJ2EnKTsK
K3ZhciBiID0gZG9jdW1lbnQuY3JlYXRlQ29tbWVudCgnYicpOworCitkb2N1bWVudC5wcmVwZW5k
KGEsIGIpCisKK3Nob3VsZEJlKCdkb2N1bWVudC5maXJzdENoaWxkJywgJ2EnKTsKK3Nob3VsZEJl
KCdkb2N1bWVudC5jaGlsZE5vZGVzWzFdJywgJ2InKTsKKworc2hvdWxkVGhyb3coJ2RvY3VtZW50
LnByZXBlbmQobnVsbCknKTsKK3Nob3VsZFRocm93KCdkb2N1bWVudC5wcmVwZW5kKHVuZGVmaW5l
ZCknKTsKKworc2hvdWxkVGhyb3coJ2RvY3VtZW50LnByZXBlbmQoZG9jdW1lbnQuY3JlYXRlQ29t
bWVudCgiYyIpLCBudWxsKScpOworc2hvdWxkQmUoJ2RvY3VtZW50LmZpcnN0Q2hpbGQnLCAnYScp
OworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0VsZW1l
bnQvcHJlcGVuZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L3By
ZXBlbmQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyYTY2ZDk5NzNkYzcwYmNjMTk3M2JlNzYw
MDIwYWU2NmIzZGI0NjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9F
bGVtZW50L3ByZXBlbmQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTcgQEAKK1RoaXMgdGVzdHMg
dGhlIERPTSA0IHByZXBlbmQgbWV0aG9kIG9uIGFuIEVsZW1lbnQuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIHRlc3REaXYuY2hpbGROb2Rlcy5sZW5ndGggaXMgMworUEFT
UyB0ZXN0RGl2LmZpcnN0Q2hpbGQgaXMgYQorUEFTUyB0ZXN0RGl2LmNoaWxkTm9kZXNbMV0gaXMg
YgorUEFTUyB0ZXN0RGl2Lmxhc3RDaGlsZCBpcyB0ZXh0CitQQVNTIHRlc3REaXYucHJlcGVuZChu
dWxsKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyB0ZXN0RGl2
LnByZXBlbmQodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9y
LgorUEFTUyB0ZXN0RGl2LnByZXBlbmQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoImMiKSwgbnVs
bCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgdGVzdERpdi5j
aGlsZE5vZGVzLmxlbmd0aCBpcyAzCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKK3RleHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0Vs
ZW1lbnQvcHJlcGVuZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9wcmVwZW5k
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzE0ZmE4NTY4MzU2YzRiYWZlNjZmNThlNDExMTNkYTQ2ZWU3NjBk
YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0VsZW1lbnQvcHJlcGVu
ZC5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8ZGl2IGlkPSJ0ZXN0
Ij48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCdUaGlzIHRlc3RzIHRoZSBET00gNCBw
cmVwZW5kIG1ldGhvZCBvbiBhbiBFbGVtZW50LicpOworCit2YXIgdGVzdERpdiA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCd0ZXN0Jyk7Cit0ZXN0RGl2LnRleHRDb250ZW50ID0gJ3RleHQnOwor
dmFyIHRleHQgPSB0ZXN0RGl2LmZpcnN0Q2hpbGQ7Cit2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2EnKTsKK3ZhciBiID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYicpOworCit0ZXN0
RGl2LnByZXBlbmQoYSwgYikKKworc2hvdWxkQmUoJ3Rlc3REaXYuY2hpbGROb2Rlcy5sZW5ndGgn
LCAnMycpOworc2hvdWxkQmUoJ3Rlc3REaXYuZmlyc3RDaGlsZCcsICdhJyk7CitzaG91bGRCZSgn
dGVzdERpdi5jaGlsZE5vZGVzWzFdJywgJ2InKTsKK3Nob3VsZEJlKCd0ZXN0RGl2Lmxhc3RDaGls
ZCcsICd0ZXh0Jyk7CisKK3Nob3VsZFRocm93KCd0ZXN0RGl2LnByZXBlbmQobnVsbCknKTsKK3No
b3VsZFRocm93KCd0ZXN0RGl2LnByZXBlbmQodW5kZWZpbmVkKScpOworCitzaG91bGRUaHJvdygn
dGVzdERpdi5wcmVwZW5kKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJjIiksIG51bGwpJyk7Citz
aG91bGRCZSgndGVzdERpdi5jaGlsZE5vZGVzLmxlbmd0aCcsICczJyk7CisKK2RlYnVnKHRlc3RE
aXYub3V0ZXJIVE1MLnJlcGxhY2UoLzwvZywgJyZsdDsnKSk7CitzaG91bGRUaHJvdygnYS5wcmVw
ZW5kKHRleHQsIHRlc3REaXYpJyk7CitkZWJ1Zyh0ZXN0RGl2Lm91dGVySFRNTC5yZXBsYWNlKC88
L2csICcmbHQ7JykpOworCitzaG91bGRCZSgndGVzdERpdi5jaGlsZE5vZGVzLmxlbmd0aCcsICcy
Jyk7CitzaG91bGRCZSgndGVzdERpdi5maXJzdENoaWxkJywgJ2EnKTsKK3Nob3VsZEJlKCd0ZXN0
RGl2Lmxhc3RDaGlsZCcsICdiJyk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vZG9jdW1lbnQtZnJhZ21lbnQtcHJlcGVuZC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9kb2N1bWVudC1mcmFnbWVudC1wcmVwZW5kLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wZGE5MzdjMzI2NGY2ZjRkNzNmNTZkYTYwNDdjN2U1NDMzMGUwMjQ2Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9jdW1lbnQtZnJhZ21lbnQt
cHJlcGVuZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNyBAQAorVGhpcyB0ZXN0cyB0aGUgRE9N
IDQgcHJlcGVuZCBtZXRob2Qgb24gYSBEb2N1bWVudEZyYWdtZW50LgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyBkb2N1bWVudEZyYWdtZW50LmNoaWxkTm9kZXMubGVuZ3Ro
IGlzIDMKK1BBU1MgZG9jdW1lbnRGcmFnbWVudC5maXJzdENoaWxkIGlzIGEKK1BBU1MgZG9jdW1l
bnRGcmFnbWVudC5jaGlsZE5vZGVzWzFdIGlzIGIKK1BBU1MgZG9jdW1lbnRGcmFnbWVudC5sYXN0
Q2hpbGQgaXMgdGV4dAorUEFTUyBkb2N1bWVudEZyYWdtZW50LnByZXBlbmQobnVsbCkgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgZG9jdW1lbnRGcmFnbWVudC5w
cmVwZW5kKHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4K
K1BBU1MgZG9jdW1lbnRGcmFnbWVudC5wcmVwZW5kKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJj
IiksIG51bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIGRv
Y3VtZW50RnJhZ21lbnQuY2hpbGROb2Rlcy5sZW5ndGggaXMgMworUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL2RvY3VtZW50LWZyYWdtZW50LXByZXBlbmQuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL2RvY3VtZW50LWZyYWdtZW50LXByZXBlbmQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOTE2Mzcy
Y2QwMzJiMDVkMWQ1NjEwY2ZkNmUxODg3YzFkZjJkOTI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vZG9jdW1lbnQtZnJhZ21lbnQtcHJlcGVuZC5odG1sCkBAIC0wLDAg
KzEsMjggQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8ZGl2IGlkPSJ0ZXN0Ij48L2Rpdj4KKzxzY3JpcHQ+
CisKK2Rlc2NyaXB0aW9uKCdUaGlzIHRlc3RzIHRoZSBET00gNCBwcmVwZW5kIG1ldGhvZCBvbiBh
IERvY3VtZW50RnJhZ21lbnQuJyk7CisKK3ZhciBkb2N1bWVudEZyYWdtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOworZG9jdW1lbnRGcmFnbWVudC50ZXh0Q29udGVudCA9
ICd0ZXh0JzsKK3ZhciB0ZXh0ID0gZG9jdW1lbnRGcmFnbWVudC5maXJzdENoaWxkOwordmFyIGEg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7Cit2YXIgYiA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2InKTsKKworZG9jdW1lbnRGcmFnbWVudC5wcmVwZW5kKGEsIGIpCisKK3Nob3VsZEJl
KCdkb2N1bWVudEZyYWdtZW50LmNoaWxkTm9kZXMubGVuZ3RoJywgJzMnKTsKK3Nob3VsZEJlKCdk
b2N1bWVudEZyYWdtZW50LmZpcnN0Q2hpbGQnLCAnYScpOworc2hvdWxkQmUoJ2RvY3VtZW50RnJh
Z21lbnQuY2hpbGROb2Rlc1sxXScsICdiJyk7CitzaG91bGRCZSgnZG9jdW1lbnRGcmFnbWVudC5s
YXN0Q2hpbGQnLCAndGV4dCcpOworCitzaG91bGRUaHJvdygnZG9jdW1lbnRGcmFnbWVudC5wcmVw
ZW5kKG51bGwpJyk7CitzaG91bGRUaHJvdygnZG9jdW1lbnRGcmFnbWVudC5wcmVwZW5kKHVuZGVm
aW5lZCknKTsKKworc2hvdWxkVGhyb3coJ2RvY3VtZW50RnJhZ21lbnQucHJlcGVuZChkb2N1bWVu
dC5jcmVhdGVUZXh0Tm9kZSgiYyIpLCBudWxsKScpOworc2hvdWxkQmUoJ2RvY3VtZW50RnJhZ21l
bnQuY2hpbGROb2Rlcy5sZW5ndGgnLCAnMycpOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172653</attachid>
            <date>2012-11-06 14:37:50 -0800</date>
            <delta_ts>2012-11-08 06:35:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74648-20121106173602.patch</filename>
            <type>text/plain</type>
            <size>16066</size>
            <attacher name="Erik Arvidsson">arv</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjY0YTE0MGQ4OTBhNDE3
OThiNmRlNjk2ZjljYjEzMGM1MzEyZmFkNC4uZmU0OWY3MGQ5NTcyNzNjZTgzZjFjODM4NjAyODMz
M2ZlMTk5YjM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEyLTExLTA2ICBFcmlr
IEFydmlkc3NvbiAgPGFydkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRE9NNDogcHJlcGVuZCwg
YXBwZW5kLCBiZWZvcmUsIGFmdGVyICYgcmVwbGFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ2NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXSVAKKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0
aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRk
IHBlci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAg
ICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtOgorICAgICAgICAoSXNVbmlvblR5cGUpOgor
ICAgICAgICAoR2V0VW5pb25UeXBlcyk6CisgICAgICAgIChHZXRVbmlvblR5cGVOYXRpdmVOYW1l
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAg
ICAgKEdldFVuaW9uVHlwZVBhcmFtZXRlckV4cHJlc3Npb25zKToKKyAgICAgICAgKEdlbmVyYXRl
UGFyYW1ldGVyc0NoZWNrKToKKyAgICAgICAgKFJlcXVpcmVzQ3VzdG9tU2lnbmF0dXJlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbToKKyAgICAgICAgKHBhcnNlVHlw
ZSk6CisgICAgICAgIChwYXJzZVVuaW9uVHlwZSk6CisgICAgICAgIChwYXJzZVVuaW9uTWVtYmVy
VHlwZSk6CisgICAgICAgIChwYXJzZVVuaW9uTWVtYmVyVHlwZXMpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbDoKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpwcmVwZW5kKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmg6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKENvbnRhaW5lck5vZGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50
LmlkbDoKKyAgICAgICAgKiBkb20vTm9kZU9yU3RyaW5nLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChOb2RlT3JTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZU9y
U3RyaW5nOjpOb2RlT3JTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZU9yU3RyaW5nOjp0
b05vZGUpOgorCiAyMDEyLTExLTA1ICBHZW5ldmlldmUgTWFrICA8Z21ha0ByaW0uY29tPgogCiAg
ICAgICAgIFtCTEFDS0JFUlJZXSBVcGRhdGUgdG91Y2ggY29kZSB0byByZWZsZWN0IHRvdWNoIHJl
ZmFjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAzZGMyZjJlYWE5MzFhY2Nh
ODRmZmZiZTc3MzkzNjgxMjllYjEwM2Q4Li4zYjFiM2RlYWJmOThiMGU2YjFlZTZjODEwZjA1YTA5
MGU2NDU0NzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTI4ODUsNiArMjg4
NSw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL05vZGVJdGVy
YXRvci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlSXRlcmF0b3IuaCBcCiAJU291cmNl
L1dlYkNvcmUvZG9tL05vZGVMaXN0LmggXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlT3JTdHJp
bmcuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL05v
ZGVSZW5kZXJTdHlsZS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkg
Yi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGY0MGMyZTk2NWY2YzExMmZmNGUxNDg4
MjE4OTdmYTJmYjMzMmU1YTcuLmI0NGZmMTQ2ZjQ5ZDI4YTk1NWY2MTg2Nzc3OTUxYzAyY2YxNDBh
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dl
YkNvcmUvVGFyZ2V0LnByaQpAQCAtMTU5Nyw2ICsxNTk3LDcgQEAgSEVBREVSUyArPSBcCiAgICAg
ZG9tL05vZGUuaCBcCiAgICAgZG9tL05vZGVJdGVyYXRvci5oIFwKICAgICBkb20vTm9kZVJhcmVE
YXRhLmggXAorICAgIGRvbS9Ob2RlT3JTdHJpbmcuaCBcCiAgICAgZG9tL05vZGVSZW5kZXJpbmdD
b250ZXh0LmggXAogICAgIGRvbS9Ob3RhdGlvbi5oIFwKICAgICBkb20vU3RhdGljSGFzaFNldE5v
ZGVMaXN0LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGNhYzcyNTJhMzNhOTk4YWY0YjU2OGVhMWU2
MjI2NjBiZDBhODBiZTYuLmU1MjdmZTg2MTYwMzY4ZDkyNWFiMTRjNTljZTk0NTM0NjE0YzFkZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKQEAgLTY4NCw2ICs2ODQsNyBAQAogICAgICAgICAgICAgJ2RvbS9O
YW1lZE5vZGVNYXAuaCcsCiAgICAgICAgICAgICAnZG9tL05vZGUuaCcsCiAgICAgICAgICAgICAn
ZG9tL05vZGVMaXN0LmgnLAorICAgICAgICAgICAgJ2RvbS9Ob2RlT3JTdHJpbmcuaCcsCiAgICAg
ICAgICAgICAnZG9tL1BlbmRpbmdTY3JpcHQuaCcsCiAgICAgICAgICAgICAnZG9tL1Bvc2l0aW9u
LmgnLAogICAgICAgICAgICAgJ2RvbS9RdWFsaWZpZWROYW1lLmgnLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCmluZGV4IDFjMzU2M2E2MTg2
YTY1MjExYjQ0ODA0Y2ZhMTEwYTA1YjBlNmViZmMuLjBjMmRhMmFhNWZmZjZkYWM1NGM5MDZmNDRi
NmVjNGJlMzAwNjM2YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvci5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3IucG0KQEAgLTUwNCw2ICs1MDQsNDEgQEAgc3ViIEFzc2VydE5vdFNlcXVl
bmNlVHlwZQogICAgIGRpZSAiU2VxdWVuY2VzIG11c3Qgbm90IGJlIHVzZWQgYXMgdGhlIHR5cGUg
b2YgYW4gYXR0cmlidXRlLCBjb25zdGFudCBvciBleGNlcHRpb24gZmllbGQuIiBpZiAkb2JqZWN0
LT5HZXRTZXF1ZW5jZVR5cGUoJHR5cGUpOwogfQogCitzdWIgSXNVbmlvblR5cGUKK3sKKyAgICBt
eSAkb2JqZWN0ID0gc2hpZnQ7CisgICAgbXkgJHR5cGUgPSBzaGlmdDsKKyAgICByZXR1cm4gJHR5
cGUgPX4gL15cKChbXHdcZF9cc10rKVwpJC87Cit9CisKK3N1YiBHZXRVbmlvblR5cGVzCit7Cisg
ICAgbXkgJG9iamVjdCA9IHNoaWZ0OworICAgIG15ICR0eXBlID0gc2hpZnQ7CisKKyAgICByZXR1
cm4gc3BsaXQoL1xzK29yXHMrLywgJDEpIGlmICR0eXBlID1+IC9eXCgoW1x3XGRfXHNdKylcKSQv
OworICAgIHJldHVybiAwOworfQorCitzdWIgR2V0VW5pb25UeXBlTmF0aXZlTmFtZQoreworICAg
IG15ICRvYmplY3QgPSBzaGlmdDsKKyAgICBteSAkdHlwZSA9IHNoaWZ0OworCisgICAgbXkgJHJl
cyA9ICIiOworICAgIG15ICRmaXJzdCA9IDE7CisgICAgZm9yZWFjaCBteSAkbWVtYmVyVHlwZSAo
JG9iamVjdC0+R2V0VW5pb25UeXBlcygkdHlwZSkpIHsKKyAgICAgICAgJHJlcyAuPSAiT3IiIGlm
ICghJGZpcnN0KTsKKyAgICAgICAgaWYgKCRvYmplY3QtPklzU3RyaW5nVHlwZSgkbWVtYmVyVHlw
ZSkpIHsKKyAgICAgICAgICAgICRyZXMgLj0gIlN0cmluZyI7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAkcmVzIC49ICRvYmplY3QtPldLX3VjZmlyc3QoJG1lbWJlclR5cGUpOworICAg
ICAgICB9CisgICAgICAgICRmaXJzdCA9IDA7CisgICAgfQorICAgIHJldHVybiAkcmVzOworfQor
CiAjIFVwcGVyY2FzZSB0aGUgZmlyc3QgbGV0dGVyIHdoaWxlIHJlc3BlY3RpbmcgV2ViS2l0IHN0
eWxlIGd1aWRlbGluZXMuCiAjIEUuZy4sIHhtbEVuY29kaW5nIGJlY29tZXMgWE1MRW5jb2Rpbmcs
IGJ1dCB4bWxsbGFuZyBiZWNvbWVzIFhtbGxhbmcuCiBzdWIgV0tfdWNmaXJzdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCA2
Zjk5NWNiODRjNDhiNjgzYTVkYTkzNjQzZDRjZTA3MTIxOWE0N2NmLi4wYzlkZmZjNWQ0MGMwMTY4
NmFjNjcyZWMzNjBhYzk1NTA0ZDRiNGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtMTQzOCw2ICsxNDM4LDIxIEBAIHN1
YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVja0V4cHJlc3Npb24KICAgICByZXR1cm4gJHJlczsKIH0K
IAorc3ViIEdldFVuaW9uVHlwZVBhcmFtZXRlckV4cHJlc3Npb25zCit7CisgICAgIyBUaGlzIGlz
IGEgdmVyeSBzaW1wbGlmaWVkIHZlcnNpb24gb2YgaHR0cDovL2Rldi53My5vcmcvMjAwNi93ZWJh
cGkvV2ViSURMLyNlcy11bmlvbgorICAgICMgQXQgdGhpcyBwb2ludCBpdCBvbmx5IGNvdmVycyB3
aGF0IHdlIG5lZWQgc28gZmFyLgorICAgICMgSXQgZG9lcyBub3QgaGFuZGxlOiBuZXN0ZWQgdW5p
b25zLCBudWxsYWJsZSwgc2VxdWVuY2VzLCBhcnJheXMsIERhdGUsIGNhbGxiYWNrcywgZGljdGlv
bmFyeSwgcHJpbWl0aXZlIHR5cGVzCisgICAgIyBJdCBoYW5kbGVzOiBET01TdHJpbmcgYW5kIE9i
amVjdAorICAgIG15ICR0eXBlID0gc2hpZnQ7CisgICAgbXkgJHZhbHVlID0gc2hpZnQ7CisKKyAg
ICByZXR1cm4gKCIke3ZhbHVlfS0+SXNTdHJpbmcoKSIsICJ0b1dlYkNvcmVTdHJpbmcoJHZhbHVl
KSIpIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUoJHR5cGUpOworICAgIHJldHVybiAo
IlY4JHt0eXBlfTo6SGFzSW5zdGFuY2UoJHZhbHVlKSIsICJWOCR7dHlwZX06OnRvTmF0aXZlKHY4
OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoJHZhbHVlKSkiKSBpZiBJc1dyYXBwZXJUeXBlKCR0
eXBlKTsKKworICAgIGRpZSAiTm90IGltcGxlbWVudGVkIjsKK30KKwogc3ViIEdlbmVyYXRlRnVu
Y3Rpb25QYXJhbWV0ZXJzQ2hlY2sKIHsKICAgICBteSAkZnVuY3Rpb24gPSBzaGlmdDsKQEAgLTE3
NDAsNiArMTc1NSw5IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICB9CiAK
ICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkV4Y2VwdGlvbkNvZGUuaCIpOworCisgICAgICAg
IG15IEB1bmlvblR5cGVzID0gJGNvZGVHZW5lcmF0b3ItPkdldFVuaW9uVHlwZXMoJHBhcmFtZXRl
ci0+dHlwZSk7CisKICAgICAgICAgaWYgKCRwYXJhbWV0ZXItPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDYWxsYmFjayJ9KSB7CiAgICAgICAgICAgICBteSAkY2xhc3NOYW1lID0gR2V0Q2FsbGJhY2tD
bGFzc05hbWUoJHBhcmFtZXRlci0+dHlwZSk7CiAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRl
cygiJGNsYXNzTmFtZS5oIik7CkBAIC0xODA2LDYgKzE4MjQsMjEgQEAgc3ViIEdlbmVyYXRlUGFy
YW1ldGVyc0NoZWNrCiAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAg
ICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjtcbiI7CiAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hl
Y2tTdHJpbmcgLj0gIiAgICAgICAgZ290byBmYWlsO1xuIjsKICAgICAgICAgICAgICRwYXJhbWV0
ZXJDaGVja1N0cmluZyAuPSAiICAgIH1cbiI7CisgICAgICAgIH0gZWxzaWYgKEB1bmlvblR5cGVz
ID4gMSkgeworICAgICAgICAgICAgbXkgJHVuaW9uVHlwZU5hdGl2ZU5hbWUgPSAkY29kZUdlbmVy
YXRvci0+R2V0VW5pb25UeXBlTmF0aXZlTmFtZSgkcGFyYW1ldGVyLT50eXBlKTsKKyAgICAgICAg
ICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICR1bmlvblR5cGVOYXRpdmVOYW1lICRw
YXJhbWV0ZXJOYW1lO1xuIjsKKworICAgICAgICAgICAgbXkgJGlmID0gImlmIjsKKyAgICAgICAg
ICAgIGZvcmVhY2ggbXkgJHVuaW9uVHlwZSAoQHVuaW9uVHlwZXMpIHsKKyAgICAgICAgICAgICAg
ICBteSAoJGNoZWNrRXhwcmVzc2lvbiwgJGNvbnZlcnRFeHByZXNzaW9uKSA9IEdldFVuaW9uVHlw
ZVBhcmFtZXRlckV4cHJlc3Npb25zKCR1bmlvblR5cGUsICJhcmdzWyRwYXJhbUluZGV4XSIpOwor
ICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICRpZiAoJGNoZWNr
RXhwcmVzc2lvbilcbiI7CisgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49
ICIgICAgICAgICRwYXJhbWV0ZXJOYW1lID0gJHVuaW9uVHlwZU5hdGl2ZU5hbWUoJGNvbnZlcnRF
eHByZXNzaW9uKTtcbiI7CisgICAgICAgICAgICAgICAgJGlmID0gImVsc2UgaWYiOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBlbHNl
XG4iOworICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcigwLCBhcmdzLkdldElzb2xhdGUoKSk7XG4iOworCiAgICAgICAgIH0g
ZWxzaWYgKCRwYXJhbWV0ZXItPmlzVmFyaWFkaWMpIHsKICAgICAgICAgICAgIG15ICRuYXRpdmVF
bGVtZW50VHlwZSA9IEdldE5hdGl2ZVR5cGUoJHBhcmFtZXRlci0+dHlwZSk7CiAgICAgICAgICAg
ICBpZiAoJG5hdGl2ZUVsZW1lbnRUeXBlID1+IC8+JC8pIHsKQEAgLTM5NDIsNiArMzk3NSw5IEBA
IHN1YiBSZXF1aXJlc0N1c3RvbVNpZ25hdHVyZQogICAgICAgICBpZiAoKCRvcHRpb25hbCAmJiAk
b3B0aW9uYWwgbmUgIkRlZmF1bHRJc1VuZGVmaW5lZCIgJiYgJG9wdGlvbmFsIG5lICJEZWZhdWx0
SXNOdWxsU3RyaW5nIikgfHwgJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxi
YWNrIn0pIHsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CisgICAgICAgIGlmICgk
Y29kZUdlbmVyYXRvci0+SXNVbmlvblR5cGUoJHBhcmFtZXRlci0+dHlwZSkpIHsKKyAgICAgICAg
ICAgIHJldHVybiAwOworICAgICAgICB9CiAgICAgfQogCiAgICAgZm9yZWFjaCBteSAkcGFyYW1l
dGVyIChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KaW5kZXggMTlmYjY0OTVjMzFiMWZiNTZkN2U2YTlmMTUw
ZGI5NTk4MmM3NDcxMi4uNTc0YjFkMDg3MWNlZTljNjI0MzdkMzAzMTQ4YjdkNmE0NjU5YjYwOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0K
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KQEAgLTE1
NTIsOSArMTU1Miw3IEBAIHN1YiBwYXJzZVR5cGUKICAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAg
IG15ICRuZXh0ID0gJHNlbGYtPm5leHRUb2tlbigpOwogICAgIGlmICgkbmV4dC0+dmFsdWUoKSBl
cSAiKCIpIHsKLSAgICAgICAgJHNlbGYtPnBhcnNlVW5pb25UeXBlKCk7Ci0gICAgICAgICRzZWxm
LT5wYXJzZVR5cGVTdWZmaXgoKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gJHNl
bGYtPnBhcnNlVW5pb25UeXBlKCkgLiAkc2VsZi0+cGFyc2VUeXBlU3VmZml4KCk7CiAgICAgfQog
ICAgIGlmICgkbmV4dC0+dHlwZSgpID09IElkZW50aWZpZXJUb2tlbiB8fCAkbmV4dC0+dmFsdWUo
KSA9fiAvJG5leHRUeXBlXzEvKSB7CiAgICAgICAgIHJldHVybiAkc2VsZi0+cGFyc2VTaW5nbGVU
eXBlKCk7CkBAIC0xNTgwLDE0ICsxNTc4LDE0IEBAIHN1YiBwYXJzZVVuaW9uVHlwZQogewogICAg
IG15ICRzZWxmID0gc2hpZnQ7CiAgICAgbXkgJG5leHQgPSAkc2VsZi0+bmV4dFRva2VuKCk7Cisg
ICAgbXkgJHJlc3VsdCA9ICIiOwogICAgIGlmICgkbmV4dC0+dmFsdWUoKSBlcSAiKCIpIHsKICAg
ICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICIoIiwgX19M
SU5FX18pOwotICAgICAgICAkc2VsZi0+cGFyc2VVbmlvbk1lbWJlclR5cGUoKTsKKyAgICAgICAg
JHJlc3VsdCAuPSAiKCIgLiAkc2VsZi0+cGFyc2VVbmlvbk1lbWJlclR5cGUoKTsKICAgICAgICAg
JHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICJvciIsIF9fTElORV9f
KTsKLSAgICAgICAgJHNlbGYtPnBhcnNlVW5pb25NZW1iZXJUeXBlKCk7Ci0gICAgICAgICRzZWxm
LT5wYXJzZVVuaW9uTWVtYmVyVHlwZXMoKTsKKyAgICAgICAgJHJlc3VsdCAuPSAiIG9yICIgLiAk
c2VsZi0+cGFyc2VVbmlvbk1lbWJlclR5cGUoKSAuICRzZWxmLT5wYXJzZVVuaW9uTWVtYmVyVHlw
ZXMoKTsKICAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCks
ICIpIiwgX19MSU5FX18pOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiAkcmVzdWx0
IC4gIikiOwogICAgIH0KICAgICAkc2VsZi0+YXNzZXJ0VW5leHBlY3RlZFRva2VuKCRuZXh0LT52
YWx1ZSgpLCBfX0xJTkVfXyk7CiB9CkBAIC0xNTk3LDIwICsxNTk1LDE0IEBAIHN1YiBwYXJzZVVu
aW9uTWVtYmVyVHlwZQogICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICAgbXkgJG5leHQgPSAkc2Vs
Zi0+bmV4dFRva2VuKCk7CiAgICAgaWYgKCRuZXh0LT52YWx1ZSgpIGVxICIoIikgewotICAgICAg
ICAkc2VsZi0+cGFyc2VVbmlvblR5cGUoKTsKLSAgICAgICAgJHNlbGYtPnBhcnNlVHlwZVN1ZmZp
eCgpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiAkc2VsZi0+cGFyc2VVbmlvblR5
cGUoKSAuICRzZWxmLT5wYXJzZVR5cGVTdWZmaXgoKTsKICAgICB9CiAgICAgaWYgKCRuZXh0LT52
YWx1ZSgpIGVxICJhbnkiKSB7CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxm
LT5nZXRUb2tlbigpLCAiYW55IiwgX19MSU5FX18pOwotICAgICAgICAkc2VsZi0+YXNzZXJ0VG9r
ZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgIlsiLCBfX0xJTkVfXyk7Ci0gICAgICAgICRzZWxm
LT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiXSIsIF9fTElORV9fKTsKLSAg
ICAgICAgJHNlbGYtPnBhcnNlVHlwZVN1ZmZpeCgpOwotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiAiYW55IiAuICRzZWxmLT5wYXJzZVR5cGVTdWZmaXhTdGFydGluZ1dpdGhBcnJheSgp
OwogICAgIH0KICAgICBpZiAoJG5leHQtPnR5cGUoKSA9PSBJZGVudGlmaWVyVG9rZW4gfHwgJG5l
eHQtPnZhbHVlKCkgPX4gLyRuZXh0U2luZ2xlVHlwZV8xLykgewotICAgICAgICAkc2VsZi0+cGFy
c2VOb25BbnlUeXBlKCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuICRzZWxmLT5w
YXJzZU5vbkFueVR5cGUoKTsKICAgICB9CiAgICAgJHNlbGYtPmFzc2VydFVuZXhwZWN0ZWRUb2tl
bigkbmV4dC0+dmFsdWUoKSwgX19MSU5FX18pOwogfQpAQCAtMTYyMSw4ICsxNjEzLDcgQEAgc3Vi
IHBhcnNlVW5pb25NZW1iZXJUeXBlcwogICAgIG15ICRuZXh0ID0gJHNlbGYtPm5leHRUb2tlbigp
OwogICAgIGlmICgkbmV4dC0+dmFsdWUoKSBlcSAib3IiKSB7CiAgICAgICAgICRzZWxmLT5hc3Nl
cnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAib3IiLCBfX0xJTkVfXyk7Ci0gICAgICAg
ICRzZWxmLT5wYXJzZVVuaW9uTWVtYmVyVHlwZSgpOwotICAgICAgICAkc2VsZi0+cGFyc2VVbmlv
bk1lbWJlclR5cGVzKCk7CisgICAgICAgIHJldHVybiAiIG9yICIgLiAkc2VsZi0+cGFyc2VVbmlv
bk1lbWJlclR5cGUoKSAuICRzZWxmLT5wYXJzZVVuaW9uTWVtYmVyVHlwZXMoKTsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
T2JqLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlk
bAppbmRleCBmOWQwNjVmYTE4NmVlMTg1YmY0NjllOTYwMjhmZWU2NTFmNGIxNmM2Li45NzE3NTY0
Y2RjNjE4ZTRmZDY3OTU0NzZjY2U3NDQxNTE5ODFkZmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCkBAIC0yNjYsNCArMjY2LDggQEAK
ICAgICB2b2lkIHZhcmlhZGljU3RyaW5nTWV0aG9kKGluIERPTVN0cmluZyBoZWFkLCBpbiBET01T
dHJpbmcuLi4gdGFpbCk7CiAgICAgdm9pZCB2YXJpYWRpY0RvdWJsZU1ldGhvZChpbiBkb3VibGUg
aGVhZCwgaW4gZG91YmxlLi4uIHRhaWwpOwogICAgIHZvaWQgdmFyaWFkaWNOb2RlTWV0aG9kKGlu
IE5vZGUgaGVhZCwgaW4gTm9kZS4uLiB0YWlsKTsKKworI2lmIGRlZmluZWQoTEFOR1VBR0VfSkFW
QVNDUklQVCkgJiYgTEFOR1VBR0VfSkFWQVNDUklQVAorICAgIHZvaWQgdW5pb25NZXRob2QoKE5v
ZGUgb3IgRE9NU3RyaW5nKSBub2RlT3JTdHJpbmcpOworI2VuZGlmCiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0NvbnRhaW5lck5vZGUuY3BwCmluZGV4IGE2MDVjZDA4ZWJkZTdmYjllNzIyZDk4MzIxMGZhNDJk
OGQ4MzZiYTkuLjI0Y2EzYjY4NWZiZTJhZDBhZTBmMTA0NDNlODJmMzQ1YjM5OTY3N2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTYwNSw2ICs2MDUsMTIgQEAgYm9vbCBD
b250YWluZXJOb2RlOjphcHBlbmRDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBFeGNl
cHRpb25Db2RlJiBlYywgYm8KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBDb250YWluZXJO
b2RlOjpwcmVwZW5kKGNvbnN0IE5vZGVPclN0cmluZyYgbm9kZU9yU3RyaW5nLCBFeGNlcHRpb25D
b2RlJiBlYykKK3sKKyAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9IG5vZGVPclN0cmluZy50b05vZGUo
ZG9jdW1lbnQoKSk7CisgICAgaW5zZXJ0QmVmb3JlKG5vZGUuZ2V0KCksIGZpcnN0Q2hpbGQoKSwg
ZWMpOworfQorCiB2b2lkIENvbnRhaW5lck5vZGU6OnBhcnNlckFwcGVuZENoaWxkKFBhc3NSZWZQ
dHI8Tm9kZT4gbmV3Q2hpbGQpCiB7CiAgICAgQVNTRVJUKG5ld0NoaWxkKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZS5oCmluZGV4IDY5YjVmNDIxYWNlY2ZjMjYxZmI0ZWE0YzRlZDkxMTZjYmEz
MWE5OTkuLmNlN2VhODg3YmM3ZmQ3MGRiMGUyYzU4YmQ3ZTVmNmY1NTA1OTBkODIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGUuaApAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgorI2luY2x1ZGUgIk5v
ZGVPclN0cmluZy5oIgogCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KQEAgLTMzLDcgKzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
RmxvYXRQb2ludDsKLSAgICAKKwogdHlwZWRlZiB2b2lkICgqTm9kZUNhbGxiYWNrKShOb2RlKiwg
dW5zaWduZWQpOwogCiBuYW1lc3BhY2UgUHJpdmF0ZSB7IApAQCAtOTMsNiArOTQsOCBAQCBwdWJs
aWM6CiAgICAgYm9vbCByZW1vdmVDaGlsZChOb2RlKiBjaGlsZCwgRXhjZXB0aW9uQ29kZSYgPSBB
U1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICBib29sIGFwcGVuZENoaWxkKFBhc3NSZWZQdHI8Tm9k
ZT4gbmV3Q2hpbGQsIEV4Y2VwdGlvbkNvZGUmID0gQVNTRVJUX05PX0VYQ0VQVElPTiwgYm9vbCBz
aG91bGRMYXp5QXR0YWNoID0gZmFsc2UpOwogCisgICAgdm9pZCBwcmVwZW5kKGNvbnN0IE5vZGVP
clN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmID0gQVNTRVJUX05PX0VYQ0VQVElPTik7CisKICAgICAv
LyBUaGVzZSBtZXRob2RzIGFyZSBvbmx5IHVzZWQgZHVyaW5nIHBhcnNpbmcuCiAgICAgLy8gVGhl
eSBkb24ndCBzZW5kIERPTSBtdXRhdGlvbiBldmVudHMgb3IgaGFuZGxlIHJlcGFyZW50aW5nLgog
ICAgIC8vIEhvd2V2ZXIsIGFyYml0cmFyeSBjb2RlIG1heSBiZSBydW4gYnkgYmVmb3JlbG9hZCBo
YW5kbGVycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAppbmRleCA5NzI0Yjg4MzA2YzcyNTljNjdjZmFm
MTU5ZDVhYjRkNjM2ZWNlNWQxLi5mMjI5M2IxYTBjNjViZjJiZjY1ZjRjOGM0NzIyZjM4ZjAyYjYx
MTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCkBAIC0xMjcsNiArMTI3LDEwIEBACiAgICAgICAg
IHJhaXNlcyhET01FeGNlcHRpb24pOwogCiAjaWYgZGVmaW5lZChMQU5HVUFHRV9KQVZBU0NSSVBU
KSAmJiBMQU5HVUFHRV9KQVZBU0NSSVBUCisgICAgdm9pZCBwcmVwZW5kKChOb2RlIG9yIERPTVN0
cmluZykgbm9kZU9yU3RyaW5nKTsKKyNlbmRpZgorCisjaWYgZGVmaW5lZChMQU5HVUFHRV9KQVZB
U0NSSVBUKSAmJiBMQU5HVUFHRV9KQVZBU0NSSVBUCiAgICAgLy8gQ1NTT00gVmlldyBNb2R1bGUg
QVBJCiAgICAgQ2xpZW50UmVjdExpc3QgZ2V0Q2xpZW50UmVjdHMoKTsKICAgICBDbGllbnRSZWN0
IGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L05vZGVPclN0cmluZy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVPclN0cmluZy5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmM3MjY4N2I2ZTZlNzliODY0ZWQ4ZjZhODg0ZDY5ZDhhMjliNWUwZDgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZU9yU3RyaW5nLmgKQEAgLTAsMCArMSw2
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgTm9kZU9yU3RyaW5nX2gKKyNkZWZpbmUgTm9kZU9yU3RyaW5nX2gKKworI2lu
Y2x1ZGUgIlRleHQuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIE5vZGVPclN0cmluZyB7CitwdWJsaWM6CisgICAgTm9kZU9yU3Ry
aW5nKCkgeyBOb2RlT3JTdHJpbmcoMCk7IH0KKyAgICBleHBsaWNpdCBOb2RlT3JTdHJpbmcoTm9k
ZSogbm9kZSkgOiBtX25vZGUobm9kZSksIG1faXNOb2RlKHRydWUpIHsgfQorICAgIGV4cGxpY2l0
IE5vZGVPclN0cmluZyhTdHJpbmcgc3RyaW5nKSA6IG1fc3RyaW5nKHN0cmluZyksIG1faXNOb2Rl
KGZhbHNlKSB7IH0KKyAgICBQYXNzUmVmUHRyPE5vZGU+IHRvTm9kZShEb2N1bWVudCopIGNvbnN0
OworcHJpdmF0ZToKKyAgICBOb2RlKiBtX25vZGU7CisgICAgU3RyaW5nIG1fc3RyaW5nOworICAg
IGJvb2wgbV9pc05vZGU7Cit9OworCitpbmxpbmUgUGFzc1JlZlB0cjxOb2RlPiBOb2RlT3JTdHJp
bmc6OnRvTm9kZShEb2N1bWVudCogZG9jdW1lbnQpIGNvbnN0Cit7CisgICAgaWYgKG1faXNOb2Rl
KSB7CisgICAgICAgIEFTU0VSVChtX25vZGUpOworICAgICAgICByZXR1cm4gbV9ub2RlOworICAg
IH0KKyAgICByZXR1cm4gVGV4dDo6Y3JlYXRlKGRvY3VtZW50LCBtX3N0cmluZyk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE5vZGVPclN0cmluZ19oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173033</attachid>
            <date>2012-11-08 06:35:42 -0800</date>
            <delta_ts>2015-07-05 20:13:15 -0700</delta_ts>
            <desc>WIP. Fully working V8 variadic union type</desc>
            <filename>bug-74648-20121108093351.patch</filename>
            <type>text/plain</type>
            <size>45152</size>
            <attacher name="Erik Arvidsson">arv</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjY0YTE0MGQ4OTBhNDE3
OThiNmRlNjk2ZjljYjEzMGM1MzEyZmFkNC4uZmU0OWY3MGQ5NTcyNzNjZTgzZjFjODM4NjAyODMz
M2ZlMTk5YjM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEyLTExLTA2ICBFcmlr
IEFydmlkc3NvbiAgPGFydkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRE9NNDogcHJlcGVuZCwg
YXBwZW5kLCBiZWZvcmUsIGFmdGVyICYgcmVwbGFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ2NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXSVAKKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0
aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRk
IHBlci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAg
ICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtOgorICAgICAgICAoSXNVbmlvblR5cGUpOgor
ICAgICAgICAoR2V0VW5pb25UeXBlcyk6CisgICAgICAgIChHZXRVbmlvblR5cGVOYXRpdmVOYW1l
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAg
ICAgKEdldFVuaW9uVHlwZVBhcmFtZXRlckV4cHJlc3Npb25zKToKKyAgICAgICAgKEdlbmVyYXRl
UGFyYW1ldGVyc0NoZWNrKToKKyAgICAgICAgKFJlcXVpcmVzQ3VzdG9tU2lnbmF0dXJlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbToKKyAgICAgICAgKHBhcnNlVHlw
ZSk6CisgICAgICAgIChwYXJzZVVuaW9uVHlwZSk6CisgICAgICAgIChwYXJzZVVuaW9uTWVtYmVy
VHlwZSk6CisgICAgICAgIChwYXJzZVVuaW9uTWVtYmVyVHlwZXMpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbDoKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpwcmVwZW5kKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmg6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKENvbnRhaW5lck5vZGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50
LmlkbDoKKyAgICAgICAgKiBkb20vTm9kZU9yU3RyaW5nLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChOb2RlT3JTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZU9y
U3RyaW5nOjpOb2RlT3JTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZU9yU3RyaW5nOjp0
b05vZGUpOgorCiAyMDEyLTExLTA1ICBHZW5ldmlldmUgTWFrICA8Z21ha0ByaW0uY29tPgogCiAg
ICAgICAgIFtCTEFDS0JFUlJZXSBVcGRhdGUgdG91Y2ggY29kZSB0byByZWZsZWN0IHRvdWNoIHJl
ZmFjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAzZGMyZjJlYWE5MzFhY2Nh
ODRmZmZiZTc3MzkzNjgxMjllYjEwM2Q4Li4zYjFiM2RlYWJmOThiMGU2YjFlZTZjODEwZjA1YTA5
MGU2NDU0NzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTI4ODUsNiArMjg4
NSw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL05vZGVJdGVy
YXRvci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlSXRlcmF0b3IuaCBcCiAJU291cmNl
L1dlYkNvcmUvZG9tL05vZGVMaXN0LmggXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlT3JTdHJp
bmcuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL05v
ZGVSZW5kZXJTdHlsZS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkg
Yi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGY0MGMyZTk2NWY2YzExMmZmNGUxNDg4
MjE4OTdmYTJmYjMzMmU1YTcuLmI0NGZmMTQ2ZjQ5ZDI4YTk1NWY2MTg2Nzc3OTUxYzAyY2YxNDBh
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dl
YkNvcmUvVGFyZ2V0LnByaQpAQCAtMTU5Nyw2ICsxNTk3LDcgQEAgSEVBREVSUyArPSBcCiAgICAg
ZG9tL05vZGUuaCBcCiAgICAgZG9tL05vZGVJdGVyYXRvci5oIFwKICAgICBkb20vTm9kZVJhcmVE
YXRhLmggXAorICAgIGRvbS9Ob2RlT3JTdHJpbmcuaCBcCiAgICAgZG9tL05vZGVSZW5kZXJpbmdD
b250ZXh0LmggXAogICAgIGRvbS9Ob3RhdGlvbi5oIFwKICAgICBkb20vU3RhdGljSGFzaFNldE5v
ZGVMaXN0LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGNhYzcyNTJhMzNhOTk4YWY0YjU2OGVhMWU2
MjI2NjBiZDBhODBiZTYuLmU1MjdmZTg2MTYwMzY4ZDkyNWFiMTRjNTljZTk0NTM0NjE0YzFkZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKQEAgLTY4NCw2ICs2ODQsNyBAQAogICAgICAgICAgICAgJ2RvbS9O
YW1lZE5vZGVNYXAuaCcsCiAgICAgICAgICAgICAnZG9tL05vZGUuaCcsCiAgICAgICAgICAgICAn
ZG9tL05vZGVMaXN0LmgnLAorICAgICAgICAgICAgJ2RvbS9Ob2RlT3JTdHJpbmcuaCcsCiAgICAg
ICAgICAgICAnZG9tL1BlbmRpbmdTY3JpcHQuaCcsCiAgICAgICAgICAgICAnZG9tL1Bvc2l0aW9u
LmgnLAogICAgICAgICAgICAgJ2RvbS9RdWFsaWZpZWROYW1lLmgnLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCmluZGV4IDFjMzU2M2E2MTg2
YTY1MjExYjQ0ODA0Y2ZhMTEwYTA1YjBlNmViZmMuLjMzODE2MmVjMzliODM1ZTU4ZTg4NTkwYzc2
Njg2MTY4N2Q5YzY4YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvci5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3IucG0KQEAgLTUwNCw2ICs1MDQsMjIgQEAgc3ViIEFzc2VydE5vdFNlcXVl
bmNlVHlwZQogICAgIGRpZSAiU2VxdWVuY2VzIG11c3Qgbm90IGJlIHVzZWQgYXMgdGhlIHR5cGUg
b2YgYW4gYXR0cmlidXRlLCBjb25zdGFudCBvciBleGNlcHRpb24gZmllbGQuIiBpZiAkb2JqZWN0
LT5HZXRTZXF1ZW5jZVR5cGUoJHR5cGUpOwogfQogCitzdWIgSXNVbmlvblR5cGUKK3sKKyAgICBt
eSAkb2JqZWN0ID0gc2hpZnQ7CisgICAgbXkgJHR5cGUgPSBzaGlmdDsKKyAgICByZXR1cm4gJHR5
cGUgPX4gL15cKChbXHdcZF9cc10rKVwpJC87Cit9CisKK3N1YiBHZXRVbmlvblR5cGVzCit7Cisg
ICAgbXkgJG9iamVjdCA9IHNoaWZ0OworICAgIG15ICR0eXBlID0gc2hpZnQ7CisKKyAgICByZXR1
cm4gc3BsaXQoL1xzK29yXHMrLywgJDEpIGlmICR0eXBlID1+IC9eXCgoW1x3XGRfXHNdKylcKSQv
OworICAgIHJldHVybiAwOworfQorCiAjIFVwcGVyY2FzZSB0aGUgZmlyc3QgbGV0dGVyIHdoaWxl
IHJlc3BlY3RpbmcgV2ViS2l0IHN0eWxlIGd1aWRlbGluZXMuCiAjIEUuZy4sIHhtbEVuY29kaW5n
IGJlY29tZXMgWE1MRW5jb2RpbmcsIGJ1dCB4bWxsbGFuZyBiZWNvbWVzIFhtbGxhbmcuCiBzdWIg
V0tfdWNmaXJzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbQppbmRleCA2Zjk5NWNiODRjNDhiNjgzYTVkYTkzNjQzZDRjZTA3MTIxOWE0
N2NmLi41ZWVmZGI4MGNlM2EzZDFhZDU5ZmJmMTAwNGU1NjZhMjY5YjkyODAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAt
MTQzOCw2ICsxNDM4LDIxIEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVja0V4cHJlc3Npb24K
ICAgICByZXR1cm4gJHJlczsKIH0KIAorc3ViIEdldFVuaW9uVHlwZVBhcmFtZXRlckV4cHJlc3Np
b25zCit7CisgICAgIyBUaGlzIGlzIGEgdmVyeSBzaW1wbGlmaWVkIHZlcnNpb24gb2YgaHR0cDov
L2Rldi53My5vcmcvMjAwNi93ZWJhcGkvV2ViSURMLyNlcy11bmlvbgorICAgICMgQXQgdGhpcyBw
b2ludCBpdCBvbmx5IGNvdmVycyB3aGF0IHdlIG5lZWQgc28gZmFyLgorICAgICMgSXQgZG9lcyBu
b3QgaGFuZGxlOiBuZXN0ZWQgdW5pb25zLCBudWxsYWJsZSwgc2VxdWVuY2VzLCBhcnJheXMsIERh
dGUsIGNhbGxiYWNrcywgZGljdGlvbmFyeSwgcHJpbWl0aXZlIHR5cGVzCisgICAgIyBJdCBoYW5k
bGVzOiBET01TdHJpbmcgYW5kIE9iamVjdAorICAgIG15ICR0eXBlID0gc2hpZnQ7CisgICAgbXkg
JHZhbHVlID0gc2hpZnQ7CisKKyAgICByZXR1cm4gKCIke3ZhbHVlfS0+SXNTdHJpbmcoKSIsICJ0
b1dlYkNvcmVTdHJpbmcoJHZhbHVlKSIpIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUo
JHR5cGUpOworICAgIHJldHVybiAoIlY4JHt0eXBlfTo6SGFzSW5zdGFuY2UoJHZhbHVlKSIsICJW
OCR7dHlwZX06OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoJHZhbHVlKSki
KSBpZiBJc1dyYXBwZXJUeXBlKCR0eXBlKTsKKworICAgIGRpZSAiTm90IGltcGxlbWVudGVkIjsK
K30KKwogc3ViIEdlbmVyYXRlRnVuY3Rpb25QYXJhbWV0ZXJzQ2hlY2sKIHsKICAgICBteSAkZnVu
Y3Rpb24gPSBzaGlmdDsKQEAgLTE3NDAsNiArMTc1NSw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRl
cnNDaGVjawogICAgICAgICB9CiAKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkV4Y2VwdGlv
bkNvZGUuaCIpOworCiAgICAgICAgIGlmICgkcGFyYW1ldGVyLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ2FsbGJhY2sifSkgewogICAgICAgICAgICAgbXkgJGNsYXNzTmFtZSA9IEdldENhbGxiYWNr
Q2xhc3NOYW1lKCRwYXJhbWV0ZXItPnR5cGUpOwogICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVk
ZXMoIiRjbGFzc05hbWUuaCIpOwpAQCAtMTc5OSwzMCArMTgxNSw0MiBAQCBzdWIgR2VuZXJhdGVQ
YXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVj
a1N0cmluZyAuPSAiICAgIGlmICgke3BhcmFtZXRlck5hbWV9RGlkVGhyb3cpXG4iOwogICAgICAg
ICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgIHJldHVybiB2OFVuZGVmaW5l
ZCgpO1xuIjsKLSAgICAgICAgfSBlbHNpZiAoVHlwZUNhbkZhaWxDb252ZXJzaW9uKCRwYXJhbWV0
ZXIpKSB7Ci0gICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAkbmF0aXZl
VHlwZSAkcGFyYW1ldGVyTmFtZSA9ICIgLgotICAgICAgICAgICAgICAgICBKU1ZhbHVlVG9OYXRp
dmUoJHBhcmFtZXRlciwgImFyZ3NbJHBhcmFtSW5kZXhdIiwgImFyZ3MuR2V0SXNvbGF0ZSgpIikg
LiAiO1xuIjsKLSAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIGlmIChV
TkxJS0VMWSghJHBhcmFtZXRlck5hbWUpKSB7XG4iOwotICAgICAgICAgICAgJHBhcmFtZXRlckNo
ZWNrU3RyaW5nIC49ICIgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7XG4iOwotICAgICAg
ICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgIGdvdG8gZmFpbDtcbiI7Ci0g
ICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICB9XG4iOwogICAgICAgICB9
IGVsc2lmICgkcGFyYW1ldGVyLT5pc1ZhcmlhZGljKSB7Ci0gICAgICAgICAgICBteSAkbmF0aXZl
RWxlbWVudFR5cGUgPSBHZXROYXRpdmVUeXBlKCRwYXJhbWV0ZXItPnR5cGUpOwotICAgICAgICAg
ICAgaWYgKCRuYXRpdmVFbGVtZW50VHlwZSA9fiAvPiQvKSB7Ci0gICAgICAgICAgICAgICAgJG5h
dGl2ZUVsZW1lbnRUeXBlIC49ICIgIjsKKyAgICAgICAgICAgIG15ICRhcmdUeXBlID0gR2V0VHlw
ZUZyb21TaWduYXR1cmUoJHBhcmFtZXRlcik7CisgICAgICAgICAgICBteSAkbmF0aXZlRWxlbWVu
dFR5cGU7CisgICAgICAgICAgICBpZiAoJGFyZ1R5cGUgZXEgIkRPTVN0cmluZyIpIHsKKyAgICAg
ICAgICAgICAgICAkbmF0aXZlRWxlbWVudFR5cGUgPSAiU3RyaW5nIjsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgJG5hdGl2ZUVsZW1lbnRUeXBlID0gJG5hdGl2ZVR5cGU7
CisgICAgICAgICAgICAgICAgaWYgKCRuYXRpdmVFbGVtZW50VHlwZSA9fiAvPiQvKSB7CisgICAg
ICAgICAgICAgICAgICAgICRuYXRpdmVFbGVtZW50VHlwZSAuPSAiICI7CisgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBteSAkYXJnVHlwZSA9IEdldFR5cGVG
cm9tU2lnbmF0dXJlKCRwYXJhbWV0ZXIpOwotICAgICAgICAgICAgaWYgKElzV3JhcHBlclR5cGUo
JGFyZ1R5cGUpKSB7CisgICAgICAgICAgICBpZiAoSXNXcmFwcGVyVHlwZSgkYXJnVHlwZSkgfHwg
JGNvZGVHZW5lcmF0b3ItPklzVW5pb25UeXBlKCRhcmdUeXBlKSkgewogICAgICAgICAgICAgICAg
ICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIFZlY3RvcjwkbmF0aXZlRWxlbWVudFR5cGU+
ICRwYXJhbWV0ZXJOYW1lO1xuIjsKICAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJp
bmcgLj0gIiAgICBmb3IgKGludCBpID0gJHBhcmFtSW5kZXg7IGkgPCBhcmdzLkxlbmd0aCgpOyAr
K2kpIHtcbiI7Ci0gICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAg
ICAgIGlmICghVjgke2FyZ1R5cGV9OjpIYXNJbnN0YW5jZShhcmdzW2ldKSlcbiI7Ci0gICAgICAg
ICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoMCwgYXJncy5HZXRJc29sYXRlKCkpO1xuIjsKLSAgICAgICAgICAgICAgICAk
cGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAgICAgJHBhcmFtZXRlck5hbWUuYXBwZW5kKFY4
JHthcmdUeXBlfTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzW2ld
KSkpO1xuIjsKKyAgICAgICAgICAgICAgICBteSAkdmFsdWUgPSBKU1ZhbHVlVG9OYXRpdmUoJHBh
cmFtZXRlciwgImFyZ3NbaV0iLCAiYXJncy5HZXRJc29sYXRlKCkiKTsKKyAgICAgICAgICAgICAg
ICBpZiAoVHlwZUNhbkZhaWxDb252ZXJzaW9uKCRwYXJhbWV0ZXIpKSB7CisgICAgICAgICAgICAg
ICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICAgICAkbmF0aXZlVHlwZSBpdGVt
ID0gJHZhbHVlO1xuIjsKKyAgICAgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5n
IC49ICIgICAgICAgIGlmIChVTkxJS0VMWSghaXRlbSkpXG4iOworICAgICAgICAgICAgICAgICAg
ICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAgICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcigwLCBhcmdzLkdldElzb2xhdGUoKSk7XG4iOworICAgICAgICAgICAgICAgICAgICAkcGFy
YW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAgICAgJHBhcmFtZXRlck5hbWUuYXBwZW5kKGl0ZW0p
O1xuIjsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAkcGFy
YW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAgICAgJHBhcmFtZXRlck5hbWUuYXBwZW5kKCR2YWx1
ZSk7XG4iOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hl
Y2tTdHJpbmcgLj0gIiAgICB9XG4iOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBFWENFUFRJT05fQkxPQ0soVmVjdG9y
PCRuYXRpdmVFbGVtZW50VHlwZT4sICRwYXJhbWV0ZXJOYW1lLCB0b05hdGl2ZUFyZ3VtZW50czwk
bmF0aXZlRWxlbWVudFR5cGU+KGFyZ3MsICRwYXJhbUluZGV4KSk7XG4iOwogICAgICAgICAgICAg
fQorICAgICAgICB9IGVsc2lmIChUeXBlQ2FuRmFpbENvbnZlcnNpb24oJHBhcmFtZXRlcikpIHsK
KyAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICRuYXRpdmVUeXBlICRw
YXJhbWV0ZXJOYW1lID0gIiAuCisgICAgICAgICAgICAgICAgSlNWYWx1ZVRvTmF0aXZlKCRwYXJh
bWV0ZXIsICJhcmdzWyRwYXJhbUluZGV4XSIsICJhcmdzLkdldElzb2xhdGUoKSIpIC4gIjtcbiI7
CisgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBpZiAoVU5MSUtFTFko
ISRwYXJhbWV0ZXJOYW1lKSkge1xuIjsKKyAgICAgICAgICAgICMgRklYTUU6IFRoaXMgc2hvdWxk
IGJlIFR5cGVFcnJvciBhbmQgbm90IFRZUEVfTUlTTUFUQ0hfRVJSLgorICAgICAgICAgICAgJHBh
cmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7XG4i
OworICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgIGdvdG8gZmFp
bDtcbiI7CisgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICB9XG4iOwog
ICAgICAgICB9IGVsc2lmICgkbmF0aXZlVHlwZSA9fiAvXlY4UGFyYW1ldGVyLykgewogICAgICAg
ICAgICAgbXkgJHZhbHVlID0gSlNWYWx1ZVRvTmF0aXZlKCRwYXJhbWV0ZXIsICJNQVlCRV9NSVNT
SU5HX1BBUkFNRVRFUihhcmdzLCAkcGFyYW1JbmRleCwgJHBhcmFtZXRlckRlZmF1bHRQb2xpY3kp
IiwgImFyZ3MuR2V0SXNvbGF0ZSgpIik7CiAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJp
bmcgLj0gIiAgICAiIC4gQ29udmVydFRvVjhQYXJhbWV0ZXIoJHBhcmFtZXRlciwgJG5hdGl2ZVR5
cGUsICRwYXJhbWV0ZXJOYW1lLCAkdmFsdWUpIC4gIlxuIjsKQEAgLTM2MjUsNyArMzY1Myw2IEBA
IHN1YiBHZXRUeXBlRnJvbVNpZ25hdHVyZQogICAgIHJldHVybiAkY29kZUdlbmVyYXRvci0+U3Ry
aXBNb2R1bGUoJHNpZ25hdHVyZS0+dHlwZSk7CiB9CiAKLQogc3ViIEdldE5hdGl2ZVR5cGVGcm9t
U2lnbmF0dXJlCiB7CiAgICAgbXkgJHNpZ25hdHVyZSA9IHNoaWZ0OwpAQCAtMzYzMyw2ICszNjYw
LDE4IEBAIHN1YiBHZXROYXRpdmVUeXBlRnJvbVNpZ25hdHVyZQogCiAgICAgbXkgJHR5cGUgPSBH
ZXRUeXBlRnJvbVNpZ25hdHVyZSgkc2lnbmF0dXJlKTsKIAorICAgIGlmICgkY29kZUdlbmVyYXRv
ci0+SXNVbmlvblR5cGUoJHR5cGUpKSB7CisgICAgICAgIG15IEBuYXRpdmVUeXBlcyA9ICgpOwor
ICAgICAgICBmb3JlYWNoIG15ICR1bmlvblR5cGUgKCRjb2RlR2VuZXJhdG9yLT5HZXRVbmlvblR5
cGVzKCR0eXBlKSkgeworICAgICAgICAgICAgbXkgJG5hdGl2ZVR5cGUgPSBHZXROYXRpdmVUeXBl
KCR1bmlvblR5cGUsIDApOworICAgICAgICAgICAgJG5hdGl2ZVR5cGUgPX4gcy9cKi8vOworICAg
ICAgICAgICAgJG5hdGl2ZVR5cGUgPX4gcy9eUmVmUHRyPChbXi5dKyk+JC8kMS87CisgICAgICAg
ICAgICAkbmF0aXZlVHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRuYXRpdmVUeXBl
KTsKKyAgICAgICAgICAgIHB1c2goQG5hdGl2ZVR5cGVzLCAkbmF0aXZlVHlwZSk7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuICJSZWZQdHI8IiAuIGpvaW4oIk9yIiwgQG5hdGl2ZVR5cGVzKSAu
ICI+IjsKKyAgICB9CisKICAgICBpZiAoJHR5cGUgZXEgInVuc2lnbmVkIGxvbmciIGFuZCAkc2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSXNJbmRleCJ9KSB7CiAgICAgICAgICMgU3Bl
Y2lhbC1jYXNlIGluZGV4IGFyZ3VtZW50cyBiZWNhdXNlIHdlIG5lZWQgdG8gY2hlY2sgdGhhdCB0
aGV5IGFyZW4ndCA8IDAuCiAgICAgICAgIHJldHVybiAiaW50IjsKQEAgLTM3NjQsMTAgKzM4MDMs
MTAgQEAgc3ViIFR5cGVDYW5GYWlsQ29udmVyc2lvbgogICAgIG15ICRzaWduYXR1cmUgPSBzaGlm
dDsKIAogICAgIG15ICR0eXBlID0gR2V0VHlwZUZyb21TaWduYXR1cmUoJHNpZ25hdHVyZSk7Cisg
ICAgbXkgJGNhbkZhaWwgPSAkdHlwZSBlcSAiQXR0ciIgfHwgJGNvZGVHZW5lcmF0b3ItPklzVW5p
b25UeXBlKCR0eXBlKTsKIAotICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJFeGNlcHRpb25Db2RlLmgi
KSBpZiAkdHlwZSBlcSAiQXR0ciI7Ci0gICAgcmV0dXJuIDEgaWYgJHR5cGUgZXEgIkF0dHIiOwot
ICAgIHJldHVybiAwOworICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJFeGNlcHRpb25Db2RlLmgiKSBp
ZiAkY2FuRmFpbDsKKyAgICByZXR1cm4gJGNhbkZhaWw7CiB9CiAKIHN1YiBKU1ZhbHVlVG9OYXRp
dmUKQEAgLTM3NzgsNiArMzgxNywyMCBAQCBzdWIgSlNWYWx1ZVRvTmF0aXZlCiAKICAgICBteSAk
dHlwZSA9IEdldFR5cGVGcm9tU2lnbmF0dXJlKCRzaWduYXR1cmUpOwogCisgICAgaWYgKCRjb2Rl
R2VuZXJhdG9yLT5Jc1VuaW9uVHlwZSgkdHlwZSkpIHsKKyAgICAgICAgbXkgQHVuaW9uVHlwZXMg
PSAkY29kZUdlbmVyYXRvci0+R2V0VW5pb25UeXBlcygkdHlwZSk7CisgICAgICAgIG15ICRjcmVh
dGVOYW1lID0gR2V0TmF0aXZlVHlwZUZyb21TaWduYXR1cmUoJHNpZ25hdHVyZSwgMCk7CisgICAg
ICAgICRjcmVhdGVOYW1lID1+IHMvXlJlZlB0cjwoW14+XSspPiQvJDEvOworICAgICAgICAkY3Jl
YXRlTmFtZSAuPSAiOjpjcmVhdGUiOworICAgICAgICBteSAkZXhwcmVzc2lvbiA9ICIiOworICAg
ICAgICBmb3JlYWNoIG15ICR1bmlvblR5cGUgKEB1bmlvblR5cGVzKSB7CisgICAgICAgICAgICBt
eSAoJGNoZWNrRXhwcmVzc2lvbiwgJGNvbnZlcnRFeHByZXNzaW9uKSA9IEdldFVuaW9uVHlwZVBh
cmFtZXRlckV4cHJlc3Npb25zKCR1bmlvblR5cGUsICR2YWx1ZSk7CisgICAgICAgICAgICAkZXhw
cmVzc2lvbiAuPSAiJGNoZWNrRXhwcmVzc2lvbiA/ICRjcmVhdGVOYW1lKCRjb252ZXJ0RXhwcmVz
c2lvbikgOiAiOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuICIoIiAuICRleHByZXNzaW9u
IC4gIjApIjsKKyAgICB9CisKICAgICByZXR1cm4gIiR2YWx1ZSIgaWYgJHR5cGUgZXEgIkpTT2Jq
ZWN0IjsKICAgICByZXR1cm4gIiR2YWx1ZS0+Qm9vbGVhblZhbHVlKCkiIGlmICR0eXBlIGVxICJi
b29sZWFuIjsKICAgICByZXR1cm4gInN0YXRpY19jYXN0PCR0eXBlPigkdmFsdWUtPk51bWJlclZh
bHVlKCkpIiBpZiAkdHlwZSBlcSAiZmxvYXQiIG9yICR0eXBlIGVxICJkb3VibGUiOwpAQCAtMzk0
MiwxMiArMzk5NSwxNCBAQCBzdWIgUmVxdWlyZXNDdXN0b21TaWduYXR1cmUKICAgICAgICAgaWYg
KCgkb3B0aW9uYWwgJiYgJG9wdGlvbmFsIG5lICJEZWZhdWx0SXNVbmRlZmluZWQiICYmICRvcHRp
b25hbCBuZSAiRGVmYXVsdElzTnVsbFN0cmluZyIpIHx8ICRwYXJhbWV0ZXItPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJDYWxsYmFjayJ9KSB7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAg
fQorICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzVW5pb25UeXBlKCRwYXJhbWV0ZXItPnR5
cGUpKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGZv
cmVhY2ggbXkgJHBhcmFtZXRlciAoQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9KSB7Ci0gICAgICAg
IGlmIChJc1dyYXBwZXJUeXBlKCRwYXJhbWV0ZXItPnR5cGUpKSB7Ci0gICAgICAgICAgICByZXR1
cm4gMTsKLSAgICAgICAgfQorICAgICAgICByZXR1cm4gMCBpZiAoJHBhcmFtZXRlci0+aXNWYXJp
YWRpYyk7CisgICAgICAgIHJldHVybiAxIGlmIChJc1dyYXBwZXJUeXBlKCRwYXJhbWV0ZXItPnR5
cGUpKTsKICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvSURMUGFyc2VyLnBtCmluZGV4IDE5ZmI2NDk1YzMxYjFmYjU2ZDdlNmE5ZjE1MGRi
OTU5ODJjNzQ3MTIuLjU3NGIxZDA4NzFjZWU5YzYyNDM3ZDMwMzE0OGI3ZDZhNDY1OWI2MDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCkBAIC0xNTUy
LDkgKzE1NTIsNyBAQCBzdWIgcGFyc2VUeXBlCiAgICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgICBt
eSAkbmV4dCA9ICRzZWxmLT5uZXh0VG9rZW4oKTsKICAgICBpZiAoJG5leHQtPnZhbHVlKCkgZXEg
IigiKSB7Ci0gICAgICAgICRzZWxmLT5wYXJzZVVuaW9uVHlwZSgpOwotICAgICAgICAkc2VsZi0+
cGFyc2VUeXBlU3VmZml4KCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuICRzZWxm
LT5wYXJzZVVuaW9uVHlwZSgpIC4gJHNlbGYtPnBhcnNlVHlwZVN1ZmZpeCgpOwogICAgIH0KICAg
ICBpZiAoJG5leHQtPnR5cGUoKSA9PSBJZGVudGlmaWVyVG9rZW4gfHwgJG5leHQtPnZhbHVlKCkg
PX4gLyRuZXh0VHlwZV8xLykgewogICAgICAgICByZXR1cm4gJHNlbGYtPnBhcnNlU2luZ2xlVHlw
ZSgpOwpAQCAtMTU4MCwxNCArMTU3OCwxNCBAQCBzdWIgcGFyc2VVbmlvblR5cGUKIHsKICAgICBt
eSAkc2VsZiA9IHNoaWZ0OwogICAgIG15ICRuZXh0ID0gJHNlbGYtPm5leHRUb2tlbigpOworICAg
IG15ICRyZXN1bHQgPSAiIjsKICAgICBpZiAoJG5leHQtPnZhbHVlKCkgZXEgIigiKSB7CiAgICAg
ICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiKCIsIF9fTElO
RV9fKTsKLSAgICAgICAgJHNlbGYtPnBhcnNlVW5pb25NZW1iZXJUeXBlKCk7CisgICAgICAgICRy
ZXN1bHQgLj0gIigiIC4gJHNlbGYtPnBhcnNlVW5pb25NZW1iZXJUeXBlKCk7CiAgICAgICAgICRz
ZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAib3IiLCBfX0xJTkVfXyk7
Ci0gICAgICAgICRzZWxmLT5wYXJzZVVuaW9uTWVtYmVyVHlwZSgpOwotICAgICAgICAkc2VsZi0+
cGFyc2VVbmlvbk1lbWJlclR5cGVzKCk7CisgICAgICAgICRyZXN1bHQgLj0gIiBvciAiIC4gJHNl
bGYtPnBhcnNlVW5pb25NZW1iZXJUeXBlKCkgLiAkc2VsZi0+cGFyc2VVbmlvbk1lbWJlclR5cGVz
KCk7CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAi
KSIsIF9fTElORV9fKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gJHJlc3VsdCAu
ICIpIjsKICAgICB9CiAgICAgJHNlbGYtPmFzc2VydFVuZXhwZWN0ZWRUb2tlbigkbmV4dC0+dmFs
dWUoKSwgX19MSU5FX18pOwogfQpAQCAtMTU5NywyMCArMTU5NSwxNCBAQCBzdWIgcGFyc2VVbmlv
bk1lbWJlclR5cGUKICAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgIG15ICRuZXh0ID0gJHNlbGYt
Pm5leHRUb2tlbigpOwogICAgIGlmICgkbmV4dC0+dmFsdWUoKSBlcSAiKCIpIHsKLSAgICAgICAg
JHNlbGYtPnBhcnNlVW5pb25UeXBlKCk7Ci0gICAgICAgICRzZWxmLT5wYXJzZVR5cGVTdWZmaXgo
KTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gJHNlbGYtPnBhcnNlVW5pb25UeXBl
KCkgLiAkc2VsZi0+cGFyc2VUeXBlU3VmZml4KCk7CiAgICAgfQogICAgIGlmICgkbmV4dC0+dmFs
dWUoKSBlcSAiYW55IikgewogICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+
Z2V0VG9rZW4oKSwgImFueSIsIF9fTElORV9fKTsKLSAgICAgICAgJHNlbGYtPmFzc2VydFRva2Vu
VmFsdWUoJHNlbGYtPmdldFRva2VuKCksICJbIiwgX19MSU5FX18pOwotICAgICAgICAkc2VsZi0+
YXNzZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgIl0iLCBfX0xJTkVfXyk7Ci0gICAg
ICAgICRzZWxmLT5wYXJzZVR5cGVTdWZmaXgoKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gImFueSIgLiAkc2VsZi0+cGFyc2VUeXBlU3VmZml4U3RhcnRpbmdXaXRoQXJyYXkoKTsK
ICAgICB9CiAgICAgaWYgKCRuZXh0LT50eXBlKCkgPT0gSWRlbnRpZmllclRva2VuIHx8ICRuZXh0
LT52YWx1ZSgpID1+IC8kbmV4dFNpbmdsZVR5cGVfMS8pIHsKLSAgICAgICAgJHNlbGYtPnBhcnNl
Tm9uQW55VHlwZSgpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiAkc2VsZi0+cGFy
c2VOb25BbnlUeXBlKCk7CiAgICAgfQogICAgICRzZWxmLT5hc3NlcnRVbmV4cGVjdGVkVG9rZW4o
JG5leHQtPnZhbHVlKCksIF9fTElORV9fKTsKIH0KQEAgLTE2MjEsOCArMTYxMyw3IEBAIHN1YiBw
YXJzZVVuaW9uTWVtYmVyVHlwZXMKICAgICBteSAkbmV4dCA9ICRzZWxmLT5uZXh0VG9rZW4oKTsK
ICAgICBpZiAoJG5leHQtPnZhbHVlKCkgZXEgIm9yIikgewogICAgICAgICAkc2VsZi0+YXNzZXJ0
VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgIm9yIiwgX19MSU5FX18pOwotICAgICAgICAk
c2VsZi0+cGFyc2VVbmlvbk1lbWJlclR5cGUoKTsKLSAgICAgICAgJHNlbGYtPnBhcnNlVW5pb25N
ZW1iZXJUeXBlcygpOworICAgICAgICByZXR1cm4gIiBvciAiIC4gJHNlbGYtPnBhcnNlVW5pb25N
ZW1iZXJUeXBlKCkgLiAkc2VsZi0+cGFyc2VVbmlvbk1lbWJlclR5cGVzKCk7CiAgICAgfQogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dl
YkRPTVRlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQ
UC9XZWJET01UZXN0T2JqLmNwcAppbmRleCA4YjE4NWU1MTAyNzU4NzA3NDRiNjc5ZTNlMDI4ZDE1
OTdlOWEyYTU1Li40YzUyZDhkNTYyNmVjZDdkMzQ2Y2EwYjliODUxZDMyMGQ5OGYzYzAzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRl
c3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAv
V2ViRE9NVGVzdE9iai5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJXZWJET01UZXN0T2JqLmgiCiAKKyNpbmNsdWRlICIoTm9kZSBvciBET01TdHJp
bmcpLmgiCiAjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCkBAIC0zMCw2ICszMSw3IEBACiAjaW5jbHVkZSAiU1ZHUG9p
bnQuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJUZXN0
T2JqLmgiCisjaW5jbHVkZSAiV2ViRE9NKE5vZGUgb3IgRE9NU3RyaW5nKS5oIgogI2luY2x1ZGUg
IldlYkRPTURpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJXZWJET01Eb2N1bWVudC5oIgogI2luY2x1
ZGUgIldlYkRPTUlEQktleS5oIgpAQCAtOTkxLDYgKzk5MywxNCBAQCB2b2lkIFdlYkRPTVRlc3RP
Ymo6OnZhcmlhZGljTm9kZU1ldGhvZChjb25zdCBXZWJET01Ob2RlJiBoZWFkLCBjb25zdCBXZWJE
T01Ob2RlJgogICAgIGltcGwoKS0+dmFyaWFkaWNOb2RlTWV0aG9kKHRvV2ViQ29yZShoZWFkKSwg
dG9XZWJDb3JlKHRhaWwpKTsKIH0KIAordm9pZCBXZWJET01UZXN0T2JqOjp2YXJpYWRpY1VuaW9u
TWV0aG9kKGNvbnN0IFdlYkRPTShOb2RlIG9yIERPTVN0cmluZykmIGhlYWQsIGNvbnN0IFdlYkRP
TShOb2RlIG9yIERPTVN0cmluZykmIHRhaWwpCit7CisgICAgaWYgKCFpbXBsKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGltcGwoKS0+dmFyaWFkaWNVbmlvbk1ldGhvZCh0b1dlYkNvcmUoaGVh
ZCksIHRvV2ViQ29yZSh0YWlsKSk7Cit9CisKIFdlYkNvcmU6OlRlc3RPYmoqIHRvV2ViQ29yZShj
b25zdCBXZWJET01UZXN0T2JqJiB3cmFwcGVyKQogewogICAgIHJldHVybiB3cmFwcGVyLmltcGwo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAv
V2ViRE9NVGVzdE9iai5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQ
UC9XZWJET01UZXN0T2JqLmgKaW5kZXggMzFjODM4YmQ2YjMwMzhjMjZlNjgyNGI1MTA4YWJjMDIw
NjQ5ODJiMi4uZWViZWUzNmI2NDM3Njk2OWU3YjliZGM3YzljMDA5OTgxOGM2MTY3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0
T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJE
T01UZXN0T2JqLmgKQEAgLTMwLDYgKzMwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
VGVzdE9iajsKIH07CiAKK2NsYXNzIFdlYkRPTShOb2RlIG9yIERPTVN0cmluZyk7CiBjbGFzcyBX
ZWJET01EaWN0aW9uYXJ5OwogY2xhc3MgV2ViRE9NRG9jdW1lbnQ7CiBjbGFzcyBXZWJET01FdmVu
dExpc3RlbmVyOwpAQCAtMTk0LDYgKzE5NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHZhcmlhZGlj
U3RyaW5nTWV0aG9kKGNvbnN0IFdlYkRPTVN0cmluZyYgaGVhZCwgY29uc3QgV2ViRE9NU3RyaW5n
JiB0YWlsKTsKICAgICB2b2lkIHZhcmlhZGljRG91YmxlTWV0aG9kKGRvdWJsZSBoZWFkLCBkb3Vi
bGUgdGFpbCk7CiAgICAgdm9pZCB2YXJpYWRpY05vZGVNZXRob2QoY29uc3QgV2ViRE9NTm9kZSYg
aGVhZCwgY29uc3QgV2ViRE9NTm9kZSYgdGFpbCk7CisgICAgdm9pZCB2YXJpYWRpY1VuaW9uTWV0
aG9kKGNvbnN0IFdlYkRPTShOb2RlIG9yIERPTVN0cmluZykmIGhlYWQsIGNvbnN0IFdlYkRPTShO
b2RlIG9yIERPTVN0cmluZykmIHRhaWwpOwogCiAgICAgV2ViQ29yZTo6VGVzdE9iaiogaW1wbCgp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCmluZGV4IDI5NmRhOTU4
NDVmZDA4NzYxODZiMzE2ZjY2MTJmMDhkNGI1YWE2N2UuLjU0NDE2NTNmNzcxZDVmZjM2ZjczYjUx
OTllOWVkNWQ5N2UyMjkzNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCkBA
IC0zMiw2ICszMiw4IEBACiAjaW5jbHVkZSAiYW55LmgiCiAjaW5jbHVkZSAiYm9vbC5oIgogI2lu
Y2x1ZGUgImdvYmplY3QvQ29udmVydFRvVVRGOFN0cmluZy5oIgorI2luY2x1ZGUgIndlYmtpdC9X
ZWJLaXRET00oTm9kZSBvciBET01TdHJpbmcpLmgiCisjaW5jbHVkZSAid2Via2l0L1dlYktpdERP
TShOb2RlIG9yIERPTVN0cmluZylQcml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0L1dlYktpdERP
TURpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NRGljdGlvbmFyeVByaXZh
dGUuaCIKICNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NRG9jdW1lbnQuaCIKQEAgLTE0OTksNiAr
MTUwMSwyNyBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3ZhcmlhZGljX25vZGVfbWV0aG9kKFdlYktp
dERPTVRlc3RPYmoqIHNlbGYsIFdlYktpdERPTU5vZGUqCiAgICAgaXRlbS0+dmFyaWFkaWNOb2Rl
TWV0aG9kKGNvbnZlcnRlZEhlYWQsIGNvbnZlcnRlZFRhaWwpOwogfQogCit2b2lkCit3ZWJraXRf
ZG9tX3Rlc3Rfb2JqX3ZhcmlhZGljX3VuaW9uX21ldGhvZChXZWJLaXRET01UZXN0T2JqKiBzZWxm
LCBXZWJLaXRET00oTm9kZSBvciBET01TdHJpbmcpKiBoZWFkLCBXZWJLaXRET00oTm9kZSBvciBE
T01TdHJpbmcpKiB0YWlsKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7CisgICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIFdlYkNvcmU6OlRlc3RPYmoq
IGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgZ19yZXR1cm5faWZfZmFpbChoZWFkKTsK
KyAgICBnX3JldHVybl9pZl9mYWlsKHRhaWwpOworICAgIFdlYkNvcmU6OihOb2RlIG9yIERPTVN0
cmluZykqIGNvbnZlcnRlZEhlYWQgPSAwOworICAgIGlmIChoZWFkKSB7CisgICAgICAgIGNvbnZl
cnRlZEhlYWQgPSBXZWJLaXQ6OmNvcmUoaGVhZCk7CisgICAgICAgIGdfcmV0dXJuX2lmX2ZhaWwo
Y29udmVydGVkSGVhZCk7CisgICAgfQorICAgIFdlYkNvcmU6OihOb2RlIG9yIERPTVN0cmluZykq
IGNvbnZlcnRlZFRhaWwgPSAwOworICAgIGlmICh0YWlsKSB7CisgICAgICAgIGNvbnZlcnRlZFRh
aWwgPSBXZWJLaXQ6OmNvcmUodGFpbCk7CisgICAgICAgIGdfcmV0dXJuX2lmX2ZhaWwoY29udmVy
dGVkVGFpbCk7CisgICAgfQorICAgIGl0ZW0tPnZhcmlhZGljVW5pb25NZXRob2QoY29udmVydGVk
SGVhZCwgY29udmVydGVkVGFpbCk7Cit9CisKIGdsb25nCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dl
dF9yZWFkX29ubHlfbG9uZ19hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRE
T01UZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVj
dC9XZWJLaXRET01UZXN0T2JqLmgKaW5kZXggMTc2ZDViMDBmNGQ0NTJjNTIxMDVjZGUxNThhNjky
NGIyYzgzYTEzYy4uZjgzYTc1ZmJjZTY4MzdmYzJiMWFkNzFhMTBiMzVhZjZjMTZmYTA0MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2Vi
S2l0RE9NVGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaApAQCAtNTIyLDYgKzUyMiwxOCBAQCBXRUJLSVRf
QVBJIHZvaWQKIHdlYmtpdF9kb21fdGVzdF9vYmpfdmFyaWFkaWNfbm9kZV9tZXRob2QoV2ViS2l0
RE9NVGVzdE9iaiogc2VsZiwgV2ViS2l0RE9NTm9kZSogaGVhZCwgV2ViS2l0RE9NTm9kZSogdGFp
bCk7CiAKIC8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial92YXJpYWRpY191bmlvbl9tZXRob2Q6
CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICogQGhlYWQ6IEEgI1dlYktpdERPTShO
b2RlIG9yIERPTVN0cmluZykKKyAqIEB0YWlsOiBBICNXZWJLaXRET00oTm9kZSBvciBET01TdHJp
bmcpCisgKgorICogUmV0dXJuczoKKyAqCisqKi8KK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2Rv
bV90ZXN0X29ial92YXJpYWRpY191bmlvbl9tZXRob2QoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwg
V2ViS2l0RE9NKE5vZGUgb3IgRE9NU3RyaW5nKSogaGVhZCwgV2ViS2l0RE9NKE5vZGUgb3IgRE9N
U3RyaW5nKSogdGFpbCk7CisKKy8qKgogICogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfcmVhZF9v
bmx5X2xvbmdfYXR0cjoKICAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCiAgKgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNw
cAppbmRleCAzMTk1NWJhZTI3Y2I1YmNkOWIzYTEyMDU5MzYyZTZmMmNmNTdiMDgwLi5hZDUyMmIx
MmU1MDI1NTZkZWFiNDQxZTM5MTE2NDYyMGRmOGQxNTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtMjgsNiAr
MjgsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIklEQkJpbmRpbmdVdGls
aXRpZXMuaCIKICNpbmNsdWRlICJJREJLZXkuaCIKKyNpbmNsdWRlICJKUyhOb2RlIG9yIERPTVN0
cmluZykuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTVN0cmlu
Z0xpc3QuaCIKICNpbmNsdWRlICJKU0RvY3VtZW50LmgiCkBAIC0zMjQsNiArMzI1LDcgQEAgc3Rh
dGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialByb3RvdHlwZVRhYmxlVmFsdWVzW10g
PQogICAgIHsgInZhcmlhZGljU3RyaW5nTWV0aG9kIiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rp
b24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25WYXJpYWRpY1N0cmluZ01ldGhvZCksIChpbnRwdHJfdCkyLCBOb0ludHJpbnNp
YyB9LAogICAgIHsgInZhcmlhZGljRG91YmxlTWV0aG9kIiwgRG9udERlbGV0ZSB8IEpTQzo6RnVu
Y3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJsZU1ldGhvZCksIChpbnRwdHJfdCkyLCBOb0ludHJp
bnNpYyB9LAogICAgIHsgInZhcmlhZGljTm9kZU1ldGhvZCIsIERvbnREZWxldGUgfCBKU0M6OkZ1
bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNOb2RlTWV0aG9kKSwgKGludHB0cl90KTIsIE5vSW50cmlu
c2ljIH0sCisgICAgeyAidmFyaWFkaWNVbmlvbk1ldGhvZCIsIERvbnREZWxldGUgfCBKU0M6OkZ1
bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNVbmlvbk1ldGhvZCksIChpbnRwdHJfdCkyLCBOb0ludHJp
bnNpYyB9LAogICAgIHsgMCwgMCwgMCwgMCwgTm9JbnRyaW5zaWMgfQogfTsKIApAQCAtMjY3NSw2
ICsyNjc3LDI5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVNZXRob2QoRXhlY1N0CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljVW5pb25NZXRob2QoRXhlY1N0YXRl
KiBleGVjKQoreworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgp
OworICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKCZKU1Rlc3RPYmo6OnNfaW5mbykpCisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKKyAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICZKU1Rlc3RPYmo6OnNfaW5mbyk7Cisg
ICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBs
KCkpOworICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQorICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsK
KyAgICAoTm9kZSBvciBET01TdHJpbmcpKiBoZWFkKHRvKE5vZGUgb3IgRE9NU3RyaW5nKShNQVlC
RV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSk7CisgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOworICAgIFZlY3RvcjwoTm9kZSBvciBET01TdHJpbmcpKj4gdGFpbDsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kp
IHsKKyAgICAgICAgaWYgKCFleGVjLT5hcmd1bWVudChpKS5pbmhlcml0cygmSlMoTm9kZSBvciBE
T01TdHJpbmcpOjpzX2luZm8pKQorICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYyk7CisgICAgICAgIHRhaWwuYXBwZW5kKHRvKE5vZGUgb3IgRE9NU3RyaW5nKShleGVjLT5h
cmd1bWVudChpKSkpOworICAgIH0KKyAgICBpbXBsLT52YXJpYWRpY1VuaW9uTWV0aG9kKGhlYWQs
IHRhaWwpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisK
IHZvaWQgSlNUZXN0T2JqOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCiB7CiAgICAgSlNUZXN0T2JqKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE9i
aio+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5oCmluZGV4IDk3OGQwMWUyMjlkY2IxZDNkZDQxNmZkMmJmZWEzNzY0YTI2
MzA1OWEuLmJhMjc0MTVlMGVjNTQxYjY1YThlNmY3NmZhYTk2Yjg3OWEyZGVkYmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgK
QEAgLTIxOCw2ICsyMTgsNyBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpY3RGdW5jdGlvbihKU0M6OgogSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNT
dHJpbmdNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljRG91YmxlTWV0aG9kKEpT
Qzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsK
K0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvblZhcmlhZGljVW5pb25NZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKIC8vIEF0dHJpYnV0ZXMK
IAogSlNDOjpKU1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5TG9uZ0F0dHIoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaAppbmRleCA2NTE2
MDBhNWZkNzk1ZmYwZWRkYzRmNGZmMDg3ZDQwZTVmMDBjNWRlLi42NjA2YmIxNDZhMGJlMDFmMDNh
NTU3YmE3OGI4Nzc1ZWEzZDUzODhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5oCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpZiBXRUJLSVRfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSBXRUJLSVRfVkVSU0lPTl9MQVRFU1QK
IAorQGNsYXNzIERPTShOb2RlIG9yIERPTVN0cmluZyk7CiBAY2xhc3MgRE9NRGljdGlvbmFyeTsK
IEBjbGFzcyBET01Eb2N1bWVudDsKIEBjbGFzcyBET01JREJLZXk7CkBAIC0xNzcsNiArMTc4LDcg
QEAgZW51bSB7CiAtICh2b2lkKXZhcmlhZGljU3RyaW5nTWV0aG9kOihOU1N0cmluZyAqKWhlYWQg
dGFpbDooTlNTdHJpbmcgKil0YWlsOwogLSAodm9pZCl2YXJpYWRpY0RvdWJsZU1ldGhvZDooZG91
YmxlKWhlYWQgdGFpbDooZG91YmxlKXRhaWw7CiAtICh2b2lkKXZhcmlhZGljTm9kZU1ldGhvZDoo
RE9NTm9kZSAqKWhlYWQgdGFpbDooRE9NTm9kZSAqKXRhaWw7CistICh2b2lkKXZhcmlhZGljVW5p
b25NZXRob2Q6KERPTShOb2RlIG9yIERPTVN0cmluZykgKiloZWFkIHRhaWw6KERPTShOb2RlIG9y
IERPTVN0cmluZykgKil0YWlsOwogQGVuZAogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tCmluZGV4IGUx
NGM2NTcxZDllZGEyNjIzNWQ0OGE3YjA5Y2EyMzllZDM1ZDFlZGMuLjA1YzZlMjk2OWNiZjZkMDYz
MzAxMTVjZmYwMmVmZmU0YmNkMTJiNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQpAQCAtMjksNiArMjksOCBA
QAogCiAjaW1wb3J0ICJET01UZXN0T2JqLmgiCiAKKyNpbXBvcnQgIihOb2RlIG9yIERPTVN0cmlu
ZykuaCIKKyNpbXBvcnQgIkRPTShOb2RlIG9yIERPTVN0cmluZylJbnRlcm5hbC5oIgogI2ltcG9y
dCAiRE9NQmxvYkludGVybmFsLmgiCiAjaW1wb3J0ICJET01DU1NSdWxlSW50ZXJuYWwuaCIKICNp
bXBvcnQgIkRPTUNTU1ZhbHVlSW50ZXJuYWwuaCIKQEAgLTEwNTksNiArMTA2MSwxMiBAQCAtICh2
b2lkKXZhcmlhZGljTm9kZU1ldGhvZDooRE9NTm9kZSAqKWhlYWQgdGFpbDooRE9NTm9kZSAqKXRh
aWwKICAgICBJTVBMLT52YXJpYWRpY05vZGVNZXRob2QoY29yZShoZWFkKSwgY29yZSh0YWlsKSk7
CiB9CiAKKy0gKHZvaWQpdmFyaWFkaWNVbmlvbk1ldGhvZDooRE9NKE5vZGUgb3IgRE9NU3RyaW5n
KSAqKWhlYWQgdGFpbDooRE9NKE5vZGUgb3IgRE9NU3RyaW5nKSAqKXRhaWwKK3sKKyAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgSU1QTC0+dmFyaWFkaWNVbmlv
bk1ldGhvZChjb3JlKGhlYWQpLCBjb3JlKHRhaWwpKTsKK30KKwogQGVuZAogCiBXZWJDb3JlOjpU
ZXN0T2JqKiBjb3JlKERPTVRlc3RPYmogKndyYXBwZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKaW5kZXggZjlkMDY1ZmExODZlZTE4NWJm
NDY5ZTk2MDI4ZmVlNjUxZjRiMTZjNi4uNTEwZTIzYzQ2Mjk3NmNiYTNmNjlhOTIwMWNhNGYyMGNk
ZTMxNDU3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Rlc3RPYmouaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9U
ZXN0T2JqLmlkbApAQCAtMjY2LDQgKzI2Niw2IEBACiAgICAgdm9pZCB2YXJpYWRpY1N0cmluZ01l
dGhvZChpbiBET01TdHJpbmcgaGVhZCwgaW4gRE9NU3RyaW5nLi4uIHRhaWwpOwogICAgIHZvaWQg
dmFyaWFkaWNEb3VibGVNZXRob2QoaW4gZG91YmxlIGhlYWQsIGluIGRvdWJsZS4uLiB0YWlsKTsK
ICAgICB2b2lkIHZhcmlhZGljTm9kZU1ldGhvZChpbiBOb2RlIGhlYWQsIGluIE5vZGUuLi4gdGFp
bCk7CisKKyAgICB2b2lkIHZhcmlhZGljVW5pb25NZXRob2QoKE5vZGUgb3IgRE9NU3RyaW5nKSBo
ZWFkLCAoTm9kZSBvciBET01TdHJpbmcpLi4uIHRhaWwpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKaW5kZXggMmRj
NzM2NjE4YTJiOTYxZDg5MmFlMWQwOWZiZmI4MzVlZjc4YjJkYi4uNGQ5YjQ3NTZjMjFhZTI1YjRm
ODBiYjViZmY2ZDM0NDBiZWZiNGZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKQEAgLTE5MzAsMTYgKzE5MzAsNDEg
QEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YXJpYWRpY05vZGVNZXRob2RDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmcKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdo
QXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4
VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgRVhDRVBUSU9OX0JMT0NLKE5v
ZGUqLCBoZWFkLCBWOE5vZGU6Okhhc0luc3RhbmNlKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFy
Z3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpID8gVjhOb2RlOjp0b05hdGl2ZSh2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+OjpDYXN0KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1
bHRJc1VuZGVmaW5lZCkpKSA6IDApOwotICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiB0YWlsOwor
ICAgIFZlY3RvcjxOb2RlKj4gdGFpbDsKICAgICBmb3IgKGludCBpID0gMTsgaSA8IGFyZ3MuTGVu
Z3RoKCk7ICsraSkgewotICAgICAgICBpZiAoIVY4Tm9kZTo6SGFzSW5zdGFuY2UoYXJnc1tpXSkp
Ci0gICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoMCwgYXJncy5HZXRJc29sYXRlKCkp
OwotICAgICAgICB0YWlsLmFwcGVuZChWOE5vZGU6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9i
amVjdD46OkNhc3QoYXJnc1tpXSkpKTsKKyAgICAgICAgdGFpbC5hcHBlbmQoVjhOb2RlOjpIYXNJ
bnN0YW5jZShhcmdzW2ldKSA/IFY4Tm9kZTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0
Pjo6Q2FzdChhcmdzW2ldKSkgOiAwKTsKICAgICB9CiAgICAgaW1wLT52YXJpYWRpY05vZGVNZXRo
b2QoaGVhZCwgdGFpbCk7CiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKK3N0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFyaWFkaWNVbmlvbk1ldGhvZENhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai52YXJpYWRp
Y1VuaW9uTWV0aG9kIik7CisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQorICAgICAgICByZXR1
cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CisgICAg
VGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKyAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICB7CisgICAgUmVmUHRyPE5vZGVPclN0cmluZz4gaGVh
ZCA9IChWOE5vZGU6Okhhc0luc3RhbmNlKGFyZ3NbMF0pID8gTm9kZU9yU3RyaW5nOjpjcmVhdGUo
VjhOb2RlOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSkg
OiBhcmdzWzBdLT5Jc1N0cmluZygpID8gTm9kZU9yU3RyaW5nOjpjcmVhdGUodG9XZWJDb3JlU3Ry
aW5nKGFyZ3NbMF0pKSA6IDApOworICAgIGlmIChVTkxJS0VMWSghaGVhZCkpIHsKKyAgICAgICAg
ZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgZ290byBmYWlsOworICAgIH0KKyAgICBW
ZWN0b3I8UmVmUHRyPE5vZGVPclN0cmluZz4gPiB0YWlsOworICAgIGZvciAoaW50IGkgPSAxOyBp
IDwgYXJncy5MZW5ndGgoKTsgKytpKSB7CisgICAgICAgIFJlZlB0cjxOb2RlT3JTdHJpbmc+IGl0
ZW0gPSAoVjhOb2RlOjpIYXNJbnN0YW5jZShhcmdzW2ldKSA/IE5vZGVPclN0cmluZzo6Y3JlYXRl
KFY4Tm9kZTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzW2ldKSkp
IDogYXJnc1tpXS0+SXNTdHJpbmcoKSA/IE5vZGVPclN0cmluZzo6Y3JlYXRlKHRvV2ViQ29yZVN0
cmluZyhhcmdzW2ldKSkgOiAwKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKCFpdGVtKSkKKyAgICAg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigwLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAg
ICAgIHRhaWwuYXBwZW5kKGl0ZW0pOworICAgIH0KKyAgICBpbXAtPnZhcmlhZGljVW5pb25NZXRo
b2QoaGVhZCwgdGFpbCk7CisgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CisgICAgfQorICAgIGZh
aWw6CisgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0T2JqVjhJbnRlcm5hbAogCiBzdGF0aWMgY29uc3QgVjhE
T01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIFY4VGVzdE9iakF0dHJzW10gPSB7CkBA
IC0yMTIzLDYgKzIxNDgsNyBAQCBzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRj
aGVkQ2FsbGJhY2sgVjhUZXN0T2JqQ2FsbGJhY2tzW10gPSB7CiAgICAgeyJzdHJpY3RGdW5jdGlv
biIsIFRlc3RPYmpWOEludGVybmFsOjpzdHJpY3RGdW5jdGlvbkNhbGxiYWNrfSwKICAgICB7InZh
cmlhZGljU3RyaW5nTWV0aG9kIiwgVGVzdE9ialY4SW50ZXJuYWw6OnZhcmlhZGljU3RyaW5nTWV0
aG9kQ2FsbGJhY2t9LAogICAgIHsidmFyaWFkaWNEb3VibGVNZXRob2QiLCBUZXN0T2JqVjhJbnRl
cm5hbDo6dmFyaWFkaWNEb3VibGVNZXRob2RDYWxsYmFja30sCisgICAgeyJ2YXJpYWRpY1VuaW9u
TWV0aG9kIiwgVGVzdE9ialY4SW50ZXJuYWw6OnZhcmlhZGljVW5pb25NZXRob2RDYWxsYmFja30s
CiB9OwogCiBzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQ29uc3RhbnQg
VjhUZXN0T2JqQ29uc3RzW10gPSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5k
ZXggYTYwNWNkMDhlYmRlN2ZiOWU3MjJkOTgzMjEwZmE0MmQ4ZDgzNmJhOS4uYWY3NTk1OTc2MWZk
YjA2ZGNkMzQ4MjNkZWRkNWE1ZmFjNDM5N2YwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmNwcApAQCAtNjIyLDYgKzYyMiw1NCBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnBhcnNlckFw
cGVuZENoaWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQpCiAgICAgQ2hpbGROb2RlSW5zZXJ0
aW9uTm90aWZpZXIodGhpcykubm90aWZ5KG5ld0NoaWxkLmdldCgpKTsKIH0KIAorUGFzc1JlZlB0
cjxOb2RlPiBDb250YWluZXJOb2RlOjptdXRhdGlvbk1ldGhvZE1hY3JvKGNvbnN0IFZlY3RvcjxS
ZWZQdHI8Tm9kZU9yU3RyaW5nPiA+JiBub2RlcywgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAg
UmVmUHRyPE5vZGU+IG5vZGU7CisgICAgaWYgKG5vZGVzLnNpemUoKSA9PSAxKQorICAgICAgICBu
b2RlID0gbm9kZXNbMF0tPnRvTm9kZShkb2N1bWVudCgpKTsKKyAgICBlbHNlICB7CisgICAgICAg
IG5vZGUgPSBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7CisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbm9kZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIG5v
ZGUtPmFwcGVuZENoaWxkKG5vZGVzW2ldLT50b05vZGUoZG9jdW1lbnQoKSksIGVjKTsKKyAgICAg
ICAgICAgIGlmIChlYykKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0K
KyAgICByZXR1cm4gbm9kZS5yZWxlYXNlKCk7Cit9CisKK3ZvaWQgQ29udGFpbmVyTm9kZTo6cHJl
cGVuZChQYXNzUmVmUHRyPE5vZGVPclN0cmluZz4gbm9kZU9yU3RyaW5nLCBFeGNlcHRpb25Db2Rl
JiBlYykKK3sKKyAgICBWZWN0b3I8UmVmUHRyPE5vZGVPclN0cmluZz4gPiBub2RlczsKKyAgICBu
b2Rlcy5hcHBlbmQobm9kZU9yU3RyaW5nKTsKKyAgICBwcmVwZW5kKG5vZGVzLCBlYyk7Cit9Cisv
LyB2b2lkIENvbnRhaW5lck5vZGU6OnByZXBlbmQoY29uc3QgTm9kZU9yU3RyaW5nJiBub2RlT3JT
dHJpbmcsIEV4Y2VwdGlvbkNvZGUmIGVjKQorLy8geworLy8gICAgIFJlZlB0cjxOb2RlPiBub2Rl
ID0gbm9kZU9yU3RyaW5nLnRvTm9kZShkb2N1bWVudCgpKTsKKy8vICAgICBpbnNlcnRCZWZvcmUo
bm9kZS5nZXQoKSwgZmlyc3RDaGlsZCgpLCBlYyk7CisvLyB9CisKK3ZvaWQgQ29udGFpbmVyTm9k
ZTo6cHJlcGVuZChjb25zdCBWZWN0b3I8UmVmUHRyPE5vZGVPclN0cmluZz4gPiYgbm9kZXMsIEV4
Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIEFTU0VSVChub2RlVHlwZSgpID09IERPQ1VNRU5UX05P
REUgfHwgbm9kZVR5cGUoKSA9PSBET0NVTUVOVF9GUkFHTUVOVF9OT0RFIHx8IG5vZGVUeXBlKCkg
PT0gRUxFTUVOVF9OT0RFKTsKKworICAgIFJlZlB0cjxOb2RlPiBub2RlVG9QcmVwZW5kID0gbXV0
YXRpb25NZXRob2RNYWNybyhub2RlcywgZWMpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJu
OworICAgIGluc2VydEJlZm9yZShub2RlVG9QcmVwZW5kLCBmaXJzdENoaWxkKCksIGVjKTsKK30K
Kwordm9pZCBDb250YWluZXJOb2RlOjphcHBlbmQoY29uc3QgVmVjdG9yPFJlZlB0cjxOb2RlT3JT
dHJpbmc+ID4mIG5vZGVzLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBBU1NFUlQobm9kZVR5
cGUoKSA9PSBET0NVTUVOVF9OT0RFIHx8IG5vZGVUeXBlKCkgPT0gRE9DVU1FTlRfRlJBR01FTlRf
Tk9ERSB8fCBub2RlVHlwZSgpID09IEVMRU1FTlRfTk9ERSk7CisKKyAgICBSZWZQdHI8Tm9kZT4g
bm9kZVRvQXBwZW5kID0gbXV0YXRpb25NZXRob2RNYWNybyhub2RlcywgZWMpOworICAgIGlmIChl
YykKKyAgICAgICAgcmV0dXJuOworICAgIGFwcGVuZENoaWxkKG5vZGVUb0FwcGVuZCwgZWMpOwor
fQorCiB2b2lkIENvbnRhaW5lck5vZGU6OnN1c3BlbmRQb3N0QXR0YWNoQ2FsbGJhY2tzKCkKIHsK
ICAgICBpZiAoIXNfYXR0YWNoRGVwdGgpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db250YWluZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCmlu
ZGV4IDY5YjVmNDIxYWNlY2ZjMjYxZmI0ZWE0YzRlZDkxMTZjYmEzMWE5OTkuLjBkODc2ZWU2MDEx
MDJjZGQxNGE3OWExNzkxZDIxODVlOWJhZmFlZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db250YWluZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5v
ZGUuaApAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZVBsYWNlaG9s
ZGVyLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgorI2luY2x1ZGUgIk5vZGVPclN0cmluZy5oIgogCiAj
aW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTMzLDcg
KzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmxvYXRQb2ludDsKLSAgICAK
KwogdHlwZWRlZiB2b2lkICgqTm9kZUNhbGxiYWNrKShOb2RlKiwgdW5zaWduZWQpOwogCiBuYW1l
c3BhY2UgUHJpdmF0ZSB7IApAQCAtOTMsNiArOTQsMTEgQEAgcHVibGljOgogICAgIGJvb2wgcmVt
b3ZlQ2hpbGQoTm9kZSogY2hpbGQsIEV4Y2VwdGlvbkNvZGUmID0gQVNTRVJUX05PX0VYQ0VQVElP
Tik7CiAgICAgYm9vbCBhcHBlbmRDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBFeGNl
cHRpb25Db2RlJiA9IEFTU0VSVF9OT19FWENFUFRJT04sIGJvb2wgc2hvdWxkTGF6eUF0dGFjaCA9
IGZhbHNlKTsKIAorICAgIHZvaWQgcHJlcGVuZChQYXNzUmVmUHRyPE5vZGVPclN0cmluZz4sIEV4
Y2VwdGlvbkNvZGUmKTsKKworICAgIHZvaWQgcHJlcGVuZChjb25zdCBWZWN0b3I8UmVmUHRyPE5v
ZGVPclN0cmluZz4gPiYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGFwcGVuZChjb25zdCBW
ZWN0b3I8UmVmUHRyPE5vZGVPclN0cmluZz4gPiYsIEV4Y2VwdGlvbkNvZGUmKTsKKwogICAgIC8v
IFRoZXNlIG1ldGhvZHMgYXJlIG9ubHkgdXNlZCBkdXJpbmcgcGFyc2luZy4KICAgICAvLyBUaGV5
IGRvbid0IHNlbmQgRE9NIG11dGF0aW9uIGV2ZW50cyBvciBoYW5kbGUgcmVwYXJlbnRpbmcuCiAg
ICAgLy8gSG93ZXZlciwgYXJiaXRyYXJ5IGNvZGUgbWF5IGJlIHJ1biBieSBiZWZvcmVsb2FkIGhh
bmRsZXJzLgpAQCAtMTY0LDYgKzE3MCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVCZXR3
ZWVuKE5vZGUqIHByZXZpb3VzQ2hpbGQsIE5vZGUqIG5leHRDaGlsZCwgTm9kZSogb2xkQ2hpbGQp
OwogICAgIHZvaWQgaW5zZXJ0QmVmb3JlQ29tbW9uKE5vZGUqIG5leHRDaGlsZCwgTm9kZSogb2xk
Q2hpbGQpOwogCisgICAgUGFzc1JlZlB0cjxOb2RlPiBtdXRhdGlvbk1ldGhvZE1hY3JvKGNvbnN0
IFZlY3RvcjxSZWZQdHI8Tm9kZU9yU3RyaW5nPiA+JiwgRXhjZXB0aW9uQ29kZSYpOworCiAgICAg
c3RhdGljIHZvaWQgZGlzcGF0Y2hQb3N0QXR0YWNoQ2FsbGJhY2tzKCk7CiAKICAgICBib29sIGdl
dFVwcGVyTGVmdENvcm5lcihGbG9hdFBvaW50JikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50Lmlk
bAppbmRleCAyZWM0MWUzZmRiOGRmOTJjYTliMTc3OWEzMmM3YmEwNDI5NGU0YWY5Li42NDc3MDZh
MzdlYmRhMzE5YzhjMDVlZmZhYmM2NjZhZWM2MDRiMGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5p
ZGwKQEAgLTI0NCw2ICsyNDQsMTQgQEAKICAgICBOb2RlTGlzdCBxdWVyeVNlbGVjdG9yQWxsKGlu
IERPTVN0cmluZyBzZWxlY3RvcnMpCiAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogCisg
ICAgLy8gRE9NIDQKKyNpZiBkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpICYmIExBTkdVQUdF
X0pBVkFTQ1JJUFQKKyAgICB2b2lkIHByZXBlbmQoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLiBub2Rl
cykKKyAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgdm9pZCBhcHBlbmQoKE5vZGUg
b3IgRE9NU3RyaW5nKS4uLiBub2RlcykKKyAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7Cisj
ZW5kaWYKKwogI2lmIGRlZmluZWQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAmJiBFTkFCTEVfRlVM
TFNDUkVFTl9BUEkKICAgICAvLyBNb3ppbGxhIHZlcnNpb24KICAgICBbVjhFbmFibGVkQXRSdW50
aW1lXSByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB3ZWJraXRJc0Z1bGxTY3JlZW47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5pZGwKaW5kZXggYmNmMDM1YzEzNWY2OTRhMjRm
YjNmN2E3M2ZkMDVmM2ZhMTBmODRlNy4uZmY1ZGY0OTIwN2I4NTc2NDcxMGFlY2NhN2EyODM4Zjk4
ZTdlYWYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmlkbApAQCAtMjMs
NSArMjMsMTIgQEAgaW50ZXJmYWNlIERvY3VtZW50RnJhZ21lbnQgOiBOb2RlIHsKICAgICAgICAg
cmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgTm9kZUxpc3QgcXVlcnlTZWxlY3RvckFsbChpbiBE
T01TdHJpbmcgc2VsZWN0b3JzKQogICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLX07CiAK
KyAgICAvLyBET00gNAorI2lmIGRlZmluZWQoTEFOR1VBR0VfSkFWQVNDUklQVCkgJiYgTEFOR1VB
R0VfSkFWQVNDUklQVAorICAgIHZvaWQgcHJlcGVuZCgoTm9kZSBvciBET01TdHJpbmcpLi4uIG5v
ZGVzKQorICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICB2b2lkIGFwcGVuZCgoTm9k
ZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKQorICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsK
KyNlbmRpZgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAppbmRleCA5NzI0Yjg4MzA2YzcyNTljNjdj
ZmFmMTU5ZDVhYjRkNjM2ZWNlNWQxLi45YTE0ZjU0NzQyMGQ5MzYwOTg5NWQwMmIzNDlhMWU5NTI2
NDg2YzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCkBAIC0xMjUsNiArMTI1LDEyIEBACiAgICAg
Ly8gRE9NIDQKICAgICB2b2lkIHJlbW92ZSgpCiAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24p
OworI2lmIGRlZmluZWQoTEFOR1VBR0VfSkFWQVNDUklQVCkgJiYgTEFOR1VBR0VfSkFWQVNDUklQ
VAorICAgIHZvaWQgcHJlcGVuZCgoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVzKQorICAgICAg
ICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICB2b2lkIGFwcGVuZCgoTm9kZSBvciBET01TdHJp
bmcpLi4uIG5vZGVzKQorICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyNlbmRpZgogCiAj
aWYgZGVmaW5lZChMQU5HVUFHRV9KQVZBU0NSSVBUKSAmJiBMQU5HVUFHRV9KQVZBU0NSSVBUCiAg
ICAgLy8gQ1NTT00gVmlldyBNb2R1bGUgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCA5NmU2MjExZDY3OTIw
ZmFiMDVjNzkxNzViMjQxZjEzOTA4YmUwZjIxLi41ZmE4MjFmMzFiMjk0NzRmZjI0NTA5YzdlMDUw
YmYzMTc4YWY2NzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTE5Niw2ICsxOTYsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBhcHBlbmRDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBFeGNlcHRpb25D
b2RlJiwgYm9vbCBzaG91bGRMYXp5QXR0YWNoID0gZmFsc2UpOwogCiAgICAgdm9pZCByZW1vdmUo
RXhjZXB0aW9uQ29kZSYpOworCiAgICAgYm9vbCBoYXNDaGlsZE5vZGVzKCkgY29uc3QgeyByZXR1
cm4gZmlyc3RDaGlsZCgpOyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPE5vZGU+IGNsb25lTm9k
ZShib29sIGRlZXApID0gMDsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSgpIGNv
bnN0IHsgcmV0dXJuIHZpcnR1YWxMb2NhbE5hbWUoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGVPclN0cmluZy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVPclN0cmlu
Zy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjdmODk5YjQyNWEyMzZkNjEwZDkzNjgyZjAzN2I5NTY3N2U4YzJjOTgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZU9yU3RyaW5nLmgKQEAg
LTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgTm9kZU9yU3RyaW5nX2gKKyNkZWZpbmUgTm9kZU9yU3RyaW5n
X2gKKworI2luY2x1ZGUgIlRleHQuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
Tm9kZU9yU3RyaW5nIDogcHVibGljIFJlZkNvdW50ZWQ8Tm9kZU9yU3RyaW5nPiB7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Tm9kZU9yU3RyaW5nPiBjcmVhdGUoTm9kZSogbm9kZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTm9kZU9yU3RyaW5nKG5vZGUpKTsK
KyAgICB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Tm9kZU9yU3RyaW5nPiBjcmVhdGUoU3RyaW5n
IHN0cmluZykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTm9kZU9yU3RyaW5n
KHN0cmluZykpOworICAgIH0KKworICAgIFBhc3NSZWZQdHI8Tm9kZT4gdG9Ob2RlKERvY3VtZW50
KikgY29uc3Q7Citwcml2YXRlOgorICAgIGV4cGxpY2l0IE5vZGVPclN0cmluZyhOb2RlKiBub2Rl
KSA6IG1fbm9kZShub2RlKSwgbV9pc05vZGUodHJ1ZSkgeyB9CisgICAgZXhwbGljaXQgTm9kZU9y
U3RyaW5nKFN0cmluZyBzdHJpbmcpIDogbV9zdHJpbmcoc3RyaW5nKSwgbV9pc05vZGUoZmFsc2Up
IHsgfQorCisgICAgTm9kZSogbV9ub2RlOworICAgIFN0cmluZyBtX3N0cmluZzsKKyAgICBib29s
IG1faXNOb2RlOworfTsKKworaW5saW5lIFBhc3NSZWZQdHI8Tm9kZT4gTm9kZU9yU3RyaW5nOjp0
b05vZGUoRG9jdW1lbnQqIGRvY3VtZW50KSBjb25zdAoreworICAgIGlmIChtX2lzTm9kZSkKKyAg
ICAgICAgcmV0dXJuIG1fbm9kZTsKKyAgICByZXR1cm4gVGV4dDo6Y3JlYXRlKGRvY3VtZW50LCBt
X3N0cmluZyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE5vZGVP
clN0cmluZ19oCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9wcmVw
ZW5kLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L3ByZXBlbmQt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkNWJlY2I3MDk0ODYwYTBkNzVhYmUyZTA3OTAxOTkw
OGU5NjhlZjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVu
dC9wcmVwZW5kLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitUaGlzIHRlc3RzIHRoZSBE
T00gNCBwcmVwZW5kIG1ldGhvZCBvbiBhIERvY3VtZW50LgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBkb2N1bWVudC5maXJzdENoaWxkIGlzIGEKK1BBU1MgZG9jdW1lbnQu
Y2hpbGROb2Rlc1sxXSBpcyBiCitQQVNTIGRvY3VtZW50LnByZXBlbmQobnVsbCkgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgZG9jdW1lbnQucHJlcGVuZCh1bmRl
ZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIGRvY3Vt
ZW50LnByZXBlbmQoZG9jdW1lbnQuY3JlYXRlQ29tbWVudCgiYyIpLCBudWxsKSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBkb2N1bWVudC5maXJzdENoaWxkIGlz
IGEKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9wcmVwZW5kLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9wcmVwZW5kLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzE1
YmQzZTBlYTMxOGVmZWI3MjgyNWY4NGYwODAxNzc1MWI5YmMyNAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L3ByZXBlbmQuaHRtbApAQCAtMCwwICsxLDIz
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPGRpdiBpZD0idGVzdCI+PC9kaXY+Cis8c2NyaXB0Pgor
CitkZXNjcmlwdGlvbignVGhpcyB0ZXN0cyB0aGUgRE9NIDQgcHJlcGVuZCBtZXRob2Qgb24gYSBE
b2N1bWVudC4nKTsKKwordmFyIGEgPSBkb2N1bWVudC5jcmVhdGVDb21tZW50KCdhJyk7Cit2YXIg
YiA9IGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoJ2InKTsKKworZG9jdW1lbnQucHJlcGVuZChhLCBi
KQorCitzaG91bGRCZSgnZG9jdW1lbnQuZmlyc3RDaGlsZCcsICdhJyk7CitzaG91bGRCZSgnZG9j
dW1lbnQuY2hpbGROb2Rlc1sxXScsICdiJyk7CisKK3Nob3VsZFRocm93KCdkb2N1bWVudC5wcmVw
ZW5kKG51bGwpJyk7CitzaG91bGRUaHJvdygnZG9jdW1lbnQucHJlcGVuZCh1bmRlZmluZWQpJyk7
CisKK3Nob3VsZFRocm93KCdkb2N1bWVudC5wcmVwZW5kKGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQo
ImMiKSwgbnVsbCknKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5maXJzdENoaWxkJywgJ2EnKTsKKwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L3By
ZXBlbmQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9wcmVwZW5k
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MTMxMjZmMWRjZGNhZWU2NjJkZTZiMjg4ZWJiZmU1
YjU1MzY0Yzk0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVu
dC9wcmVwZW5kLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI0IEBACitUaGlzIHRlc3RzIHRoZSBE
T00gNCBwcmVwZW5kIG1ldGhvZCBvbiBhbiBFbGVtZW50LgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyB0ZXN0RGl2LmNoaWxkTm9kZXMubGVuZ3RoIGlzIDQKK1BBU1MgdGVz
dERpdi5maXJzdENoaWxkIGlzIGEKK1BBU1MgdGVzdERpdi5jaGlsZE5vZGVzWzFdIGlzIGIKK1BB
U1MgdGVzdERpdi5jaGlsZE5vZGVzWzJdLmRhdGEgaXMgImMiCitQQVNTIHRlc3REaXYubGFzdENo
aWxkIGlzIHRleHQKK1BBU1MgdGVzdERpdi5wcmVwZW5kKG51bGwpIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIHRlc3REaXYucHJlcGVuZCh1bmRlZmluZWQpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIHRlc3REaXYucHJlcGVu
ZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiYyIpLCBudWxsKSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyB0ZXN0RGl2LmNoaWxkTm9kZXMubGVuZ3RoIGlzIDQK
KzxkaXYgaWQ9InRlc3QiPjxhPjwvYT48Yj48L2I+Y3RleHQ8L2Rpdj4KK1BBU1MgYS5wcmVwZW5k
KHRleHQsIHRlc3REaXYpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSElFUkFSQ0hZX1JFUVVFU1Rf
RVJSOiBET00gRXhjZXB0aW9uIDMuCis8ZGl2IGlkPSJ0ZXN0Ij48YT48L2E+PGI+PC9iPmM8L2Rp
dj4KK1BBU1MgdGVzdERpdi5jaGlsZE5vZGVzLmxlbmd0aCBpcyAzCitQQVNTIHRlc3REaXYuZmly
c3RDaGlsZCBpcyBhCitQQVNTIHRlc3REaXYubGFzdENoaWxkLmRhdGEgaXMgImMiCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9wcmVwZW5kLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9FbGVtZW50L3ByZXBlbmQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNDAzY2Y0OGYzODI2MzE3
OWE1MDY5MzNjMDliZTMyYjI4NWRmYjkyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vRWxlbWVudC9wcmVwZW5kLmh0bWwKQEAgLTAsMCArMSwzNyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxkaXYgaWQ9InRlc3QiPjwvZGl2PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24o
J1RoaXMgdGVzdHMgdGhlIERPTSA0IHByZXBlbmQgbWV0aG9kIG9uIGFuIEVsZW1lbnQuJyk7CisK
K3ZhciB0ZXN0RGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QnKTsKK3Rlc3REaXYu
dGV4dENvbnRlbnQgPSAndGV4dCc7Cit2YXIgdGV4dCA9IHRlc3REaXYuZmlyc3RDaGlsZDsKK3Zh
ciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOwordmFyIGIgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdiJyk7CisKK3Rlc3REaXYucHJlcGVuZChhLCBiLCAnYycpCisKK3Nob3VsZEJl
KCd0ZXN0RGl2LmNoaWxkTm9kZXMubGVuZ3RoJywgJzQnKTsKK3Nob3VsZEJlKCd0ZXN0RGl2LmZp
cnN0Q2hpbGQnLCAnYScpOworc2hvdWxkQmUoJ3Rlc3REaXYuY2hpbGROb2Rlc1sxXScsICdiJyk7
CitzaG91bGRCZSgndGVzdERpdi5jaGlsZE5vZGVzWzJdLmRhdGEnLCAnImMiJyk7CitzaG91bGRC
ZSgndGVzdERpdi5sYXN0Q2hpbGQnLCAndGV4dCcpOworCitzaG91bGRUaHJvdygndGVzdERpdi5w
cmVwZW5kKG51bGwpJyk7CitzaG91bGRUaHJvdygndGVzdERpdi5wcmVwZW5kKHVuZGVmaW5lZCkn
KTsKKworc2hvdWxkVGhyb3coJ3Rlc3REaXYucHJlcGVuZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZSgiYyIpLCBudWxsKScpOworc2hvdWxkQmUoJ3Rlc3REaXYuY2hpbGROb2Rlcy5sZW5ndGgnLCAn
NCcpOworCitkZWJ1Zyh0ZXN0RGl2Lm91dGVySFRNTC5yZXBsYWNlKC88L2csICcmbHQ7JykpOwor
c2hvdWxkVGhyb3coJ2EucHJlcGVuZCh0ZXh0LCB0ZXN0RGl2KScpOworZGVidWcodGVzdERpdi5v
dXRlckhUTUwucmVwbGFjZSgvPC9nLCAnJmx0OycpKTsKKworc2hvdWxkQmUoJ3Rlc3REaXYuY2hp
bGROb2Rlcy5sZW5ndGgnLCAnMycpOworc2hvdWxkQmUoJ3Rlc3REaXYuZmlyc3RDaGlsZCcsICdh
Jyk7CitzaG91bGRCZSgndGVzdERpdi5sYXN0Q2hpbGQuZGF0YScsICciYyInKTsKKworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9kb2N1bWVudC1mcmFnbWVu
dC1wcmVwZW5kLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2RvY3VtZW50LWZy
YWdtZW50LXByZXBlbmQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTgyZTAzNzRmNDFhZDUy
NmYyMDUyNTk2NTFjODg2MDIzNDYyY2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9kb2N1bWVudC1mcmFnbWVudC1wcmVwZW5kLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE4IEBACitUaGlzIHRlc3RzIHRoZSBET00gNCBwcmVwZW5kIG1ldGhvZCBvbiBhIERvY3VtZW50
RnJhZ21lbnQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRvY3VtZW50
RnJhZ21lbnQuY2hpbGROb2Rlcy5sZW5ndGggaXMgNAorUEFTUyBkb2N1bWVudEZyYWdtZW50LmZp
cnN0Q2hpbGQgaXMgYQorUEFTUyBkb2N1bWVudEZyYWdtZW50LmNoaWxkTm9kZXNbMV0gaXMgYgor
UEFTUyBkb2N1bWVudEZyYWdtZW50LmNoaWxkTm9kZXNbMl0uZGF0YSBpcyAiYyIKK1BBU1MgZG9j
dW1lbnRGcmFnbWVudC5sYXN0Q2hpbGQgaXMgdGV4dAorUEFTUyBkb2N1bWVudEZyYWdtZW50LnBy
ZXBlbmQobnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1Mg
ZG9jdW1lbnRGcmFnbWVudC5wcmVwZW5kKHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogVHlwZSBlcnJvci4KK1BBU1MgZG9jdW1lbnRGcmFnbWVudC5wcmVwZW5kKGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKCJjIiksIG51bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5
cGUgZXJyb3IuCitQQVNTIGRvY3VtZW50RnJhZ21lbnQuY2hpbGROb2Rlcy5sZW5ndGggaXMgNAor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2RvY3VtZW50LWZyYWdtZW50LXByZXBlbmQuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2RvY3VtZW50LWZyYWdtZW50LXByZXBlbmQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yYzdhZDA5NDI0NjA2OGNhMmI4ODAzMGZkNWFkNmM2YzRiMjE0ODBiCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9jdW1lbnQtZnJhZ21lbnQtcHJl
cGVuZC5odG1sCkBAIC0wLDAgKzEsMjkgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8ZGl2IGlkPSJ0ZXN0
Ij48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCdUaGlzIHRlc3RzIHRoZSBET00gNCBw
cmVwZW5kIG1ldGhvZCBvbiBhIERvY3VtZW50RnJhZ21lbnQuJyk7CisKK3ZhciBkb2N1bWVudEZy
YWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOworZG9jdW1lbnRGcmFn
bWVudC50ZXh0Q29udGVudCA9ICd0ZXh0JzsKK3ZhciB0ZXh0ID0gZG9jdW1lbnRGcmFnbWVudC5m
aXJzdENoaWxkOwordmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7Cit2YXIgYiA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2InKTsKKworZG9jdW1lbnRGcmFnbWVudC5wcmVwZW5k
KGEsIGIsICdjJykKKworc2hvdWxkQmUoJ2RvY3VtZW50RnJhZ21lbnQuY2hpbGROb2Rlcy5sZW5n
dGgnLCAnNCcpOworc2hvdWxkQmUoJ2RvY3VtZW50RnJhZ21lbnQuZmlyc3RDaGlsZCcsICdhJyk7
CitzaG91bGRCZSgnZG9jdW1lbnRGcmFnbWVudC5jaGlsZE5vZGVzWzFdJywgJ2InKTsKK3Nob3Vs
ZEJlKCdkb2N1bWVudEZyYWdtZW50LmNoaWxkTm9kZXNbMl0uZGF0YScsICciYyInKTsKK3Nob3Vs
ZEJlKCdkb2N1bWVudEZyYWdtZW50Lmxhc3RDaGlsZCcsICd0ZXh0Jyk7CisKK3Nob3VsZFRocm93
KCdkb2N1bWVudEZyYWdtZW50LnByZXBlbmQobnVsbCknKTsKK3Nob3VsZFRocm93KCdkb2N1bWVu
dEZyYWdtZW50LnByZXBlbmQodW5kZWZpbmVkKScpOworCitzaG91bGRUaHJvdygnZG9jdW1lbnRG
cmFnbWVudC5wcmVwZW5kKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJjIiksIG51bGwpJyk7Citz
aG91bGRCZSgnZG9jdW1lbnRGcmFnbWVudC5jaGlsZE5vZGVzLmxlbmd0aCcsICc0Jyk7CisKKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256188</attachid>
            <date>2015-07-05 20:18:07 -0700</date>
            <delta_ts>2015-07-11 07:26:47 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-74648-20150705201710.patch</filename>
            <type>text/plain</type>
            <size>109315</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NjI5OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc1IEBACisyMDE1LTA3LTA1ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRE9NNDogcHJlcGVuZCwgYXBwZW5kLCBi
ZWZvcmUsIGFmdGVyICYgcmVwbGFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzQ2NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUZXN0czogZmFzdC9kb20vQ2hpbGROb2RlLWFmdGVyLmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvZG9tL0NoaWxkTm9kZS1iZWZvcmUuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9kb20vQ2hpbGROb2RlLXJlcGxhY2VXaXRoLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
ZG9tL1BhcmVudE5vZGUtYXBwZW5kLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL1BhcmVu
dE5vZGUtcHJlcGVuZC5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0JpbmRpbmdz
QWxsSW5PbmUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ2hhcmFjdGVyRGF0YUN1c3Rv
bS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNDaGFyYWN0ZXJEYXRhOjpiZWZvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6SlNDaGFyYWN0ZXJEYXRhOjphZnRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpKU0NoYXJhY3RlckRhdGE6OnJlcGxhY2VXaXRoKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNEb2N1bWVudDo6cHJlcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpK
U0RvY3VtZW50OjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SlNEb2N1bWVudDo6Y3JlYXRl
VG91Y2hMaXN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RvY3VtZW50RnJhZ21lbnRDdXN0
b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTRG9jdW1lbnRGcmFnbWVudDo6cHJl
cGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RvY3VtZW50RnJhZ21lbnQ6OmFwcGVuZCk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNEb2N1bWVudFR5cGVDdXN0b20uY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkpTRG9jdW1lbnRUeXBlOjpiZWZvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNEb2N1bWVudFR5cGU6OmFmdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRG9jdW1lbnRU
eXBlOjpyZXBsYWNlV2l0aCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNFbGVtZW50OjpiZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNFbGVtZW50Ojph
ZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU0VsZW1lbnQ6OnJlcGxhY2VXaXRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRWxlbWVudDo6cHJlcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpKU0Vs
ZW1lbnQ6OmFwcGVuZCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlT3JTdHJpbmcuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRvTm9kZU9yU3RyaW5nVmVjdG9yKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU05vZGVPclN0cmluZy5oOiBBZGRlZC4KKyAgICAgICAgKiBkb20v
Q2hpbGROb2RlLmlkbDoKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpjaGlsZEVsZW1lbnRDb3VudCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250YWluZXJOb2RlOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFp
bmVyTm9kZTo6cHJlcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjplbnN1
cmVDYWNoZWRIVE1MQ29sbGVjdGlvbik6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuaDoK
KyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjphcHBlbmRD
aGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpub2RlU2V0UHJlVHJhbnNmb3JtZWRGcm9tTm9kZU9y
U3RyaW5nVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmZpcnN0UHJlY2VkaW5nU2libGluZ05v
dEluTm9kZVNldCk6CisgICAgICAgIChXZWJDb3JlOjpmaXJzdEZvbGxvd2luZ1NpYmxpbmdOb3RJ
bk5vZGVTZXQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6YmVmb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGU6OmFmdGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlcGxhY2VXaXRo
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlbW92ZSk6CisgICAgICAgICogZG9tL05vZGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Omhhc0NoaWxkTm9kZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6aXNFbGVtZW50Tm9kZSk6CisgICAgICAgICogZG9tL05vZGVPclN0cmluZy5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydE5vZGVzT3JTdHJpbmdzSW50b05v
ZGUpOgorICAgICAgICAqIGRvbS9Ob2RlT3JTdHJpbmcuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpOb2RlT3JTdHJpbmc6Ok5vZGVPclN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
T3JTdHJpbmc6On5Ob2RlT3JTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZU9yU3RyaW5n
Ojp0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVPclN0cmluZzo6bm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlT3JTdHJpbmc6OnN0cmluZyk6CisgICAgICAgICogZG9tL1BhcmVudE5v
ZGUuaWRsOgorCiAyMDE1LTA3LTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgW1dLMl0gV2ViQmFja0ZvcndhcmRMaXN0SXRlbXMnIHBhZ2VTdGF0ZSBpcyBub3Qg
a2VwdCB1cC10by1kYXRlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTg2Mjk4
KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEw
ODgsNiArMTA4OCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9qcy9KU0Nh
bGxiYWNrRGF0YS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0
b20uY3BwCisgICAgYmluZGluZ3MvanMvSlNDaGFyYWN0ZXJEYXRhQ3VzdG9tLmNwcAogICAgIGJp
bmRpbmdzL2pzL0pTQ29tbWFuZExpbmVBUElIb3N0Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pz
L0pTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlci5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0NyeXB0b0Fs
Z29yaXRobURpY3Rpb25hcnkuY3BwCkBAIC0xMTE5LDYgKzExMjAsOCBAQCBzZXQoV2ViQ29yZV9T
T1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNw
cAogICAgIGJpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0Rv
Y3VtZW50Q3VzdG9tLmNwcAorICAgIGJpbmRpbmdzL2pzL0pTRG9jdW1lbnRGcmFnbWVudEN1c3Rv
bS5jcHAKKyAgICBiaW5kaW5ncy9qcy9KU0RvY3VtZW50VHlwZUN1c3RvbS5jcHAKICAgICBiaW5k
aW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNFcnJvckhhbmRs
ZXIuY3BwCiAgICAgYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5jcHAKQEAgLTExNjgsNiArMTE3
MSw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJD
b25kaXRpb24uY3BwCiAgICAgYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcAogICAg
IGJpbmRpbmdzL2pzL0pTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcAorICAgIGJpbmRpbmdzL2pzL0pT
Tm9kZU9yU3RyaW5nLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uY3BwCiAg
ICAgYmluZGluZ3MvanMvSlNPc2NpbGxhdG9yTm9kZUN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9q
cy9KU1Bhbm5lck5vZGVDdXN0b20uY3BwCkBAIC0xNDQ1LDYgKzE0NDksNyBAQCBzZXQoV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgZG9tL05vZGVGaWx0ZXIuY3BwCiAgICAgZG9tL05vZGVGaWx0ZXJDb25k
aXRpb24uY3BwCiAgICAgZG9tL05vZGVJdGVyYXRvci5jcHAKKyAgICBkb20vTm9kZU9yU3RyaW5n
LmNwcAogICAgIGRvbS9Ob2RlUmFyZURhdGEuY3BwCiAgICAgZG9tL05vZGVSZW5kZXJpbmdUcmF2
ZXJzYWwuY3BwCiAgICAgZG9tL05vZGVUcmF2ZXJzYWwuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oJKHJldmlzaW9uIDE4NjI5OCkK
KysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTEzNjQyLDYgKzEzNjQyLDcgQEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258
V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258
eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxkb21cTm9kZU9yU3RyaW5nLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGRvbVxOb2RlUmFyZURhdGEuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cZG9tXE5vZGVUcmF2ZXJzYWwuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cZG9tXE92ZXJmbG93RXZlbnQuY3BwIj4KQEAgLTE2NDQ3LDYgKzE2NDQ4LDIwIEBA
CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgog
ICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNc
SlNDaGFyYWN0ZXJEYXRhQ3VzdG9tLmNwcCI+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU0NEQVRBU2VjdGlvbkN1c3RvbS5jcHAiPgogICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpAQCAtMTY2NDMsNiArMTY2NTgs
MzQgQEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5n
c1xqc1xKU0RvY3VtZW50RnJhZ21lbnRDdXN0b20uY3BwIj4KKyAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdp
bjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMy
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4
NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdp
bjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4
NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzIn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMy
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJv
fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxX
aW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4
NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXEpTRG9jdW1lbnRUeXBlQ3VzdG9tLmNwcCI+
CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAg
PC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU0RP
TUJpbmRpbmcuY3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KQEAgLTE3MzU4LDYgKzE3NDAxLDIwIEBACiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMy
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCci
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNOb2RlT3JTdHJpbmcuY3BwIj4KKyAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dp
bkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z19XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnU3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dp
bkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICA8L0NsQ29tcGls
ZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXEpTTm9kZUZpbHRlckNv
bmRpdGlvbi5jcHAiPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgpAQCAtMjA5NzYsNiArMjEwMzMsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZG9t
XE5vZGVGaWx0ZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRvbVxOb2RlRmls
dGVyQ29uZGl0aW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkb21cTm9kZUl0
ZXJhdG9yLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkb21cTm9kZU9yU3RyaW5n
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkb21cTm9kZVRyYXZlcnNhbC5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZG9tXE92ZXJmbG93RXZlbnQuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRvbVxQYWdlVHJhbnNpdGlvbkV2ZW50LmgiIC8+CkBA
IC0yMTM3MSw2ICsyMTQyOSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5n
c1xqc1xKU01lc3NhZ2VQb3J0Q3VzdG9tLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxiaW5kaW5nc1xqc1xKU011dGF0aW9uQ2FsbGJhY2suaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXEpTTm9kZUN1c3RvbS5oIiAvPgorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNOb2RlT3JTdHJpbmcuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXEpTTm9kZUZpbHRlckNvbmRpdGlvbi5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNQbHVnaW5FbGVtZW50RnVu
Y3Rpb25zLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU1dv
cmtlckdsb2JhbFNjb3BlQmFzZS5oIiAvPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTg2Mjk4KQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0yNTMxLDYgKzI1MzEsOSBAQAogCQk3QzFFOTcyODFBOUY5ODM0MDA3QkYwRkIgLyog
QXV0b0ZpbGxCdXR0b25FbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QzFFOTcyNjFBOUY5ODM0MDA3QkYwRkIgLyogQXV0b0ZpbGxCdXR0b25F
bGVtZW50LmggKi87IH07CiAJCTdDMkJERDNEMTdDN0Y5OEMwMDM4RkYxNSAvKiBKU0RPTUdsb2Jh
bE9iamVjdFRhc2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0MyQkREM0IxN0M3Rjk4QjAwMzhGRjE1IC8qIEpTRE9NR2xvYmFsT2JqZWN0VGFzay5j
cHAgKi87IH07CiAJCTdDMkJERDNFMTdDN0Y5OEMwMDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVj
dFRhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
MkJERDNDMTdDN0Y5OEIwMDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVjdFRhc2suaCAqLzsgfTsK
KwkJN0MzM0YzNUExQjRBMDQ0ODAwNTAyQ0FGIC8qIEpTQ2hhcmFjdGVyRGF0YUN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzMzRjM1ODFC
NEEwNDQ4MDA1MDJDQUYgLyogSlNDaGFyYWN0ZXJEYXRhQ3VzdG9tLmNwcCAqLzsgfTsKKwkJN0Mz
M0YzNUUxQjRBMDRDRTAwNTAyQ0FGIC8qIEpTRG9jdW1lbnRUeXBlQ3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMzNGMzVDMUI0QTA0Q0Uw
MDUwMkNBRiAvKiBKU0RvY3VtZW50VHlwZUN1c3RvbS5jcHAgKi87IH07CisJCTdDMzNGMzYyMUI0
QTA1MDQwMDUwMkNBRiAvKiBKU0RvY3VtZW50RnJhZ21lbnRDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzM0YzNjAxQjRBMDUwNDAwNTAy
Q0FGIC8qIEpTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHAgKi87IH07CiAJCTdDM0I3OTcxMTkw
ODc1N0IwMEI0N0EyRCAvKiBVc2VyTWVzc2FnZUhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzQjc5NkYxOTA4NzU3QjAwQjQ3QTJEIC8q
IFVzZXJNZXNzYWdlSGFuZGxlci5jcHAgKi87IH07CiAJCTdDM0I3OTcyMTkwODc1N0IwMEI0N0Ey
RCAvKiBVc2VyTWVzc2FnZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDM0I3OTcwMTkwODc1N0IwMEI0N0EyRCAvKiBVc2VyTWVzc2FnZUhh
bmRsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk3QzNFNTEwQTE4REY4RjM1MDBDMTEyRjcgLyogSFRNTENvbnZlcnRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzRTUxMDgxOERGOEYzNTAwQzEx
MkY3IC8qIEhUTUxDb252ZXJ0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtMjU2Miw2ICsyNTY1LDggQEAKIAkJN0M3NEQ0MzgxODgyM0IxOTAw
RTVFRDU3IC8qIFVUZXh0UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDNzRENDM2MTg4MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVy
LmggKi87IH07CiAJCTdDNzRENDNCMTg4MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRG
MTYuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M3
NEQ0MzkxODgyNDAwNDAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJVVEYxNi5jcHAgKi87IH07CiAJ
CTdDNzRENDNDMTg4MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzRENDNBMTg4MjQwMDQw
MEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuaCAqLzsgfTsKKwkJN0M5MUEzOEYxQjQ5OEFC
RTAwM0Y5RUZBIC8qIEpTTm9kZU9yU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOTFBMzhEMUI0OThBQkUwMDNGOUVGQSAvKiBKU05vZGVP
clN0cmluZy5jcHAgKi87IH07CisJCTdDOTFBMzkwMUI0OThBQkUwMDNGOUVGQSAvKiBKU05vZGVP
clN0cmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0M5MUEzOEUxQjQ5OEFCRTAwM0Y5RUZBIC8qIEpTTm9kZU9yU3RyaW5nLmggKi87IH07CiAJCTdD
OTNGMzQ5MUFBNkJBNUUwMEE5OEJBQiAvKiBDb21waWxlZENvbnRlbnRFeHRlbnNpb24uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M5M0YzNDcxQUE2
QkE1RTAwQTk4QkFCIC8qIENvbXBpbGVkQ29udGVudEV4dGVuc2lvbi5jcHAgKi87IH07CiAJCTdD
OTNGMzRBMUFBNkJBNUUwMEE5OEJBQiAvKiBDb21waWxlZENvbnRlbnRFeHRlbnNpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOTNGMzQ4MUFBNkJB
NUUwMEE5OEJBQiAvKiBDb21waWxlZENvbnRlbnRFeHRlbnNpb24uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzkzRjM0RDFBQTZCRjA3MDBBOThC
QUIgLyogQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOTNGMzRCMUFBNkJGMDcwMEE5OEJBQiAvKiBDb250
ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwICovOyB9OwpAQCAtMjU4Miw2ICsyNTg3LDggQEAKIAkJ
N0NFNjgzNDcxOTIxODIxNTAwRjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JU
eXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NF
NjgzNDYxOTIxODIxNTAwRjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JUeXBl
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdD
RTZDQkZCMTg3RjM3MDcwMEQ0NkJGNSAvKiBGb3JtYXRDb252ZXJ0ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRTZDQkZBMTg3RjM3MDcwMEQ0NkJG
NSAvKiBGb3JtYXRDb252ZXJ0ZXIuaCAqLzsgfTsKIAkJN0NFNkNCRkQxODdGMzk0OTAwRDQ2QkY1
IC8qIEZvcm1hdENvbnZlcnRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3Q0U2Q0JGQzE4N0YzOTQ5MDBENDZCRjUgLyogRm9ybWF0Q29udmVydGVy
LmNwcCAqLzsgfTsKKwkJN0NFQUMxMDcxQjQ4M0QxRDAwMzM0NDgyIC8qIE5vZGVPclN0cmluZy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NFQUMxMDYx
QjQ4M0QxRDAwMzM0NDgyIC8qIE5vZGVPclN0cmluZy5oICovOyB9OworCQk3Q0VBQzEwOTFCNDgz
RDdGMDAzMzQ0ODIgLyogTm9kZU9yU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRUFDMTA4MUI0ODNEN0YwMDMzNDQ4MiAvKiBOb2RlT3JT
dHJpbmcuY3BwICovOyB9OwogCQk3Q0ZEQzU3QzFBQzFEODA1MDBFMjRBNTcgLyogQ29udGVudEV4
dGVuc2lvbkVycm9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDRkRDNTdBMUFDMUQ4MDUwMEUyNEE1NyAvKiBDb250ZW50RXh0ZW5zaW9uRXJyb3Iu
Y3BwICovOyB9OwogCQk3Q0ZEQzU3RDFBQzFEODA1MDBFMjRBNTcgLyogQ29udGVudEV4dGVuc2lv
bkVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
Q0ZEQzU3QjFBQzFEODA1MDBFMjRBNTcgLyogQ29udGVudEV4dGVuc2lvbkVycm9yLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0Q3NDFCREExNzcy
MjZBQTAwODU5MTcwIC8qIENTU1ZhbHVlS2V5d29yZHMuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NjU4MTQ4MDlEMTMwNDMw
MDBFNjFENyAvKiBDU1NWYWx1ZUtleXdvcmRzLmggKi87IH07CkBAIC05ODQwLDYgKzk4NDcsOSBA
QAogCQk3QzFFOTcyNjFBOUY5ODM0MDA3QkYwRkIgLyogQXV0b0ZpbGxCdXR0b25FbGVtZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1dG9GaWxsQnV0dG9uRWxlbWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzJCREQzQjE3QzdGOThCMDAzOEZGMTUg
LyogSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdDMkJERDNDMTdDN0Y5OEIwMDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVjdFRh
c2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01HbG9iYWxPYmplY3RU
YXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMzNGMzU4MUI0QTA0NDgwMDUw
MkNBRiAvKiBKU0NoYXJhY3RlckRhdGFDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNDaGFyYWN0ZXJEYXRhQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJN0MzM0YzNUMxQjRBMDRDRTAwNTAyQ0FGIC8qIEpTRG9jdW1lbnRUeXBl
Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRG9jdW1l
bnRUeXBlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MzM0YzNjAx
QjRBMDUwNDAwNTAyQ0FGIC8qIEpTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RvY3VtZW50RnJhZ21lbnRDdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzNCNzk2RjE5MDg3NTdCMDBCNDdBMkQg
LyogVXNlck1lc3NhZ2VIYW5kbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFVzZXJNZXNzYWdlSGFuZGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdDM0I3OTcwMTkwODc1N0IwMEI0N0EyRCAvKiBVc2VyTWVzc2FnZUhhbmRsZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlck1lc3NhZ2VIYW5kbGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDM0U1MTA4MThERjhGMzUwMEMxMTJGNyAvKiBIVE1M
Q29udmVydGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxDb252ZXJ0
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk4ODIsNiArOTg5Miw4IEBACiAJ
CTdDNzRENDM2MTg4MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVUZXh0UHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0M3NEQ0MzkxODgyNDAwNDAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJVVEYx
Ni5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVVGV4dFByb3ZpZGVy
VVRGMTYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Qzc0RDQzQTE4ODI0MDA0
MDBFNUVENTcgLyogVVRleHRQcm92aWRlclVURjE2LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFVUZXh0UHJvdmlkZXJVVEYxNi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3QzkxQTM4RDFCNDk4QUJFMDAzRjlFRkEgLyogSlNOb2RlT3JTdHJpbmcuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOb2RlT3JTdHJpbmcuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzkxQTM4RTFCNDk4QUJFMDAzRjlFRkEgLyogSlNO
b2RlT3JTdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNOb2RlT3JT
dHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M5M0YzNDcxQUE2QkE1RTAw
QTk4QkFCIC8qIENvbXBpbGVkQ29udGVudEV4dGVuc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDb21waWxlZENvbnRlbnRFeHRlbnNpb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QzkzRjM0ODFBQTZCQTVFMDBBOThCQUIgLyogQ29tcGls
ZWRDb250ZW50RXh0ZW5zaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
bXBpbGVkQ29udGVudEV4dGVuc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QzkzRjM0QjFBQTZCRjA3MDBBOThCQUIgLyogQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRlbnRFeHRlbnNpb25Db21w
aWxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05OTAyLDYgKzk5MTQsOCBA
QAogCQk3Q0U2ODM0NjE5MjE4MjE1MDBGNEQ5MjggLyogVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3Jp
cHRvclR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJNZXNzYWdl
SGFuZGxlckRlc2NyaXB0b3JUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
Q0U2Q0JGQTE4N0YzNzA3MDBENDZCRjUgLyogRm9ybWF0Q29udmVydGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1hdENvbnZlcnRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3Q0U2Q0JGQzE4N0YzOTQ5MDBENDZCRjUgLyogRm9ybWF0Q29udmVydGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1hdENvbnZlcnRl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDRUFDMTA2MUI0ODNEMUQwMDMz
NDQ4MiAvKiBOb2RlT3JTdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Tm9kZU9yU3RyaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDRUFDMTA4MUI0
ODNEN0YwMDMzNDQ4MiAvKiBOb2RlT3JTdHJpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTm9kZU9yU3RyaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0NGREM1N0ExQUMxRDgwNTAwRTI0QTU3IC8qIENvbnRlbnRFeHRlbnNpb25FcnJvci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb250ZW50RXh0ZW5zaW9u
RXJyb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0ZEQzU3QjFBQzFEODA1
MDBFMjRBNTcgLyogQ29udGVudEV4dGVuc2lvbkVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENvbnRlbnRFeHRlbnNpb25FcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3RTM3RUYyRDEzMzkyMDg4MDBCMjkyNTAgLyogU3VicmVzb3VyY2VMb2FkZXJD
Ri5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdWJyZXNvdXJjZUxv
YWRlckNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMjc0LDYgKzIxMjg4
LDggQEAKIAkJCQlCQ0JGQjUzQTBEQ0QyOUNGMDAxOUIzRTUgLyogSlNET01XaW5kb3dTaGVsbC5j
cHAgKi8sCiAJCQkJQkNCRkI1M0IwRENEMjlDRjAwMTlCM0U1IC8qIEpTRE9NV2luZG93U2hlbGwu
aCAqLywKIAkJCQk2NUUwRTk0MzExMzNDODlGMDBCNENCMTAgLyogSlNET01XcmFwcGVyLmggKi8s
CisJCQkJN0M5MUEzOEQxQjQ5OEFCRTAwM0Y5RUZBIC8qIEpTTm9kZU9yU3RyaW5nLmNwcCAqLywK
KwkJCQk3QzkxQTM4RTFCNDk4QUJFMDAzRjlFRkEgLyogSlNOb2RlT3JTdHJpbmcuaCAqLywKIAkJ
CQlGM0Q0NjE0NjExNjFENTMyMDBDQTBEMDkgLyogSlNFcnJvckhhbmRsZXIuY3BwICovLAogCQkJ
CUYzRDQ2MTQ3MTE2MUQ1MzIwMENBMEQwOSAvKiBKU0Vycm9ySGFuZGxlci5oICovLAogCQkJCUJD
NjA5MDFFMEU5MUI4RUMwMDBDNjhCNSAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcCAqLywKQEAg
LTIxMzgwLDYgKzIxMzk2LDkgQEAKIAkJCQk0OUVFRDE0QjEwNTE5NzE5MDAwOTlGQUIgLyogSlND
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwICovLAogCQkJCTQ5RUVEMTREMTA1MTk3
MUEwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwICovLAogCQkJ
CTkzQkE1OUIxMEYyQUE1RkUwMDhFOEU5OSAvKiBKU0NEQVRBU2VjdGlvbkN1c3RvbS5jcHAgKi8s
CisJCQkJN0MzM0YzNTgxQjRBMDQ0ODAwNTAyQ0FGIC8qIEpTQ2hhcmFjdGVyRGF0YUN1c3RvbS5j
cHAgKi8sCisJCQkJN0MzM0YzNUMxQjRBMDRDRTAwNTAyQ0FGIC8qIEpTRG9jdW1lbnRUeXBlQ3Vz
dG9tLmNwcCAqLywKKwkJCQk3QzMzRjM2MDFCNEEwNTA0MDA1MDJDQUYgLyogSlNEb2N1bWVudEZy
YWdtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlBNTg0RkUzNzE4NjREQUMxMDA4NDNCMTAgLyogSlND
b21tYW5kTGluZUFQSUhvc3RDdXN0b20uY3BwICovLAogCQkJCTIwOUI0NTZBMTY3OTZBN0UwMEU1
NEU0RSAvKiBKU0NyeXB0b0N1c3RvbS5jcHAgKi8sCiAJCQkJRTE1N0E4RTYxODE4NEM2NzAwOUY4
MjFEIC8qIEpTQ3J5cHRvS2V5Q3VzdG9tLmNwcCAqLywKQEAgLTIzMjc0LDYgKzIzMjkzLDggQEAK
IAkJCQkxQTc1MEQ4NzBBOTBFMzk0MDAwRkYyMTUgLyogTm9kZUl0ZXJhdG9yLmlkbCAqLywKIAkJ
CQlBODE4NzIxMDA5NzdEM0MwMDA1ODI2RDkgLyogTm9kZUxpc3QuaCAqLywKIAkJCQk4NUFDQTlG
QTBBOUI2MzEwMDA2NzFFOTAgLyogTm9kZUxpc3QuaWRsICovLAorCQkJCTdDRUFDMTA4MUI0ODNE
N0YwMDMzNDQ4MiAvKiBOb2RlT3JTdHJpbmcuY3BwICovLAorCQkJCTdDRUFDMTA2MUI0ODNEMUQw
MDMzNDQ4MiAvKiBOb2RlT3JTdHJpbmcuaCAqLywKIAkJCQk0RkFCNDg2NjE2NDNBNjdFMDBGNzBD
MDcgLyogTm9kZVJhcmVEYXRhLmNwcCAqLywKIAkJCQk2MzE4OUFFMjBFODNBMzMzMDAwMTJFNDEg
LyogTm9kZVJhcmVEYXRhLmggKi8sCiAJCQkJQTcyMTFGMjMxNjc4QTU0MjAwOTU3NDQ0IC8qIE5v
ZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwICovLApAQCAtMjQ3ODIsNiArMjQ4MDMsNyBAQAogCQkJ
CUE3NEJCNzZCMTNCREE4NjMwMEZGN0JGMCAvKiBFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTE0OEFGREE1MEFGNTgzNjAwMDhDQzcwMCAvKiBFeGNlcHRpb25I
YW5kbGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc2N0NFMEIxNDVBQkMxMzAwNUU2NERCIC8q
IEV4Y2VwdGlvbkhlYWRlcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTdDOTFBMzkwMUI0OThBQkUw
MDNGOUVGQSAvKiBKU05vZGVPclN0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZGM0UzRkEx
QjIxMDkxMDAwODdFRDEzIC8qIFZOb2RlVHJhY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc2
N0NFMEMxNDVBQkMxMzAwNUU2NERCIC8qIEV4Y2VwdGlvbkludGVyZmFjZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTZFNjdEMkE5MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0QuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjQ5NTIsNiArMjQ5NzQsNyBAQAogCQkJCUZEMzE2MDlEMTJCMDI2Rjcw
MEMxQTM1OSAvKiBIUlRGRWxldmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA5RjEy
QjAyNkY3MDBDMUEzNTkgLyogSFJURktlcm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYw
QTExMkIwMjZGNzAwQzFBMzU5IC8qIEhSVEZQYW5uZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTdD
RUFDMTA3MUI0ODNEMUQwMDMzNDQ4MiAvKiBOb2RlT3JTdHJpbmcuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDOTdFMjNBMTA5MTQ0OTUwMDEwRDM2MSAvKiBIVE1MQWxsQ29sbGVjdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQThDRkY3QUIwQTE1Njk3ODAwMEE0MjM0IC8qIEhUTUxBbmNob3JFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODcxRDQ1RDBBMTI3Q0JDMDBCMTJBNjggLyogSFRN
TEFwcGxldEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjc3NDQsNiArMjc3NjcsNyBAQAog
CQkJCTA3MDM2M0U3MTgxQTFDREMwMEMwNzRBNSAvKiBBVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbSBp
biBTb3VyY2VzICovLAogCQkJCUY0NUMyMzFEMTk5NUI3M0IwMEE2RTJFMyAvKiBBeGlzU2Nyb2xs
U25hcE9mZnNldHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzdGNTdBQ0YxQTUwNzJERDAwODc2
Rjk4IC8qIEFYT2JqZWN0Q2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0MzM0YzNUUxQjRB
MDRDRTAwNTAyQ0FGIC8qIEpTRG9jdW1lbnRUeXBlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUFBQTcyOEY5MTZEMUQ4QkMwMEQzQkJDNiAvKiBBWE9iamVjdENhY2hlSU9TLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMjlBODEyNEIwRkJCOUNBOTAwNTEwMjkzIC8qIEFYT2JqZWN0Q2FjaGVN
YWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0E4QzgxRjExRTNEMzY5MDA4MTJGQjcgLyogQmFj
a0ZvcndhcmRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjc4NDYsNiArMjc4NzAs
NyBAQAogCQkJCUJDQzA2NTdEMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDQzA2NTgwMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0TGlz
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTAzMUIzRjBBNDRFRkM3MDBGOTkyRTAgLyogQ2xp
cGJvYXJkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0NFQUMxMDkxQjQ4M0Q3RjAwMzM0
NDgyIC8qIE5vZGVPclN0cmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1ODAzNzE2MTFBNjZG
MDBBMDBCQUY1MTkgLyogQ2xpcFJlY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RFQTc2MzUx
NDYwQjcxQTAwOEIzMUYxIC8qIENsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERUE3NjM0
MTQ2MEI1NkYwMDhCMzFGMSAvKiBDbG9ja0dlbmVyaWMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0y
ODE5Myw2ICsyODIxOCw3IEBACiAJCQkJODVERjJGOUMwQUEzQ0FFNTAwQUQ2NEM1IC8qIERPTUhU
TUxPcHRpb25zQ29sbGVjdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1MTgzQjQ3MEFBNjky
NjEwMEYxOUZBMyAvKiBET01IVE1MUGFyYWdyYXBoRWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTg1RUNCRUY4MEFBNzYyNjkwMDU0NEYwQiAvKiBET01IVE1MUGFyYW1FbGVtZW50Lm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJN0MzM0YzNjIxQjRBMDUwNDAwNTAyQ0FGIC8qIEpTRG9jdW1lbnRG
cmFnbWVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTE4M0I0OTBBQTY5MjYxMDBG
MTlGQTMgLyogRE9NSFRNTFByZUVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQlBNDIyNkU5
NjExNjNENzNBMDA4QjgzOTcgLyogRE9NSFRNTFByb2dyZXNzRWxlbWVudC5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTg1MTgzQjRCMEFBNjkyNjEwMEYxOUZBMyAvKiBET01IVE1MUXVvdGVFbGVtZW50
Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC0yODI2Myw2ICsyODI4OSw3IEBACiAJCQkJOEFEMEE1OTcx
NEM4ODM1ODAwMEQ4M0M1IC8qIERPTVdlYktpdENTU1JlZ2lvblJ1bGUubW0gaW4gU291cmNlcyAq
LywKIAkJCQkzMTYxMUU2MjBFMUM0RTE0MDBGNkE1NzkgLyogRE9NV2ViS2l0Q1NTVHJhbnNmb3Jt
VmFsdWUubW0gaW4gU291cmNlcyAqLywKIAkJCQkzRjJCMzNFQzE2NUFGMTU2MDBFMzk4N0MgLyog
RE9NV2ViS2l0Q1NTVmlld3BvcnRSdWxlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJN0M5MUEzOEYx
QjQ5OEFCRTAwM0Y5RUZBIC8qIEpTTm9kZU9yU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CThBMTk1OTMzMTQ3RUExNkUwMEQxRUE2MSAvKiBET01XZWJLaXROYW1lZEZsb3cubW0gaW4gU291
cmNlcyAqLywKIAkJCQkzMUMwRkY0RDBFNENFRkREMDA3RDZGRTUgLyogRE9NV2ViS2l0VHJhbnNp
dGlvbkV2ZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVDN0Y1RTgwQUFGQkFGQjAwNDAxNERE
IC8qIERPTVdoZWVsRXZlbnQubW0gaW4gU291cmNlcyAqLywKQEAgLTI5NDY4LDYgKzI5NDk1LDcg
QEAKIAkJCQlCQ0UxQzQxQzBEOTgyOTgxMDAzQjAyRjIgLyogTG9jYXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTgyMzlFMDAwOUIzQ0Y4QTAwQjYwNjQxIC8qIExvZ2dpbmcuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMTQwMjY0NUUwQUZEQzE5QjAwNTkxOUUyIC8qIExvZ2dpbmdNYWMubW0g
aW4gU291cmNlcyAqLywKKwkJCQk3QzMzRjM1QTFCNEEwNDQ4MDA1MDJDQUYgLyogSlNDaGFyYWN0
ZXJEYXRhQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMDQwOUYzMUE0MzY3NUMwMDlF
NDdGMyAvKiBNYWNoU2VuZFJpZ2h0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMkFENzA1MTdF
RkEyQzMwMDM4RjhGRiAvKiBNYWluRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE4RjZC
QzUwREI1NUNEQzAwMURCNzk0IC8qIE1hbmlmZXN0UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLApJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5P
bmUuY3BwCShyZXZpc2lvbiAxODYyOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0JpbmRpbmdzQWxsSW5PbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAj
aW5jbHVkZSAiSlNDYWxsYmFja0RhdGEuY3BwIgogI2luY2x1ZGUgIkpTQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRD
dXN0b20uY3BwIgorI2luY2x1ZGUgIkpTQ2hhcmFjdGVyRGF0YUN1c3RvbS5jcHAiCiAjaW5jbHVk
ZSAiSlNDb21tYW5kTGluZUFQSUhvc3RDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTQ3J5cHRvQ3Vz
dG9tLmNwcCIKICNpbmNsdWRlICJKU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3Bw
IgpAQCAtNjYsNiArNjcsOCBAQAogI2luY2x1ZGUgIkpTRGV2aWNlT3JpZW50YXRpb25FdmVudEN1
c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNEaWN0aW9uYXJ5LmNwcCIKICNpbmNsdWRlICJKU0RvY3Vt
ZW50Q3VzdG9tLmNwcCIKKyNpbmNsdWRlICJKU0RvY3VtZW50RnJhZ21lbnRDdXN0b20uY3BwIgor
I2luY2x1ZGUgIkpTRG9jdW1lbnRUeXBlQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0VsZW1lbnRD
dXN0b20uY3BwIgogI2luY2x1ZGUgIkpTRXJyb3JIYW5kbGVyLmNwcCIKICNpbmNsdWRlICJKU0V2
ZW50Q3VzdG9tLmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2hhcmFj
dGVyRGF0YUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDaGFyYWN0ZXJEYXRhQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ2hhcmFjdGVyRGF0YUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJKU0NoYXJhY3RlckRhdGEuaCIKKworI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNp
bmNsdWRlICJKU05vZGVPclN0cmluZy5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK0pTVmFsdWUgSlNDaGFyYWN0ZXJEYXRhOjpiZWZvcmUoRXhlY1N0
YXRlKiBleGVjKQoreworICAgIGF1dG8gbm9kZXMgPSB0b05vZGVPclN0cmluZ1ZlY3RvcihleGVj
KTsKKyAgICAKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBpbXBsKCkuYmVmb3JlKFdU
Rjo6bW92ZShub2RlcyksIGVjKTsKKyAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworCisg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKK0pTVmFsdWUgSlNDaGFyYWN0ZXJEYXRhOjph
ZnRlcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgYXV0byBub2RlcyA9IHRvTm9kZU9yU3RyaW5n
VmVjdG9yKGV4ZWMpOworICAgIAorICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGltcGwo
KS5hZnRlcihXVEY6Om1vdmUobm9kZXMpLCBlYyk7CisgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMs
IGVjKTsKKworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCitKU1ZhbHVlIEpTQ2hhcmFj
dGVyRGF0YTo6cmVwbGFjZVdpdGgoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGF1dG8gbm9kZXMg
PSB0b05vZGVPclN0cmluZ1ZlY3RvcihleGVjKTsKKyAgICAKKyAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKKyAgICBpbXBsKCkucmVwbGFjZVdpdGgoV1RGOjptb3ZlKG5vZGVzKSwgZWMpOworICAg
IHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDE4NjI5OCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCwxMSArMjgsMTIgQEAKICNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgog
I2luY2x1ZGUgIkpTSFRNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiSlNMb2NhdGlvbi5oIgorI2lu
Y2x1ZGUgIkpTTm9kZU9yU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNTVkdEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIkxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiTm9kZVRyYXZlcnNhbC5oIgotI2luY2x1ZGUg
IlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTVkdEb2N1bWVudC5oIgorI2luY2x1ZGUg
IlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJUb3VjaExpc3QuaCIKICNpbmNsdWRlIDx3
dGYvR2V0UHRyLmg+CiAKQEAgLTExNyw2ICsxMTgsMjggQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0
ZSogZXhlYywgSlNET01HbG9iYQogICAgIHJldHVybiB3cmFwcGVyOwogfQogCitKU1ZhbHVlIEpT
RG9jdW1lbnQ6OnByZXBlbmQoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGF1dG8gbm9kZXMgPSB0
b05vZGVPclN0cmluZ1ZlY3RvcihleGVjKTsKKyAgICAKKyAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKKyAgICBpbXBsKCkucHJlcGVuZChXVEY6Om1vdmUobm9kZXMpLCBlYyk7CisgICAgc2V0RE9N
RXhjZXB0aW9uKGV4ZWMsIGVjKTsKKworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCitK
U1ZhbHVlIEpTRG9jdW1lbnQ6OmFwcGVuZChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgYXV0byBu
b2RlcyA9IHRvTm9kZU9yU3RyaW5nVmVjdG9yKGV4ZWMpOworICAgIAorICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOworICAgIGltcGwoKS5hcHBlbmQoV1RGOjptb3ZlKG5vZGVzKSwgZWMpOworICAg
IHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
K30KKwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiBKU1ZhbHVlIEpTRG9jdW1lbnQ6OmNyZWF0
ZVRvdWNoTGlzdChFeGVjU3RhdGUqIGV4ZWMpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RvY3VtZW50RnJhZ21lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHAJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50RnJhZ21lbnRD
dXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNEb2N1bWVudEZyYWdtZW50LmgiCisKKyNp
bmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiSlNOb2RlT3JTdHJpbmcuaCIKKwor
dXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitKU1ZhbHVlIEpT
RG9jdW1lbnRGcmFnbWVudDo6cHJlcGVuZChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgYXV0byBu
b2RlcyA9IHRvTm9kZU9yU3RyaW5nVmVjdG9yKGV4ZWMpOworICAgIAorICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOworICAgIGltcGwoKS5wcmVwZW5kKFdURjo6bW92ZShub2RlcyksIGVjKTsKKyAg
ICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworCisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
Cit9CisKK0pTVmFsdWUgSlNEb2N1bWVudEZyYWdtZW50OjphcHBlbmQoRXhlY1N0YXRlKiBleGVj
KQoreworICAgIGF1dG8gbm9kZXMgPSB0b05vZGVPclN0cmluZ1ZlY3RvcihleGVjKTsKKyAgICAK
KyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBpbXBsKCkuYXBwZW5kKFdURjo6bW92ZShu
b2RlcyksIGVjKTsKKyAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworCisgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRUeXBlQ3VzdG9tLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50VHlwZUN1c3RvbS5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50VHlw
ZUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0RvY3VtZW50VHlwZS5oIgorCisjaW5j
bHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkpTTm9kZU9yU3RyaW5nLmgiCisKK3Vz
aW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSlNWYWx1ZSBKU0Rv
Y3VtZW50VHlwZTo6YmVmb3JlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBhdXRvIG5vZGVzID0g
dG9Ob2RlT3JTdHJpbmdWZWN0b3IoZXhlYyk7CisgICAgCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CisgICAgaW1wbCgpLmJlZm9yZShXVEY6Om1vdmUobm9kZXMpLCBlYyk7CisgICAgc2V0RE9N
RXhjZXB0aW9uKGV4ZWMsIGVjKTsKKworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCitK
U1ZhbHVlIEpTRG9jdW1lbnRUeXBlOjphZnRlcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgYXV0
byBub2RlcyA9IHRvTm9kZU9yU3RyaW5nVmVjdG9yKGV4ZWMpOworICAgIAorICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOworICAgIGltcGwoKS5hZnRlcihXVEY6Om1vdmUobm9kZXMpLCBlYyk7Cisg
ICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKworICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OworfQorCitKU1ZhbHVlIEpTRG9jdW1lbnRUeXBlOjpyZXBsYWNlV2l0aChFeGVjU3RhdGUqIGV4
ZWMpCit7CisgICAgYXV0byBub2RlcyA9IHRvTm9kZU9yU3RyaW5nVmVjdG9yKGV4ZWMpOworICAg
IAorICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGltcGwoKS5yZXBsYWNlV2l0aChXVEY6
Om1vdmUobm9kZXMpLCBlYyk7CisgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKworICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHAJKHJl
dmlzaW9uIDE4NjI5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1
c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJKU0RP
TUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0hUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuaCIKICNp
bmNsdWRlICJKU05vZGVMaXN0LmgiCisjaW5jbHVkZSAiSlNOb2RlT3JTdHJpbmcuaCIKICNpbmNs
dWRlICJKU1NWR0VsZW1lbnRXcmFwcGVyRmFjdG9yeS5oIgogI2luY2x1ZGUgIk5vZGVMaXN0Lmgi
CiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgpAQCAtNjYsNCArNjcsNTkgQEAgSlNWYWx1ZSB0b0pT
TmV3bHlDcmVhdGVkKEV4ZWNTdGF0ZSosIEpTRAogICAgIHJldHVybiB3cmFwcGVyOyAgICAKIH0K
IAorSlNWYWx1ZSBKU0VsZW1lbnQ6OmJlZm9yZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgYXV0
byBub2RlcyA9IHRvTm9kZU9yU3RyaW5nVmVjdG9yKGV4ZWMpOworICAgIAorICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOworICAgIGltcGwoKS5iZWZvcmUoV1RGOjptb3ZlKG5vZGVzKSwgZWMpOwor
ICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisKKyAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKK30KKworSlNWYWx1ZSBKU0VsZW1lbnQ6OmFmdGVyKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAg
ICBhdXRvIG5vZGVzID0gdG9Ob2RlT3JTdHJpbmdWZWN0b3IoZXhlYyk7CisgICAgCisgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgaW1wbCgpLmFmdGVyKFdURjo6bW92ZShub2RlcyksIGVj
KTsKKyAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworCisgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7Cit9CisKK0pTVmFsdWUgSlNFbGVtZW50OjpyZXBsYWNlV2l0aChFeGVjU3RhdGUqIGV4
ZWMpCit7CisgICAgYXV0byBub2RlcyA9IHRvTm9kZU9yU3RyaW5nVmVjdG9yKGV4ZWMpOworICAg
IAorICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGltcGwoKS5yZXBsYWNlV2l0aChXVEY6
Om1vdmUobm9kZXMpLCBlYyk7CisgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKworICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCitKU1ZhbHVlIEpTRWxlbWVudDo6cHJlcGVuZChF
eGVjU3RhdGUqIGV4ZWMpCit7CisgICAgYXV0byBub2RlcyA9IHRvTm9kZU9yU3RyaW5nVmVjdG9y
KGV4ZWMpOworICAgIAorICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGltcGwoKS5wcmVw
ZW5kKFdURjo6bW92ZShub2RlcyksIGVjKTsKKyAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMp
OworCisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKK0pTVmFsdWUgSlNFbGVtZW50Ojph
cHBlbmQoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGF1dG8gbm9kZXMgPSB0b05vZGVPclN0cmlu
Z1ZlY3RvcihleGVjKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGltcGwoKS5h
cHBlbmQoV1RGOjptb3ZlKG5vZGVzKSwgZWMpOworICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBl
Yyk7CisKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlT3JTdHJpbmcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZU9yU3RyaW5n
LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZU9y
U3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTTm9kZU9yU3RyaW5nLmgiCisKKyNpbmNs
dWRlICJKU05vZGUuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZy5oPgorCit1
c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1ZlY3RvcjxOb2Rl
T3JTdHJpbmc+IHRvTm9kZU9yU3RyaW5nVmVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBW
ZWN0b3I8Tm9kZU9yU3RyaW5nPiBub2RlT3JTdHJpbmdWZWN0b3I7CisKKyAgICBzaXplX3QgYXJn
dW1lbnRDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGFyZ3VtZW50Q291bnQ7ICsraSkgeworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZXhl
Yy0+YXJndW1lbnQoaSk7CisgICAgICAgIGlmIChhdXRvKiBub2RlID0ganNEeW5hbWljQ2FzdDxK
U05vZGUqPih2YWx1ZSkpCisgICAgICAgICAgICBub2RlT3JTdHJpbmdWZWN0b3IuYXBwZW5kKE5v
ZGVPclN0cmluZygmbm9kZS0+aW1wbCgpKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
U3RyaW5nIHN0cmluZyA9IHZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgICAgICAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBWZWN0b3I8Tm9k
ZU9yU3RyaW5nPigpOworICAgICAgICAgICAgbm9kZU9yU3RyaW5nVmVjdG9yLmFwcGVuZChOb2Rl
T3JTdHJpbmcoc3RyaW5nKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gbm9kZU9y
U3RyaW5nVmVjdG9yOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVPclN0cmluZy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZU9yU3RyaW5nLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVPclN0cmluZy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTTm9kZU9yU3RyaW5nX2gK
KyNkZWZpbmUgSlNOb2RlT3JTdHJpbmdfaAorCisjaW5jbHVkZSAiTm9kZU9yU3RyaW5nLmgiCisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEV4ZWNTdGF0
ZTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitWZWN0b3I8Tm9kZU9yU3RyaW5nPiB0b05v
ZGVPclN0cmluZ1ZlY3RvcihKU0M6OkV4ZWNTdGF0ZSopOworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBKU05vZGVPclN0cmluZ1ZlY3Rvcl9oCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vQ2hpbGROb2RlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
Q2hpbGROb2RlLmlkbAkocmV2aXNpb24gMTg2Mjk4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0No
aWxkTm9kZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTE4LDE2ICsxOCwxNCBAQAogICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCiAgKi8KIAotLy8gRE9NIDQKKy8vIGh0dHBzOi8vZG9tLnNw
ZWMud2hhdHdnLm9yZy8jY2hpbGRub2RlCiBbCiAgICAgTm9JbnRlcmZhY2VPYmplY3QsCiBdIGlu
dGVyZmFjZSBDaGlsZE5vZGUgewotICAgIC8vIHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50PyBw
cmV2aW91c0VsZW1lbnRTaWJsaW5nOwotICAgIC8vIHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50
PyBuZXh0RWxlbWVudFNpYmxpbmc7Ci0KLSAgICAvLyB2b2lkIGJlZm9yZSgoTm9kZSBvciBET01T
dHJpbmcpLi4uIG5vZGVzKTsKLSAgICAvLyB2b2lkIGFmdGVyKChOb2RlIG9yIERPTVN0cmluZyku
Li4gbm9kZXMpOwotICAgIC8vIHZvaWQgcmVwbGFjZSgoTm9kZSBvciBET01TdHJpbmcpLi4uIG5v
ZGVzKTsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHJlbW92ZSgpOworI2lmICFkZWZpbmVk
KExBTkdVQUdFX09CSkVDVElWRV9DKSB8fCAhTEFOR1VBR0VfT0JKRUNUSVZFX0MKKyAgICBbVW5z
Y29wZWFibGUsIFJhaXNlc0V4Y2VwdGlvbiwgQ3VzdG9tXSB2b2lkIGJlZm9yZSgoTm9kZSBvciBE
T01TdHJpbmcpLi4uIG5vZGVzKTsKKyAgICBbVW5zY29wZWFibGUsIFJhaXNlc0V4Y2VwdGlvbiwg
Q3VzdG9tXSB2b2lkIGFmdGVyKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOworICAgIFtV
bnNjb3BlYWJsZSwgUmFpc2VzRXhjZXB0aW9uLCBDdXN0b21dIHZvaWQgcmVwbGFjZVdpdGgoKE5v
ZGUgb3IgRE9NU3RyaW5nKS4uLiBub2Rlcyk7CisjZW5kaWYKKyAgICBbVW5zY29wZWFibGUsIFJh
aXNlc0V4Y2VwdGlvbl0gdm9pZCByZW1vdmUoKTsKIH07Ci0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9Db250YWluZXJOb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZS5jcHAJKHJldmlzaW9uIDE4NjI5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Db250YWluZXJOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2lu
Y2x1ZGUgIkxhYmVsc05vZGVMaXN0LmgiCiAjaW5jbHVkZSAiTXV0YXRpb25FdmVudC5oIgogI2lu
Y2x1ZGUgIk5hbWVOb2RlTGlzdC5oIgorI2luY2x1ZGUgIk5vZGVPclN0cmluZy5oIgogI2luY2x1
ZGUgIk5vZGVSYXJlRGF0YS5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1
ZGUgIlJhZGlvTm9kZUxpc3QuaCIKQEAgLTkyMCw2ICs5MjEsMjQgQEAgdW5zaWduZWQgQ29udGFp
bmVyTm9kZTo6Y2hpbGRFbGVtZW50Q291bgogICAgIHJldHVybiBzdGQ6OmRpc3RhbmNlKGNoaWxk
cmVuLmJlZ2luKCksIGNoaWxkcmVuLmVuZCgpKTsKIH0KIAordm9pZCBDb250YWluZXJOb2RlOjph
cHBlbmQoVmVjdG9yPE5vZGVPclN0cmluZz4mJiBub2RlT3JTdHJpbmdWZWN0b3IsIEV4Y2VwdGlv
bkNvZGUmIGVjKQoreworICAgIFJlZlB0cjxOb2RlPiBub2RlID0gY29udmVydE5vZGVzT3JTdHJp
bmdzSW50b05vZGUoKnRoaXMsIFdURjo6bW92ZShub2RlT3JTdHJpbmdWZWN0b3IpLCBlYyk7Cisg
ICAgaWYgKGVjIHx8ICFub2RlKQorICAgICAgICByZXR1cm47CisKKyAgICBhcHBlbmRDaGlsZChu
b2RlLnJlbGVhc2UoKSwgZWMpOworfQorCit2b2lkIENvbnRhaW5lck5vZGU6OnByZXBlbmQoVmVj
dG9yPE5vZGVPclN0cmluZz4mJiBub2RlT3JTdHJpbmdWZWN0b3IsIEV4Y2VwdGlvbkNvZGUmIGVj
KQoreworICAgIFJlZlB0cjxOb2RlPiBub2RlID0gY29udmVydE5vZGVzT3JTdHJpbmdzSW50b05v
ZGUoKnRoaXMsIFdURjo6bW92ZShub2RlT3JTdHJpbmdWZWN0b3IpLCBlYyk7CisgICAgaWYgKGVj
IHx8ICFub2RlKQorICAgICAgICByZXR1cm47CisKKyAgICBpbnNlcnRCZWZvcmUobm9kZS5yZWxl
YXNlKCksIGZpcnN0Q2hpbGQoKSwgZWMpOworfQorCiBSZWY8SFRNTENvbGxlY3Rpb24+IENvbnRh
aW5lck5vZGU6OmVuc3VyZUNhY2hlZEhUTUxDb2xsZWN0aW9uKENvbGxlY3Rpb25UeXBlIHR5cGUp
CiB7CiAgICAgaWYgKEhUTUxDb2xsZWN0aW9uKiBjb2xsZWN0aW9uID0gY2FjaGVkSFRNTENvbGxl
Y3Rpb24odHlwZSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgJKHJldmlzaW9u
IDE4NjI5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRN
TENvbGxlY3Rpb247CitjbGFzcyBOb2RlT3JTdHJpbmc7CiBjbGFzcyBRdWFsaWZpZWROYW1lOwog
Y2xhc3MgUmVuZGVyRWxlbWVudDsKIApAQCAtMTUyLDYgKzE1Myw4IEBAIHB1YmxpYzoKICAgICBF
bGVtZW50KiBmaXJzdEVsZW1lbnRDaGlsZCgpIGNvbnN0OwogICAgIEVsZW1lbnQqIGxhc3RFbGVt
ZW50Q2hpbGQoKSBjb25zdDsKICAgICB1bnNpZ25lZCBjaGlsZEVsZW1lbnRDb3VudCgpIGNvbnN0
OworICAgIHZvaWQgYXBwZW5kKFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYsIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICB2b2lkIHByZXBlbmQoVmVjdG9yPE5vZGVPclN0cmluZz4mJiwgRXhjZXB0aW9uQ29k
ZSYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQ29udGFpbmVyTm9kZShEb2N1bWVudCYs
IENvbnN0cnVjdGlvblR5cGUgPSBDcmVhdGVDb250YWluZXIpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cAkocmV2aXNpb24gMTg2Mjk4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCwxNSArMjgsMTUgQEAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgi
CiAjaW5jbHVkZSAiQXR0ci5oIgogI2luY2x1ZGUgIkJlZm9yZUxvYWRFdmVudC5oIgotI2luY2x1
ZGUgIkNoaWxkTGlzdE11dGF0aW9uU2NvcGUuaCIKLSNpbmNsdWRlICJDaHJvbWUuaCIKLSNpbmNs
dWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJD
U1NSdWxlLmgiCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKICNpbmNsdWRlICJDU1NTZWxlY3Rv
ckxpc3QuaCIKICNpbmNsdWRlICJDU1NTdHlsZVJ1bGUuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNo
ZWV0LmgiCisjaW5jbHVkZSAiQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5oIgorI2luY2x1ZGUgIkNo
cm9tZS5oIgorI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkNvbnRhaW5lck5v
ZGVBbGdvcml0aG1zLmgiCiAjaW5jbHVkZSAiQ29udGV4dE1lbnVDb250cm9sbGVyLmgiCiAjaW5j
bHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIKQEAgLTU4LDYgKzU4LDcgQEAKICNpbmNsdWRlICJL
ZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk11dGF0aW9u
RXZlbnQuaCIKKyNpbmNsdWRlICJOb2RlT3JTdHJpbmcuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVy
U3R5bGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0
Zm9ybVdoZWVsRXZlbnQuaCIKQEAgLTQ3NCw2ICs0NzUsODcgQEAgYm9vbCBOb2RlOjphcHBlbmRD
aGlsZChQYXNzUmVmUHRyPE5vZGU+IAogICAgIHJldHVybiBkb3duY2FzdDxDb250YWluZXJOb2Rl
PigqdGhpcykuYXBwZW5kQ2hpbGQobmV3Q2hpbGQsIGVjKTsKIH0KIAorc3RhdGljIEhhc2hTZXQ8
UmVmUHRyPE5vZGU+PiBub2RlU2V0UHJlVHJhbnNmb3JtZWRGcm9tTm9kZU9yU3RyaW5nVmVjdG9y
KGNvbnN0IFZlY3RvcjxOb2RlT3JTdHJpbmc+JiBub2RlT3JTdHJpbmdWZWN0b3IpCit7CisgICAg
SGFzaFNldDxSZWZQdHI8Tm9kZT4+IG5vZGVTZXQ7CisgICAgZm9yIChhdXRvJiBub2RlT3JTdHJp
bmcgOiBub2RlT3JTdHJpbmdWZWN0b3IpIHsKKyAgICAgICAgc3dpdGNoIChub2RlT3JTdHJpbmcu
dHlwZSgpKSB7CisgICAgICAgIGNhc2UgTm9kZU9yU3RyaW5nOjpUeXBlOjpTdHJpbmc6CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOb2RlT3JTdHJpbmc6OlR5cGU6Ok5vZGU6Cisg
ICAgICAgICAgICBub2RlU2V0LmFkZChub2RlT3JTdHJpbmcubm9kZSgpKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIG5vZGVTZXQ7Cit9CisKK3N0
YXRpYyBSZWZQdHI8Tm9kZT4gZmlyc3RQcmVjZWRpbmdTaWJsaW5nTm90SW5Ob2RlU2V0KE5vZGUm
IGNvbnRleHQsIEhhc2hTZXQ8UmVmUHRyPE5vZGU+PiBub2RlU2V0KQoreworICAgIGZvciAoTm9k
ZSogc2libGluZyA9IGNvbnRleHQucHJldmlvdXNTaWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcg
PSBzaWJsaW5nLT5wcmV2aW91c1NpYmxpbmcoKSkgeworICAgICAgICBpZiAoIW5vZGVTZXQuY29u
dGFpbnMoc2libGluZykpCisgICAgICAgICAgICByZXR1cm4gc2libGluZzsKKyAgICB9CisgICAg
cmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBSZWZQdHI8Tm9kZT4gZmlyc3RGb2xsb3dpbmdT
aWJsaW5nTm90SW5Ob2RlU2V0KE5vZGUmIGNvbnRleHQsIEhhc2hTZXQ8UmVmUHRyPE5vZGU+PiBu
b2RlU2V0KQoreworICAgIGZvciAoTm9kZSogc2libGluZyA9IGNvbnRleHQubmV4dFNpYmxpbmco
KTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAg
aWYgKCFub2RlU2V0LmNvbnRhaW5zKHNpYmxpbmcpKQorICAgICAgICAgICAgcmV0dXJuIHNpYmxp
bmc7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIE5vZGU6OmJlZm9yZShW
ZWN0b3I8Tm9kZU9yU3RyaW5nPiYmIG5vZGVPclN0cmluZ1ZlY3RvciwgRXhjZXB0aW9uQ29kZSYg
ZWMpCit7CisgICAgaWYgKCFwYXJlbnROb2RlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEhh
c2hTZXQ8UmVmUHRyPE5vZGU+PiBub2RlU2V0ID0gbm9kZVNldFByZVRyYW5zZm9ybWVkRnJvbU5v
ZGVPclN0cmluZ1ZlY3Rvcihub2RlT3JTdHJpbmdWZWN0b3IpOworICAgIFJlZlB0cjxOb2RlPiB2
aWFibGVQcmV2aW91c1NpYmxpbmcgPSBmaXJzdFByZWNlZGluZ1NpYmxpbmdOb3RJbk5vZGVTZXQo
KnRoaXMsIG5vZGVTZXQpOworCisgICAgUmVmUHRyPE5vZGU+IG5vZGUgPSBjb252ZXJ0Tm9kZXNP
clN0cmluZ3NJbnRvTm9kZSgqdGhpcywgV1RGOjptb3ZlKG5vZGVPclN0cmluZ1ZlY3RvciksIGVj
KTsKKyAgICBpZiAoZWMgfHwgIW5vZGUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICh2aWFi
bGVQcmV2aW91c1NpYmxpbmcpCisgICAgICAgIHZpYWJsZVByZXZpb3VzU2libGluZyA9IHZpYWJs
ZVByZXZpb3VzU2libGluZy0+bmV4dFNpYmxpbmcoKTsKKyAgICBlbHNlCisgICAgICAgIHZpYWJs
ZVByZXZpb3VzU2libGluZyA9IHBhcmVudE5vZGUoKS0+Zmlyc3RDaGlsZCgpOworCisgICAgcGFy
ZW50Tm9kZSgpLT5pbnNlcnRCZWZvcmUobm9kZSwgdmlhYmxlUHJldmlvdXNTaWJsaW5nLmdldCgp
LCBlYyk7Cit9CisKK3ZvaWQgTm9kZTo6YWZ0ZXIoVmVjdG9yPE5vZGVPclN0cmluZz4mJiBub2Rl
T3JTdHJpbmdWZWN0b3IsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghcGFyZW50Tm9k
ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBIYXNoU2V0PFJlZlB0cjxOb2RlPj4gbm9kZVNl
dCA9IG5vZGVTZXRQcmVUcmFuc2Zvcm1lZEZyb21Ob2RlT3JTdHJpbmdWZWN0b3Iobm9kZU9yU3Ry
aW5nVmVjdG9yKTsKKyAgICBSZWZQdHI8Tm9kZT4gdmlhYmxlTmV4dFNpYmxpbmcgPSBmaXJzdEZv
bGxvd2luZ1NpYmxpbmdOb3RJbk5vZGVTZXQoKnRoaXMsIG5vZGVTZXQpOworCisgICAgUmVmUHRy
PE5vZGU+IG5vZGUgPSBjb252ZXJ0Tm9kZXNPclN0cmluZ3NJbnRvTm9kZSgqdGhpcywgV1RGOjpt
b3ZlKG5vZGVPclN0cmluZ1ZlY3RvciksIGVjKTsKKyAgICBpZiAoZWMgfHwgIW5vZGUpCisgICAg
ICAgIHJldHVybjsKKworICAgIHBhcmVudE5vZGUoKS0+aW5zZXJ0QmVmb3JlKG5vZGUsIHZpYWJs
ZU5leHRTaWJsaW5nLmdldCgpLCBlYyk7Cit9CisKK3ZvaWQgTm9kZTo6cmVwbGFjZVdpdGgoVmVj
dG9yPE5vZGVPclN0cmluZz4mJiBub2RlT3JTdHJpbmdWZWN0b3IsIEV4Y2VwdGlvbkNvZGUmIGVj
KQoreworICAgIGlmICghcGFyZW50Tm9kZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQ
dHI8Tm9kZT4gbm9kZSA9IGNvbnZlcnROb2Rlc09yU3RyaW5nc0ludG9Ob2RlKCp0aGlzLCBXVEY6
Om1vdmUobm9kZU9yU3RyaW5nVmVjdG9yKSwgZWMpOworICAgIGlmIChlYyB8fCAhbm9kZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgcGFyZW50Tm9kZSgpLT5yZXBsYWNlQ2hpbGQobm9kZS5yZWxl
YXNlKCksIHRoaXMsIGVjKTsKK30KKwogdm9pZCBOb2RlOjpyZW1vdmUoRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CiAgICAgaWYgKENvbnRhaW5lck5vZGUqIHBhcmVudCA9IHBhcmVudE5vZGUoKSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuaAkocmV2aXNpb24gMTg2Mjk4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsMTAgKzU4LDExIEBAIGNsYXNzIEludFJlY3Q7CiBj
bGFzcyBLZXlib2FyZEV2ZW50OwogY2xhc3MgTWF0aE1MUXVhbGlmaWVkTmFtZTsKIGNsYXNzIE5T
UmVzb2x2ZXI7Ci1jbGFzcyBOYW1lZE5vZGVNYXA7CiBjbGFzcyBOYW1lTm9kZUxpc3Q7CitjbGFz
cyBOYW1lZE5vZGVNYXA7CiBjbGFzcyBOb2RlTGlzdDsKIGNsYXNzIE5vZGVMaXN0c05vZGVEYXRh
OworY2xhc3MgTm9kZU9yU3RyaW5nOwogY2xhc3MgTm9kZVJhcmVEYXRhOwogY2xhc3MgUXVhbGlm
aWVkTmFtZTsKIGNsYXNzIFJhZGlvTm9kZUxpc3Q7CkBAIC0xOTMsNyArMTk0LDYgQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcmVtb3ZlQ2hpbGQoTm9kZSogY2hpbGQsIEV4Y2Vw
dGlvbkNvZGUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGFwcGVuZENoaWxkKFBhc3NSZWZQ
dHI8Tm9kZT4gbmV3Q2hpbGQsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcmVtb3ZlKEV4Y2VwdGlvbkNvZGUmKTsKICAgICBib29sIGhhc0NoaWxkTm9kZXMoKSBj
b25zdCB7IHJldHVybiBmaXJzdENoaWxkKCk7IH0KIAogICAgIGVudW0gY2xhc3MgQ2xvbmluZ09w
ZXJhdGlvbiB7CkBAIC0yMjcsNiArMjI3LDEyIEBAIHB1YmxpYzoKICAgICBFbGVtZW50KiBwcmV2
aW91c0VsZW1lbnRTaWJsaW5nKCkgY29uc3Q7CiAgICAgRWxlbWVudCogbmV4dEVsZW1lbnRTaWJs
aW5nKCkgY29uc3Q7CiAKKyAgICAvLyBGcm9tIHRoZSBDaGlsZE5vZGUgLSBodHRwczovL2RvbS5z
cGVjLndoYXR3Zy5vcmcvI2NoaWxkbm9kZQorICAgIHZvaWQgYmVmb3JlKFZlY3RvcjxOb2RlT3JT
dHJpbmc+JiYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGFmdGVyKFZlY3RvcjxOb2RlT3JT
dHJpbmc+JiYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHJlcGxhY2VXaXRoKFZlY3RvcjxO
b2RlT3JTdHJpbmc+JiYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHJlbW92ZShFeGNlcHRpb25Db2RlJik7CisKICAgICAvLyBPdGhlciBtZXRob2RzIChub3QgcGFy
dCBvZiBET00pCiAKICAgICBib29sIGlzRWxlbWVudE5vZGUoKSBjb25zdCB7IHJldHVybiBnZXRG
bGFnKElzRWxlbWVudEZsYWcpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZU9yU3Ry
aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZU9yU3RyaW5nLmNw
cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlT3JTdHJpbmcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiTm9kZU9yU3RyaW5nLmgiCisKKyNpbmNsdWRlICJEb2N1bWVudEZy
YWdtZW50LmgiCisjaW5jbHVkZSAiVGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Jl
ZlB0cjxOb2RlPiBjb252ZXJ0Tm9kZXNPclN0cmluZ3NJbnRvTm9kZShOb2RlJiBjb250ZXh0LCBW
ZWN0b3I8Tm9kZU9yU3RyaW5nPiYmIG5vZGVPclN0cmluZ1ZlY3RvciwgRXhjZXB0aW9uQ29kZSYg
ZWMpCit7CisgICAgaWYgKG5vZGVPclN0cmluZ1ZlY3Rvci5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgVmVjdG9yPFJlZlB0cjxOb2RlPj4gbm9kZXM7CisgICAgZm9y
IChhdXRvJiBub2RlT3JTdHJpbmcgOiBub2RlT3JTdHJpbmdWZWN0b3IpIHsKKyAgICAgICAgc3dp
dGNoIChub2RlT3JTdHJpbmcudHlwZSgpKSB7CisgICAgICAgIGNhc2UgTm9kZU9yU3RyaW5nOjpU
eXBlOjpTdHJpbmc6CisgICAgICAgICAgICBub2Rlcy5hcHBlbmQoVGV4dDo6Y3JlYXRlKGNvbnRl
eHQuZG9jdW1lbnQoKSwgbm9kZU9yU3RyaW5nLnN0cmluZygpKSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBOb2RlT3JTdHJpbmc6OlR5cGU6Ok5vZGU6CisgICAgICAgICAgICBu
b2Rlcy5hcHBlbmQobm9kZU9yU3RyaW5nLm5vZGUoKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIFJlZlB0cjxOb2RlPiBub2RlVG9SZXR1cm47CisgICAgaWYg
KG5vZGVzLnNpemUoKSA9PSAxKQorICAgICAgICBub2RlVG9SZXR1cm4gPSBub2Rlcy5maXJzdCgp
OworICAgIGVsc2UgeworICAgICAgICBub2RlVG9SZXR1cm4gPSBEb2N1bWVudEZyYWdtZW50Ojpj
cmVhdGUoY29udGV4dC5kb2N1bWVudCgpKTsKKyAgICAgICAgZm9yIChhdXRvJiBub2RlIDogbm9k
ZXMpIHsKKyAgICAgICAgICAgIG5vZGVUb1JldHVybi0+YXBwZW5kQ2hpbGQobm9kZSwgZWMpOwor
ICAgICAgICAgICAgaWYgKGVjKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiBXVEY6Om1vdmUobm9kZVRvUmV0dXJuKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05v
ZGVPclN0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlT3JTdHJp
bmcuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlT3JTdHJpbmcuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTm9k
ZU9yU3RyaW5nX2gKKyNkZWZpbmUgTm9kZU9yU3RyaW5nX2gKKworI2luY2x1ZGUgIk5vZGUuaCIK
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTm9kZU9yU3RyaW5nIHsKK3B1YmxpYzoK
KyAgICBlbnVtIGNsYXNzIFR5cGUgeworICAgICAgICBTdHJpbmcsCisgICAgICAgIE5vZGUKKyAg
ICB9OworCisgICAgTm9kZU9yU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorICAgICAgICA6
IG1fdHlwZShUeXBlOjpTdHJpbmcpCisgICAgeworICAgICAgICBtX2RhdGEuc3RyaW5nID0gc3Ry
aW5nLmltcGwoKTsKKyAgICAgICAgbV9kYXRhLnN0cmluZy0+cmVmKCk7CisgICAgfQorCisgICAg
Tm9kZU9yU3RyaW5nKE5vZGUqIG5vZGUpCisgICAgICAgIDogbV90eXBlKFR5cGU6Ok5vZGUpCisg
ICAgeworICAgICAgICBtX2RhdGEubm9kZSA9IG5vZGU7CisgICAgICAgIG1fZGF0YS5ub2RlLT5y
ZWYoKTsKKyAgICB9CisKKyAgICBOb2RlT3JTdHJpbmcoY29uc3QgTm9kZU9yU3RyaW5nJiBvdGhl
cikKKyAgICAgICAgOiBtX3R5cGUob3RoZXIubV90eXBlKQorICAgIHsKKyAgICAgICAgc3dpdGNo
IChtX3R5cGUpIHsKKyAgICAgICAgY2FzZSBUeXBlOjpTdHJpbmc6CisgICAgICAgICAgICBtX2Rh
dGEuc3RyaW5nID0gb3RoZXIubV9kYXRhLnN0cmluZzsKKyAgICAgICAgICAgIG1fZGF0YS5zdHJp
bmctPnJlZigpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVHlwZTo6Tm9kZToK
KyAgICAgICAgICAgIG1fZGF0YS5ub2RlID0gb3RoZXIubV9kYXRhLm5vZGU7CisgICAgICAgICAg
ICBtX2RhdGEubm9kZS0+cmVmKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
IH0KKworICAgIH5Ob2RlT3JTdHJpbmcoKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChtX3R5cGUp
IHsKKyAgICAgICAgY2FzZSBUeXBlOjpTdHJpbmc6CisgICAgICAgICAgICBtX2RhdGEuc3RyaW5n
LT5kZXJlZigpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVHlwZTo6Tm9kZToK
KyAgICAgICAgICAgIG1fZGF0YS5ub2RlLT5kZXJlZigpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7
IH0KKworICAgIE5vZGUqIG5vZGUoKSBjb25zdCB7IEFTU0VSVChtX3R5cGUgPT0gVHlwZTo6Tm9k
ZSk7IHJldHVybiBtX2RhdGEubm9kZTsgfQorICAgIFN0cmluZ0ltcGwqIHN0cmluZygpIGNvbnN0
IHsgQVNTRVJUKG1fdHlwZSA9PSBUeXBlOjpTdHJpbmcpOyByZXR1cm4gbV9kYXRhLnN0cmluZzsg
fQorICAgIAorcHJpdmF0ZToKKyAgICBUeXBlIG1fdHlwZTsKKyAgICB1bmlvbiB7CisgICAgICAg
IFN0cmluZ0ltcGwqIHN0cmluZzsKKyAgICAgICAgTm9kZSogbm9kZTsKKyAgICB9IG1fZGF0YTsK
K307CisKK1JlZlB0cjxOb2RlPiBjb252ZXJ0Tm9kZXNPclN0cmluZ3NJbnRvTm9kZShOb2RlJiBj
b250ZXh0LCBWZWN0b3I8Tm9kZU9yU3RyaW5nPiYmLCBFeGNlcHRpb25Db2RlJik7CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE5vZGVPclN0cmluZ19oCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vUGFyZW50Tm9kZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL1BhcmVudE5vZGUuaWRsCShyZXZpc2lvbiAxODYyOTgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vUGFyZW50Tm9kZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDEzIEBACiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQgbGFzdEVsZW1lbnRDaGlsZDsKICAgICByZWFk
b25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBjaGlsZEVsZW1lbnRDb3VudDsKIAorI2lmICFk
ZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSB8fCAhTEFOR1VBR0VfT0JKRUNUSVZFX0MKKyAg
ICBbVW5zY29wZWFibGUsIFJhaXNlc0V4Y2VwdGlvbiwgQ3VzdG9tXSB2b2lkIHByZXBlbmQoKE5v
ZGUgb3IgRE9NU3RyaW5nKS4uLiBub2Rlcyk7CisgICAgW1Vuc2NvcGVhYmxlLCBSYWlzZXNFeGNl
cHRpb24sIEN1c3RvbV0gdm9pZCBhcHBlbmQoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLiBub2Rlcyk7
CisjZW5kaWYKKworICAgIC8vIFtVbnNjb3BlYWJsZV0gRWxlbWVudD8gcXVlcnkoRE9NU3RyaW5n
IHJlbGF0aXZlU2VsZWN0b3JzKTsKKyAgICAvLyBbTmV3T2JqZWN0LCBVbnNjb3BlYWJsZV0gRWxl
bWVudHMgcXVlcnlBbGwoRE9NU3RyaW5nIHJlbGF0aXZlU2VsZWN0b3JzKTsKICAgICBbUmFpc2Vz
RXhjZXB0aW9uXSBFbGVtZW50IHF1ZXJ5U2VsZWN0b3IoRE9NU3RyaW5nIHNlbGVjdG9ycyk7CiAg
ICAgW1JhaXNlc0V4Y2VwdGlvbl0gTm9kZUxpc3QgcXVlcnlTZWxlY3RvckFsbChET01TdHJpbmcg
c2VsZWN0b3JzKTsKIH07CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODYyOTgpCisrKyBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAxNS0wNy0wNSAg
U2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIERPTTQ6IHByZXBlbmQsIGFw
cGVuZCwgYmVmb3JlLCBhZnRlciAmIHJlcGxhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc0NjQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9DaGlsZE5vZGUtYWZ0ZXItZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9DaGlsZE5vZGUtYWZ0ZXIuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9kb20vQ2hpbGROb2RlLWJlZm9yZS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0NoaWxkTm9kZS1iZWZvcmUuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vQ2hpbGROb2RlLXJlcGxhY2VXaXRoLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9kb20vQ2hpbGROb2RlLXJlcGxhY2VXaXRoLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL1BhcmVudE5vZGUtYXBwZW5kLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9kb20vUGFyZW50Tm9kZS1hcHBlbmQuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vUGFyZW50Tm9kZS1wcmVwZW5kLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vUGFyZW50Tm9kZS1wcmVwZW5kLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2RvbS9ydGwtc2Nyb2xsLXRvLWxlZnRtb3N0LWFuZC1y
ZXNpemUtZXhwZWN0ZWQudHh0OgorCiAyMDE1LTA3LTA1ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFu
ZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFtFUzZdIEltcGxlbWVudCB0aGUgbGF0ZXN0IFBy
b21pc2Ugc3BlYyBpbiBKUwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vQ2hpbGROb2RlLWFm
dGVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9DaGls
ZE5vZGUtYWZ0ZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9kb20vQ2hpbGROb2RlLWFmdGVyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDE4OSBAQAorVGVzdHMgQ2hpbGROb2RlLmFmdGVyKChOb2RlIG9yIERPTVN0cmluZykuLi4p
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitUZXN0IEVsZW1lbnQuYWZ0ZXIoKE5v
ZGUgb3IgRE9NU3RyaW5nKS4uLikuCitUZXN0IHdpdGggbm8gYXJndW1lbnRzLgorUEFTUyBwYXJl
bnQuY2hpbGROb2Rlcy5sZW5ndGggaXMgMQorCitUZXN0IHdpdGggYSBzaW5nbGUgZWxlbWVudC4K
K1BBU1MgcGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoIGlzIDIKK1BBU1MgY2hpbGQubmV4dFNpYmxp
bmcgaXMgZDEKKworVGVzdCB3aXRoIGEgc2luZ2xlIHN0cmluZy4KK1BBU1MgcGFyZW50LmNoaWxk
Tm9kZXMubGVuZ3RoIGlzIDIKK1BBU1MgY2hpbGQubmV4dFNpYmxpbmcuZGF0YSBpcyAnaGVsbG8n
CisKK1Rlc3Qgd2l0aCBhIGJvdGggc3RyaW5ncyBhbmQgZWxlbWVudHMuCitQQVNTIHBhcmVudC5j
aGlsZE5vZGVzLmxlbmd0aCBpcyAzCitQQVNTIGNoaWxkLm5leHRTaWJsaW5nLmRhdGEgaXMgJ2hl
bGxvJworUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1sxXSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQ
QVNTIHBhcmVudC5jaGlsZE5vZGVzWzFdLmRhdGEgaXMgJ2hlbGxvJworUEFTUyBwYXJlbnQuY2hp
bGROb2Rlc1syXSBpcyBhbiBpbnN0YW5jZSBvZiBFbGVtZW50CitQQVNTIHBhcmVudC5jaGlsZE5v
ZGVzWzJdIGlzIGQxCisKK1Rlc3QgY29udmVyc2lvbiB0byBzdHJpbmcKK1BBU1MgcGFyZW50LmNo
aWxkTm9kZXMubGVuZ3RoIGlzIDQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMF0gaXMgYW4gaW5z
dGFuY2Ugb2YgRWxlbWVudAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1swXSBpcyBjaGlsZAorUEFT
UyBwYXJlbnQuY2hpbGROb2Rlc1sxXSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQQVNTIHBhcmVu
dC5jaGlsZE5vZGVzWzFdLmRhdGEgaXMgJ251bGwnCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzJd
IGlzIGFuIGluc3RhbmNlIG9mIFRleHQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMl0uZGF0YSBp
cyAndW5kZWZpbmVkJworUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1szXSBpcyBhbiBpbnN0YW5jZSBv
ZiBUZXh0CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzNdLmRhdGEgaXMgJzcnCisKK1Rlc3QgYSBj
aGlsZCB3aXRob3V0IGEgcGFyZW50LgorUEFTUyBjaGlsZC5uZXh0U2libGluZyBpcyBudWxsCisK
K1Rlc3Qgd2hlbiB0aGVyZSB0aGUgbmV4dCBzaWJsaW5nIGlzIG5vdCBhIHZpYWJsZSBuZXh0IHNp
YmxpbmcuCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzLmxlbmd0aCBpcyA1CitQQVNTIHBhcmVudC5j
aGlsZE5vZGVzWzBdIGlzIGFuIGluc3RhbmNlIG9mIEVsZW1lbnQKK1BBU1MgcGFyZW50LmNoaWxk
Tm9kZXNbMF0gaXMgY2hpbGQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMV0gaXMgYW4gaW5zdGFu
Y2Ugb2YgVGV4dAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1sxXS5kYXRhIGlzICdoZWxsbycKK1BB
U1MgcGFyZW50LmNoaWxkTm9kZXNbMl0gaXMgYW4gaW5zdGFuY2Ugb2YgRWxlbWVudAorUEFTUyBw
YXJlbnQuY2hpbGROb2Rlc1syXSBpcyBkMQorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1szXSBpcyBh
biBpbnN0YW5jZSBvZiBUZXh0CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzNdLmRhdGEgaXMgJ3dv
cmxkJworUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1s0XSBpcyBhbiBpbnN0YW5jZSBvZiBFbGVtZW50
CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzRdIGlzIGQyCisKK1Rlc3Qgd2hlbiB0aGVyZSBpcyBu
byB2aWFibGUgbmV4dCBzaWJsaW5nLgorUEFTUyBwYXJlbnQuY2hpbGROb2Rlcy5sZW5ndGggaXMg
NQorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1swXSBpcyBhbiBpbnN0YW5jZSBvZiBFbGVtZW50CitQ
QVNTIHBhcmVudC5jaGlsZE5vZGVzWzBdIGlzIGNoaWxkCitQQVNTIHBhcmVudC5jaGlsZE5vZGVz
WzFdIGlzIGFuIGluc3RhbmNlIG9mIFRleHQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMV0uZGF0
YSBpcyAnaGVsbG8nCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzJdIGlzIGFuIGluc3RhbmNlIG9m
IEVsZW1lbnQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMl0gaXMgZDEKK1BBU1MgcGFyZW50LmNo
aWxkTm9kZXNbM10gaXMgYW4gaW5zdGFuY2Ugb2YgVGV4dAorUEFTUyBwYXJlbnQuY2hpbGROb2Rl
c1szXS5kYXRhIGlzICd3b3JsZCcKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbNF0gaXMgYW4gaW5z
dGFuY2Ugb2YgRWxlbWVudAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1s0XSBpcyBkMgorCitUZXN0
IFRleHQuYWZ0ZXIoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLikuCitUZXN0IHdpdGggbm8gYXJndW1l
bnRzLgorUEFTUyBwYXJlbnQuY2hpbGROb2Rlcy5sZW5ndGggaXMgMQorCitUZXN0IHdpdGggYSBz
aW5nbGUgZWxlbWVudC4KK1BBU1MgcGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoIGlzIDIKK1BBU1Mg
Y2hpbGQubmV4dFNpYmxpbmcgaXMgZDEKKworVGVzdCB3aXRoIGEgc2luZ2xlIHN0cmluZy4KK1BB
U1MgcGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoIGlzIDIKK1BBU1MgY2hpbGQubmV4dFNpYmxpbmcu
ZGF0YSBpcyAnaGVsbG8nCisKK1Rlc3Qgd2l0aCBhIGJvdGggc3RyaW5ncyBhbmQgZWxlbWVudHMu
CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzLmxlbmd0aCBpcyAzCitQQVNTIGNoaWxkLm5leHRTaWJs
aW5nLmRhdGEgaXMgJ2hlbGxvJworUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1sxXSBpcyBhbiBpbnN0
YW5jZSBvZiBUZXh0CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzFdLmRhdGEgaXMgJ2hlbGxvJwor
UEFTUyBwYXJlbnQuY2hpbGROb2Rlc1syXSBpcyBhbiBpbnN0YW5jZSBvZiBFbGVtZW50CitQQVNT
IHBhcmVudC5jaGlsZE5vZGVzWzJdIGlzIGQxCisKK1Rlc3QgY29udmVyc2lvbiB0byBzdHJpbmcK
K1BBU1MgcGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoIGlzIDQKK1BBU1MgcGFyZW50LmNoaWxkTm9k
ZXNbMF0gaXMgYW4gaW5zdGFuY2Ugb2YgVGV4dAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1swXSBp
cyBjaGlsZAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1sxXSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0
CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzFdLmRhdGEgaXMgJ251bGwnCitQQVNTIHBhcmVudC5j
aGlsZE5vZGVzWzJdIGlzIGFuIGluc3RhbmNlIG9mIFRleHQKK1BBU1MgcGFyZW50LmNoaWxkTm9k
ZXNbMl0uZGF0YSBpcyAndW5kZWZpbmVkJworUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1szXSBpcyBh
biBpbnN0YW5jZSBvZiBUZXh0CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzNdLmRhdGEgaXMgJzcn
CisKK1Rlc3QgYSBjaGlsZCB3aXRob3V0IGEgcGFyZW50LgorUEFTUyBjaGlsZC5uZXh0U2libGlu
ZyBpcyBudWxsCisKK1Rlc3Qgd2hlbiB0aGVyZSB0aGUgbmV4dCBzaWJsaW5nIGlzIG5vdCBhIHZp
YWJsZSBuZXh0IHNpYmxpbmcuCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzLmxlbmd0aCBpcyA1CitQ
QVNTIHBhcmVudC5jaGlsZE5vZGVzWzBdIGlzIGFuIGluc3RhbmNlIG9mIFRleHQKK1BBU1MgcGFy
ZW50LmNoaWxkTm9kZXNbMF0gaXMgY2hpbGQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMV0gaXMg
YW4gaW5zdGFuY2Ugb2YgVGV4dAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1sxXS5kYXRhIGlzICdo
ZWxsbycKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMl0gaXMgYW4gaW5zdGFuY2Ugb2YgRWxlbWVu
dAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1syXSBpcyBkMQorUEFTUyBwYXJlbnQuY2hpbGROb2Rl
c1szXSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzNdLmRh
dGEgaXMgJ3dvcmxkJworUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1s0XSBpcyBhbiBpbnN0YW5jZSBv
ZiBFbGVtZW50CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzRdIGlzIGQyCisKK1Rlc3Qgd2hlbiB0
aGVyZSBpcyBubyB2aWFibGUgbmV4dCBzaWJsaW5nLgorUEFTUyBwYXJlbnQuY2hpbGROb2Rlcy5s
ZW5ndGggaXMgNQorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1swXSBpcyBhbiBpbnN0YW5jZSBvZiBU
ZXh0CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzBdIGlzIGNoaWxkCitQQVNTIHBhcmVudC5jaGls
ZE5vZGVzWzFdIGlzIGFuIGluc3RhbmNlIG9mIFRleHQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNb
MV0uZGF0YSBpcyAnaGVsbG8nCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzJdIGlzIGFuIGluc3Rh
bmNlIG9mIEVsZW1lbnQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMl0gaXMgZDEKK1BBU1MgcGFy
ZW50LmNoaWxkTm9kZXNbM10gaXMgYW4gaW5zdGFuY2Ugb2YgVGV4dAorUEFTUyBwYXJlbnQuY2hp
bGROb2Rlc1szXS5kYXRhIGlzICd3b3JsZCcKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbNF0gaXMg
YW4gaW5zdGFuY2Ugb2YgRWxlbWVudAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1s0XSBpcyBkMgor
CitUZXN0IENvbW1lbnQuYWZ0ZXIoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLikuCitUZXN0IHdpdGgg
bm8gYXJndW1lbnRzLgorUEFTUyBwYXJlbnQuY2hpbGROb2Rlcy5sZW5ndGggaXMgMQorCitUZXN0
IHdpdGggYSBzaW5nbGUgZWxlbWVudC4KK1BBU1MgcGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoIGlz
IDIKK1BBU1MgY2hpbGQubmV4dFNpYmxpbmcgaXMgZDEKKworVGVzdCB3aXRoIGEgc2luZ2xlIHN0
cmluZy4KK1BBU1MgcGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoIGlzIDIKK1BBU1MgY2hpbGQubmV4
dFNpYmxpbmcuZGF0YSBpcyAnaGVsbG8nCisKK1Rlc3Qgd2l0aCBhIGJvdGggc3RyaW5ncyBhbmQg
ZWxlbWVudHMuCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzLmxlbmd0aCBpcyAzCitQQVNTIGNoaWxk
Lm5leHRTaWJsaW5nLmRhdGEgaXMgJ2hlbGxvJworUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1sxXSBp
cyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzFdLmRhdGEgaXMg
J2hlbGxvJworUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1syXSBpcyBhbiBpbnN0YW5jZSBvZiBFbGVt
ZW50CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzJdIGlzIGQxCisKK1Rlc3QgY29udmVyc2lvbiB0
byBzdHJpbmcKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoIGlzIDQKK1BBU1MgcGFyZW50
LmNoaWxkTm9kZXNbMF0gaXMgYW4gaW5zdGFuY2Ugb2YgQ29tbWVudAorUEFTUyBwYXJlbnQuY2hp
bGROb2Rlc1swXSBpcyBjaGlsZAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1sxXSBpcyBhbiBpbnN0
YW5jZSBvZiBUZXh0CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzFdLmRhdGEgaXMgJ251bGwnCitQ
QVNTIHBhcmVudC5jaGlsZE5vZGVzWzJdIGlzIGFuIGluc3RhbmNlIG9mIFRleHQKK1BBU1MgcGFy
ZW50LmNoaWxkTm9kZXNbMl0uZGF0YSBpcyAndW5kZWZpbmVkJworUEFTUyBwYXJlbnQuY2hpbGRO
b2Rlc1szXSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzNd
LmRhdGEgaXMgJzcnCisKK1Rlc3QgYSBjaGlsZCB3aXRob3V0IGEgcGFyZW50LgorUEFTUyBjaGls
ZC5uZXh0U2libGluZyBpcyBudWxsCisKK1Rlc3Qgd2hlbiB0aGVyZSB0aGUgbmV4dCBzaWJsaW5n
IGlzIG5vdCBhIHZpYWJsZSBuZXh0IHNpYmxpbmcuCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzLmxl
bmd0aCBpcyA1CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzBdIGlzIGFuIGluc3RhbmNlIG9mIENv
bW1lbnQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMF0gaXMgY2hpbGQKK1BBU1MgcGFyZW50LmNo
aWxkTm9kZXNbMV0gaXMgYW4gaW5zdGFuY2Ugb2YgVGV4dAorUEFTUyBwYXJlbnQuY2hpbGROb2Rl
c1sxXS5kYXRhIGlzICdoZWxsbycKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMl0gaXMgYW4gaW5z
dGFuY2Ugb2YgRWxlbWVudAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1syXSBpcyBkMQorUEFTUyBw
YXJlbnQuY2hpbGROb2Rlc1szXSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQQVNTIHBhcmVudC5j
aGlsZE5vZGVzWzNdLmRhdGEgaXMgJ3dvcmxkJworUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1s0XSBp
cyBhbiBpbnN0YW5jZSBvZiBFbGVtZW50CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzRdIGlzIGQy
CisKK1Rlc3Qgd2hlbiB0aGVyZSBpcyBubyB2aWFibGUgbmV4dCBzaWJsaW5nLgorUEFTUyBwYXJl
bnQuY2hpbGROb2Rlcy5sZW5ndGggaXMgNQorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1swXSBpcyBh
biBpbnN0YW5jZSBvZiBDb21tZW50CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzBdIGlzIGNoaWxk
CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzFdIGlzIGFuIGluc3RhbmNlIG9mIFRleHQKK1BBU1Mg
cGFyZW50LmNoaWxkTm9kZXNbMV0uZGF0YSBpcyAnaGVsbG8nCitQQVNTIHBhcmVudC5jaGlsZE5v
ZGVzWzJdIGlzIGFuIGluc3RhbmNlIG9mIEVsZW1lbnQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNb
Ml0gaXMgZDEKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbM10gaXMgYW4gaW5zdGFuY2Ugb2YgVGV4
dAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1szXS5kYXRhIGlzICd3b3JsZCcKK1BBU1MgcGFyZW50
LmNoaWxkTm9kZXNbNF0gaXMgYW4gaW5zdGFuY2Ugb2YgRWxlbWVudAorUEFTUyBwYXJlbnQuY2hp
bGROb2Rlc1s0XSBpcyBkMgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vQ2hpbGROb2RlLWFmdGVy
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vQ2hpbGROb2RlLWFmdGVy
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9DaGlsZE5vZGUtYWZ0
ZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzMyBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUZXN0cyBDaGlsZE5vZGUuYWZ0ZXIoKE5vZGUgb3Ig
RE9NU3RyaW5nKS4uLikiKTsKK2Z1bmN0aW9uIHRlc3QodCwgY3JlYXRlQ2hpbGQpCit7CisgICAg
dHlwZSA9IHQ7CisgICAgZGVidWcoIjxiPlRlc3QgIiArIHR5cGUgKyAiLmFmdGVyKChOb2RlIG9y
IERPTVN0cmluZykuLi4pLjwvYj4iKTsKKyAgICAKKyAgICBkZWJ1ZygiVGVzdCB3aXRoIG5vIGFy
Z3VtZW50cy4iKTsKKyAgICBwYXJlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
KyAgICBjaGlsZCA9IGNyZWF0ZUNoaWxkKCk7CisgICAgcGFyZW50LmFwcGVuZENoaWxkKGNoaWxk
KTsKKyAgICBjaGlsZC5hZnRlcigpOworICAgIHNob3VsZEJlKCJwYXJlbnQuY2hpbGROb2Rlcy5s
ZW5ndGgiLCAiMSIpOworICAgIGRlYnVnKCIiKTsKKworICAgIGRlYnVnKCJUZXN0IHdpdGggYSBz
aW5nbGUgZWxlbWVudC4iKTsKKyAgICBwYXJlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTsKKyAgICBjaGlsZCA9IGNyZWF0ZUNoaWxkKCk7CisgICAgcGFyZW50LmFwcGVuZENoaWxk
KGNoaWxkKTsKKyAgICBkMSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGNo
aWxkLmFmdGVyKGQxKTsKKyAgICBzaG91bGRCZSgicGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoIiwg
IjIiKTsKKyAgICBzaG91bGRCZSgiY2hpbGQubmV4dFNpYmxpbmciLCAiZDEiKTsKKyAgICBkZWJ1
ZygiIik7CisKKyAgICBkZWJ1ZygiVGVzdCB3aXRoIGEgc2luZ2xlIHN0cmluZy4iKTsKKyAgICBw
YXJlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBjaGlsZCA9IGNyZWF0
ZUNoaWxkKCk7CisgICAgcGFyZW50LmFwcGVuZENoaWxkKGNoaWxkKTsKKyAgICBjaGlsZC5hZnRl
cignaGVsbG8nKTsKKyAgICBzaG91bGRCZSgicGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoIiwgIjIi
KTsKKyAgICBzaG91bGRCZSgiY2hpbGQubmV4dFNpYmxpbmcuZGF0YSIsICInaGVsbG8nIik7Cisg
ICAgZGVidWcoIiIpOworCisgICAgZGVidWcoIlRlc3Qgd2l0aCBhIGJvdGggc3RyaW5ncyBhbmQg
ZWxlbWVudHMuIik7CisgICAgcGFyZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7
CisgICAgY2hpbGQgPSBjcmVhdGVDaGlsZCgpOworICAgIHBhcmVudC5hcHBlbmRDaGlsZChjaGls
ZCk7CisgICAgZDEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBjaGlsZC5h
ZnRlcignaGVsbG8nLCBkMSk7CisgICAgc2hvdWxkQmUoInBhcmVudC5jaGlsZE5vZGVzLmxlbmd0
aCIsICIzIik7CisgICAgc2hvdWxkQmUoImNoaWxkLm5leHRTaWJsaW5nLmRhdGEiLCAiJ2hlbGxv
JyIpOworICAgIHNob3VsZEJlVHlwZSgicGFyZW50LmNoaWxkTm9kZXNbMV0iLCAiVGV4dCIpOwor
ICAgIHNob3VsZEJlKCJwYXJlbnQuY2hpbGROb2Rlc1sxXS5kYXRhIiwgIidoZWxsbyciKTsKKyAg
ICBzaG91bGRCZVR5cGUoInBhcmVudC5jaGlsZE5vZGVzWzJdIiwgIkVsZW1lbnQiKTsKKyAgICBz
aG91bGRCZSgicGFyZW50LmNoaWxkTm9kZXNbMl0iLCAiZDEiKTsKKyAgICBkZWJ1ZygiIik7CisK
KyAgICBkZWJ1ZygiVGVzdCBjb252ZXJzaW9uIHRvIHN0cmluZyIpOworICAgIHBhcmVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIGNoaWxkID0gY3JlYXRlQ2hpbGQoKTsK
KyAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoY2hpbGQpOworICAgIGNoaWxkLmFmdGVyKG51bGwsIHVu
ZGVmaW5lZCwgNyk7CisgICAgc2hvdWxkQmUoInBhcmVudC5jaGlsZE5vZGVzLmxlbmd0aCIsICI0
Iik7CisgICAgc2hvdWxkQmVUeXBlKCJwYXJlbnQuY2hpbGROb2Rlc1swXSIsIHR5cGUpOworICAg
IHNob3VsZEJlKCJwYXJlbnQuY2hpbGROb2Rlc1swXSIsICJjaGlsZCIpOworICAgIHNob3VsZEJl
VHlwZSgicGFyZW50LmNoaWxkTm9kZXNbMV0iLCAiVGV4dCIpOworICAgIHNob3VsZEJlKCJwYXJl
bnQuY2hpbGROb2Rlc1sxXS5kYXRhIiwgIidudWxsJyIpOworICAgIHNob3VsZEJlVHlwZSgicGFy
ZW50LmNoaWxkTm9kZXNbMl0iLCAiVGV4dCIpOworICAgIHNob3VsZEJlKCJwYXJlbnQuY2hpbGRO
b2Rlc1syXS5kYXRhIiwgIid1bmRlZmluZWQnIik7CisgICAgc2hvdWxkQmVUeXBlKCJwYXJlbnQu
Y2hpbGROb2Rlc1szXSIsICJUZXh0Iik7CisgICAgc2hvdWxkQmUoInBhcmVudC5jaGlsZE5vZGVz
WzNdLmRhdGEiLCAiJzcnIik7CisgICAgZGVidWcoIiIpOworCisgICAgZGVidWcoIlRlc3QgYSBj
aGlsZCB3aXRob3V0IGEgcGFyZW50LiIpOworICAgIGNoaWxkID0gY3JlYXRlQ2hpbGQoKTsKKyAg
ICBkMSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGNoaWxkLmFmdGVyKGQx
KTsKKyAgICBzaG91bGRCZU51bGwoImNoaWxkLm5leHRTaWJsaW5nIik7CisgICAgZGVidWcoIiIp
OworCisgICAgZGVidWcoIlRlc3Qgd2hlbiB0aGVyZSB0aGUgbmV4dCBzaWJsaW5nIGlzIG5vdCBh
IHZpYWJsZSBuZXh0IHNpYmxpbmcuIik7CisgICAgcGFyZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7CisgICAgY2hpbGQgPSBjcmVhdGVDaGlsZCgpOworICAgIHBhcmVudC5hcHBl
bmRDaGlsZChjaGlsZCk7CisgICAgZDEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
KyAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoZDEpOworICAgIGQyID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7CisgICAgcGFyZW50LmFwcGVuZENoaWxkKGQyKTsKKyAgICBjaGlsZC5hZnRl
cigiaGVsbG8iLCBkMSwgIndvcmxkIik7CisgICAgc2hvdWxkQmUoInBhcmVudC5jaGlsZE5vZGVz
Lmxlbmd0aCIsICI1Iik7CisgICAgc2hvdWxkQmVUeXBlKCJwYXJlbnQuY2hpbGROb2Rlc1swXSIs
IHR5cGUpOworICAgIHNob3VsZEJlKCJwYXJlbnQuY2hpbGROb2Rlc1swXSIsICJjaGlsZCIpOwor
ICAgIHNob3VsZEJlVHlwZSgicGFyZW50LmNoaWxkTm9kZXNbMV0iLCAiVGV4dCIpOworICAgIHNo
b3VsZEJlKCJwYXJlbnQuY2hpbGROb2Rlc1sxXS5kYXRhIiwgIidoZWxsbyciKTsKKyAgICBzaG91
bGRCZVR5cGUoInBhcmVudC5jaGlsZE5vZGVzWzJdIiwgIkVsZW1lbnQiKTsKKyAgICBzaG91bGRC
ZSgicGFyZW50LmNoaWxkTm9kZXNbMl0iLCAiZDEiKTsKKyAgICBzaG91bGRCZVR5cGUoInBhcmVu
dC5jaGlsZE5vZGVzWzNdIiwgIlRleHQiKTsKKyAgICBzaG91bGRCZSgicGFyZW50LmNoaWxkTm9k
ZXNbM10uZGF0YSIsICInd29ybGQnIik7CisgICAgc2hvdWxkQmVUeXBlKCJwYXJlbnQuY2hpbGRO
b2Rlc1s0XSIsICJFbGVtZW50Iik7CisgICAgc2hvdWxkQmUoInBhcmVudC5jaGlsZE5vZGVzWzRd
IiwgImQyIik7CisgICAgZGVidWcoIiIpOworCisgICAgZGVidWcoIlRlc3Qgd2hlbiB0aGVyZSBp
cyBubyB2aWFibGUgbmV4dCBzaWJsaW5nLiIpOworICAgIHBhcmVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2RpdicpOworICAgIGNoaWxkID0gY3JlYXRlQ2hpbGQoKTsKKyAgICBwYXJlbnQu
YXBwZW5kQ2hpbGQoY2hpbGQpOworICAgIGQxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7CisgICAgcGFyZW50LmFwcGVuZENoaWxkKGQxKTsKKyAgICBkMiA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOworICAgIHBhcmVudC5hcHBlbmRDaGlsZChkMik7CisgICAgY2hpbGQu
YWZ0ZXIoImhlbGxvIiwgZDEsICJ3b3JsZCIsIGQyKTsKKyAgICBzaG91bGRCZSgicGFyZW50LmNo
aWxkTm9kZXMubGVuZ3RoIiwgIjUiKTsKKyAgICBzaG91bGRCZVR5cGUoInBhcmVudC5jaGlsZE5v
ZGVzWzBdIiwgdHlwZSk7CisgICAgc2hvdWxkQmUoInBhcmVudC5jaGlsZE5vZGVzWzBdIiwgImNo
aWxkIik7CisgICAgc2hvdWxkQmVUeXBlKCJwYXJlbnQuY2hpbGROb2Rlc1sxXSIsICJUZXh0Iik7
CisgICAgc2hvdWxkQmUoInBhcmVudC5jaGlsZE5vZGVzWzFdLmRhdGEiLCAiJ2hlbGxvJyIpOwor
ICAgIHNob3VsZEJlVHlwZSgicGFyZW50LmNoaWxkTm9kZXNbMl0iLCAiRWxlbWVudCIpOworICAg
IHNob3VsZEJlKCJwYXJlbnQuY2hpbGROb2Rlc1syXSIsICJkMSIpOworICAgIHNob3VsZEJlVHlw
ZSgicGFyZW50LmNoaWxkTm9kZXNbM10iLCAiVGV4dCIpOworICAgIHNob3VsZEJlKCJwYXJlbnQu
Y2hpbGROb2Rlc1szXS5kYXRhIiwgIid3b3JsZCciKTsKKyAgICBzaG91bGRCZVR5cGUoInBhcmVu
dC5jaGlsZE5vZGVzWzRdIiwgIkVsZW1lbnQiKTsKKyAgICBzaG91bGRCZSgicGFyZW50LmNoaWxk
Tm9kZXNbNF0iLCAiZDIiKTsKKworICAgIGRlYnVnKCIiKTsKK30KKwordGVzdCgiRWxlbWVudCIs
IGZ1bmN0aW9uKCkgeyByZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7IH0pOwor
dGVzdCgiVGV4dCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
InRleHQgbm9kZSB0ZXh0Iik7IH0pOwordGVzdCgiQ29tbWVudCIsIGZ1bmN0aW9uKCkgeyByZXR1
cm4gZG9jdW1lbnQuY3JlYXRlQ29tbWVudCgiY29tbWVudCB0ZXh0Iik7IH0pOworCis8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0NoaWxkTm9k
ZS1iZWZvcmUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L0NoaWxkTm9kZS1iZWZvcmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9kb20vQ2hpbGROb2RlLWJlZm9yZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxODkgQEAKK1Rlc3RzIENoaWxkTm9kZS5iZWZvcmUoKE5vZGUgb3IgRE9NU3Ry
aW5nKS4uLikKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1Rlc3QgRWxlbWVudC5i
ZWZvcmUoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLikuCitUZXN0IHdpdGggbm8gYXJndW1lbnRzLgor
UEFTUyBwYXJlbnQuY2hpbGROb2Rlcy5sZW5ndGggaXMgMQorCitUZXN0IHdpdGggYSBzaW5nbGUg
ZWxlbWVudC4KK1BBU1MgcGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoIGlzIDIKK1BBU1MgY2hpbGQu
cHJldmlvdXNTaWJsaW5nIGlzIGQxCisKK1Rlc3Qgd2l0aCBhIHNpbmdsZSBzdHJpbmcuCitQQVNT
IHBhcmVudC5jaGlsZE5vZGVzLmxlbmd0aCBpcyAyCitQQVNTIGNoaWxkLnByZXZpb3VzU2libGlu
Zy5kYXRhIGlzICdoZWxsbycKKworVGVzdCB3aXRoIGEgYm90aCBzdHJpbmdzIGFuZCBlbGVtZW50
cy4KK1BBU1MgcGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoIGlzIDMKK1BBU1MgY2hpbGQucHJldmlv
dXNTaWJsaW5nIGlzIGQxCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzBdIGlzIGFuIGluc3RhbmNl
IG9mIFRleHQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMF0uZGF0YSBpcyAnaGVsbG8nCitQQVNT
IHBhcmVudC5jaGlsZE5vZGVzWzFdIGlzIGFuIGluc3RhbmNlIG9mIEVsZW1lbnQKK1BBU1MgcGFy
ZW50LmNoaWxkTm9kZXNbMV0gaXMgZDEKKworVGVzdCBjb252ZXJzaW9uIHRvIHN0cmluZworUEFT
UyBwYXJlbnQuY2hpbGROb2Rlcy5sZW5ndGggaXMgNAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1sw
XSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzBdLmRhdGEg
aXMgJ251bGwnCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzFdIGlzIGFuIGluc3RhbmNlIG9mIFRl
eHQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMV0uZGF0YSBpcyAndW5kZWZpbmVkJworUEFTUyBw
YXJlbnQuY2hpbGROb2Rlc1syXSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQQVNTIHBhcmVudC5j
aGlsZE5vZGVzWzJdLmRhdGEgaXMgJzcnCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzNdIGlzIGFu
IGluc3RhbmNlIG9mIEVsZW1lbnQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbM10gaXMgY2hpbGQK
KworVGVzdCBhIGNoaWxkIHdpdGhvdXQgYSBwYXJlbnQuCitQQVNTIGNoaWxkLnByZXZpb3VzU2li
bGluZyBpcyBudWxsCisKK1Rlc3Qgd2hlbiB0aGVyZSB0aGUgcHJldmlvdXMgc2libGluZyBpcyBu
b3QgYSB2aWFibGUgcHJldmlvdXMgc2libGluZy4KK1BBU1MgcGFyZW50LmNoaWxkTm9kZXMubGVu
Z3RoIGlzIDUKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMF0gaXMgYW4gaW5zdGFuY2Ugb2YgRWxl
bWVudAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1swXSBpcyBkMQorUEFTUyBwYXJlbnQuY2hpbGRO
b2Rlc1sxXSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzFd
LmRhdGEgaXMgJ2hlbGxvJworUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1syXSBpcyBhbiBpbnN0YW5j
ZSBvZiBFbGVtZW50CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzJdIGlzIGQyCitQQVNTIHBhcmVu
dC5jaGlsZE5vZGVzWzNdIGlzIGFuIGluc3RhbmNlIG9mIFRleHQKK1BBU1MgcGFyZW50LmNoaWxk
Tm9kZXNbM10uZGF0YSBpcyAnd29ybGQnCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzRdIGlzIGFu
IGluc3RhbmNlIG9mIEVsZW1lbnQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbNF0gaXMgY2hpbGQK
KworVGVzdCB3aGVuIHRoZXJlIGlzIG5vIHZpYWJsZSBwcmV2aW91cyBzaWJsaW5nLgorUEFTUyBw
YXJlbnQuY2hpbGROb2Rlcy5sZW5ndGggaXMgNQorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1swXSBp
cyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzBdLmRhdGEgaXMg
J2hlbGxvJworUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1sxXSBpcyBhbiBpbnN0YW5jZSBvZiBFbGVt
ZW50CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzFdIGlzIGQxCitQQVNTIHBhcmVudC5jaGlsZE5v
ZGVzWzJdIGlzIGFuIGluc3RhbmNlIG9mIFRleHQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMl0u
ZGF0YSBpcyAnd29ybGQnCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzNdIGlzIGFuIGluc3RhbmNl
IG9mIEVsZW1lbnQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbM10gaXMgZDIKK1BBU1MgcGFyZW50
LmNoaWxkTm9kZXNbNF0gaXMgYW4gaW5zdGFuY2Ugb2YgRWxlbWVudAorUEFTUyBwYXJlbnQuY2hp
bGROb2Rlc1s0XSBpcyBjaGlsZAorCitUZXN0IFRleHQuYmVmb3JlKChOb2RlIG9yIERPTVN0cmlu
ZykuLi4pLgorVGVzdCB3aXRoIG5vIGFyZ3VtZW50cy4KK1BBU1MgcGFyZW50LmNoaWxkTm9kZXMu
bGVuZ3RoIGlzIDEKKworVGVzdCB3aXRoIGEgc2luZ2xlIGVsZW1lbnQuCitQQVNTIHBhcmVudC5j
aGlsZE5vZGVzLmxlbmd0aCBpcyAyCitQQVNTIGNoaWxkLnByZXZpb3VzU2libGluZyBpcyBkMQor
CitUZXN0IHdpdGggYSBzaW5nbGUgc3RyaW5nLgorUEFTUyBwYXJlbnQuY2hpbGROb2Rlcy5sZW5n
dGggaXMgMgorUEFTUyBjaGlsZC5wcmV2aW91c1NpYmxpbmcuZGF0YSBpcyAnaGVsbG8nCisKK1Rl
c3Qgd2l0aCBhIGJvdGggc3RyaW5ncyBhbmQgZWxlbWVudHMuCitQQVNTIHBhcmVudC5jaGlsZE5v
ZGVzLmxlbmd0aCBpcyAzCitQQVNTIGNoaWxkLnByZXZpb3VzU2libGluZyBpcyBkMQorUEFTUyBw
YXJlbnQuY2hpbGROb2Rlc1swXSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQQVNTIHBhcmVudC5j
aGlsZE5vZGVzWzBdLmRhdGEgaXMgJ2hlbGxvJworUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1sxXSBp
cyBhbiBpbnN0YW5jZSBvZiBFbGVtZW50CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzFdIGlzIGQx
CisKK1Rlc3QgY29udmVyc2lvbiB0byBzdHJpbmcKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXMubGVu
Z3RoIGlzIDQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMF0gaXMgYW4gaW5zdGFuY2Ugb2YgVGV4
dAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1swXS5kYXRhIGlzICdudWxsJworUEFTUyBwYXJlbnQu
Y2hpbGROb2Rlc1sxXSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQQVNTIHBhcmVudC5jaGlsZE5v
ZGVzWzFdLmRhdGEgaXMgJ3VuZGVmaW5lZCcKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMl0gaXMg
YW4gaW5zdGFuY2Ugb2YgVGV4dAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1syXS5kYXRhIGlzICc3
JworUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1szXSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQQVNT
IHBhcmVudC5jaGlsZE5vZGVzWzNdIGlzIGNoaWxkCisKK1Rlc3QgYSBjaGlsZCB3aXRob3V0IGEg
cGFyZW50LgorUEFTUyBjaGlsZC5wcmV2aW91c1NpYmxpbmcgaXMgbnVsbAorCitUZXN0IHdoZW4g
dGhlcmUgdGhlIHByZXZpb3VzIHNpYmxpbmcgaXMgbm90IGEgdmlhYmxlIHByZXZpb3VzIHNpYmxp
bmcuCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzLmxlbmd0aCBpcyA1CitQQVNTIHBhcmVudC5jaGls
ZE5vZGVzWzBdIGlzIGFuIGluc3RhbmNlIG9mIEVsZW1lbnQKK1BBU1MgcGFyZW50LmNoaWxkTm9k
ZXNbMF0gaXMgZDEKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMV0gaXMgYW4gaW5zdGFuY2Ugb2Yg
VGV4dAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1sxXS5kYXRhIGlzICdoZWxsbycKK1BBU1MgcGFy
ZW50LmNoaWxkTm9kZXNbMl0gaXMgYW4gaW5zdGFuY2Ugb2YgRWxlbWVudAorUEFTUyBwYXJlbnQu
Y2hpbGROb2Rlc1syXSBpcyBkMgorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1szXSBpcyBhbiBpbnN0
YW5jZSBvZiBUZXh0CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzNdLmRhdGEgaXMgJ3dvcmxkJwor
UEFTUyBwYXJlbnQuY2hpbGROb2Rlc1s0XSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQQVNTIHBh
cmVudC5jaGlsZE5vZGVzWzRdIGlzIGNoaWxkCisKK1Rlc3Qgd2hlbiB0aGVyZSBpcyBubyB2aWFi
bGUgcHJldmlvdXMgc2libGluZy4KK1BBU1MgcGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoIGlzIDUK
K1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMF0gaXMgYW4gaW5zdGFuY2Ugb2YgVGV4dAorUEFTUyBw
YXJlbnQuY2hpbGROb2Rlc1swXS5kYXRhIGlzICdoZWxsbycKK1BBU1MgcGFyZW50LmNoaWxkTm9k
ZXNbMV0gaXMgYW4gaW5zdGFuY2Ugb2YgRWxlbWVudAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1sx
XSBpcyBkMQorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1syXSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0
CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzJdLmRhdGEgaXMgJ3dvcmxkJworUEFTUyBwYXJlbnQu
Y2hpbGROb2Rlc1szXSBpcyBhbiBpbnN0YW5jZSBvZiBFbGVtZW50CitQQVNTIHBhcmVudC5jaGls
ZE5vZGVzWzNdIGlzIGQyCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzRdIGlzIGFuIGluc3RhbmNl
IG9mIFRleHQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbNF0gaXMgY2hpbGQKKworVGVzdCBDb21t
ZW50LmJlZm9yZSgoTm9kZSBvciBET01TdHJpbmcpLi4uKS4KK1Rlc3Qgd2l0aCBubyBhcmd1bWVu
dHMuCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzLmxlbmd0aCBpcyAxCisKK1Rlc3Qgd2l0aCBhIHNp
bmdsZSBlbGVtZW50LgorUEFTUyBwYXJlbnQuY2hpbGROb2Rlcy5sZW5ndGggaXMgMgorUEFTUyBj
aGlsZC5wcmV2aW91c1NpYmxpbmcgaXMgZDEKKworVGVzdCB3aXRoIGEgc2luZ2xlIHN0cmluZy4K
K1BBU1MgcGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoIGlzIDIKK1BBU1MgY2hpbGQucHJldmlvdXNT
aWJsaW5nLmRhdGEgaXMgJ2hlbGxvJworCitUZXN0IHdpdGggYSBib3RoIHN0cmluZ3MgYW5kIGVs
ZW1lbnRzLgorUEFTUyBwYXJlbnQuY2hpbGROb2Rlcy5sZW5ndGggaXMgMworUEFTUyBjaGlsZC5w
cmV2aW91c1NpYmxpbmcgaXMgZDEKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMF0gaXMgYW4gaW5z
dGFuY2Ugb2YgVGV4dAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1swXS5kYXRhIGlzICdoZWxsbycK
K1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMV0gaXMgYW4gaW5zdGFuY2Ugb2YgRWxlbWVudAorUEFT
UyBwYXJlbnQuY2hpbGROb2Rlc1sxXSBpcyBkMQorCitUZXN0IGNvbnZlcnNpb24gdG8gc3RyaW5n
CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzLmxlbmd0aCBpcyA0CitQQVNTIHBhcmVudC5jaGlsZE5v
ZGVzWzBdIGlzIGFuIGluc3RhbmNlIG9mIFRleHQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMF0u
ZGF0YSBpcyAnbnVsbCcKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMV0gaXMgYW4gaW5zdGFuY2Ug
b2YgVGV4dAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1sxXS5kYXRhIGlzICd1bmRlZmluZWQnCitQ
QVNTIHBhcmVudC5jaGlsZE5vZGVzWzJdIGlzIGFuIGluc3RhbmNlIG9mIFRleHQKK1BBU1MgcGFy
ZW50LmNoaWxkTm9kZXNbMl0uZGF0YSBpcyAnNycKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbM10g
aXMgYW4gaW5zdGFuY2Ugb2YgQ29tbWVudAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1szXSBpcyBj
aGlsZAorCitUZXN0IGEgY2hpbGQgd2l0aG91dCBhIHBhcmVudC4KK1BBU1MgY2hpbGQucHJldmlv
dXNTaWJsaW5nIGlzIG51bGwKKworVGVzdCB3aGVuIHRoZXJlIHRoZSBwcmV2aW91cyBzaWJsaW5n
IGlzIG5vdCBhIHZpYWJsZSBwcmV2aW91cyBzaWJsaW5nLgorUEFTUyBwYXJlbnQuY2hpbGROb2Rl
cy5sZW5ndGggaXMgNQorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1swXSBpcyBhbiBpbnN0YW5jZSBv
ZiBFbGVtZW50CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzBdIGlzIGQxCitQQVNTIHBhcmVudC5j
aGlsZE5vZGVzWzFdIGlzIGFuIGluc3RhbmNlIG9mIFRleHQKK1BBU1MgcGFyZW50LmNoaWxkTm9k
ZXNbMV0uZGF0YSBpcyAnaGVsbG8nCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzJdIGlzIGFuIGlu
c3RhbmNlIG9mIEVsZW1lbnQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMl0gaXMgZDIKK1BBU1Mg
cGFyZW50LmNoaWxkTm9kZXNbM10gaXMgYW4gaW5zdGFuY2Ugb2YgVGV4dAorUEFTUyBwYXJlbnQu
Y2hpbGROb2Rlc1szXS5kYXRhIGlzICd3b3JsZCcKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbNF0g
aXMgYW4gaW5zdGFuY2Ugb2YgQ29tbWVudAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1s0XSBpcyBj
aGlsZAorCitUZXN0IHdoZW4gdGhlcmUgaXMgbm8gdmlhYmxlIHByZXZpb3VzIHNpYmxpbmcuCitQ
QVNTIHBhcmVudC5jaGlsZE5vZGVzLmxlbmd0aCBpcyA1CitQQVNTIHBhcmVudC5jaGlsZE5vZGVz
WzBdIGlzIGFuIGluc3RhbmNlIG9mIFRleHQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMF0uZGF0
YSBpcyAnaGVsbG8nCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzFdIGlzIGFuIGluc3RhbmNlIG9m
IEVsZW1lbnQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMV0gaXMgZDEKK1BBU1MgcGFyZW50LmNo
aWxkTm9kZXNbMl0gaXMgYW4gaW5zdGFuY2Ugb2YgVGV4dAorUEFTUyBwYXJlbnQuY2hpbGROb2Rl
c1syXS5kYXRhIGlzICd3b3JsZCcKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbM10gaXMgYW4gaW5z
dGFuY2Ugb2YgRWxlbWVudAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1szXSBpcyBkMgorUEFTUyBw
YXJlbnQuY2hpbGROb2Rlc1s0XSBpcyBhbiBpbnN0YW5jZSBvZiBDb21tZW50CitQQVNTIHBhcmVu
dC5jaGlsZE5vZGVzWzRdIGlzIGNoaWxkCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9DaGlsZE5v
ZGUtYmVmb3JlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vQ2hpbGRO
b2RlLWJlZm9yZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vQ2hp
bGROb2RlLWJlZm9yZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMzIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRlc3RzIENoaWxkTm9kZS5iZWZv
cmUoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLikiKTsKK2Z1bmN0aW9uIHRlc3QodCwgY3JlYXRlQ2hp
bGQpCit7CisgICAgdHlwZSA9IHQ7CisgICAgZGVidWcoIjxiPlRlc3QgIiArIHR5cGUgKyAiLmJl
Zm9yZSgoTm9kZSBvciBET01TdHJpbmcpLi4uKS48L2I+Iik7CisgICAgCisgICAgZGVidWcoIlRl
c3Qgd2l0aCBubyBhcmd1bWVudHMuIik7CisgICAgcGFyZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7CisgICAgY2hpbGQgPSBjcmVhdGVDaGlsZCgpOworICAgIHBhcmVudC5hcHBl
bmRDaGlsZChjaGlsZCk7CisgICAgY2hpbGQuYmVmb3JlKCk7CisgICAgc2hvdWxkQmUoInBhcmVu
dC5jaGlsZE5vZGVzLmxlbmd0aCIsICIxIik7CisgICAgZGVidWcoIiIpOworCisgICAgZGVidWco
IlRlc3Qgd2l0aCBhIHNpbmdsZSBlbGVtZW50LiIpOworICAgIHBhcmVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIGNoaWxkID0gY3JlYXRlQ2hpbGQoKTsKKyAgICBwYXJl
bnQuYXBwZW5kQ2hpbGQoY2hpbGQpOworICAgIGQxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7CisgICAgY2hpbGQuYmVmb3JlKGQxKTsKKyAgICBzaG91bGRCZSgicGFyZW50LmNoaWxk
Tm9kZXMubGVuZ3RoIiwgIjIiKTsKKyAgICBzaG91bGRCZSgiY2hpbGQucHJldmlvdXNTaWJsaW5n
IiwgImQxIik7CisgICAgZGVidWcoIiIpOworCisgICAgZGVidWcoIlRlc3Qgd2l0aCBhIHNpbmds
ZSBzdHJpbmcuIik7CisgICAgcGFyZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7
CisgICAgY2hpbGQgPSBjcmVhdGVDaGlsZCgpOworICAgIHBhcmVudC5hcHBlbmRDaGlsZChjaGls
ZCk7CisgICAgY2hpbGQuYmVmb3JlKCdoZWxsbycpOworICAgIHNob3VsZEJlKCJwYXJlbnQuY2hp
bGROb2Rlcy5sZW5ndGgiLCAiMiIpOworICAgIHNob3VsZEJlKCJjaGlsZC5wcmV2aW91c1NpYmxp
bmcuZGF0YSIsICInaGVsbG8nIik7CisgICAgZGVidWcoIiIpOworCisgICAgZGVidWcoIlRlc3Qg
d2l0aCBhIGJvdGggc3RyaW5ncyBhbmQgZWxlbWVudHMuIik7CisgICAgcGFyZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgY2hpbGQgPSBjcmVhdGVDaGlsZCgpOworICAg
IHBhcmVudC5hcHBlbmRDaGlsZChjaGlsZCk7CisgICAgZDEgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKKyAgICBjaGlsZC5iZWZvcmUoJ2hlbGxvJywgZDEpOworICAgIHNob3VsZEJl
KCJwYXJlbnQuY2hpbGROb2Rlcy5sZW5ndGgiLCAiMyIpOworICAgIHNob3VsZEJlKCJjaGlsZC5w
cmV2aW91c1NpYmxpbmciLCAiZDEiKTsKKyAgICBzaG91bGRCZVR5cGUoInBhcmVudC5jaGlsZE5v
ZGVzWzBdIiwgIlRleHQiKTsKKyAgICBzaG91bGRCZSgicGFyZW50LmNoaWxkTm9kZXNbMF0uZGF0
YSIsICInaGVsbG8nIik7CisgICAgc2hvdWxkQmVUeXBlKCJwYXJlbnQuY2hpbGROb2Rlc1sxXSIs
ICJFbGVtZW50Iik7CisgICAgc2hvdWxkQmUoInBhcmVudC5jaGlsZE5vZGVzWzFdIiwgImQxIik7
CisgICAgZGVidWcoIiIpOworCisgICAgZGVidWcoIlRlc3QgY29udmVyc2lvbiB0byBzdHJpbmci
KTsKKyAgICBwYXJlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBjaGls
ZCA9IGNyZWF0ZUNoaWxkKCk7CisgICAgcGFyZW50LmFwcGVuZENoaWxkKGNoaWxkKTsKKyAgICBj
aGlsZC5iZWZvcmUobnVsbCwgdW5kZWZpbmVkLCA3KTsKKyAgICBzaG91bGRCZSgicGFyZW50LmNo
aWxkTm9kZXMubGVuZ3RoIiwgIjQiKTsKKyAgICBzaG91bGRCZVR5cGUoInBhcmVudC5jaGlsZE5v
ZGVzWzBdIiwgIlRleHQiKTsKKyAgICBzaG91bGRCZSgicGFyZW50LmNoaWxkTm9kZXNbMF0uZGF0
YSIsICInbnVsbCciKTsKKyAgICBzaG91bGRCZVR5cGUoInBhcmVudC5jaGlsZE5vZGVzWzFdIiwg
IlRleHQiKTsKKyAgICBzaG91bGRCZSgicGFyZW50LmNoaWxkTm9kZXNbMV0uZGF0YSIsICIndW5k
ZWZpbmVkJyIpOworICAgIHNob3VsZEJlVHlwZSgicGFyZW50LmNoaWxkTm9kZXNbMl0iLCAiVGV4
dCIpOworICAgIHNob3VsZEJlKCJwYXJlbnQuY2hpbGROb2Rlc1syXS5kYXRhIiwgIic3JyIpOwor
ICAgIHNob3VsZEJlVHlwZSgicGFyZW50LmNoaWxkTm9kZXNbM10iLCB0eXBlKTsKKyAgICBzaG91
bGRCZSgicGFyZW50LmNoaWxkTm9kZXNbM10iLCAiY2hpbGQiKTsKKyAgICBkZWJ1ZygiIik7CisK
KyAgICBkZWJ1ZygiVGVzdCBhIGNoaWxkIHdpdGhvdXQgYSBwYXJlbnQuIik7CisgICAgY2hpbGQg
PSBjcmVhdGVDaGlsZCgpOworICAgIGQxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
CisgICAgY2hpbGQuYmVmb3JlKGQxKTsKKyAgICBzaG91bGRCZU51bGwoImNoaWxkLnByZXZpb3Vz
U2libGluZyIpOworICAgIGRlYnVnKCIiKTsKKworICAgIGRlYnVnKCJUZXN0IHdoZW4gdGhlcmUg
dGhlIHByZXZpb3VzIHNpYmxpbmcgaXMgbm90IGEgdmlhYmxlIHByZXZpb3VzIHNpYmxpbmcuIik7
CisgICAgcGFyZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgY2hpbGQg
PSBjcmVhdGVDaGlsZCgpOworICAgIGQxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
CisgICAgcGFyZW50LmFwcGVuZENoaWxkKGQxKTsKKyAgICBkMiA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOworICAgIHBhcmVudC5hcHBlbmRDaGlsZChkMik7CisgICAgcGFyZW50LmFw
cGVuZENoaWxkKGNoaWxkKTsKKyAgICBjaGlsZC5iZWZvcmUoImhlbGxvIiwgZDIsICJ3b3JsZCIp
OworICAgIHNob3VsZEJlKCJwYXJlbnQuY2hpbGROb2Rlcy5sZW5ndGgiLCAiNSIpOworICAgIHNo
b3VsZEJlVHlwZSgicGFyZW50LmNoaWxkTm9kZXNbMF0iLCAiRWxlbWVudCIpOworICAgIHNob3Vs
ZEJlKCJwYXJlbnQuY2hpbGROb2Rlc1swXSIsICJkMSIpOworICAgIHNob3VsZEJlVHlwZSgicGFy
ZW50LmNoaWxkTm9kZXNbMV0iLCAiVGV4dCIpOworICAgIHNob3VsZEJlKCJwYXJlbnQuY2hpbGRO
b2Rlc1sxXS5kYXRhIiwgIidoZWxsbyciKTsKKyAgICBzaG91bGRCZVR5cGUoInBhcmVudC5jaGls
ZE5vZGVzWzJdIiwgIkVsZW1lbnQiKTsKKyAgICBzaG91bGRCZSgicGFyZW50LmNoaWxkTm9kZXNb
Ml0iLCAiZDIiKTsKKyAgICBzaG91bGRCZVR5cGUoInBhcmVudC5jaGlsZE5vZGVzWzNdIiwgIlRl
eHQiKTsKKyAgICBzaG91bGRCZSgicGFyZW50LmNoaWxkTm9kZXNbM10uZGF0YSIsICInd29ybGQn
Iik7CisgICAgc2hvdWxkQmVUeXBlKCJwYXJlbnQuY2hpbGROb2Rlc1s0XSIsIHR5cGUpOworICAg
IHNob3VsZEJlKCJwYXJlbnQuY2hpbGROb2Rlc1s0XSIsICJjaGlsZCIpOworICAgIGRlYnVnKCIi
KTsKKworICAgIGRlYnVnKCJUZXN0IHdoZW4gdGhlcmUgaXMgbm8gdmlhYmxlIHByZXZpb3VzIHNp
YmxpbmcuIik7CisgICAgcGFyZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Cisg
ICAgY2hpbGQgPSBjcmVhdGVDaGlsZCgpOworICAgIGQxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CisgICAgcGFyZW50LmFwcGVuZENoaWxkKGQxKTsKKyAgICBkMiA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIHBhcmVudC5hcHBlbmRDaGlsZChkMik7CisgICAg
cGFyZW50LmFwcGVuZENoaWxkKGNoaWxkKTsKKyAgICBjaGlsZC5iZWZvcmUoImhlbGxvIiwgZDEs
ICJ3b3JsZCIsIGQyKTsKKyAgICBzaG91bGRCZSgicGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoIiwg
IjUiKTsKKyAgICBzaG91bGRCZVR5cGUoInBhcmVudC5jaGlsZE5vZGVzWzBdIiwgIlRleHQiKTsK
KyAgICBzaG91bGRCZSgicGFyZW50LmNoaWxkTm9kZXNbMF0uZGF0YSIsICInaGVsbG8nIik7Cisg
ICAgc2hvdWxkQmVUeXBlKCJwYXJlbnQuY2hpbGROb2Rlc1sxXSIsICJFbGVtZW50Iik7CisgICAg
c2hvdWxkQmUoInBhcmVudC5jaGlsZE5vZGVzWzFdIiwgImQxIik7CisgICAgc2hvdWxkQmVUeXBl
KCJwYXJlbnQuY2hpbGROb2Rlc1syXSIsICJUZXh0Iik7CisgICAgc2hvdWxkQmUoInBhcmVudC5j
aGlsZE5vZGVzWzJdLmRhdGEiLCAiJ3dvcmxkJyIpOworICAgIHNob3VsZEJlVHlwZSgicGFyZW50
LmNoaWxkTm9kZXNbM10iLCAiRWxlbWVudCIpOworICAgIHNob3VsZEJlKCJwYXJlbnQuY2hpbGRO
b2Rlc1szXSIsICJkMiIpOworICAgIHNob3VsZEJlVHlwZSgicGFyZW50LmNoaWxkTm9kZXNbNF0i
LCB0eXBlKTsKKyAgICBzaG91bGRCZSgicGFyZW50LmNoaWxkTm9kZXNbNF0iLCAiY2hpbGQiKTsK
KworICAgIGRlYnVnKCIiKTsKK30KKwordGVzdCgiRWxlbWVudCIsIGZ1bmN0aW9uKCkgeyByZXR1
cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7IH0pOwordGVzdCgiVGV4dCIsIGZ1bmN0
aW9uKCkgeyByZXR1cm4gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoInRleHQgbm9kZSB0ZXh0Iik7
IH0pOwordGVzdCgiQ29tbWVudCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gZG9jdW1lbnQuY3JlYXRl
Q29tbWVudCgiY29tbWVudCB0ZXh0Iik7IH0pOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0NoaWxkTm9kZS1yZXBsYWNlV2l0aC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vQ2hpbGROb2RlLXJl
cGxhY2VXaXRoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0NoaWxkTm9kZS1yZXBsYWNlV2l0aC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMjYgQEAKK1Rlc3RzIENoaWxkTm9kZS5yZXBsYWNlV2l0aCgoTm9kZSBvciBET01T
dHJpbmcpLi4uKQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworVGVzdCBFbGVtZW50
LnJlcGxhY2VXaXRoKChOb2RlIG9yIERPTVN0cmluZykuLi4pLgorVGVzdCB3aXRoIG5vIGFyZ3Vt
ZW50cy4KK1BBU1MgcGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoIGlzIDEKKworVGVzdCB3aXRoIGEg
c2luZ2xlIGVsZW1lbnQuCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzLmxlbmd0aCBpcyAxCitQQVNT
IHBhcmVudC5jaGlsZE5vZGVzWzBdIGlzIGQxCisKK1Rlc3Qgd2l0aCBhIHNpbmdsZSBzdHJpbmcu
CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzLmxlbmd0aCBpcyAxCitQQVNTIHBhcmVudC5jaGlsZE5v
ZGVzWzBdLmRhdGEgaXMgJ2hlbGxvJworCitUZXN0IHdpdGggYSBib3RoIHN0cmluZ3MgYW5kIGVs
ZW1lbnRzLgorUEFTUyBwYXJlbnQuY2hpbGROb2Rlcy5sZW5ndGggaXMgMgorUEFTUyBwYXJlbnQu
Y2hpbGROb2Rlc1swXSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQQVNTIHBhcmVudC5jaGlsZE5v
ZGVzWzBdLmRhdGEgaXMgJ2hlbGxvJworUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1sxXSBpcyBhbiBp
bnN0YW5jZSBvZiBFbGVtZW50CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzFdIGlzIGQxCisKK1Rl
c3QgY29udmVyc2lvbiB0byBzdHJpbmcKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoIGlz
IDMKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMF0gaXMgYW4gaW5zdGFuY2Ugb2YgVGV4dAorUEFT
UyBwYXJlbnQuY2hpbGROb2Rlc1swXS5kYXRhIGlzICdudWxsJworUEFTUyBwYXJlbnQuY2hpbGRO
b2Rlc1sxXSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzFd
LmRhdGEgaXMgJ3VuZGVmaW5lZCcKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMl0gaXMgYW4gaW5z
dGFuY2Ugb2YgVGV4dAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1syXS5kYXRhIGlzICc3JworCitU
ZXN0IGEgY2hpbGQgd2l0aG91dCBhIHBhcmVudC4KK1BBU1MgY2hpbGQucmVwbGFjZVdpdGgoZDEp
IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorCitUZXN0IHJlcGxhY2luZyB3aXRoIGFuIGV4aXN0
aW5nIHNpYmxpbmcuCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzLmxlbmd0aCBpcyAyCitQQVNTIHBh
cmVudC5jaGlsZE5vZGVzWzBdIGlzIGFuIGluc3RhbmNlIG9mIEVsZW1lbnQKK1BBU1MgcGFyZW50
LmNoaWxkTm9kZXNbMF0gaXMgZDEKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMV0gaXMgYW4gaW5z
dGFuY2Ugb2YgRWxlbWVudAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1sxXSBpcyBkMgorCisKK1Rl
c3QgVGV4dC5yZXBsYWNlV2l0aCgoTm9kZSBvciBET01TdHJpbmcpLi4uKS4KK1Rlc3Qgd2l0aCBu
byBhcmd1bWVudHMuCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzLmxlbmd0aCBpcyAxCisKK1Rlc3Qg
d2l0aCBhIHNpbmdsZSBlbGVtZW50LgorUEFTUyBwYXJlbnQuY2hpbGROb2Rlcy5sZW5ndGggaXMg
MQorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1swXSBpcyBkMQorCitUZXN0IHdpdGggYSBzaW5nbGUg
c3RyaW5nLgorUEFTUyBwYXJlbnQuY2hpbGROb2Rlcy5sZW5ndGggaXMgMQorUEFTUyBwYXJlbnQu
Y2hpbGROb2Rlc1swXS5kYXRhIGlzICdoZWxsbycKKworVGVzdCB3aXRoIGEgYm90aCBzdHJpbmdz
IGFuZCBlbGVtZW50cy4KK1BBU1MgcGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoIGlzIDIKK1BBU1Mg
cGFyZW50LmNoaWxkTm9kZXNbMF0gaXMgYW4gaW5zdGFuY2Ugb2YgVGV4dAorUEFTUyBwYXJlbnQu
Y2hpbGROb2Rlc1swXS5kYXRhIGlzICdoZWxsbycKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMV0g
aXMgYW4gaW5zdGFuY2Ugb2YgRWxlbWVudAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1sxXSBpcyBk
MQorCitUZXN0IGNvbnZlcnNpb24gdG8gc3RyaW5nCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzLmxl
bmd0aCBpcyAzCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzBdIGlzIGFuIGluc3RhbmNlIG9mIFRl
eHQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMF0uZGF0YSBpcyAnbnVsbCcKK1BBU1MgcGFyZW50
LmNoaWxkTm9kZXNbMV0gaXMgYW4gaW5zdGFuY2Ugb2YgVGV4dAorUEFTUyBwYXJlbnQuY2hpbGRO
b2Rlc1sxXS5kYXRhIGlzICd1bmRlZmluZWQnCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzJdIGlz
IGFuIGluc3RhbmNlIG9mIFRleHQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMl0uZGF0YSBpcyAn
NycKKworVGVzdCBhIGNoaWxkIHdpdGhvdXQgYSBwYXJlbnQuCitQQVNTIGNoaWxkLnJlcGxhY2VX
aXRoKGQxKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KKworVGVzdCByZXBsYWNpbmcgd2l0aCBh
biBleGlzdGluZyBzaWJsaW5nLgorUEFTUyBwYXJlbnQuY2hpbGROb2Rlcy5sZW5ndGggaXMgMgor
UEFTUyBwYXJlbnQuY2hpbGROb2Rlc1swXSBpcyBhbiBpbnN0YW5jZSBvZiBFbGVtZW50CitQQVNT
IHBhcmVudC5jaGlsZE5vZGVzWzBdIGlzIGQxCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzFdIGlz
IGFuIGluc3RhbmNlIG9mIEVsZW1lbnQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMV0gaXMgZDIK
KworCitUZXN0IENvbW1lbnQucmVwbGFjZVdpdGgoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLikuCitU
ZXN0IHdpdGggbm8gYXJndW1lbnRzLgorUEFTUyBwYXJlbnQuY2hpbGROb2Rlcy5sZW5ndGggaXMg
MQorCitUZXN0IHdpdGggYSBzaW5nbGUgZWxlbWVudC4KK1BBU1MgcGFyZW50LmNoaWxkTm9kZXMu
bGVuZ3RoIGlzIDEKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMF0gaXMgZDEKKworVGVzdCB3aXRo
IGEgc2luZ2xlIHN0cmluZy4KK1BBU1MgcGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoIGlzIDEKK1BB
U1MgcGFyZW50LmNoaWxkTm9kZXNbMF0uZGF0YSBpcyAnaGVsbG8nCisKK1Rlc3Qgd2l0aCBhIGJv
dGggc3RyaW5ncyBhbmQgZWxlbWVudHMuCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzLmxlbmd0aCBp
cyAyCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzBdIGlzIGFuIGluc3RhbmNlIG9mIFRleHQKK1BB
U1MgcGFyZW50LmNoaWxkTm9kZXNbMF0uZGF0YSBpcyAnaGVsbG8nCitQQVNTIHBhcmVudC5jaGls
ZE5vZGVzWzFdIGlzIGFuIGluc3RhbmNlIG9mIEVsZW1lbnQKK1BBU1MgcGFyZW50LmNoaWxkTm9k
ZXNbMV0gaXMgZDEKKworVGVzdCBjb252ZXJzaW9uIHRvIHN0cmluZworUEFTUyBwYXJlbnQuY2hp
bGROb2Rlcy5sZW5ndGggaXMgMworUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1swXSBpcyBhbiBpbnN0
YW5jZSBvZiBUZXh0CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzBdLmRhdGEgaXMgJ251bGwnCitQ
QVNTIHBhcmVudC5jaGlsZE5vZGVzWzFdIGlzIGFuIGluc3RhbmNlIG9mIFRleHQKK1BBU1MgcGFy
ZW50LmNoaWxkTm9kZXNbMV0uZGF0YSBpcyAndW5kZWZpbmVkJworUEFTUyBwYXJlbnQuY2hpbGRO
b2Rlc1syXSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzJd
LmRhdGEgaXMgJzcnCisKK1Rlc3QgYSBjaGlsZCB3aXRob3V0IGEgcGFyZW50LgorUEFTUyBjaGls
ZC5yZXBsYWNlV2l0aChkMSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCisKK1Rlc3QgcmVwbGFj
aW5nIHdpdGggYW4gZXhpc3Rpbmcgc2libGluZy4KK1BBU1MgcGFyZW50LmNoaWxkTm9kZXMubGVu
Z3RoIGlzIDIKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMF0gaXMgYW4gaW5zdGFuY2Ugb2YgRWxl
bWVudAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1swXSBpcyBkMQorUEFTUyBwYXJlbnQuY2hpbGRO
b2Rlc1sxXSBpcyBhbiBpbnN0YW5jZSBvZiBFbGVtZW50CitQQVNTIHBhcmVudC5jaGlsZE5vZGVz
WzFdIGlzIGQyCisKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0NoaWxkTm9kZS1yZXBsYWNlV2l0
aC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0NoaWxkTm9kZS1yZXBs
YWNlV2l0aC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vQ2hpbGRO
b2RlLXJlcGxhY2VXaXRoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDIgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGVzdHMgQ2hpbGROb2RlLnJl
cGxhY2VXaXRoKChOb2RlIG9yIERPTVN0cmluZykuLi4pIik7CitmdW5jdGlvbiB0ZXN0KHQsIGNy
ZWF0ZUNoaWxkKQoreworICAgIHR5cGUgPSB0OworICAgIGRlYnVnKCI8Yj5UZXN0ICIgKyB0eXBl
ICsgIi5yZXBsYWNlV2l0aCgoTm9kZSBvciBET01TdHJpbmcpLi4uKS48L2I+Iik7CisgICAgCisg
ICAgZGVidWcoIlRlc3Qgd2l0aCBubyBhcmd1bWVudHMuIik7CisgICAgcGFyZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgY2hpbGQgPSBjcmVhdGVDaGlsZCgpOworICAg
IHBhcmVudC5hcHBlbmRDaGlsZChjaGlsZCk7CisgICAgY2hpbGQucmVwbGFjZVdpdGgoKTsKKyAg
ICBzaG91bGRCZSgicGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoIiwgIjEiKTsKKyAgICBkZWJ1Zygi
Iik7CisKKyAgICBkZWJ1ZygiVGVzdCB3aXRoIGEgc2luZ2xlIGVsZW1lbnQuIik7CisgICAgcGFy
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgY2hpbGQgPSBjcmVhdGVD
aGlsZCgpOworICAgIHBhcmVudC5hcHBlbmRDaGlsZChjaGlsZCk7CisgICAgZDEgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBjaGlsZC5yZXBsYWNlV2l0aChkMSk7CisgICAg
c2hvdWxkQmUoInBhcmVudC5jaGlsZE5vZGVzLmxlbmd0aCIsICIxIik7CisgICAgc2hvdWxkQmUo
InBhcmVudC5jaGlsZE5vZGVzWzBdIiwgImQxIik7CisgICAgZGVidWcoIiIpOworICAgIAorICAg
IGRlYnVnKCJUZXN0IHdpdGggYSBzaW5nbGUgc3RyaW5nLiIpOworICAgIHBhcmVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIGNoaWxkID0gY3JlYXRlQ2hpbGQoKTsKKyAg
ICBwYXJlbnQuYXBwZW5kQ2hpbGQoY2hpbGQpOworICAgIGNoaWxkLnJlcGxhY2VXaXRoKCdoZWxs
bycpOworICAgIHNob3VsZEJlKCJwYXJlbnQuY2hpbGROb2Rlcy5sZW5ndGgiLCAiMSIpOworICAg
IHNob3VsZEJlKCJwYXJlbnQuY2hpbGROb2Rlc1swXS5kYXRhIiwgIidoZWxsbyciKTsKKyAgICBk
ZWJ1ZygiIik7CisgICAgCisgICAgZGVidWcoIlRlc3Qgd2l0aCBhIGJvdGggc3RyaW5ncyBhbmQg
ZWxlbWVudHMuIik7CisgICAgcGFyZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7
CisgICAgY2hpbGQgPSBjcmVhdGVDaGlsZCgpOworICAgIHBhcmVudC5hcHBlbmRDaGlsZChjaGls
ZCk7CisgICAgZDEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBjaGlsZC5y
ZXBsYWNlV2l0aCgnaGVsbG8nLCBkMSk7CisgICAgc2hvdWxkQmUoInBhcmVudC5jaGlsZE5vZGVz
Lmxlbmd0aCIsICIyIik7CisgICAgc2hvdWxkQmVUeXBlKCJwYXJlbnQuY2hpbGROb2Rlc1swXSIs
ICJUZXh0Iik7CisgICAgc2hvdWxkQmUoInBhcmVudC5jaGlsZE5vZGVzWzBdLmRhdGEiLCAiJ2hl
bGxvJyIpOworICAgIHNob3VsZEJlVHlwZSgicGFyZW50LmNoaWxkTm9kZXNbMV0iLCAiRWxlbWVu
dCIpOworICAgIHNob3VsZEJlKCJwYXJlbnQuY2hpbGROb2Rlc1sxXSIsICJkMSIpOworICAgIGRl
YnVnKCIiKTsKKyAgICAKKyAgICBkZWJ1ZygiVGVzdCBjb252ZXJzaW9uIHRvIHN0cmluZyIpOwor
ICAgIHBhcmVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIGNoaWxkID0g
Y3JlYXRlQ2hpbGQoKTsKKyAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoY2hpbGQpOworICAgIGNoaWxk
LnJlcGxhY2VXaXRoKG51bGwsIHVuZGVmaW5lZCwgNyk7CisgICAgc2hvdWxkQmUoInBhcmVudC5j
aGlsZE5vZGVzLmxlbmd0aCIsICIzIik7CisgICAgc2hvdWxkQmVUeXBlKCJwYXJlbnQuY2hpbGRO
b2Rlc1swXSIsICJUZXh0Iik7CisgICAgc2hvdWxkQmUoInBhcmVudC5jaGlsZE5vZGVzWzBdLmRh
dGEiLCAiJ251bGwnIik7CisgICAgc2hvdWxkQmVUeXBlKCJwYXJlbnQuY2hpbGROb2Rlc1sxXSIs
ICJUZXh0Iik7CisgICAgc2hvdWxkQmUoInBhcmVudC5jaGlsZE5vZGVzWzFdLmRhdGEiLCAiJ3Vu
ZGVmaW5lZCciKTsKKyAgICBzaG91bGRCZVR5cGUoInBhcmVudC5jaGlsZE5vZGVzWzJdIiwgIlRl
eHQiKTsKKyAgICBzaG91bGRCZSgicGFyZW50LmNoaWxkTm9kZXNbMl0uZGF0YSIsICInNyciKTsK
KyAgICBkZWJ1ZygiIik7CisgICAgCisgICAgZGVidWcoIlRlc3QgYSBjaGlsZCB3aXRob3V0IGEg
cGFyZW50LiIpOworICAgIGNoaWxkID0gY3JlYXRlQ2hpbGQoKTsKKyAgICBkMSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIHNob3VsZE5vdFRocm93KCJjaGlsZC5yZXBsYWNl
V2l0aChkMSkiKTsKKyAgICBkZWJ1ZygiIik7CisgICAgCisgICAgZGVidWcoIlRlc3QgcmVwbGFj
aW5nIHdpdGggYW4gZXhpc3Rpbmcgc2libGluZy4iKTsKKyAgICBwYXJlbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBjaGlsZCA9IGNyZWF0ZUNoaWxkKCk7CisgICAgcGFy
ZW50LmFwcGVuZENoaWxkKGNoaWxkKTsKKyAgICBkMSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOworICAgIHBhcmVudC5hcHBlbmRDaGlsZChkMSk7CisgICAgZDIgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoZDIpOworICAgIGNo
aWxkLnJlcGxhY2VXaXRoKGQxKTsKKyAgICBzaG91bGRCZSgicGFyZW50LmNoaWxkTm9kZXMubGVu
Z3RoIiwgIjIiKTsKKyAgICBzaG91bGRCZVR5cGUoInBhcmVudC5jaGlsZE5vZGVzWzBdIiwgIkVs
ZW1lbnQiKTsKKyAgICBzaG91bGRCZSgicGFyZW50LmNoaWxkTm9kZXNbMF0iLCAiZDEiKTsKKyAg
ICBzaG91bGRCZVR5cGUoInBhcmVudC5jaGlsZE5vZGVzWzFdIiwgIkVsZW1lbnQiKTsKKyAgICBz
aG91bGRCZSgicGFyZW50LmNoaWxkTm9kZXNbMV0iLCAiZDIiKTsKKyAgICBkZWJ1ZygiIik7CisK
KyAgICBkZWJ1ZygiIik7Cit9CisKK3Rlc3QoIkVsZW1lbnQiLCBmdW5jdGlvbigpIHsgcmV0dXJu
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOyB9KTsKK3Rlc3QoIlRleHQiLCBmdW5jdGlv
bigpIHsgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJ0ZXh0IG5vZGUgdGV4dCIpOyB9
KTsKK3Rlc3QoIkNvbW1lbnQiLCBmdW5jdGlvbigpIHsgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUNv
bW1lbnQoImNvbW1lbnQgdGV4dCIpOyB9KTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9QYXJlbnROb2RlLWFwcGVuZC1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vUGFyZW50Tm9kZS1hcHBlbmQt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vUGFyZW50
Tm9kZS1hcHBlbmQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzUgQEAK
K1Rlc3RzIFBhcmVudE5vZGUuYXBwZW5kKChOb2RlIG9yIERPTVN0cmluZykuLi4pCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitUZXN0IEVsZW1lbnQuYXBwZW5kKChOb2RlIG9yIERP
TVN0cmluZykuLi4pLgorCitUZXN0IHNpbmdsZSBub2RlLgorUEFTUyBkMS5wYXJlbnROb2RlIGlz
IGNvbnRhaW5lcgorCitUZXN0IG11bHRpcGxlIG5vZGVzLgorUEFTUyBkMS5wYXJlbnROb2RlIGlz
IGNvbnRhaW5lcgorUEFTUyBkMi5wYXJlbnROb2RlIGlzIGNvbnRhaW5lcgorUEFTUyBkMS5uZXh0
U2libGluZyBpcyBkMgorUEFTUyBkMi5wcmV2aW91c1NpYmxpbmcgaXMgZDEKKworVGVzdCBhIHNp
bmdsZSBzdHJpbmcuCitQQVNTIGNvbnRhaW5lci5maXJzdENoaWxkIGlzIGFuIGluc3RhbmNlIG9m
IFRleHQKK1BBU1MgY29udGFpbmVyLmZpcnN0Q2hpbGQuZGF0YSBpcyAnaGVsbG8nCisKK1Rlc3Qg
bXVsdGlwbGUgc3RyaW5ncy4KK1BBU1MgY29udGFpbmVyLmNoaWxkTm9kZXNbMF0gaXMgYW4gaW5z
dGFuY2Ugb2YgVGV4dAorUEFTUyBjb250YWluZXIuY2hpbGROb2Rlc1swXS5kYXRhIGlzICdoZWxs
bycKK1BBU1MgY29udGFpbmVyLmNoaWxkTm9kZXNbMV0gaXMgYW4gaW5zdGFuY2Ugb2YgVGV4dAor
UEFTUyBjb250YWluZXIuY2hpbGROb2Rlc1sxXS5kYXRhIGlzICd3b3JsZCcKKworVGVzdCBub2Rl
cyBhbmQgc3RyaW5ncy4KK1BBU1MgY29udGFpbmVyLmNoaWxkTm9kZXNbMF0gaXMgYW4gaW5zdGFu
Y2Ugb2YgVGV4dAorUEFTUyBjb250YWluZXIuY2hpbGROb2Rlc1sxXSBpcyBhbiBpbnN0YW5jZSBv
ZiBFbGVtZW50CitQQVNTIGNvbnRhaW5lci5jaGlsZE5vZGVzWzJdIGlzIGFuIGluc3RhbmNlIG9m
IFRleHQKKworVGVzdCB3aGVuIGNvbnRhaW5lciBhbHJlYWR5IGhhcyBjaGlsZHJlbi4KK1BBU1Mg
Y29udGFpbmVyLmNoaWxkTm9kZXNbMF0gaXMgYW4gaW5zdGFuY2Ugb2YgRWxlbWVudAorUEFTUyBj
b250YWluZXIuY2hpbGROb2Rlc1swXSBpcyBkMQorUEFTUyBjb250YWluZXIuY2hpbGROb2Rlc1sx
XSBpcyBhbiBpbnN0YW5jZSBvZiBFbGVtZW50CitQQVNTIGNvbnRhaW5lci5jaGlsZE5vZGVzWzFd
IGlzIGQyCitQQVNTIGNvbnRhaW5lci5jaGlsZE5vZGVzWzJdIGlzIGFuIGluc3RhbmNlIG9mIFRl
eHQKK1BBU1MgY29udGFpbmVyLmNoaWxkTm9kZXNbMl0uZGF0YSBpcyAnaGVsbG8nCisKK1Rlc3Qg
Y29udmVyc2lvbiB0byBzdHJpbmcKK1BBU1MgY29udGFpbmVyLmNoaWxkTm9kZXNbMF0gaXMgYW4g
aW5zdGFuY2Ugb2YgVGV4dAorUEFTUyBjb250YWluZXIuY2hpbGROb2Rlc1swXS5kYXRhIGlzICdu
dWxsJworUEFTUyBjb250YWluZXIuY2hpbGROb2Rlc1sxXSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0
CitQQVNTIGNvbnRhaW5lci5jaGlsZE5vZGVzWzFdLmRhdGEgaXMgJ3VuZGVmaW5lZCcKK1BBU1Mg
Y29udGFpbmVyLmNoaWxkTm9kZXNbMl0gaXMgYW4gaW5zdGFuY2Ugb2YgVGV4dAorUEFTUyBjb250
YWluZXIuY2hpbGROb2Rlc1syXS5kYXRhIGlzICc3JworCitUZXN0IG5vIHBhcmFtZXRlcnMKK1BB
U1MgY29udGFpbmVyLmFwcGVuZCgpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBjb250
YWluZXIuY2hpbGROb2Rlcy5sZW5ndGggaXMgMAorCitUZXN0IGVycm9yIGNvbmRpdGlvbiBvZiBz
ZWxmLWFwcGVuZGluZy4KK1BBU1MgY29udGFpbmVyLmFwcGVuZChjb250YWluZXIpIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogSGllcmFyY2h5UmVxdWVzdEVycm9yOiBET00gRXhjZXB0aW9uIDMuCisK
K1Rlc3QgRG9jdW1lbnRGcmFnbWVudC5hcHBlbmQoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLikuCitQ
QVNTIGQxLnBhcmVudE5vZGUgaXMgZnJhZ21lbnQKKworVGVzdCBEb2N1bWVudC5hcHBlbmQoKE5v
ZGUgb3IgRE9NU3RyaW5nKS4uLikuCisKK1Rlc3Qgc2ltcGxlIGNhc2Ugb2Ygc2luZ2xlIGNoaWxk
IGFwcGVuZC4KK1BBU1MgZDEucGFyZW50Tm9kZSBpcyBkb2MKKworVGVzdCBjYXNlIGFwcGVuZGlu
ZyBhIHJvb3QgZWxlbWVudCBhbmQgYSBjb21tZW50LgorUEFTUyBkMS5wYXJlbnROb2RlIGlzIGRv
YworUEFTUyBjMS5wYXJlbnROb2RlIGlzIGRvYworCitUZXN0IGVycm9yIGNvbmRpdGlvbiBhcHBl
bmRpbmcgYSBzZWNvbmQgcm9vdCBlbGVtZW50LgorUEFTUyBkb2MuYXBwZW5kKGQyKSB0aHJldyBl
eGNlcHRpb24gRXJyb3I6IEhpZXJhcmNoeVJlcXVlc3RFcnJvcjogRE9NIEV4Y2VwdGlvbiAzLgor
CitUZXN0IGVycm9yIGNvbmRpdGlvbiBhcHBlbmRpbmcgVGV4dCBub2RlIGFzIHRoZSByb290IGVs
ZW1lbnQuCitQQVNTIGRvYy5hcHBlbmQoJ2hlbGxvJykgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBI
aWVyYXJjaHlSZXF1ZXN0RXJyb3I6IERPTSBFeGNlcHRpb24gMy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9QYXJlbnROb2RlLWFwcGVuZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL1BhcmVudE5vZGUtYXBwZW5kLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9QYXJlbnROb2RlLWFwcGVuZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTQyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRlc3Rz
IFBhcmVudE5vZGUuYXBwZW5kKChOb2RlIG9yIERPTVN0cmluZykuLi4pIik7CisKK2RlYnVnKCJU
ZXN0IEVsZW1lbnQuYXBwZW5kKChOb2RlIG9yIERPTVN0cmluZykuLi4pLiIpOworZGVidWcoIiIp
OworZGVidWcoIlRlc3Qgc2luZ2xlIG5vZGUuIik7Cit2YXIgY29udGFpbmVyID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7Cit2YXIgZDEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKK2NvbnRhaW5lci5hcHBlbmQoZDEpOworc2hvdWxkQmUoImQxLnBhcmVudE5vZGUiLCAi
Y29udGFpbmVyIik7CitkZWJ1ZygiIik7CisKK2RlYnVnKCJUZXN0IG11bHRpcGxlIG5vZGVzLiIp
OworY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CitkMSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwordmFyIGQyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7Citjb250YWluZXIuYXBwZW5kKGQxLCBkMik7CitzaG91bGRCZSgiZDEucGFyZW50
Tm9kZSIsICJjb250YWluZXIiKTsKK3Nob3VsZEJlKCJkMi5wYXJlbnROb2RlIiwgImNvbnRhaW5l
ciIpOworc2hvdWxkQmUoImQxLm5leHRTaWJsaW5nIiwgImQyIik7CitzaG91bGRCZSgiZDIucHJl
dmlvdXNTaWJsaW5nIiwgImQxIik7CitkZWJ1ZygiIik7CisKK2RlYnVnKCJUZXN0IGEgc2luZ2xl
IHN0cmluZy4iKTsKK2NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwor
Y29udGFpbmVyLmFwcGVuZCgiaGVsbG8iKTsKK3Nob3VsZEJlVHlwZSgiY29udGFpbmVyLmZpcnN0
Q2hpbGQiLCAiVGV4dCIpOworc2hvdWxkQmUoImNvbnRhaW5lci5maXJzdENoaWxkLmRhdGEiLCAi
J2hlbGxvJyIpOworZGVidWcoIiIpOworCitkZWJ1ZygiVGVzdCBtdWx0aXBsZSBzdHJpbmdzLiIp
OworY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Citjb250YWluZXIu
YXBwZW5kKCJoZWxsbyIsICJ3b3JsZCIpOworc2hvdWxkQmVUeXBlKCJjb250YWluZXIuY2hpbGRO
b2Rlc1swXSIsICJUZXh0Iik7CitzaG91bGRCZSgiY29udGFpbmVyLmNoaWxkTm9kZXNbMF0uZGF0
YSIsICInaGVsbG8nIik7CitzaG91bGRCZVR5cGUoImNvbnRhaW5lci5jaGlsZE5vZGVzWzFdIiwg
IlRleHQiKTsKK3Nob3VsZEJlKCJjb250YWluZXIuY2hpbGROb2Rlc1sxXS5kYXRhIiwgIid3b3Js
ZCciKTsKK2RlYnVnKCIiKTsKKworZGVidWcoIlRlc3Qgbm9kZXMgYW5kIHN0cmluZ3MuIik7Citj
b250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2QxID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7Citjb250YWluZXIuYXBwZW5kKCJoZWxsbyIsIGQxLCAid29y
bGQiKTsKK3Nob3VsZEJlVHlwZSgiY29udGFpbmVyLmNoaWxkTm9kZXNbMF0iLCAiVGV4dCIpOwor
c2hvdWxkQmVUeXBlKCJjb250YWluZXIuY2hpbGROb2Rlc1sxXSIsICJFbGVtZW50Iik7CitzaG91
bGRCZVR5cGUoImNvbnRhaW5lci5jaGlsZE5vZGVzWzJdIiwgIlRleHQiKTsKK2RlYnVnKCIiKTsK
KworZGVidWcoIlRlc3Qgd2hlbiBjb250YWluZXIgYWxyZWFkeSBoYXMgY2hpbGRyZW4uIik7Citj
b250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2QxID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7CitkMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OworY29udGFpbmVyLmFwcGVuZENoaWxkKGQxKTsKK2NvbnRhaW5lci5hcHBlbmQoZDIsICJoZWxs
byIpOworc2hvdWxkQmVUeXBlKCJjb250YWluZXIuY2hpbGROb2Rlc1swXSIsICJFbGVtZW50Iik7
CitzaG91bGRCZSgiY29udGFpbmVyLmNoaWxkTm9kZXNbMF0iLCAiZDEiKTsKK3Nob3VsZEJlVHlw
ZSgiY29udGFpbmVyLmNoaWxkTm9kZXNbMV0iLCAiRWxlbWVudCIpOworc2hvdWxkQmUoImNvbnRh
aW5lci5jaGlsZE5vZGVzWzFdIiwgImQyIik7CitzaG91bGRCZVR5cGUoImNvbnRhaW5lci5jaGls
ZE5vZGVzWzJdIiwgIlRleHQiKTsKK3Nob3VsZEJlKCJjb250YWluZXIuY2hpbGROb2Rlc1syXS5k
YXRhIiwgIidoZWxsbyciKTsKK2RlYnVnKCIiKTsKKworZGVidWcoIlRlc3QgY29udmVyc2lvbiB0
byBzdHJpbmciKTsKK2NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwor
Y29udGFpbmVyLmFwcGVuZChudWxsLCB1bmRlZmluZWQsIDcpOworc2hvdWxkQmVUeXBlKCJjb250
YWluZXIuY2hpbGROb2Rlc1swXSIsICJUZXh0Iik7CitzaG91bGRCZSgiY29udGFpbmVyLmNoaWxk
Tm9kZXNbMF0uZGF0YSIsICInbnVsbCciKTsKK3Nob3VsZEJlVHlwZSgiY29udGFpbmVyLmNoaWxk
Tm9kZXNbMV0iLCAiVGV4dCIpOworc2hvdWxkQmUoImNvbnRhaW5lci5jaGlsZE5vZGVzWzFdLmRh
dGEiLCAiJ3VuZGVmaW5lZCciKTsKK3Nob3VsZEJlVHlwZSgiY29udGFpbmVyLmNoaWxkTm9kZXNb
Ml0iLCAiVGV4dCIpOworc2hvdWxkQmUoImNvbnRhaW5lci5jaGlsZE5vZGVzWzJdLmRhdGEiLCAi
JzcnIik7CitkZWJ1ZygiIik7CisKK2RlYnVnKCJUZXN0IG5vIHBhcmFtZXRlcnMiKTsKK2NvbnRh
aW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworc2hvdWxkTm90VGhyb3coImNv
bnRhaW5lci5hcHBlbmQoKSIpOworc2hvdWxkQmUoImNvbnRhaW5lci5jaGlsZE5vZGVzLmxlbmd0
aCIsICIwIik7CitkZWJ1ZygiIik7CisKK2RlYnVnKCJUZXN0IGVycm9yIGNvbmRpdGlvbiBvZiBz
ZWxmLWFwcGVuZGluZy4iKTsKK2NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOworc2hvdWxkVGhyb3coImNvbnRhaW5lci5hcHBlbmQoY29udGFpbmVyKSIpOworZGVidWco
IiIpOworCitkZWJ1ZygiVGVzdCBEb2N1bWVudEZyYWdtZW50LmFwcGVuZCgoTm9kZSBvciBET01T
dHJpbmcpLi4uKS4iKTsKK3ZhciBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJh
Z21lbnQoKTsKK2QxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CitmcmFnbWVudC5h
cHBlbmQoZDEpOworc2hvdWxkQmUoImQxLnBhcmVudE5vZGUiLCAiZnJhZ21lbnQiKTsKK2RlYnVn
KCIiKTsKKworCitkZWJ1ZygiVGVzdCBEb2N1bWVudC5hcHBlbmQoKE5vZGUgb3IgRE9NU3RyaW5n
KS4uLikuIik7CitkZWJ1ZygiIikKK2RlYnVnKCJUZXN0IHNpbXBsZSBjYXNlIG9mIHNpbmdsZSBj
aGlsZCBhcHBlbmQuIikKK3ZhciBkb2MgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVI
VE1MRG9jdW1lbnQoKTsKK3doaWxlIChkb2MuZmlyc3RDaGlsZCkKKyAgICBkb2MuZmlyc3RDaGls
ZC5yZW1vdmUoKTsKK2QxID0gZG9jLmNyZWF0ZUVsZW1lbnQoImRpdiIpOworZG9jLmFwcGVuZChk
MSk7CitzaG91bGRCZSgiZDEucGFyZW50Tm9kZSIsICJkb2MiKTsKK2RlYnVnKCIiKTsKKworZGVi
dWcoIlRlc3QgY2FzZSBhcHBlbmRpbmcgYSByb290IGVsZW1lbnQgYW5kIGEgY29tbWVudC4iKQor
dmFyIGRvYyA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgpOwor
d2hpbGUgKGRvYy5maXJzdENoaWxkKQorICAgIGRvYy5maXJzdENoaWxkLnJlbW92ZSgpOworZDEg
PSBkb2MuY3JlYXRlRWxlbWVudCgiZGl2Iik7CitjMSA9IGRvYy5jcmVhdGVDb21tZW50KCJjb21t
ZW50IHRleHQiKTsKK2RvYy5hcHBlbmQoZDEsIGMxKTsKK3Nob3VsZEJlKCJkMS5wYXJlbnROb2Rl
IiwgImRvYyIpOworc2hvdWxkQmUoImMxLnBhcmVudE5vZGUiLCAiZG9jIik7CitkZWJ1ZygiIik7
CisKK2RlYnVnKCJUZXN0IGVycm9yIGNvbmRpdGlvbiBhcHBlbmRpbmcgYSBzZWNvbmQgcm9vdCBl
bGVtZW50LiIpCitkb2MgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1l
bnQoKTsKK3doaWxlIChkb2MuZmlyc3RDaGlsZCkKKyAgICBkb2MuZmlyc3RDaGlsZC5yZW1vdmUo
KTsKK2QxID0gZG9jLmNyZWF0ZUVsZW1lbnQoImRpdiIpOworZDIgPSBkb2MuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7Citkb2MuYXBwZW5kQ2hpbGQoZDEpOworc2hvdWxkVGhyb3coImRvYy5hcHBlbmQo
ZDIpIik7CitkZWJ1ZygiIik7CisKK2RlYnVnKCJUZXN0IGVycm9yIGNvbmRpdGlvbiBhcHBlbmRp
bmcgVGV4dCBub2RlIGFzIHRoZSByb290IGVsZW1lbnQuIikKK2RvYyA9IGRvY3VtZW50LmltcGxl
bWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgpOword2hpbGUgKGRvYy5maXJzdENoaWxkKQor
ICAgIGRvYy5maXJzdENoaWxkLnJlbW92ZSgpOworc2hvdWxkVGhyb3coImRvYy5hcHBlbmQoJ2hl
bGxvJykiKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9QYXJlbnROb2RlLXByZXBlbmQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL1BhcmVudE5vZGUtcHJlcGVuZC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9QYXJlbnROb2RlLXByZXBlbmQtZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzUgQEAKK1Rlc3RzIFBhcmVudE5v
ZGUucHJlcGVuZCgoTm9kZSBvciBET01TdHJpbmcpLi4uKQorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworVGVzdCBFbGVtZW50LnByZXBlbmQoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLiku
CisKK1Rlc3Qgc2luZ2xlIG5vZGUuCitQQVNTIGQxLnBhcmVudE5vZGUgaXMgY29udGFpbmVyCisK
K1Rlc3QgbXVsdGlwbGUgbm9kZXMuCitQQVNTIGQxLnBhcmVudE5vZGUgaXMgY29udGFpbmVyCitQ
QVNTIGQyLnBhcmVudE5vZGUgaXMgY29udGFpbmVyCitQQVNTIGQxLm5leHRTaWJsaW5nIGlzIGQy
CitQQVNTIGQyLnByZXZpb3VzU2libGluZyBpcyBkMQorCitUZXN0IGEgc2luZ2xlIHN0cmluZy4K
K1BBU1MgY29udGFpbmVyLmZpcnN0Q2hpbGQgaXMgYW4gaW5zdGFuY2Ugb2YgVGV4dAorUEFTUyBj
b250YWluZXIuZmlyc3RDaGlsZC5kYXRhIGlzICdoZWxsbycKKworVGVzdCBtdWx0aXBsZSBzdHJp
bmdzLgorUEFTUyBjb250YWluZXIuY2hpbGROb2Rlc1swXSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0
CitQQVNTIGNvbnRhaW5lci5jaGlsZE5vZGVzWzBdLmRhdGEgaXMgJ2hlbGxvJworUEFTUyBjb250
YWluZXIuY2hpbGROb2Rlc1sxXSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQQVNTIGNvbnRhaW5l
ci5jaGlsZE5vZGVzWzFdLmRhdGEgaXMgJ3dvcmxkJworCitUZXN0IG5vZGVzIGFuZCBzdHJpbmdz
LgorUEFTUyBjb250YWluZXIuY2hpbGROb2Rlc1swXSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQ
QVNTIGNvbnRhaW5lci5jaGlsZE5vZGVzWzFdIGlzIGFuIGluc3RhbmNlIG9mIEVsZW1lbnQKK1BB
U1MgY29udGFpbmVyLmNoaWxkTm9kZXNbMl0gaXMgYW4gaW5zdGFuY2Ugb2YgVGV4dAorCitUZXN0
IHdoZW4gY29udGFpbmVyIGFscmVhZHkgaGFzIGNoaWxkcmVuLgorUEFTUyBjb250YWluZXIuY2hp
bGROb2Rlc1swXSBpcyBhbiBpbnN0YW5jZSBvZiBFbGVtZW50CitQQVNTIGNvbnRhaW5lci5jaGls
ZE5vZGVzWzBdIGlzIGQyCitQQVNTIGNvbnRhaW5lci5jaGlsZE5vZGVzWzFdIGlzIGFuIGluc3Rh
bmNlIG9mIFRleHQKK1BBU1MgY29udGFpbmVyLmNoaWxkTm9kZXNbMV0uZGF0YSBpcyAnaGVsbG8n
CitQQVNTIGNvbnRhaW5lci5jaGlsZE5vZGVzWzJdIGlzIGFuIGluc3RhbmNlIG9mIEVsZW1lbnQK
K1BBU1MgY29udGFpbmVyLmNoaWxkTm9kZXNbMl0gaXMgZDEKKworVGVzdCBjb252ZXJzaW9uIHRv
IHN0cmluZworUEFTUyBjb250YWluZXIuY2hpbGROb2Rlc1swXSBpcyBhbiBpbnN0YW5jZSBvZiBU
ZXh0CitQQVNTIGNvbnRhaW5lci5jaGlsZE5vZGVzWzBdLmRhdGEgaXMgJ251bGwnCitQQVNTIGNv
bnRhaW5lci5jaGlsZE5vZGVzWzFdIGlzIGFuIGluc3RhbmNlIG9mIFRleHQKK1BBU1MgY29udGFp
bmVyLmNoaWxkTm9kZXNbMV0uZGF0YSBpcyAndW5kZWZpbmVkJworUEFTUyBjb250YWluZXIuY2hp
bGROb2Rlc1syXSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQQVNTIGNvbnRhaW5lci5jaGlsZE5v
ZGVzWzJdLmRhdGEgaXMgJzcnCisKK1Rlc3Qgbm8gcGFyYW1ldGVycworUEFTUyBjb250YWluZXIu
cHJlcGVuZCgpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBjb250YWluZXIuY2hpbGRO
b2Rlcy5sZW5ndGggaXMgMAorCitUZXN0IGVycm9yIGNvbmRpdGlvbiBvZiBzZWxmLXByZXBlbmRp
bmcuCitQQVNTIGNvbnRhaW5lci5wcmVwZW5kKGNvbnRhaW5lcikgdGhyZXcgZXhjZXB0aW9uIEVy
cm9yOiBIaWVyYXJjaHlSZXF1ZXN0RXJyb3I6IERPTSBFeGNlcHRpb24gMy4KKworVGVzdCBEb2N1
bWVudEZyYWdtZW50LnByZXBlbmQoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLikuCitQQVNTIGQxLnBh
cmVudE5vZGUgaXMgZnJhZ21lbnQKKworVGVzdCBEb2N1bWVudC5wcmVwZW5kKChOb2RlIG9yIERP
TVN0cmluZykuLi4pLgorCitUZXN0IHNpbXBsZSBjYXNlIG9mIHNpbmdsZSBjaGlsZCBwcmVwZW5k
LgorUEFTUyBkMS5wYXJlbnROb2RlIGlzIGRvYworCitUZXN0IGNhc2UgcHJlcGVuZGluZyBhIHJv
b3QgZWxlbWVudCBhbmQgYSBjb21tZW50LgorUEFTUyBkMS5wYXJlbnROb2RlIGlzIGRvYworUEFT
UyBjMS5wYXJlbnROb2RlIGlzIGRvYworCitUZXN0IGVycm9yIGNvbmRpdGlvbiBwcmVwZW5kaW5n
IGEgc2Vjb25kIHJvb3QgZWxlbWVudC4KK1BBU1MgZG9jLnByZXBlbmQoZDIpIHRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogSGllcmFyY2h5UmVxdWVzdEVycm9yOiBET00gRXhjZXB0aW9uIDMuCisKK1Rl
c3QgZXJyb3IgY29uZGl0aW9uIHByZXBlbmRpbmcgVGV4dCBub2RlIGFzIHRoZSByb290IGVsZW1l
bnQuCitQQVNTIGRvYy5wcmVwZW5kKCdoZWxsbycpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSGll
cmFyY2h5UmVxdWVzdEVycm9yOiBET00gRXhjZXB0aW9uIDMuCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vUGFyZW50Tm9kZS1wcmVwZW5kLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vUGFyZW50Tm9kZS1wcmVwZW5kLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9QYXJlbnROb2RlLXByZXBlbmQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDE0MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUZXN0
cyBQYXJlbnROb2RlLnByZXBlbmQoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLikiKTsKKworZGVidWco
IlRlc3QgRWxlbWVudC5wcmVwZW5kKChOb2RlIG9yIERPTVN0cmluZykuLi4pLiIpOworZGVidWco
IiIpOworZGVidWcoIlRlc3Qgc2luZ2xlIG5vZGUuIik7Cit2YXIgY29udGFpbmVyID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Cit2YXIgZDEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKK2NvbnRhaW5lci5wcmVwZW5kKGQxKTsKK3Nob3VsZEJlKCJkMS5wYXJlbnROb2Rl
IiwgImNvbnRhaW5lciIpOworZGVidWcoIiIpOworCitkZWJ1ZygiVGVzdCBtdWx0aXBsZSBub2Rl
cy4iKTsKK2NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworZDEgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK3ZhciBkMiA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOworY29udGFpbmVyLnByZXBlbmQoZDEsIGQyKTsKK3Nob3VsZEJlKCJkMS5w
YXJlbnROb2RlIiwgImNvbnRhaW5lciIpOworc2hvdWxkQmUoImQyLnBhcmVudE5vZGUiLCAiY29u
dGFpbmVyIik7CitzaG91bGRCZSgiZDEubmV4dFNpYmxpbmciLCAiZDIiKTsKK3Nob3VsZEJlKCJk
Mi5wcmV2aW91c1NpYmxpbmciLCAiZDEiKTsKK2RlYnVnKCIiKTsKKworZGVidWcoIlRlc3QgYSBz
aW5nbGUgc3RyaW5nLiIpOworY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7Citjb250YWluZXIucHJlcGVuZCgiaGVsbG8iKTsKK3Nob3VsZEJlVHlwZSgiY29udGFpbmVy
LmZpcnN0Q2hpbGQiLCAiVGV4dCIpOworc2hvdWxkQmUoImNvbnRhaW5lci5maXJzdENoaWxkLmRh
dGEiLCAiJ2hlbGxvJyIpOworZGVidWcoIiIpOworCitkZWJ1ZygiVGVzdCBtdWx0aXBsZSBzdHJp
bmdzLiIpOworY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Citjb250
YWluZXIucHJlcGVuZCgiaGVsbG8iLCAid29ybGQiKTsKK3Nob3VsZEJlVHlwZSgiY29udGFpbmVy
LmNoaWxkTm9kZXNbMF0iLCAiVGV4dCIpOworc2hvdWxkQmUoImNvbnRhaW5lci5jaGlsZE5vZGVz
WzBdLmRhdGEiLCAiJ2hlbGxvJyIpOworc2hvdWxkQmVUeXBlKCJjb250YWluZXIuY2hpbGROb2Rl
c1sxXSIsICJUZXh0Iik7CitzaG91bGRCZSgiY29udGFpbmVyLmNoaWxkTm9kZXNbMV0uZGF0YSIs
ICInd29ybGQnIik7CitkZWJ1ZygiIik7CisKK2RlYnVnKCJUZXN0IG5vZGVzIGFuZCBzdHJpbmdz
LiIpOworY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CitkMSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworY29udGFpbmVyLnByZXBlbmQoImhlbGxvIiwg
ZDEsICJ3b3JsZCIpOworc2hvdWxkQmVUeXBlKCJjb250YWluZXIuY2hpbGROb2Rlc1swXSIsICJU
ZXh0Iik7CitzaG91bGRCZVR5cGUoImNvbnRhaW5lci5jaGlsZE5vZGVzWzFdIiwgIkVsZW1lbnQi
KTsKK3Nob3VsZEJlVHlwZSgiY29udGFpbmVyLmNoaWxkTm9kZXNbMl0iLCAiVGV4dCIpOworZGVi
dWcoIiIpOworCitkZWJ1ZygiVGVzdCB3aGVuIGNvbnRhaW5lciBhbHJlYWR5IGhhcyBjaGlsZHJl
bi4iKTsKK2NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworZDEgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2QyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7Citjb250YWluZXIuYXBwZW5kQ2hpbGQoZDEpOworY29udGFpbmVyLnByZXBlbmQo
ZDIsICJoZWxsbyIpOworc2hvdWxkQmVUeXBlKCJjb250YWluZXIuY2hpbGROb2Rlc1swXSIsICJF
bGVtZW50Iik7CitzaG91bGRCZSgiY29udGFpbmVyLmNoaWxkTm9kZXNbMF0iLCAiZDIiKTsKK3No
b3VsZEJlVHlwZSgiY29udGFpbmVyLmNoaWxkTm9kZXNbMV0iLCAiVGV4dCIpOworc2hvdWxkQmUo
ImNvbnRhaW5lci5jaGlsZE5vZGVzWzFdLmRhdGEiLCAiJ2hlbGxvJyIpOworc2hvdWxkQmVUeXBl
KCJjb250YWluZXIuY2hpbGROb2Rlc1syXSIsICJFbGVtZW50Iik7CitzaG91bGRCZSgiY29udGFp
bmVyLmNoaWxkTm9kZXNbMl0iLCAiZDEiKTsKK2RlYnVnKCIiKTsKKworZGVidWcoIlRlc3QgY29u
dmVyc2lvbiB0byBzdHJpbmciKTsKK2NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOworY29udGFpbmVyLnByZXBlbmQobnVsbCwgdW5kZWZpbmVkLCA3KTsKK3Nob3VsZEJl
VHlwZSgiY29udGFpbmVyLmNoaWxkTm9kZXNbMF0iLCAiVGV4dCIpOworc2hvdWxkQmUoImNvbnRh
aW5lci5jaGlsZE5vZGVzWzBdLmRhdGEiLCAiJ251bGwnIik7CitzaG91bGRCZVR5cGUoImNvbnRh
aW5lci5jaGlsZE5vZGVzWzFdIiwgIlRleHQiKTsKK3Nob3VsZEJlKCJjb250YWluZXIuY2hpbGRO
b2Rlc1sxXS5kYXRhIiwgIid1bmRlZmluZWQnIik7CitzaG91bGRCZVR5cGUoImNvbnRhaW5lci5j
aGlsZE5vZGVzWzJdIiwgIlRleHQiKTsKK3Nob3VsZEJlKCJjb250YWluZXIuY2hpbGROb2Rlc1sy
XS5kYXRhIiwgIic3JyIpOworZGVidWcoIiIpOworCitkZWJ1ZygiVGVzdCBubyBwYXJhbWV0ZXJz
Iik7Citjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK3Nob3VsZE5v
dFRocm93KCJjb250YWluZXIucHJlcGVuZCgpIik7CitzaG91bGRCZSgiY29udGFpbmVyLmNoaWxk
Tm9kZXMubGVuZ3RoIiwgIjAiKTsKK2RlYnVnKCIiKTsKKworZGVidWcoIlRlc3QgZXJyb3IgY29u
ZGl0aW9uIG9mIHNlbGYtcHJlcGVuZGluZy4iKTsKK2NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOworc2hvdWxkVGhyb3coImNvbnRhaW5lci5wcmVwZW5kKGNvbnRhaW5l
cikiKTsKK2RlYnVnKCIiKTsKKworZGVidWcoIlRlc3QgRG9jdW1lbnRGcmFnbWVudC5wcmVwZW5k
KChOb2RlIG9yIERPTVN0cmluZykuLi4pLiIpOwordmFyIGZyYWdtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRG9jdW1lbnRGcmFnbWVudCgpOworZDEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKK2ZyYWdtZW50LnByZXBlbmQoZDEpOworc2hvdWxkQmUoImQxLnBhcmVudE5vZGUiLCAiZnJh
Z21lbnQiKTsKK2RlYnVnKCIiKTsKKworCitkZWJ1ZygiVGVzdCBEb2N1bWVudC5wcmVwZW5kKChO
b2RlIG9yIERPTVN0cmluZykuLi4pLiIpOworZGVidWcoIiIpCitkZWJ1ZygiVGVzdCBzaW1wbGUg
Y2FzZSBvZiBzaW5nbGUgY2hpbGQgcHJlcGVuZC4iKQordmFyIGRvYyA9IGRvY3VtZW50LmltcGxl
bWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgpOword2hpbGUgKGRvYy5maXJzdENoaWxkKQor
ICAgIGRvYy5maXJzdENoaWxkLnJlbW92ZSgpOworZDEgPSBkb2MuY3JlYXRlRWxlbWVudCgiZGl2
Iik7Citkb2MucHJlcGVuZChkMSk7CitzaG91bGRCZSgiZDEucGFyZW50Tm9kZSIsICJkb2MiKTsK
K2RlYnVnKCIiKTsKKworZGVidWcoIlRlc3QgY2FzZSBwcmVwZW5kaW5nIGEgcm9vdCBlbGVtZW50
IGFuZCBhIGNvbW1lbnQuIikKK3ZhciBkb2MgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVh
dGVIVE1MRG9jdW1lbnQoKTsKK3doaWxlIChkb2MuZmlyc3RDaGlsZCkKKyAgICBkb2MuZmlyc3RD
aGlsZC5yZW1vdmUoKTsKK2QxID0gZG9jLmNyZWF0ZUVsZW1lbnQoImRpdiIpOworYzEgPSBkb2Mu
Y3JlYXRlQ29tbWVudCgiY29tbWVudCB0ZXh0Iik7Citkb2MucHJlcGVuZChkMSwgYzEpOworc2hv
dWxkQmUoImQxLnBhcmVudE5vZGUiLCAiZG9jIik7CitzaG91bGRCZSgiYzEucGFyZW50Tm9kZSIs
ICJkb2MiKTsKK2RlYnVnKCIiKTsKKworZGVidWcoIlRlc3QgZXJyb3IgY29uZGl0aW9uIHByZXBl
bmRpbmcgYSBzZWNvbmQgcm9vdCBlbGVtZW50LiIpCitkb2MgPSBkb2N1bWVudC5pbXBsZW1lbnRh
dGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoKTsKK3doaWxlIChkb2MuZmlyc3RDaGlsZCkKKyAgICBk
b2MuZmlyc3RDaGlsZC5yZW1vdmUoKTsKK2QxID0gZG9jLmNyZWF0ZUVsZW1lbnQoImRpdiIpOwor
ZDIgPSBkb2MuY3JlYXRlRWxlbWVudCgiZGl2Iik7Citkb2MuYXBwZW5kQ2hpbGQoZDEpOworc2hv
dWxkVGhyb3coImRvYy5wcmVwZW5kKGQyKSIpOworZGVidWcoIiIpOworCitkZWJ1ZygiVGVzdCBl
cnJvciBjb25kaXRpb24gcHJlcGVuZGluZyBUZXh0IG5vZGUgYXMgdGhlIHJvb3QgZWxlbWVudC4i
KQorZG9jID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCk7Cit3
aGlsZSAoZG9jLmZpcnN0Q2hpbGQpCisgICAgZG9jLmZpcnN0Q2hpbGQucmVtb3ZlKCk7CitzaG91
bGRUaHJvdygiZG9jLnByZXBlbmQoJ2hlbGxvJykiKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vcnRsLXNjcm9s
bC10by1sZWZ0bW9zdC1hbmQtcmVzaXplLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vcnRsLXNjcm9sbC10by1sZWZ0bW9zdC1hbmQt
cmVzaXplLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2Mjk4KQorKysgTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2Zhc3QvZG9tL3J0bC1zY3JvbGwtdG8tbGVmdG1vc3QtYW5kLXJlc2l6ZS1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsOSArMSw5IEBACi1sYXllciBhdCAoMCwwKSBz
aXplIDc4NXg0MDE4Ci0gIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA3ODV4NTg1Ci1sYXllciBh
dCAoMCwwKSBzaXplIDc4NXg0MDE4Ci0gIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXpl
IDc4NXg0MDE4Ci0gICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3Njl4NDAwMgot
ICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKC0yMzMsMCkgc2l6ZSAxMDAyeDQwMDIgW2JvcmRl
cjogKDFweCBzb2xpZCAjRkYwMDAwKV0KLSAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgt
NDkxLDEpIHNpemUgMTQ5MngxOAotICAgICAgICAgIHRleHQgcnVuIGF0ICgtNDkxLDEpIHdpZHRo
IDE0OTI6ICJCRUdJTmRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRk
ZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRk
ZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRk
ZGRkZGRkZGRkZGRkZGRkZGRkRU5EIgotc2Nyb2xsZWQgdG8gLTcxNiwwCitsYXllciBhdCAoMCww
KSBzaXplIDIzNXg0MDE4CisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSAyMzV4NTg1CitsYXll
ciBhdCAoMCwwKSBzaXplIDIzNXg0MDE4CisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBz
aXplIDIzNXg0MDE4CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSAyMTl4NDAw
MgorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKC03ODMsMCkgc2l6ZSAxMDAyeDQwMDIgW2Jv
cmRlcjogKDFweCBzb2xpZCAjRkYwMDAwKV0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0
ICgtNDg4LDEpIHNpemUgMTQ5MHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgtNDg4LDEpIHdp
ZHRoIDE0ODk6ICJCRUdJTmRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRk
ZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRk
ZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRk
ZGRkZGRkZGRkZGRkZGRkZGRkZGRkRU5EIgorc2Nyb2xsZWQgdG8gLTcxNCwwCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256654</attachid>
            <date>2015-07-11 07:26:52 -0700</date>
            <delta_ts>2015-07-11 15:46:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74648-20150711072549.patch</filename>
            <type>text/plain</type>
            <size>113860</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NjcwOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc1IEBACisyMDE1LTA3LTA1ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRE9NNDogcHJlcGVuZCwgYXBwZW5kLCBi
ZWZvcmUsIGFmdGVyICYgcmVwbGFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzQ2NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUZXN0czogZmFzdC9kb20vQ2hpbGROb2RlLWFmdGVyLmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvZG9tL0NoaWxkTm9kZS1iZWZvcmUuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9kb20vQ2hpbGROb2RlLXJlcGxhY2VXaXRoLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
ZG9tL1BhcmVudE5vZGUtYXBwZW5kLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL1BhcmVu
dE5vZGUtcHJlcGVuZC5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0JpbmRpbmdz
QWxsSW5PbmUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ2hhcmFjdGVyRGF0YUN1c3Rv
bS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNDaGFyYWN0ZXJEYXRhOjpiZWZvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6SlNDaGFyYWN0ZXJEYXRhOjphZnRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpKU0NoYXJhY3RlckRhdGE6OnJlcGxhY2VXaXRoKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNEb2N1bWVudDo6cHJlcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpK
U0RvY3VtZW50OjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SlNEb2N1bWVudDo6Y3JlYXRl
VG91Y2hMaXN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RvY3VtZW50RnJhZ21lbnRDdXN0
b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTRG9jdW1lbnRGcmFnbWVudDo6cHJl
cGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RvY3VtZW50RnJhZ21lbnQ6OmFwcGVuZCk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNEb2N1bWVudFR5cGVDdXN0b20uY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkpTRG9jdW1lbnRUeXBlOjpiZWZvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNEb2N1bWVudFR5cGU6OmFmdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRG9jdW1lbnRU
eXBlOjpyZXBsYWNlV2l0aCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNFbGVtZW50OjpiZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNFbGVtZW50Ojph
ZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU0VsZW1lbnQ6OnJlcGxhY2VXaXRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRWxlbWVudDo6cHJlcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpKU0Vs
ZW1lbnQ6OmFwcGVuZCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlT3JTdHJpbmcuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRvTm9kZU9yU3RyaW5nVmVjdG9yKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU05vZGVPclN0cmluZy5oOiBBZGRlZC4KKyAgICAgICAgKiBkb20v
Q2hpbGROb2RlLmlkbDoKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpjaGlsZEVsZW1lbnRDb3VudCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250YWluZXJOb2RlOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFp
bmVyTm9kZTo6cHJlcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjplbnN1
cmVDYWNoZWRIVE1MQ29sbGVjdGlvbik6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuaDoK
KyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjphcHBlbmRD
aGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpub2RlU2V0UHJlVHJhbnNmb3JtZWRGcm9tTm9kZU9y
U3RyaW5nVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmZpcnN0UHJlY2VkaW5nU2libGluZ05v
dEluTm9kZVNldCk6CisgICAgICAgIChXZWJDb3JlOjpmaXJzdEZvbGxvd2luZ1NpYmxpbmdOb3RJ
bk5vZGVTZXQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6YmVmb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGU6OmFmdGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlcGxhY2VXaXRo
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlbW92ZSk6CisgICAgICAgICogZG9tL05vZGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Omhhc0NoaWxkTm9kZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6aXNFbGVtZW50Tm9kZSk6CisgICAgICAgICogZG9tL05vZGVPclN0cmluZy5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydE5vZGVzT3JTdHJpbmdzSW50b05v
ZGUpOgorICAgICAgICAqIGRvbS9Ob2RlT3JTdHJpbmcuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpOb2RlT3JTdHJpbmc6Ok5vZGVPclN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
T3JTdHJpbmc6On5Ob2RlT3JTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZU9yU3RyaW5n
Ojp0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVPclN0cmluZzo6bm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlT3JTdHJpbmc6OnN0cmluZyk6CisgICAgICAgICogZG9tL1BhcmVudE5v
ZGUuaWRsOgorCiAyMDE1LTA3LTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgW1dLMl0gRGlhZ25vc3RpYyBsb2dnaW5nIG1lc3NhZ2VzIGFyZSBjYXVzaW5nIHRv
byBtdWNoIElQQwpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE4NjcwOSkKKysr
IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMDg4LDYg
KzEwODgsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNDYWxsYmFj
a0RhdGEuY3BwCiAgICAgYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0
b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNw
cAorICAgIGJpbmRpbmdzL2pzL0pTQ2hhcmFjdGVyRGF0YUN1c3RvbS5jcHAKICAgICBiaW5kaW5n
cy9qcy9KU0NvbW1hbmRMaW5lQVBJSG9zdEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0Ny
eXB0b0FsZ29yaXRobUJ1aWxkZXIuY3BwCiAgICAgYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0
aG1EaWN0aW9uYXJ5LmNwcApAQCAtMTExOSw2ICsxMTIwLDggQEAgc2V0KFdlYkNvcmVfU09VUkNF
UwogICAgIGJpbmRpbmdzL2pzL0pTRGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5jcHAKICAg
ICBiaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwCiAgICAgYmluZGluZ3MvanMvSlNEb2N1bWVu
dEN1c3RvbS5jcHAKKyAgICBiaW5kaW5ncy9qcy9KU0RvY3VtZW50RnJhZ21lbnRDdXN0b20uY3Bw
CisgICAgYmluZGluZ3MvanMvSlNEb2N1bWVudFR5cGVDdXN0b20uY3BwCiAgICAgYmluZGluZ3Mv
anMvSlNFbGVtZW50Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRXJyb3JIYW5kbGVyLmNw
cAogICAgIGJpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwCkBAIC0xMTY4LDYgKzExNzEsNyBA
QCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0
aW9uLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckN1c3RvbS5jcHAKICAgICBiaW5k
aW5ncy9qcy9KU05vZGVJdGVyYXRvckN1c3RvbS5jcHAKKyAgICBiaW5kaW5ncy9qcy9KU05vZGVP
clN0cmluZy5jcHAKICAgICBiaW5kaW5ncy9qcy9KU05vZGVMaXN0Q3VzdG9tLmNwcAogICAgIGJp
bmRpbmdzL2pzL0pTT3NjaWxsYXRvck5vZGVDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNQ
YW5uZXJOb2RlQ3VzdG9tLmNwcApAQCAtMTQ0NCw2ICsxNDQ4LDcgQEAgc2V0KFdlYkNvcmVfU09V
UkNFUwogICAgIGRvbS9Ob2RlRmlsdGVyLmNwcAogICAgIGRvbS9Ob2RlRmlsdGVyQ29uZGl0aW9u
LmNwcAogICAgIGRvbS9Ob2RlSXRlcmF0b3IuY3BwCisgICAgZG9tL05vZGVPclN0cmluZy5jcHAK
ICAgICBkb20vTm9kZVJhcmVEYXRhLmNwcAogICAgIGRvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2Fs
LmNwcAogICAgIGRvbS9Ob2RlVHJhdmVyc2FsLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCShyZXZpc2lvbiAxODY3MDkpCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzgzNSw2ICsxMzgzNSwyMCBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4z
MiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGRvbVxOb2RlT3JTdHJpbmcuY3BwIj4KKyAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdp
bjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWly
b3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4
fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZp
eHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2lu
MzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdp
bjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNh
aXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlv
bnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlv
bnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRvbVxOb2RlUmFyZURhdGEuY3BwIj4KICAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTE2Njc5LDYgKzE2NjkzLDIwIEBA
CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgog
ICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNc
SlNDaGFyYWN0ZXJEYXRhQ3VzdG9tLmNwcCI+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU0NEQVRBU2VjdGlvbkN1c3RvbS5jcHAiPgogICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpAQCAtMTY4NzUsNiArMTY5MDMs
MzQgQEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5n
c1xqc1xKU0RvY3VtZW50RnJhZ21lbnRDdXN0b20uY3BwIj4KKyAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdp
bjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMy
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4
NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdp
bjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4
NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzIn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMy
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJv
fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxX
aW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4
NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXEpTRG9jdW1lbnRUeXBlQ3VzdG9tLmNwcCI+
CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAg
PC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU0RP
TUJpbmRpbmcuY3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KQEAgLTE3NTkwLDYgKzE3NjQ2LDIwIEBACiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMy
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCci
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNOb2RlT3JTdHJpbmcuY3BwIj4KKyAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dp
bkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z19XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnU3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dp
bkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICA8L0NsQ29tcGls
ZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXEpTTm9kZUZpbHRlckNv
bmRpdGlvbi5jcHAiPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgpAQCAtMjEyMDUsNiArMjEyNzUsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZG9t
XE5vZGVGaWx0ZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRvbVxOb2RlRmls
dGVyQ29uZGl0aW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkb21cTm9kZUl0
ZXJhdG9yLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkb21cTm9kZU9yU3RyaW5n
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkb21cTm9kZVRyYXZlcnNhbC5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZG9tXE92ZXJmbG93RXZlbnQuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRvbVxQYWdlVHJhbnNpdGlvbkV2ZW50LmgiIC8+CkBA
IC0yMTYwMCw2ICsyMTY3MSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5n
c1xqc1xKU01lc3NhZ2VQb3J0Q3VzdG9tLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxiaW5kaW5nc1xqc1xKU011dGF0aW9uQ2FsbGJhY2suaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXEpTTm9kZUN1c3RvbS5oIiAvPgorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNOb2RlT3JTdHJpbmcuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXEpTTm9kZUZpbHRlckNvbmRpdGlvbi5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNQbHVnaW5FbGVtZW50RnVu
Y3Rpb25zLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU1dv
cmtlckdsb2JhbFNjb3BlQmFzZS5oIiAvPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTg2NzA5KQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0yNTMzLDYgKzI1MzMsOSBAQAogCQk3QzFFOTcyODFBOUY5ODM0MDA3QkYwRkIgLyog
QXV0b0ZpbGxCdXR0b25FbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QzFFOTcyNjFBOUY5ODM0MDA3QkYwRkIgLyogQXV0b0ZpbGxCdXR0b25F
bGVtZW50LmggKi87IH07CiAJCTdDMkJERDNEMTdDN0Y5OEMwMDM4RkYxNSAvKiBKU0RPTUdsb2Jh
bE9iamVjdFRhc2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0MyQkREM0IxN0M3Rjk4QjAwMzhGRjE1IC8qIEpTRE9NR2xvYmFsT2JqZWN0VGFzay5j
cHAgKi87IH07CiAJCTdDMkJERDNFMTdDN0Y5OEMwMDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVj
dFRhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
MkJERDNDMTdDN0Y5OEIwMDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVjdFRhc2suaCAqLzsgfTsK
KwkJN0MzM0YzNUExQjRBMDQ0ODAwNTAyQ0FGIC8qIEpTQ2hhcmFjdGVyRGF0YUN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzMzRjM1ODFC
NEEwNDQ4MDA1MDJDQUYgLyogSlNDaGFyYWN0ZXJEYXRhQ3VzdG9tLmNwcCAqLzsgfTsKKwkJN0Mz
M0YzNUUxQjRBMDRDRTAwNTAyQ0FGIC8qIEpTRG9jdW1lbnRUeXBlQ3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMzNGMzVDMUI0QTA0Q0Uw
MDUwMkNBRiAvKiBKU0RvY3VtZW50VHlwZUN1c3RvbS5jcHAgKi87IH07CisJCTdDMzNGMzYyMUI0
QTA1MDQwMDUwMkNBRiAvKiBKU0RvY3VtZW50RnJhZ21lbnRDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzM0YzNjAxQjRBMDUwNDAwNTAy
Q0FGIC8qIEpTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHAgKi87IH07CiAJCTdDM0I3OTcxMTkw
ODc1N0IwMEI0N0EyRCAvKiBVc2VyTWVzc2FnZUhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzQjc5NkYxOTA4NzU3QjAwQjQ3QTJEIC8q
IFVzZXJNZXNzYWdlSGFuZGxlci5jcHAgKi87IH07CiAJCTdDM0I3OTcyMTkwODc1N0IwMEI0N0Ey
RCAvKiBVc2VyTWVzc2FnZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDM0I3OTcwMTkwODc1N0IwMEI0N0EyRCAvKiBVc2VyTWVzc2FnZUhh
bmRsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk3QzNFNTEwQTE4REY4RjM1MDBDMTEyRjcgLyogSFRNTENvbnZlcnRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzRTUxMDgxOERGOEYzNTAwQzEx
MkY3IC8qIEhUTUxDb252ZXJ0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtMjU2NCw2ICsyNTY3LDggQEAKIAkJN0M3NEQ0MzgxODgyM0IxOTAw
RTVFRDU3IC8qIFVUZXh0UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDNzRENDM2MTg4MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVy
LmggKi87IH07CiAJCTdDNzRENDNCMTg4MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRG
MTYuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M3
NEQ0MzkxODgyNDAwNDAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJVVEYxNi5jcHAgKi87IH07CiAJ
CTdDNzRENDNDMTg4MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzRENDNBMTg4MjQwMDQw
MEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuaCAqLzsgfTsKKwkJN0M5MUEzOEYxQjQ5OEFC
RTAwM0Y5RUZBIC8qIEpTTm9kZU9yU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOTFBMzhEMUI0OThBQkUwMDNGOUVGQSAvKiBKU05vZGVP
clN0cmluZy5jcHAgKi87IH07CisJCTdDOTFBMzkwMUI0OThBQkUwMDNGOUVGQSAvKiBKU05vZGVP
clN0cmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0M5MUEzOEUxQjQ5OEFCRTAwM0Y5RUZBIC8qIEpTTm9kZU9yU3RyaW5nLmggKi87IH07CiAJCTdD
OTNGMzQ5MUFBNkJBNUUwMEE5OEJBQiAvKiBDb21waWxlZENvbnRlbnRFeHRlbnNpb24uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M5M0YzNDcxQUE2
QkE1RTAwQTk4QkFCIC8qIENvbXBpbGVkQ29udGVudEV4dGVuc2lvbi5jcHAgKi87IH07CiAJCTdD
OTNGMzRBMUFBNkJBNUUwMEE5OEJBQiAvKiBDb21waWxlZENvbnRlbnRFeHRlbnNpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOTNGMzQ4MUFBNkJB
NUUwMEE5OEJBQiAvKiBDb21waWxlZENvbnRlbnRFeHRlbnNpb24uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzkzRjM0RDFBQTZCRjA3MDBBOThC
QUIgLyogQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOTNGMzRCMUFBNkJGMDcwMEE5OEJBQiAvKiBDb250
ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwICovOyB9OwpAQCAtMjU4NCw2ICsyNTg5LDggQEAKIAkJ
N0NFNjgzNDcxOTIxODIxNTAwRjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JU
eXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NF
NjgzNDYxOTIxODIxNTAwRjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JUeXBl
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdD
RTZDQkZCMTg3RjM3MDcwMEQ0NkJGNSAvKiBGb3JtYXRDb252ZXJ0ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRTZDQkZBMTg3RjM3MDcwMEQ0NkJG
NSAvKiBGb3JtYXRDb252ZXJ0ZXIuaCAqLzsgfTsKIAkJN0NFNkNCRkQxODdGMzk0OTAwRDQ2QkY1
IC8qIEZvcm1hdENvbnZlcnRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3Q0U2Q0JGQzE4N0YzOTQ5MDBENDZCRjUgLyogRm9ybWF0Q29udmVydGVy
LmNwcCAqLzsgfTsKKwkJN0NFQUMxMDcxQjQ4M0QxRDAwMzM0NDgyIC8qIE5vZGVPclN0cmluZy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NFQUMxMDYx
QjQ4M0QxRDAwMzM0NDgyIC8qIE5vZGVPclN0cmluZy5oICovOyB9OworCQk3Q0VBQzEwOTFCNDgz
RDdGMDAzMzQ0ODIgLyogTm9kZU9yU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRUFDMTA4MUI0ODNEN0YwMDMzNDQ4MiAvKiBOb2RlT3JT
dHJpbmcuY3BwICovOyB9OwogCQk3Q0ZEQzU3QzFBQzFEODA1MDBFMjRBNTcgLyogQ29udGVudEV4
dGVuc2lvbkVycm9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDRkRDNTdBMUFDMUQ4MDUwMEUyNEE1NyAvKiBDb250ZW50RXh0ZW5zaW9uRXJyb3Iu
Y3BwICovOyB9OwogCQk3Q0ZEQzU3RDFBQzFEODA1MDBFMjRBNTcgLyogQ29udGVudEV4dGVuc2lv
bkVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
Q0ZEQzU3QjFBQzFEODA1MDBFMjRBNTcgLyogQ29udGVudEV4dGVuc2lvbkVycm9yLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0Q3NDFCREExNzcy
MjZBQTAwODU5MTcwIC8qIENTU1ZhbHVlS2V5d29yZHMuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NjU4MTQ4MDlEMTMwNDMw
MDBFNjFENyAvKiBDU1NWYWx1ZUtleXdvcmRzLmggKi87IH07CkBAIC05ODQzLDYgKzk4NTAsOSBA
QAogCQk3QzFFOTcyNjFBOUY5ODM0MDA3QkYwRkIgLyogQXV0b0ZpbGxCdXR0b25FbGVtZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1dG9GaWxsQnV0dG9uRWxlbWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzJCREQzQjE3QzdGOThCMDAzOEZGMTUg
LyogSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdDMkJERDNDMTdDN0Y5OEIwMDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVjdFRh
c2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01HbG9iYWxPYmplY3RU
YXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMzNGMzU4MUI0QTA0NDgwMDUw
MkNBRiAvKiBKU0NoYXJhY3RlckRhdGFDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNDaGFyYWN0ZXJEYXRhQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJN0MzM0YzNUMxQjRBMDRDRTAwNTAyQ0FGIC8qIEpTRG9jdW1lbnRUeXBl
Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRG9jdW1l
bnRUeXBlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MzM0YzNjAx
QjRBMDUwNDAwNTAyQ0FGIC8qIEpTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RvY3VtZW50RnJhZ21lbnRDdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzNCNzk2RjE5MDg3NTdCMDBCNDdBMkQg
LyogVXNlck1lc3NhZ2VIYW5kbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFVzZXJNZXNzYWdlSGFuZGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdDM0I3OTcwMTkwODc1N0IwMEI0N0EyRCAvKiBVc2VyTWVzc2FnZUhhbmRsZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlck1lc3NhZ2VIYW5kbGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDM0U1MTA4MThERjhGMzUwMEMxMTJGNyAvKiBIVE1M
Q29udmVydGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxDb252ZXJ0
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk4ODUsNiArOTg5NSw4IEBACiAJ
CTdDNzRENDM2MTg4MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVUZXh0UHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0M3NEQ0MzkxODgyNDAwNDAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJVVEYx
Ni5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVVGV4dFByb3ZpZGVy
VVRGMTYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Qzc0RDQzQTE4ODI0MDA0
MDBFNUVENTcgLyogVVRleHRQcm92aWRlclVURjE2LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFVUZXh0UHJvdmlkZXJVVEYxNi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3QzkxQTM4RDFCNDk4QUJFMDAzRjlFRkEgLyogSlNOb2RlT3JTdHJpbmcuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOb2RlT3JTdHJpbmcuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzkxQTM4RTFCNDk4QUJFMDAzRjlFRkEgLyogSlNO
b2RlT3JTdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNOb2RlT3JT
dHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M5M0YzNDcxQUE2QkE1RTAw
QTk4QkFCIC8qIENvbXBpbGVkQ29udGVudEV4dGVuc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDb21waWxlZENvbnRlbnRFeHRlbnNpb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QzkzRjM0ODFBQTZCQTVFMDBBOThCQUIgLyogQ29tcGls
ZWRDb250ZW50RXh0ZW5zaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
bXBpbGVkQ29udGVudEV4dGVuc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QzkzRjM0QjFBQTZCRjA3MDBBOThCQUIgLyogQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRlbnRFeHRlbnNpb25Db21w
aWxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05OTA1LDYgKzk5MTcsOCBA
QAogCQk3Q0U2ODM0NjE5MjE4MjE1MDBGNEQ5MjggLyogVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3Jp
cHRvclR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJNZXNzYWdl
SGFuZGxlckRlc2NyaXB0b3JUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
Q0U2Q0JGQTE4N0YzNzA3MDBENDZCRjUgLyogRm9ybWF0Q29udmVydGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1hdENvbnZlcnRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3Q0U2Q0JGQzE4N0YzOTQ5MDBENDZCRjUgLyogRm9ybWF0Q29udmVydGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1hdENvbnZlcnRl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDRUFDMTA2MUI0ODNEMUQwMDMz
NDQ4MiAvKiBOb2RlT3JTdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Tm9kZU9yU3RyaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDRUFDMTA4MUI0
ODNEN0YwMDMzNDQ4MiAvKiBOb2RlT3JTdHJpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTm9kZU9yU3RyaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0NGREM1N0ExQUMxRDgwNTAwRTI0QTU3IC8qIENvbnRlbnRFeHRlbnNpb25FcnJvci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb250ZW50RXh0ZW5zaW9u
RXJyb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0ZEQzU3QjFBQzFEODA1
MDBFMjRBNTcgLyogQ29udGVudEV4dGVuc2lvbkVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENvbnRlbnRFeHRlbnNpb25FcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3RTM3RUYyRDEzMzkyMDg4MDBCMjkyNTAgLyogU3VicmVzb3VyY2VMb2FkZXJD
Ri5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdWJyZXNvdXJjZUxv
YWRlckNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMjgyLDYgKzIxMjk2
LDggQEAKIAkJCQlCQ0JGQjUzQTBEQ0QyOUNGMDAxOUIzRTUgLyogSlNET01XaW5kb3dTaGVsbC5j
cHAgKi8sCiAJCQkJQkNCRkI1M0IwRENEMjlDRjAwMTlCM0U1IC8qIEpTRE9NV2luZG93U2hlbGwu
aCAqLywKIAkJCQk2NUUwRTk0MzExMzNDODlGMDBCNENCMTAgLyogSlNET01XcmFwcGVyLmggKi8s
CisJCQkJN0M5MUEzOEQxQjQ5OEFCRTAwM0Y5RUZBIC8qIEpTTm9kZU9yU3RyaW5nLmNwcCAqLywK
KwkJCQk3QzkxQTM4RTFCNDk4QUJFMDAzRjlFRkEgLyogSlNOb2RlT3JTdHJpbmcuaCAqLywKIAkJ
CQlGM0Q0NjE0NjExNjFENTMyMDBDQTBEMDkgLyogSlNFcnJvckhhbmRsZXIuY3BwICovLAogCQkJ
CUYzRDQ2MTQ3MTE2MUQ1MzIwMENBMEQwOSAvKiBKU0Vycm9ySGFuZGxlci5oICovLAogCQkJCUJD
NjA5MDFFMEU5MUI4RUMwMDBDNjhCNSAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcCAqLywKQEAg
LTIxMzg4LDYgKzIxNDA0LDkgQEAKIAkJCQk0OUVFRDE0QjEwNTE5NzE5MDAwOTlGQUIgLyogSlND
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwICovLAogCQkJCTQ5RUVEMTREMTA1MTk3
MUEwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwICovLAogCQkJ
CTkzQkE1OUIxMEYyQUE1RkUwMDhFOEU5OSAvKiBKU0NEQVRBU2VjdGlvbkN1c3RvbS5jcHAgKi8s
CisJCQkJN0MzM0YzNTgxQjRBMDQ0ODAwNTAyQ0FGIC8qIEpTQ2hhcmFjdGVyRGF0YUN1c3RvbS5j
cHAgKi8sCisJCQkJN0MzM0YzNUMxQjRBMDRDRTAwNTAyQ0FGIC8qIEpTRG9jdW1lbnRUeXBlQ3Vz
dG9tLmNwcCAqLywKKwkJCQk3QzMzRjM2MDFCNEEwNTA0MDA1MDJDQUYgLyogSlNEb2N1bWVudEZy
YWdtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlBNTg0RkUzNzE4NjREQUMxMDA4NDNCMTAgLyogSlND
b21tYW5kTGluZUFQSUhvc3RDdXN0b20uY3BwICovLAogCQkJCTIwOUI0NTZBMTY3OTZBN0UwMEU1
NEU0RSAvKiBKU0NyeXB0b0N1c3RvbS5jcHAgKi8sCiAJCQkJRTE1N0E4RTYxODE4NEM2NzAwOUY4
MjFEIC8qIEpTQ3J5cHRvS2V5Q3VzdG9tLmNwcCAqLywKQEAgLTIzMjc4LDYgKzIzMjk3LDggQEAK
IAkJCQkxQTc1MEQ4NzBBOTBFMzk0MDAwRkYyMTUgLyogTm9kZUl0ZXJhdG9yLmlkbCAqLywKIAkJ
CQlBODE4NzIxMDA5NzdEM0MwMDA1ODI2RDkgLyogTm9kZUxpc3QuaCAqLywKIAkJCQk4NUFDQTlG
QTBBOUI2MzEwMDA2NzFFOTAgLyogTm9kZUxpc3QuaWRsICovLAorCQkJCTdDRUFDMTA4MUI0ODNE
N0YwMDMzNDQ4MiAvKiBOb2RlT3JTdHJpbmcuY3BwICovLAorCQkJCTdDRUFDMTA2MUI0ODNEMUQw
MDMzNDQ4MiAvKiBOb2RlT3JTdHJpbmcuaCAqLywKIAkJCQk0RkFCNDg2NjE2NDNBNjdFMDBGNzBD
MDcgLyogTm9kZVJhcmVEYXRhLmNwcCAqLywKIAkJCQk2MzE4OUFFMjBFODNBMzMzMDAwMTJFNDEg
LyogTm9kZVJhcmVEYXRhLmggKi8sCiAJCQkJQTcyMTFGMjMxNjc4QTU0MjAwOTU3NDQ0IC8qIE5v
ZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwICovLApAQCAtMjQ3ODcsNiArMjQ4MDgsNyBAQAogCQkJ
CUE3NEJCNzZCMTNCREE4NjMwMEZGN0JGMCAvKiBFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTE0OEFGREE1MEFGNTgzNjAwMDhDQzcwMCAvKiBFeGNlcHRpb25I
YW5kbGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc2N0NFMEIxNDVBQkMxMzAwNUU2NERCIC8q
IEV4Y2VwdGlvbkhlYWRlcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTdDOTFBMzkwMUI0OThBQkUw
MDNGOUVGQSAvKiBKU05vZGVPclN0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZGM0UzRkEx
QjIxMDkxMDAwODdFRDEzIC8qIFZOb2RlVHJhY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc2
N0NFMEMxNDVBQkMxMzAwNUU2NERCIC8qIEV4Y2VwdGlvbkludGVyZmFjZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTZFNjdEMkE5MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0QuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjQ5NTcsNiArMjQ5NzksNyBAQAogCQkJCUZEMzE2MDlEMTJCMDI2Rjcw
MEMxQTM1OSAvKiBIUlRGRWxldmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA5RjEy
QjAyNkY3MDBDMUEzNTkgLyogSFJURktlcm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYw
QTExMkIwMjZGNzAwQzFBMzU5IC8qIEhSVEZQYW5uZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTdD
RUFDMTA3MUI0ODNEMUQwMDMzNDQ4MiAvKiBOb2RlT3JTdHJpbmcuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDOTdFMjNBMTA5MTQ0OTUwMDEwRDM2MSAvKiBIVE1MQWxsQ29sbGVjdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQThDRkY3QUIwQTE1Njk3ODAwMEE0MjM0IC8qIEhUTUxBbmNob3JFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODcxRDQ1RDBBMTI3Q0JDMDBCMTJBNjggLyogSFRN
TEFwcGxldEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjc3NDksNiArMjc3NzIsNyBAQAog
CQkJCTA3MDM2M0U3MTgxQTFDREMwMEMwNzRBNSAvKiBBVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbSBp
biBTb3VyY2VzICovLAogCQkJCUY0NUMyMzFEMTk5NUI3M0IwMEE2RTJFMyAvKiBBeGlzU2Nyb2xs
U25hcE9mZnNldHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzdGNTdBQ0YxQTUwNzJERDAwODc2
Rjk4IC8qIEFYT2JqZWN0Q2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0MzM0YzNUUxQjRB
MDRDRTAwNTAyQ0FGIC8qIEpTRG9jdW1lbnRUeXBlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUFBQTcyOEY5MTZEMUQ4QkMwMEQzQkJDNiAvKiBBWE9iamVjdENhY2hlSU9TLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMjlBODEyNEIwRkJCOUNBOTAwNTEwMjkzIC8qIEFYT2JqZWN0Q2FjaGVN
YWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0E4QzgxRjExRTNEMzY5MDA4MTJGQjcgLyogQmFj
a0ZvcndhcmRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjc4NTEsNiArMjc4NzUs
NyBAQAogCQkJCUJDQzA2NTdEMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDQzA2NTgwMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0TGlz
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTAzMUIzRjBBNDRFRkM3MDBGOTkyRTAgLyogQ2xp
cGJvYXJkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0NFQUMxMDkxQjQ4M0Q3RjAwMzM0
NDgyIC8qIE5vZGVPclN0cmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1ODAzNzE2MTFBNjZG
MDBBMDBCQUY1MTkgLyogQ2xpcFJlY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RFQTc2MzUx
NDYwQjcxQTAwOEIzMUYxIC8qIENsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERUE3NjM0
MTQ2MEI1NkYwMDhCMzFGMSAvKiBDbG9ja0dlbmVyaWMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0y
ODE5OCw2ICsyODIyMyw3IEBACiAJCQkJODVERjJGOUMwQUEzQ0FFNTAwQUQ2NEM1IC8qIERPTUhU
TUxPcHRpb25zQ29sbGVjdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1MTgzQjQ3MEFBNjky
NjEwMEYxOUZBMyAvKiBET01IVE1MUGFyYWdyYXBoRWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTg1RUNCRUY4MEFBNzYyNjkwMDU0NEYwQiAvKiBET01IVE1MUGFyYW1FbGVtZW50Lm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJN0MzM0YzNjIxQjRBMDUwNDAwNTAyQ0FGIC8qIEpTRG9jdW1lbnRG
cmFnbWVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTE4M0I0OTBBQTY5MjYxMDBG
MTlGQTMgLyogRE9NSFRNTFByZUVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQlBNDIyNkU5
NjExNjNENzNBMDA4QjgzOTcgLyogRE9NSFRNTFByb2dyZXNzRWxlbWVudC5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTg1MTgzQjRCMEFBNjkyNjEwMEYxOUZBMyAvKiBET01IVE1MUXVvdGVFbGVtZW50
Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC0yODI2OCw2ICsyODI5NCw3IEBACiAJCQkJOEFEMEE1OTcx
NEM4ODM1ODAwMEQ4M0M1IC8qIERPTVdlYktpdENTU1JlZ2lvblJ1bGUubW0gaW4gU291cmNlcyAq
LywKIAkJCQkzMTYxMUU2MjBFMUM0RTE0MDBGNkE1NzkgLyogRE9NV2ViS2l0Q1NTVHJhbnNmb3Jt
VmFsdWUubW0gaW4gU291cmNlcyAqLywKIAkJCQkzRjJCMzNFQzE2NUFGMTU2MDBFMzk4N0MgLyog
RE9NV2ViS2l0Q1NTVmlld3BvcnRSdWxlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJN0M5MUEzOEYx
QjQ5OEFCRTAwM0Y5RUZBIC8qIEpTTm9kZU9yU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CThBMTk1OTMzMTQ3RUExNkUwMEQxRUE2MSAvKiBET01XZWJLaXROYW1lZEZsb3cubW0gaW4gU291
cmNlcyAqLywKIAkJCQkzMUMwRkY0RDBFNENFRkREMDA3RDZGRTUgLyogRE9NV2ViS2l0VHJhbnNp
dGlvbkV2ZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVDN0Y1RTgwQUFGQkFGQjAwNDAxNERE
IC8qIERPTVdoZWVsRXZlbnQubW0gaW4gU291cmNlcyAqLywKQEAgLTI5NDc1LDYgKzI5NTAyLDcg
QEAKIAkJCQlCQ0UxQzQxQzBEOTgyOTgxMDAzQjAyRjIgLyogTG9jYXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTgyMzlFMDAwOUIzQ0Y4QTAwQjYwNjQxIC8qIExvZ2dpbmcuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMTQwMjY0NUUwQUZEQzE5QjAwNTkxOUUyIC8qIExvZ2dpbmdNYWMubW0g
aW4gU291cmNlcyAqLywKKwkJCQk3QzMzRjM1QTFCNEEwNDQ4MDA1MDJDQUYgLyogSlNDaGFyYWN0
ZXJEYXRhQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMDQwOUYzMUE0MzY3NUMwMDlF
NDdGMyAvKiBNYWNoU2VuZFJpZ2h0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMkFENzA1MTdF
RkEyQzMwMDM4RjhGRiAvKiBNYWluRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE4RjZC
QzUwREI1NUNEQzAwMURCNzk0IC8qIE1hbmlmZXN0UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLApJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5P
bmUuY3BwCShyZXZpc2lvbiAxODY3MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0JpbmRpbmdzQWxsSW5PbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAj
aW5jbHVkZSAiSlNDYWxsYmFja0RhdGEuY3BwIgogI2luY2x1ZGUgIkpTQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRD
dXN0b20uY3BwIgorI2luY2x1ZGUgIkpTQ2hhcmFjdGVyRGF0YUN1c3RvbS5jcHAiCiAjaW5jbHVk
ZSAiSlNDb21tYW5kTGluZUFQSUhvc3RDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTQ3J5cHRvQ3Vz
dG9tLmNwcCIKICNpbmNsdWRlICJKU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3Bw
IgpAQCAtNjYsNiArNjcsOCBAQAogI2luY2x1ZGUgIkpTRGV2aWNlT3JpZW50YXRpb25FdmVudEN1
c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNEaWN0aW9uYXJ5LmNwcCIKICNpbmNsdWRlICJKU0RvY3Vt
ZW50Q3VzdG9tLmNwcCIKKyNpbmNsdWRlICJKU0RvY3VtZW50RnJhZ21lbnRDdXN0b20uY3BwIgor
I2luY2x1ZGUgIkpTRG9jdW1lbnRUeXBlQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0VsZW1lbnRD
dXN0b20uY3BwIgogI2luY2x1ZGUgIkpTRXJyb3JIYW5kbGVyLmNwcCIKICNpbmNsdWRlICJKU0V2
ZW50Q3VzdG9tLmNwcCIKQEAgLTEwOSw2ICsxMTIsNyBAQAogI2luY2x1ZGUgIkpTTm9kZUZpbHRl
ckN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwIgogI2luY2x1
ZGUgIkpTTm9kZUxpc3RDdXN0b20uY3BwIgorI2luY2x1ZGUgIkpTTm9kZU9yU3RyaW5nLmNwcCIK
ICNpbmNsdWRlICJKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwIgogI2luY2x1ZGUgIkpTUG9w
U3RhdGVFdmVudEN1c3RvbS5jcHAiCiAjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDaGFyYWN0ZXJEYXRhQ3VzdG9tLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NoYXJhY3RlckRhdGFDdXN0b20u
Y3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDaGFyYWN0
ZXJEYXRhQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTQ2hhcmFjdGVyRGF0YS5oIgor
CisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkpTTm9kZU9yU3RyaW5nLmgi
CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSlNWYWx1
ZSBKU0NoYXJhY3RlckRhdGE6OmJlZm9yZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgYXV0byBu
b2RlcyA9IHRvTm9kZU9yU3RyaW5nVmVjdG9yKGV4ZWMpOworICAgIAorICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOworICAgIGltcGwoKS5iZWZvcmUoV1RGOjptb3ZlKG5vZGVzKSwgZWMpOworICAg
IHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
K30KKworSlNWYWx1ZSBKU0NoYXJhY3RlckRhdGE6OmFmdGVyKEV4ZWNTdGF0ZSogZXhlYykKK3sK
KyAgICBhdXRvIG5vZGVzID0gdG9Ob2RlT3JTdHJpbmdWZWN0b3IoZXhlYyk7CisgICAgCisgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgaW1wbCgpLmFmdGVyKFdURjo6bW92ZShub2Rlcyks
IGVjKTsKKyAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworCisgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7Cit9CisKK0pTVmFsdWUgSlNDaGFyYWN0ZXJEYXRhOjpyZXBsYWNlV2l0aChFeGVj
U3RhdGUqIGV4ZWMpCit7CisgICAgYXV0byBub2RlcyA9IHRvTm9kZU9yU3RyaW5nVmVjdG9yKGV4
ZWMpOworICAgIAorICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGltcGwoKS5yZXBsYWNl
V2l0aChXVEY6Om1vdmUobm9kZXMpLCBlYyk7CisgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVj
KTsKKworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3Vz
dG9tLmNwcAkocmV2aXNpb24gMTg2NzA5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNEb2N1bWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDExICsyOCwxMiBAQAog
I2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCiAjaW5jbHVkZSAiSlNIVE1MRG9jdW1lbnQu
aCIKICNpbmNsdWRlICJKU0xvY2F0aW9uLmgiCisjaW5jbHVkZSAiSlNOb2RlT3JTdHJpbmcuaCIK
ICNpbmNsdWRlICJKU1NWR0RvY3VtZW50LmgiCiAjaW5jbHVkZSAiTG9jYXRpb24uaCIKICNpbmNs
dWRlICJOb2RlVHJhdmVyc2FsLmgiCi0jaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIlNWR0RvY3VtZW50LmgiCisjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIlRvdWNoTGlzdC5oIgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KIApAQCAtMTE3LDYg
KzExOCwyOCBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhCiAgICAg
cmV0dXJuIHdyYXBwZXI7CiB9CiAKK0pTVmFsdWUgSlNEb2N1bWVudDo6cHJlcGVuZChFeGVjU3Rh
dGUqIGV4ZWMpCit7CisgICAgYXV0byBub2RlcyA9IHRvTm9kZU9yU3RyaW5nVmVjdG9yKGV4ZWMp
OworICAgIAorICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGltcGwoKS5wcmVwZW5kKFdU
Rjo6bW92ZShub2RlcyksIGVjKTsKKyAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworCisg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKK0pTVmFsdWUgSlNEb2N1bWVudDo6YXBwZW5k
KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBhdXRvIG5vZGVzID0gdG9Ob2RlT3JTdHJpbmdWZWN0
b3IoZXhlYyk7CisgICAgCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgaW1wbCgpLmFw
cGVuZChXVEY6Om1vdmUobm9kZXMpLCBlYyk7CisgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVj
KTsKKworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCiAjaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykKIEpTVmFsdWUgSlNEb2N1bWVudDo6Y3JlYXRlVG91Y2hMaXN0KEV4ZWNTdGF0ZSogZXhl
YykKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRGcmFnbWVu
dEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
b2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJKU0RvY3VtZW50RnJhZ21lbnQuaCIKKworI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIK
KyNpbmNsdWRlICJKU05vZGVPclN0cmluZy5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0pTVmFsdWUgSlNEb2N1bWVudEZyYWdtZW50OjpwcmVwZW5k
KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBhdXRvIG5vZGVzID0gdG9Ob2RlT3JTdHJpbmdWZWN0
b3IoZXhlYyk7CisgICAgCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgaW1wbCgpLnBy
ZXBlbmQoV1RGOjptb3ZlKG5vZGVzKSwgZWMpOworICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBl
Yyk7CisKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKworSlNWYWx1ZSBKU0RvY3VtZW50
RnJhZ21lbnQ6OmFwcGVuZChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgYXV0byBub2RlcyA9IHRv
Tm9kZU9yU3RyaW5nVmVjdG9yKGV4ZWMpOworICAgIAorICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OworICAgIGltcGwoKS5hcHBlbmQoV1RGOjptb3ZlKG5vZGVzKSwgZWMpOworICAgIHNldERPTUV4
Y2VwdGlvbihleGVjLCBlYyk7CisKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
b2N1bWVudFR5cGVDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRG9jdW1lbnRUeXBlQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRUeXBlQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkpTRG9jdW1lbnRUeXBlLmgiCisKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisj
aW5jbHVkZSAiSlNOb2RlT3JTdHJpbmcuaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitKU1ZhbHVlIEpTRG9jdW1lbnRUeXBlOjpiZWZvcmUoRXhlY1N0
YXRlKiBleGVjKQoreworICAgIGF1dG8gbm9kZXMgPSB0b05vZGVPclN0cmluZ1ZlY3RvcihleGVj
KTsKKyAgICAKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBpbXBsKCkuYmVmb3JlKFdU
Rjo6bW92ZShub2RlcyksIGVjKTsKKyAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworCisg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKK0pTVmFsdWUgSlNEb2N1bWVudFR5cGU6OmFm
dGVyKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBhdXRvIG5vZGVzID0gdG9Ob2RlT3JTdHJpbmdW
ZWN0b3IoZXhlYyk7CisgICAgCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgaW1wbCgp
LmFmdGVyKFdURjo6bW92ZShub2RlcyksIGVjKTsKKyAgICBzZXRET01FeGNlcHRpb24oZXhlYywg
ZWMpOworCisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKK0pTVmFsdWUgSlNEb2N1bWVu
dFR5cGU6OnJlcGxhY2VXaXRoKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBhdXRvIG5vZGVzID0g
dG9Ob2RlT3JTdHJpbmdWZWN0b3IoZXhlYyk7CisgICAgCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CisgICAgaW1wbCgpLnJlcGxhY2VXaXRoKFdURjo6bW92ZShub2RlcyksIGVjKTsKKyAgICBz
ZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworCisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRWxlbWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMTg2NzA5KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpT
SFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5oIgogI2luY2x1ZGUgIkpTTm9kZUxpc3QuaCIKKyNp
bmNsdWRlICJKU05vZGVPclN0cmluZy5oIgogI2luY2x1ZGUgIkpTU1ZHRWxlbWVudFdyYXBwZXJG
YWN0b3J5LmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50Lmgi
CkBAIC02Niw0ICs2Nyw1OSBAQCBKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoRXhlY1N0YXRlKiwg
SlNECiAgICAgcmV0dXJuIHdyYXBwZXI7ICAgIAogfQogCitKU1ZhbHVlIEpTRWxlbWVudDo6YmVm
b3JlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBhdXRvIG5vZGVzID0gdG9Ob2RlT3JTdHJpbmdW
ZWN0b3IoZXhlYyk7CisgICAgCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgaW1wbCgp
LmJlZm9yZShXVEY6Om1vdmUobm9kZXMpLCBlYyk7CisgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMs
IGVjKTsKKworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCitKU1ZhbHVlIEpTRWxlbWVu
dDo6YWZ0ZXIoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGF1dG8gbm9kZXMgPSB0b05vZGVPclN0
cmluZ1ZlY3RvcihleGVjKTsKKyAgICAKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBp
bXBsKCkuYWZ0ZXIoV1RGOjptb3ZlKG5vZGVzKSwgZWMpOworICAgIHNldERPTUV4Y2VwdGlvbihl
eGVjLCBlYyk7CisKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKworSlNWYWx1ZSBKU0Vs
ZW1lbnQ6OnJlcGxhY2VXaXRoKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBhdXRvIG5vZGVzID0g
dG9Ob2RlT3JTdHJpbmdWZWN0b3IoZXhlYyk7CisgICAgCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CisgICAgaW1wbCgpLnJlcGxhY2VXaXRoKFdURjo6bW92ZShub2RlcyksIGVjKTsKKyAgICBz
ZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworCisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9
CisKK0pTVmFsdWUgSlNFbGVtZW50OjpwcmVwZW5kKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBh
dXRvIG5vZGVzID0gdG9Ob2RlT3JTdHJpbmdWZWN0b3IoZXhlYyk7CisgICAgCisgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CisgICAgaW1wbCgpLnByZXBlbmQoV1RGOjptb3ZlKG5vZGVzKSwgZWMp
OworICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisKKyAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKK30KKworSlNWYWx1ZSBKU0VsZW1lbnQ6OmFwcGVuZChFeGVjU3RhdGUqIGV4ZWMpCit7
CisgICAgYXV0byBub2RlcyA9IHRvTm9kZU9yU3RyaW5nVmVjdG9yKGV4ZWMpOworCisgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgaW1wbCgpLmFwcGVuZChXVEY6Om1vdmUobm9kZXMpLCBl
Yyk7CisgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKworICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU05vZGVPclN0cmluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNOb2RlT3JTdHJpbmcuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlT3JTdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiSlNOb2RlT3JTdHJpbmcuaCIKKworI2luY2x1ZGUgIkpTTm9kZS5oIgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworVmVjdG9yPE5vZGVPclN0cmluZz4gdG9Ob2RlT3JTdHJpbmdW
ZWN0b3IoRXhlY1N0YXRlKiBleGVjKQoreworICAgIFZlY3RvcjxOb2RlT3JTdHJpbmc+IG5vZGVP
clN0cmluZ1ZlY3RvcjsKKworICAgIHNpemVfdCBhcmd1bWVudENvdW50ID0gZXhlYy0+YXJndW1l
bnRDb3VudCgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRDb3VudDsgKytp
KSB7CisgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT5hcmd1bWVudChpKTsKKyAgICAgICAg
aWYgKGF1dG8qIG5vZGUgPSBqc0R5bmFtaWNDYXN0PEpTTm9kZSo+KHZhbHVlKSkKKyAgICAgICAg
ICAgIG5vZGVPclN0cmluZ1ZlY3Rvci5hcHBlbmQoTm9kZU9yU3RyaW5nKCZub2RlLT5pbXBsKCkp
KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBTdHJpbmcgc3RyaW5nID0gdmFsdWUudG9X
VEZTdHJpbmcoZXhlYyk7CisgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIFZlY3RvcjxOb2RlT3JTdHJpbmc+KCk7CisgICAgICAgICAg
ICBub2RlT3JTdHJpbmdWZWN0b3IuYXBwZW5kKE5vZGVPclN0cmluZyhzdHJpbmcpKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHJldHVybiBub2RlT3JTdHJpbmdWZWN0b3I7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9k
ZU9yU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNO
b2RlT3JTdHJpbmcuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTm9kZU9yU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgSlNOb2RlT3JTdHJpbmdfaAorI2RlZmluZSBKU05vZGVPclN0cmluZ19o
CisKKyNpbmNsdWRlICJOb2RlT3JTdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisK
K25hbWVzcGFjZSBKU0MgeworY2xhc3MgRXhlY1N0YXRlOworfQorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1ZlY3RvcjxOb2RlT3JTdHJpbmc+IHRvTm9kZU9yU3RyaW5nVmVjdG9yKEpTQzo6RXhl
Y1N0YXRlKik7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEpTTm9kZU9y
U3RyaW5nVmVjdG9yX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZE5vZGUuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZE5vZGUuaWRsCShyZXZpc2lvbiAx
ODY3MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGROb2RlLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMTgsMTYgKzE4LDE0IEBACiAgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICAq
LwogCi0vLyBET00gNAorLy8gaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNjaGlsZG5vZGUK
IFsKICAgICBOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIENoaWxkTm9kZSB7Ci0gICAg
Ly8gcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQ/IHByZXZpb3VzRWxlbWVudFNpYmxpbmc7Ci0g
ICAgLy8gcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQ/IG5leHRFbGVtZW50U2libGluZzsKLQot
ICAgIC8vIHZvaWQgYmVmb3JlKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOwotICAgIC8v
IHZvaWQgYWZ0ZXIoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLiBub2Rlcyk7Ci0gICAgLy8gdm9pZCBy
ZXBsYWNlKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOwotICAgIFtSYWlzZXNFeGNlcHRp
b25dIHZvaWQgcmVtb3ZlKCk7CisjaWYgIWRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpIHx8
ICFMQU5HVUFHRV9PQkpFQ1RJVkVfQworICAgIFtVbnNjb3BlYWJsZSwgUmFpc2VzRXhjZXB0aW9u
LCBDdXN0b21dIHZvaWQgYmVmb3JlKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOworICAg
IFtVbnNjb3BlYWJsZSwgUmFpc2VzRXhjZXB0aW9uLCBDdXN0b21dIHZvaWQgYWZ0ZXIoKE5vZGUg
b3IgRE9NU3RyaW5nKS4uLiBub2Rlcyk7CisgICAgW1Vuc2NvcGVhYmxlLCBSYWlzZXNFeGNlcHRp
b24sIEN1c3RvbV0gdm9pZCByZXBsYWNlV2l0aCgoTm9kZSBvciBET01TdHJpbmcpLi4uIG5vZGVz
KTsKKyNlbmRpZgorICAgIFtVbnNjb3BlYWJsZSwgUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHJlbW92
ZSgpOwogfTsKLQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAkocmV2aXNp
b24gMTg2NzA5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiTGFiZWxzTm9kZUxpc3QuaCIK
ICNpbmNsdWRlICJNdXRhdGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiTmFtZU5vZGVMaXN0LmgiCisj
aW5jbHVkZSAiTm9kZU9yU3RyaW5nLmgiCiAjaW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCiAjaW5j
bHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUmFkaW9Ob2RlTGlzdC5oIgpAQCAt
OTIwLDYgKzkyMSwyNCBAQCB1bnNpZ25lZCBDb250YWluZXJOb2RlOjpjaGlsZEVsZW1lbnRDb3Vu
CiAgICAgcmV0dXJuIHN0ZDo6ZGlzdGFuY2UoY2hpbGRyZW4uYmVnaW4oKSwgY2hpbGRyZW4uZW5k
KCkpOwogfQogCit2b2lkIENvbnRhaW5lck5vZGU6OmFwcGVuZChWZWN0b3I8Tm9kZU9yU3RyaW5n
PiYmIG5vZGVPclN0cmluZ1ZlY3RvciwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgUmVmUHRy
PE5vZGU+IG5vZGUgPSBjb252ZXJ0Tm9kZXNPclN0cmluZ3NJbnRvTm9kZSgqdGhpcywgV1RGOjpt
b3ZlKG5vZGVPclN0cmluZ1ZlY3RvciksIGVjKTsKKyAgICBpZiAoZWMgfHwgIW5vZGUpCisgICAg
ICAgIHJldHVybjsKKworICAgIGFwcGVuZENoaWxkKG5vZGUucmVsZWFzZSgpLCBlYyk7Cit9CisK
K3ZvaWQgQ29udGFpbmVyTm9kZTo6cHJlcGVuZChWZWN0b3I8Tm9kZU9yU3RyaW5nPiYmIG5vZGVP
clN0cmluZ1ZlY3RvciwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgUmVmUHRyPE5vZGU+IG5v
ZGUgPSBjb252ZXJ0Tm9kZXNPclN0cmluZ3NJbnRvTm9kZSgqdGhpcywgV1RGOjptb3ZlKG5vZGVP
clN0cmluZ1ZlY3RvciksIGVjKTsKKyAgICBpZiAoZWMgfHwgIW5vZGUpCisgICAgICAgIHJldHVy
bjsKKworICAgIGluc2VydEJlZm9yZShub2RlLnJlbGVhc2UoKSwgZmlyc3RDaGlsZCgpLCBlYyk7
Cit9CisKIFJlZjxIVE1MQ29sbGVjdGlvbj4gQ29udGFpbmVyTm9kZTo6ZW5zdXJlQ2FjaGVkSFRN
TENvbGxlY3Rpb24oQ29sbGVjdGlvblR5cGUgdHlwZSkKIHsKICAgICBpZiAoSFRNTENvbGxlY3Rp
b24qIGNvbGxlY3Rpb24gPSBjYWNoZWRIVE1MQ29sbGVjdGlvbih0eXBlKSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGUuaAkocmV2aXNpb24gMTg2NzA5KQorKysgU291cmNlL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MQ29sbGVjdGlvbjsKK2NsYXNzIE5vZGVP
clN0cmluZzsKIGNsYXNzIFF1YWxpZmllZE5hbWU7CiBjbGFzcyBSZW5kZXJFbGVtZW50OwogCkBA
IC0xNTIsNiArMTUzLDggQEAgcHVibGljOgogICAgIEVsZW1lbnQqIGZpcnN0RWxlbWVudENoaWxk
KCkgY29uc3Q7CiAgICAgRWxlbWVudCogbGFzdEVsZW1lbnRDaGlsZCgpIGNvbnN0OwogICAgIHVu
c2lnbmVkIGNoaWxkRWxlbWVudENvdW50KCkgY29uc3Q7CisgICAgdm9pZCBhcHBlbmQoVmVjdG9y
PE5vZGVPclN0cmluZz4mJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgcHJlcGVuZChWZWN0
b3I8Tm9kZU9yU3RyaW5nPiYmLCBFeGNlcHRpb25Db2RlJik7CiAKIHByb3RlY3RlZDoKICAgICBl
eHBsaWNpdCBDb250YWluZXJOb2RlKERvY3VtZW50JiwgQ29uc3RydWN0aW9uVHlwZSA9IENyZWF0
ZUNvbnRhaW5lcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAJKHJldmlzaW9u
IDE4NjcwOSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTExMSw2ICsxMTEsNyBAQAogI2luY2x1ZGUgIk5vZGVGaWx0ZXIuY3BwIgogI2lu
Y2x1ZGUgIk5vZGVGaWx0ZXJDb25kaXRpb24uY3BwIgogI2luY2x1ZGUgIk5vZGVJdGVyYXRvci5j
cHAiCisjaW5jbHVkZSAiTm9kZU9yU3RyaW5nLmNwcCIKICNpbmNsdWRlICJOb2RlUmFyZURhdGEu
Y3BwIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwIgogI2luY2x1ZGUgIk5v
ZGVUcmF2ZXJzYWwuY3BwIgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkocmV2aXNpb24gMTg2NzA5KQor
KysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxNSAr
MjgsMTUgQEAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQXR0ci5oIgog
I2luY2x1ZGUgIkJlZm9yZUxvYWRFdmVudC5oIgotI2luY2x1ZGUgIkNoaWxkTGlzdE11dGF0aW9u
U2NvcGUuaCIKLSNpbmNsdWRlICJDaHJvbWUuaCIKLSNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIK
ICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJDU1NSdWxlLmgiCiAjaW5jbHVkZSAi
Q1NTU2VsZWN0b3IuaCIKICNpbmNsdWRlICJDU1NTZWxlY3Rvckxpc3QuaCIKICNpbmNsdWRlICJD
U1NTdHlsZVJ1bGUuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNoZWV0LmgiCisjaW5jbHVkZSAiQ2hp
bGRMaXN0TXV0YXRpb25TY29wZS5oIgorI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkNo
cm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkNvbnRhaW5lck5vZGVBbGdvcml0aG1zLmgiCiAjaW5j
bHVkZSAiQ29udGV4dE1lbnVDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRp
b24uaCIKQEAgLTU4LDYgKzU4LDcgQEAKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk11dGF0aW9uRXZlbnQuaCIKKyNpbmNsdWRlICJO
b2RlT3JTdHJpbmcuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybU1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKQEAg
LTQ3NCw2ICs0NzUsOTYgQEAgYm9vbCBOb2RlOjphcHBlbmRDaGlsZChQYXNzUmVmUHRyPE5vZGU+
IAogICAgIHJldHVybiBkb3duY2FzdDxDb250YWluZXJOb2RlPigqdGhpcykuYXBwZW5kQ2hpbGQo
bmV3Q2hpbGQsIGVjKTsKIH0KIAorc3RhdGljIEhhc2hTZXQ8UmVmUHRyPE5vZGU+PiBub2RlU2V0
UHJlVHJhbnNmb3JtZWRGcm9tTm9kZU9yU3RyaW5nVmVjdG9yKGNvbnN0IFZlY3RvcjxOb2RlT3JT
dHJpbmc+JiBub2RlT3JTdHJpbmdWZWN0b3IpCit7CisgICAgSGFzaFNldDxSZWZQdHI8Tm9kZT4+
IG5vZGVTZXQ7CisgICAgZm9yIChhdXRvJiBub2RlT3JTdHJpbmcgOiBub2RlT3JTdHJpbmdWZWN0
b3IpIHsKKyAgICAgICAgc3dpdGNoIChub2RlT3JTdHJpbmcudHlwZSgpKSB7CisgICAgICAgIGNh
c2UgTm9kZU9yU3RyaW5nOjpUeXBlOjpTdHJpbmc6CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBOb2RlT3JTdHJpbmc6OlR5cGU6Ok5vZGU6CisgICAgICAgICAgICBub2RlU2V0LmFk
ZChub2RlT3JTdHJpbmcubm9kZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgfQorCisgICAgcmV0dXJuIG5vZGVTZXQ7Cit9CisKK3N0YXRpYyBSZWZQdHI8Tm9kZT4gZmly
c3RQcmVjZWRpbmdTaWJsaW5nTm90SW5Ob2RlU2V0KE5vZGUmIGNvbnRleHQsIEhhc2hTZXQ8UmVm
UHRyPE5vZGU+PiBub2RlU2V0KQoreworICAgIGZvciAoTm9kZSogc2libGluZyA9IGNvbnRleHQu
cHJldmlvdXNTaWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5wcmV2aW91c1Np
YmxpbmcoKSkgeworICAgICAgICBpZiAoIW5vZGVTZXQuY29udGFpbnMoc2libGluZykpCisgICAg
ICAgICAgICByZXR1cm4gc2libGluZzsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisK
K3N0YXRpYyBSZWZQdHI8Tm9kZT4gZmlyc3RGb2xsb3dpbmdTaWJsaW5nTm90SW5Ob2RlU2V0KE5v
ZGUmIGNvbnRleHQsIEhhc2hTZXQ8UmVmUHRyPE5vZGU+PiBub2RlU2V0KQoreworICAgIGZvciAo
Tm9kZSogc2libGluZyA9IGNvbnRleHQubmV4dFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9
IHNpYmxpbmctPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKCFub2RlU2V0LmNvbnRhaW5z
KHNpYmxpbmcpKQorICAgICAgICAgICAgcmV0dXJuIHNpYmxpbmc7CisgICAgfQorICAgIHJldHVy
biBudWxscHRyOworfQorCit2b2lkIE5vZGU6OmJlZm9yZShWZWN0b3I8Tm9kZU9yU3RyaW5nPiYm
IG5vZGVPclN0cmluZ1ZlY3RvciwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgUmVmUHRyPENv
bnRhaW5lck5vZGU+IHBhcmVudCA9IHBhcmVudE5vZGUoKTsKKyAgICBpZiAoIXBhcmVudCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgSGFzaFNldDxSZWZQdHI8Tm9kZT4+IG5vZGVTZXQgPSBub2Rl
U2V0UHJlVHJhbnNmb3JtZWRGcm9tTm9kZU9yU3RyaW5nVmVjdG9yKG5vZGVPclN0cmluZ1ZlY3Rv
cik7CisgICAgUmVmUHRyPE5vZGU+IHZpYWJsZVByZXZpb3VzU2libGluZyA9IGZpcnN0UHJlY2Vk
aW5nU2libGluZ05vdEluTm9kZVNldCgqdGhpcywgbm9kZVNldCk7CisKKyAgICBSZWZQdHI8Tm9k
ZT4gbm9kZSA9IGNvbnZlcnROb2Rlc09yU3RyaW5nc0ludG9Ob2RlKCp0aGlzLCBXVEY6Om1vdmUo
bm9kZU9yU3RyaW5nVmVjdG9yKSwgZWMpOworICAgIGlmIChlYyB8fCAhbm9kZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKHZpYWJsZVByZXZpb3VzU2libGluZykKKyAgICAgICAgdmlhYmxl
UHJldmlvdXNTaWJsaW5nID0gdmlhYmxlUHJldmlvdXNTaWJsaW5nLT5uZXh0U2libGluZygpOwor
ICAgIGVsc2UKKyAgICAgICAgdmlhYmxlUHJldmlvdXNTaWJsaW5nID0gcGFyZW50LT5maXJzdENo
aWxkKCk7CisKKyAgICBwYXJlbnQtPmluc2VydEJlZm9yZShub2RlLCB2aWFibGVQcmV2aW91c1Np
YmxpbmcuZ2V0KCksIGVjKTsKK30KKwordm9pZCBOb2RlOjphZnRlcihWZWN0b3I8Tm9kZU9yU3Ry
aW5nPiYmIG5vZGVPclN0cmluZ1ZlY3RvciwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgUmVm
UHRyPENvbnRhaW5lck5vZGU+IHBhcmVudCA9IHBhcmVudE5vZGUoKTsKKyAgICBpZiAoIXBhcmVu
dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgSGFzaFNldDxSZWZQdHI8Tm9kZT4+IG5vZGVTZXQg
PSBub2RlU2V0UHJlVHJhbnNmb3JtZWRGcm9tTm9kZU9yU3RyaW5nVmVjdG9yKG5vZGVPclN0cmlu
Z1ZlY3Rvcik7CisgICAgUmVmUHRyPE5vZGU+IHZpYWJsZU5leHRTaWJsaW5nID0gZmlyc3RGb2xs
b3dpbmdTaWJsaW5nTm90SW5Ob2RlU2V0KCp0aGlzLCBub2RlU2V0KTsKKworICAgIFJlZlB0cjxO
b2RlPiBub2RlID0gY29udmVydE5vZGVzT3JTdHJpbmdzSW50b05vZGUoKnRoaXMsIFdURjo6bW92
ZShub2RlT3JTdHJpbmdWZWN0b3IpLCBlYyk7CisgICAgaWYgKGVjIHx8ICFub2RlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBwYXJlbnQtPmluc2VydEJlZm9yZShub2RlLCB2aWFibGVOZXh0U2li
bGluZy5nZXQoKSwgZWMpOworfQorCit2b2lkIE5vZGU6OnJlcGxhY2VXaXRoKFZlY3RvcjxOb2Rl
T3JTdHJpbmc+JiYgbm9kZU9yU3RyaW5nVmVjdG9yLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAg
ICBSZWZQdHI8Q29udGFpbmVyTm9kZT4gcGFyZW50ID0gcGFyZW50Tm9kZSgpOworICAgIGlmICgh
cGFyZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBIYXNoU2V0PFJlZlB0cjxOb2RlPj4gbm9k
ZVNldCA9IG5vZGVTZXRQcmVUcmFuc2Zvcm1lZEZyb21Ob2RlT3JTdHJpbmdWZWN0b3Iobm9kZU9y
U3RyaW5nVmVjdG9yKTsKKyAgICBSZWZQdHI8Tm9kZT4gdmlhYmxlTmV4dFNpYmxpbmcgPSBmaXJz
dEZvbGxvd2luZ1NpYmxpbmdOb3RJbk5vZGVTZXQoKnRoaXMsIG5vZGVTZXQpOworCisgICAgUmVm
UHRyPE5vZGU+IG5vZGUgPSBjb252ZXJ0Tm9kZXNPclN0cmluZ3NJbnRvTm9kZSgqdGhpcywgV1RG
Ojptb3ZlKG5vZGVPclN0cmluZ1ZlY3RvciksIGVjKTsKKyAgICBpZiAoZWMgfHwgIW5vZGUpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmIChwYXJlbnROb2RlKCkgPT0gcGFyZW50KQorICAgICAg
ICBwYXJlbnQtPnJlcGxhY2VDaGlsZChub2RlLnJlbGVhc2UoKSwgdGhpcywgZWMpOworICAgIGVs
c2UKKyAgICAgICAgcGFyZW50LT5pbnNlcnRCZWZvcmUobm9kZSwgdmlhYmxlTmV4dFNpYmxpbmcu
Z2V0KCksIGVjKTsKK30KKwogdm9pZCBOb2RlOjpyZW1vdmUoRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CiAgICAgaWYgKENvbnRhaW5lck5vZGUqIHBhcmVudCA9IHBhcmVudE5vZGUoKSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaAkocmV2aXNpb24gMTg2NzA5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAko
d29ya2luZyBjb3B5KQpAQCAtNTgsMTAgKzU4LDExIEBAIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBL
ZXlib2FyZEV2ZW50OwogY2xhc3MgTWF0aE1MUXVhbGlmaWVkTmFtZTsKIGNsYXNzIE5TUmVzb2x2
ZXI7Ci1jbGFzcyBOYW1lZE5vZGVNYXA7CiBjbGFzcyBOYW1lTm9kZUxpc3Q7CitjbGFzcyBOYW1l
ZE5vZGVNYXA7CiBjbGFzcyBOb2RlTGlzdDsKIGNsYXNzIE5vZGVMaXN0c05vZGVEYXRhOworY2xh
c3MgTm9kZU9yU3RyaW5nOwogY2xhc3MgTm9kZVJhcmVEYXRhOwogY2xhc3MgUXVhbGlmaWVkTmFt
ZTsKIGNsYXNzIFJhZGlvTm9kZUxpc3Q7CkBAIC0xOTMsNyArMTk0LDYgQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgcmVtb3ZlQ2hpbGQoTm9kZSogY2hpbGQsIEV4Y2VwdGlvbkNv
ZGUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGFwcGVuZENoaWxkKFBhc3NSZWZQdHI8Tm9k
ZT4gbmV3Q2hpbGQsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
cmVtb3ZlKEV4Y2VwdGlvbkNvZGUmKTsKICAgICBib29sIGhhc0NoaWxkTm9kZXMoKSBjb25zdCB7
IHJldHVybiBmaXJzdENoaWxkKCk7IH0KIAogICAgIGVudW0gY2xhc3MgQ2xvbmluZ09wZXJhdGlv
biB7CkBAIC0yMjcsNiArMjI3LDEyIEBAIHB1YmxpYzoKICAgICBFbGVtZW50KiBwcmV2aW91c0Vs
ZW1lbnRTaWJsaW5nKCkgY29uc3Q7CiAgICAgRWxlbWVudCogbmV4dEVsZW1lbnRTaWJsaW5nKCkg
Y29uc3Q7CiAKKyAgICAvLyBGcm9tIHRoZSBDaGlsZE5vZGUgLSBodHRwczovL2RvbS5zcGVjLndo
YXR3Zy5vcmcvI2NoaWxkbm9kZQorICAgIHZvaWQgYmVmb3JlKFZlY3RvcjxOb2RlT3JTdHJpbmc+
JiYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGFmdGVyKFZlY3RvcjxOb2RlT3JTdHJpbmc+
JiYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHJlcGxhY2VXaXRoKFZlY3RvcjxOb2RlT3JT
dHJpbmc+JiYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92
ZShFeGNlcHRpb25Db2RlJik7CisKICAgICAvLyBPdGhlciBtZXRob2RzIChub3QgcGFydCBvZiBE
T00pCiAKICAgICBib29sIGlzRWxlbWVudE5vZGUoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKElz
RWxlbWVudEZsYWcpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZU9yU3RyaW5nLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZU9yU3RyaW5nLmNwcAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlT3JTdHJpbmcuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiTm9kZU9yU3RyaW5nLmgiCisKKyNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50
LmgiCisjaW5jbHVkZSAiVGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZlB0cjxO
b2RlPiBjb252ZXJ0Tm9kZXNPclN0cmluZ3NJbnRvTm9kZShOb2RlJiBjb250ZXh0LCBWZWN0b3I8
Tm9kZU9yU3RyaW5nPiYmIG5vZGVPclN0cmluZ1ZlY3RvciwgRXhjZXB0aW9uQ29kZSYgZWMpCit7
CisgICAgaWYgKG5vZGVPclN0cmluZ1ZlY3Rvci5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgVmVjdG9yPFJlZlB0cjxOb2RlPj4gbm9kZXM7CisgICAgZm9yIChhdXRv
JiBub2RlT3JTdHJpbmcgOiBub2RlT3JTdHJpbmdWZWN0b3IpIHsKKyAgICAgICAgc3dpdGNoIChu
b2RlT3JTdHJpbmcudHlwZSgpKSB7CisgICAgICAgIGNhc2UgTm9kZU9yU3RyaW5nOjpUeXBlOjpT
dHJpbmc6CisgICAgICAgICAgICBub2Rlcy5hcHBlbmQoVGV4dDo6Y3JlYXRlKGNvbnRleHQuZG9j
dW1lbnQoKSwgbm9kZU9yU3RyaW5nLnN0cmluZygpKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBOb2RlT3JTdHJpbmc6OlR5cGU6Ok5vZGU6CisgICAgICAgICAgICBub2Rlcy5h
cHBlbmQobm9kZU9yU3RyaW5nLm5vZGUoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgIH0KKworICAgIFJlZlB0cjxOb2RlPiBub2RlVG9SZXR1cm47CisgICAgaWYgKG5vZGVz
LnNpemUoKSA9PSAxKQorICAgICAgICBub2RlVG9SZXR1cm4gPSBub2Rlcy5maXJzdCgpOworICAg
IGVsc2UgeworICAgICAgICBub2RlVG9SZXR1cm4gPSBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUo
Y29udGV4dC5kb2N1bWVudCgpKTsKKyAgICAgICAgZm9yIChhdXRvJiBub2RlIDogbm9kZXMpIHsK
KyAgICAgICAgICAgIG5vZGVUb1JldHVybi0+YXBwZW5kQ2hpbGQobm9kZSwgZWMpOworICAgICAg
ICAgICAgaWYgKGVjKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9
CisgICAgfQorICAgIAorICAgIHJldHVybiBXVEY6Om1vdmUobm9kZVRvUmV0dXJuKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGVPclN0
cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlT3JTdHJpbmcuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlT3JTdHJpbmcuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDEwMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTm9kZU9yU3Ry
aW5nX2gKKyNkZWZpbmUgTm9kZU9yU3RyaW5nX2gKKworI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTm9kZU9yU3RyaW5nIHsKK3B1YmxpYzoKKyAgICBl
bnVtIGNsYXNzIFR5cGUgeworICAgICAgICBTdHJpbmcsCisgICAgICAgIE5vZGUKKyAgICB9Owor
CisgICAgTm9kZU9yU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorICAgICAgICA6IG1fdHlw
ZShUeXBlOjpTdHJpbmcpCisgICAgeworICAgICAgICBtX2RhdGEuc3RyaW5nID0gc3RyaW5nLmlt
cGwoKTsKKyAgICAgICAgbV9kYXRhLnN0cmluZy0+cmVmKCk7CisgICAgfQorCisgICAgTm9kZU9y
U3RyaW5nKE5vZGUqIG5vZGUpCisgICAgICAgIDogbV90eXBlKFR5cGU6Ok5vZGUpCisgICAgewor
ICAgICAgICBtX2RhdGEubm9kZSA9IG5vZGU7CisgICAgICAgIG1fZGF0YS5ub2RlLT5yZWYoKTsK
KyAgICB9CisKKyAgICBOb2RlT3JTdHJpbmcoY29uc3QgTm9kZU9yU3RyaW5nJiBvdGhlcikKKyAg
ICAgICAgOiBtX3R5cGUob3RoZXIubV90eXBlKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChtX3R5
cGUpIHsKKyAgICAgICAgY2FzZSBUeXBlOjpTdHJpbmc6CisgICAgICAgICAgICBtX2RhdGEuc3Ry
aW5nID0gb3RoZXIubV9kYXRhLnN0cmluZzsKKyAgICAgICAgICAgIG1fZGF0YS5zdHJpbmctPnJl
ZigpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVHlwZTo6Tm9kZToKKyAgICAg
ICAgICAgIG1fZGF0YS5ub2RlID0gb3RoZXIubV9kYXRhLm5vZGU7CisgICAgICAgICAgICBtX2Rh
dGEubm9kZS0+cmVmKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIH5Ob2RlT3JTdHJpbmcoKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAg
ICAgICAgY2FzZSBUeXBlOjpTdHJpbmc6CisgICAgICAgICAgICBtX2RhdGEuc3RyaW5nLT5kZXJl
ZigpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVHlwZTo6Tm9kZToKKyAgICAg
ICAgICAgIG1fZGF0YS5ub2RlLT5kZXJlZigpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKwor
ICAgIE5vZGUqIG5vZGUoKSBjb25zdCB7IEFTU0VSVChtX3R5cGUgPT0gVHlwZTo6Tm9kZSk7IHJl
dHVybiBtX2RhdGEubm9kZTsgfQorICAgIFN0cmluZ0ltcGwqIHN0cmluZygpIGNvbnN0IHsgQVNT
RVJUKG1fdHlwZSA9PSBUeXBlOjpTdHJpbmcpOyByZXR1cm4gbV9kYXRhLnN0cmluZzsgfQorICAg
IAorcHJpdmF0ZToKKyAgICBUeXBlIG1fdHlwZTsKKyAgICB1bmlvbiB7CisgICAgICAgIFN0cmlu
Z0ltcGwqIHN0cmluZzsKKyAgICAgICAgTm9kZSogbm9kZTsKKyAgICB9IG1fZGF0YTsKK307CisK
K1JlZlB0cjxOb2RlPiBjb252ZXJ0Tm9kZXNPclN0cmluZ3NJbnRvTm9kZShOb2RlJiBjb250ZXh0
LCBWZWN0b3I8Tm9kZU9yU3RyaW5nPiYmLCBFeGNlcHRpb25Db2RlJik7CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE5vZGVPclN0cmluZ19oCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vUGFyZW50Tm9kZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L1BhcmVudE5vZGUuaWRsCShyZXZpc2lvbiAxODY3MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
UGFyZW50Tm9kZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDEzIEBACiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQgbGFzdEVsZW1lbnRDaGlsZDsKICAgICByZWFkb25seSBh
dHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBjaGlsZEVsZW1lbnRDb3VudDsKIAorI2lmICFkZWZpbmVk
KExBTkdVQUdFX09CSkVDVElWRV9DKSB8fCAhTEFOR1VBR0VfT0JKRUNUSVZFX0MKKyAgICBbVW5z
Y29wZWFibGUsIFJhaXNlc0V4Y2VwdGlvbiwgQ3VzdG9tXSB2b2lkIHByZXBlbmQoKE5vZGUgb3Ig
RE9NU3RyaW5nKS4uLiBub2Rlcyk7CisgICAgW1Vuc2NvcGVhYmxlLCBSYWlzZXNFeGNlcHRpb24s
IEN1c3RvbV0gdm9pZCBhcHBlbmQoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLiBub2Rlcyk7CisjZW5k
aWYKKworICAgIC8vIFtVbnNjb3BlYWJsZV0gRWxlbWVudD8gcXVlcnkoRE9NU3RyaW5nIHJlbGF0
aXZlU2VsZWN0b3JzKTsKKyAgICAvLyBbTmV3T2JqZWN0LCBVbnNjb3BlYWJsZV0gRWxlbWVudHMg
cXVlcnlBbGwoRE9NU3RyaW5nIHJlbGF0aXZlU2VsZWN0b3JzKTsKICAgICBbUmFpc2VzRXhjZXB0
aW9uXSBFbGVtZW50IHF1ZXJ5U2VsZWN0b3IoRE9NU3RyaW5nIHNlbGVjdG9ycyk7CiAgICAgW1Jh
aXNlc0V4Y2VwdGlvbl0gTm9kZUxpc3QgcXVlcnlTZWxlY3RvckFsbChET01TdHJpbmcgc2VsZWN0
b3JzKTsKIH07CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODY3MDkpCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAxNS0wNy0wNSAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIERPTTQ6IHByZXBlbmQsIGFwcGVuZCwg
YmVmb3JlLCBhZnRlciAmIHJlcGxhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTc0NjQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9DaGlsZE5vZGUtYWZ0ZXItZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9DaGlsZE5vZGUtYWZ0ZXIuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vQ2hpbGROb2RlLWJlZm9yZS1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL0NoaWxkTm9kZS1iZWZvcmUuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vQ2hpbGROb2RlLXJlcGxhY2VXaXRoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vQ2hpbGROb2RlLXJlcGxhY2VXaXRoLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZG9tL1BhcmVudE5vZGUtYXBwZW5kLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vUGFyZW50Tm9kZS1hcHBlbmQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vUGFyZW50Tm9kZS1wcmVwZW5kLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vUGFyZW50Tm9kZS1wcmVwZW5kLmh0bWw6IEFkZGVkLgorCiAyMDE1LTA3
LTExICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVT
U0lPTiAocjE4NjY5Nyk6IEZpeCBZb3NlbWl0ZSwgRWwgQ2FwaXRhbiB0ZXN0IHJlc3VsdHMgZm9y
IGpzL2RvbS9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMuaHRtbApJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vQ2hpbGROb2RlLWFmdGVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9DaGlsZE5vZGUtYWZ0ZXItZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vQ2hpbGROb2RlLWFmdGVyLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4OSBAQAorVGVzdHMgQ2hpbGROb2RlLmFm
dGVyKChOb2RlIG9yIERPTVN0cmluZykuLi4pCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitUZXN0IEVsZW1lbnQuYWZ0ZXIoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLikuCitUZXN0IHdp
dGggbm8gYXJndW1lbnRzLgorUEFTUyBwYXJlbnQuY2hpbGROb2Rlcy5sZW5ndGggaXMgMQorCitU
ZXN0IHdpdGggYSBzaW5nbGUgZWxlbWVudC4KK1BBU1MgcGFyZW50LmNoaWxkTm9kZXMubGVuZ3Ro
IGlzIDIKK1BBU1MgY2hpbGQubmV4dFNpYmxpbmcgaXMgZDEKKworVGVzdCB3aXRoIGEgc2luZ2xl
IHN0cmluZy4KK1BBU1MgcGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoIGlzIDIKK1BBU1MgY2hpbGQu
bmV4dFNpYmxpbmcuZGF0YSBpcyAnaGVsbG8nCisKK1Rlc3Qgd2l0aCBhIGJvdGggc3RyaW5ncyBh
bmQgZWxlbWVudHMuCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzLmxlbmd0aCBpcyAzCitQQVNTIGNo
aWxkLm5leHRTaWJsaW5nLmRhdGEgaXMgJ2hlbGxvJworUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1sx
XSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzFdLmRhdGEg
aXMgJ2hlbGxvJworUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1syXSBpcyBhbiBpbnN0YW5jZSBvZiBF
bGVtZW50CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzJdIGlzIGQxCisKK1Rlc3QgY29udmVyc2lv
biB0byBzdHJpbmcKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoIGlzIDQKK1BBU1MgcGFy
ZW50LmNoaWxkTm9kZXNbMF0gaXMgYW4gaW5zdGFuY2Ugb2YgRWxlbWVudAorUEFTUyBwYXJlbnQu
Y2hpbGROb2Rlc1swXSBpcyBjaGlsZAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1sxXSBpcyBhbiBp
bnN0YW5jZSBvZiBUZXh0CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzFdLmRhdGEgaXMgJ251bGwn
CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzJdIGlzIGFuIGluc3RhbmNlIG9mIFRleHQKK1BBU1Mg
cGFyZW50LmNoaWxkTm9kZXNbMl0uZGF0YSBpcyAndW5kZWZpbmVkJworUEFTUyBwYXJlbnQuY2hp
bGROb2Rlc1szXSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQQVNTIHBhcmVudC5jaGlsZE5vZGVz
WzNdLmRhdGEgaXMgJzcnCisKK1Rlc3QgYSBjaGlsZCB3aXRob3V0IGEgcGFyZW50LgorUEFTUyBj
aGlsZC5uZXh0U2libGluZyBpcyBudWxsCisKK1Rlc3Qgd2hlbiB0aGVyZSB0aGUgbmV4dCBzaWJs
aW5nIGlzIG5vdCBhIHZpYWJsZSBuZXh0IHNpYmxpbmcuCitQQVNTIHBhcmVudC5jaGlsZE5vZGVz
Lmxlbmd0aCBpcyA1CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzBdIGlzIGFuIGluc3RhbmNlIG9m
IEVsZW1lbnQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMF0gaXMgY2hpbGQKK1BBU1MgcGFyZW50
LmNoaWxkTm9kZXNbMV0gaXMgYW4gaW5zdGFuY2Ugb2YgVGV4dAorUEFTUyBwYXJlbnQuY2hpbGRO
b2Rlc1sxXS5kYXRhIGlzICdoZWxsbycKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMl0gaXMgYW4g
aW5zdGFuY2Ugb2YgRWxlbWVudAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1syXSBpcyBkMQorUEFT
UyBwYXJlbnQuY2hpbGROb2Rlc1szXSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQQVNTIHBhcmVu
dC5jaGlsZE5vZGVzWzNdLmRhdGEgaXMgJ3dvcmxkJworUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1s0
XSBpcyBhbiBpbnN0YW5jZSBvZiBFbGVtZW50CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzRdIGlz
IGQyCisKK1Rlc3Qgd2hlbiB0aGVyZSBpcyBubyB2aWFibGUgbmV4dCBzaWJsaW5nLgorUEFTUyBw
YXJlbnQuY2hpbGROb2Rlcy5sZW5ndGggaXMgNQorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1swXSBp
cyBhbiBpbnN0YW5jZSBvZiBFbGVtZW50CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzBdIGlzIGNo
aWxkCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzFdIGlzIGFuIGluc3RhbmNlIG9mIFRleHQKK1BB
U1MgcGFyZW50LmNoaWxkTm9kZXNbMV0uZGF0YSBpcyAnaGVsbG8nCitQQVNTIHBhcmVudC5jaGls
ZE5vZGVzWzJdIGlzIGFuIGluc3RhbmNlIG9mIEVsZW1lbnQKK1BBU1MgcGFyZW50LmNoaWxkTm9k
ZXNbMl0gaXMgZDEKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbM10gaXMgYW4gaW5zdGFuY2Ugb2Yg
VGV4dAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1szXS5kYXRhIGlzICd3b3JsZCcKK1BBU1MgcGFy
ZW50LmNoaWxkTm9kZXNbNF0gaXMgYW4gaW5zdGFuY2Ugb2YgRWxlbWVudAorUEFTUyBwYXJlbnQu
Y2hpbGROb2Rlc1s0XSBpcyBkMgorCitUZXN0IFRleHQuYWZ0ZXIoKE5vZGUgb3IgRE9NU3RyaW5n
KS4uLikuCitUZXN0IHdpdGggbm8gYXJndW1lbnRzLgorUEFTUyBwYXJlbnQuY2hpbGROb2Rlcy5s
ZW5ndGggaXMgMQorCitUZXN0IHdpdGggYSBzaW5nbGUgZWxlbWVudC4KK1BBU1MgcGFyZW50LmNo
aWxkTm9kZXMubGVuZ3RoIGlzIDIKK1BBU1MgY2hpbGQubmV4dFNpYmxpbmcgaXMgZDEKKworVGVz
dCB3aXRoIGEgc2luZ2xlIHN0cmluZy4KK1BBU1MgcGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoIGlz
IDIKK1BBU1MgY2hpbGQubmV4dFNpYmxpbmcuZGF0YSBpcyAnaGVsbG8nCisKK1Rlc3Qgd2l0aCBh
IGJvdGggc3RyaW5ncyBhbmQgZWxlbWVudHMuCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzLmxlbmd0
aCBpcyAzCitQQVNTIGNoaWxkLm5leHRTaWJsaW5nLmRhdGEgaXMgJ2hlbGxvJworUEFTUyBwYXJl
bnQuY2hpbGROb2Rlc1sxXSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQQVNTIHBhcmVudC5jaGls
ZE5vZGVzWzFdLmRhdGEgaXMgJ2hlbGxvJworUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1syXSBpcyBh
biBpbnN0YW5jZSBvZiBFbGVtZW50CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzJdIGlzIGQxCisK
K1Rlc3QgY29udmVyc2lvbiB0byBzdHJpbmcKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXMubGVuZ3Ro
IGlzIDQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMF0gaXMgYW4gaW5zdGFuY2Ugb2YgVGV4dAor
UEFTUyBwYXJlbnQuY2hpbGROb2Rlc1swXSBpcyBjaGlsZAorUEFTUyBwYXJlbnQuY2hpbGROb2Rl
c1sxXSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzFdLmRh
dGEgaXMgJ251bGwnCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzJdIGlzIGFuIGluc3RhbmNlIG9m
IFRleHQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMl0uZGF0YSBpcyAndW5kZWZpbmVkJworUEFT
UyBwYXJlbnQuY2hpbGROb2Rlc1szXSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQQVNTIHBhcmVu
dC5jaGlsZE5vZGVzWzNdLmRhdGEgaXMgJzcnCisKK1Rlc3QgYSBjaGlsZCB3aXRob3V0IGEgcGFy
ZW50LgorUEFTUyBjaGlsZC5uZXh0U2libGluZyBpcyBudWxsCisKK1Rlc3Qgd2hlbiB0aGVyZSB0
aGUgbmV4dCBzaWJsaW5nIGlzIG5vdCBhIHZpYWJsZSBuZXh0IHNpYmxpbmcuCitQQVNTIHBhcmVu
dC5jaGlsZE5vZGVzLmxlbmd0aCBpcyA1CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzBdIGlzIGFu
IGluc3RhbmNlIG9mIFRleHQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMF0gaXMgY2hpbGQKK1BB
U1MgcGFyZW50LmNoaWxkTm9kZXNbMV0gaXMgYW4gaW5zdGFuY2Ugb2YgVGV4dAorUEFTUyBwYXJl
bnQuY2hpbGROb2Rlc1sxXS5kYXRhIGlzICdoZWxsbycKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNb
Ml0gaXMgYW4gaW5zdGFuY2Ugb2YgRWxlbWVudAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1syXSBp
cyBkMQorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1szXSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQ
QVNTIHBhcmVudC5jaGlsZE5vZGVzWzNdLmRhdGEgaXMgJ3dvcmxkJworUEFTUyBwYXJlbnQuY2hp
bGROb2Rlc1s0XSBpcyBhbiBpbnN0YW5jZSBvZiBFbGVtZW50CitQQVNTIHBhcmVudC5jaGlsZE5v
ZGVzWzRdIGlzIGQyCisKK1Rlc3Qgd2hlbiB0aGVyZSBpcyBubyB2aWFibGUgbmV4dCBzaWJsaW5n
LgorUEFTUyBwYXJlbnQuY2hpbGROb2Rlcy5sZW5ndGggaXMgNQorUEFTUyBwYXJlbnQuY2hpbGRO
b2Rlc1swXSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzBd
IGlzIGNoaWxkCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzFdIGlzIGFuIGluc3RhbmNlIG9mIFRl
eHQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMV0uZGF0YSBpcyAnaGVsbG8nCitQQVNTIHBhcmVu
dC5jaGlsZE5vZGVzWzJdIGlzIGFuIGluc3RhbmNlIG9mIEVsZW1lbnQKK1BBU1MgcGFyZW50LmNo
aWxkTm9kZXNbMl0gaXMgZDEKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbM10gaXMgYW4gaW5zdGFu
Y2Ugb2YgVGV4dAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1szXS5kYXRhIGlzICd3b3JsZCcKK1BB
U1MgcGFyZW50LmNoaWxkTm9kZXNbNF0gaXMgYW4gaW5zdGFuY2Ugb2YgRWxlbWVudAorUEFTUyBw
YXJlbnQuY2hpbGROb2Rlc1s0XSBpcyBkMgorCitUZXN0IENvbW1lbnQuYWZ0ZXIoKE5vZGUgb3Ig
RE9NU3RyaW5nKS4uLikuCitUZXN0IHdpdGggbm8gYXJndW1lbnRzLgorUEFTUyBwYXJlbnQuY2hp
bGROb2Rlcy5sZW5ndGggaXMgMQorCitUZXN0IHdpdGggYSBzaW5nbGUgZWxlbWVudC4KK1BBU1Mg
cGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoIGlzIDIKK1BBU1MgY2hpbGQubmV4dFNpYmxpbmcgaXMg
ZDEKKworVGVzdCB3aXRoIGEgc2luZ2xlIHN0cmluZy4KK1BBU1MgcGFyZW50LmNoaWxkTm9kZXMu
bGVuZ3RoIGlzIDIKK1BBU1MgY2hpbGQubmV4dFNpYmxpbmcuZGF0YSBpcyAnaGVsbG8nCisKK1Rl
c3Qgd2l0aCBhIGJvdGggc3RyaW5ncyBhbmQgZWxlbWVudHMuCitQQVNTIHBhcmVudC5jaGlsZE5v
ZGVzLmxlbmd0aCBpcyAzCitQQVNTIGNoaWxkLm5leHRTaWJsaW5nLmRhdGEgaXMgJ2hlbGxvJwor
UEFTUyBwYXJlbnQuY2hpbGROb2Rlc1sxXSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQQVNTIHBh
cmVudC5jaGlsZE5vZGVzWzFdLmRhdGEgaXMgJ2hlbGxvJworUEFTUyBwYXJlbnQuY2hpbGROb2Rl
c1syXSBpcyBhbiBpbnN0YW5jZSBvZiBFbGVtZW50CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzJd
IGlzIGQxCisKK1Rlc3QgY29udmVyc2lvbiB0byBzdHJpbmcKK1BBU1MgcGFyZW50LmNoaWxkTm9k
ZXMubGVuZ3RoIGlzIDQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMF0gaXMgYW4gaW5zdGFuY2Ug
b2YgQ29tbWVudAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1swXSBpcyBjaGlsZAorUEFTUyBwYXJl
bnQuY2hpbGROb2Rlc1sxXSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQQVNTIHBhcmVudC5jaGls
ZE5vZGVzWzFdLmRhdGEgaXMgJ251bGwnCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzJdIGlzIGFu
IGluc3RhbmNlIG9mIFRleHQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMl0uZGF0YSBpcyAndW5k
ZWZpbmVkJworUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1szXSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0
CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzNdLmRhdGEgaXMgJzcnCisKK1Rlc3QgYSBjaGlsZCB3
aXRob3V0IGEgcGFyZW50LgorUEFTUyBjaGlsZC5uZXh0U2libGluZyBpcyBudWxsCisKK1Rlc3Qg
d2hlbiB0aGVyZSB0aGUgbmV4dCBzaWJsaW5nIGlzIG5vdCBhIHZpYWJsZSBuZXh0IHNpYmxpbmcu
CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzLmxlbmd0aCBpcyA1CitQQVNTIHBhcmVudC5jaGlsZE5v
ZGVzWzBdIGlzIGFuIGluc3RhbmNlIG9mIENvbW1lbnQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNb
MF0gaXMgY2hpbGQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMV0gaXMgYW4gaW5zdGFuY2Ugb2Yg
VGV4dAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1sxXS5kYXRhIGlzICdoZWxsbycKK1BBU1MgcGFy
ZW50LmNoaWxkTm9kZXNbMl0gaXMgYW4gaW5zdGFuY2Ugb2YgRWxlbWVudAorUEFTUyBwYXJlbnQu
Y2hpbGROb2Rlc1syXSBpcyBkMQorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1szXSBpcyBhbiBpbnN0
YW5jZSBvZiBUZXh0CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzNdLmRhdGEgaXMgJ3dvcmxkJwor
UEFTUyBwYXJlbnQuY2hpbGROb2Rlc1s0XSBpcyBhbiBpbnN0YW5jZSBvZiBFbGVtZW50CitQQVNT
IHBhcmVudC5jaGlsZE5vZGVzWzRdIGlzIGQyCisKK1Rlc3Qgd2hlbiB0aGVyZSBpcyBubyB2aWFi
bGUgbmV4dCBzaWJsaW5nLgorUEFTUyBwYXJlbnQuY2hpbGROb2Rlcy5sZW5ndGggaXMgNQorUEFT
UyBwYXJlbnQuY2hpbGROb2Rlc1swXSBpcyBhbiBpbnN0YW5jZSBvZiBDb21tZW50CitQQVNTIHBh
cmVudC5jaGlsZE5vZGVzWzBdIGlzIGNoaWxkCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzFdIGlz
IGFuIGluc3RhbmNlIG9mIFRleHQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMV0uZGF0YSBpcyAn
aGVsbG8nCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzJdIGlzIGFuIGluc3RhbmNlIG9mIEVsZW1l
bnQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMl0gaXMgZDEKK1BBU1MgcGFyZW50LmNoaWxkTm9k
ZXNbM10gaXMgYW4gaW5zdGFuY2Ugb2YgVGV4dAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1szXS5k
YXRhIGlzICd3b3JsZCcKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbNF0gaXMgYW4gaW5zdGFuY2Ug
b2YgRWxlbWVudAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1s0XSBpcyBkMgorCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vQ2hpbGROb2RlLWFmdGVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vQ2hpbGROb2RlLWFmdGVyLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9DaGlsZE5vZGUtYWZ0ZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDEzMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUZXN0
cyBDaGlsZE5vZGUuYWZ0ZXIoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLikiKTsKK2Z1bmN0aW9uIHRl
c3QodCwgY3JlYXRlQ2hpbGQpCit7CisgICAgdHlwZSA9IHQ7CisgICAgZGVidWcoIjxiPlRlc3Qg
IiArIHR5cGUgKyAiLmFmdGVyKChOb2RlIG9yIERPTVN0cmluZykuLi4pLjwvYj4iKTsKKyAgICAK
KyAgICBkZWJ1ZygiVGVzdCB3aXRoIG5vIGFyZ3VtZW50cy4iKTsKKyAgICBwYXJlbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBjaGlsZCA9IGNyZWF0ZUNoaWxkKCk7Cisg
ICAgcGFyZW50LmFwcGVuZENoaWxkKGNoaWxkKTsKKyAgICBjaGlsZC5hZnRlcigpOworICAgIHNo
b3VsZEJlKCJwYXJlbnQuY2hpbGROb2Rlcy5sZW5ndGgiLCAiMSIpOworICAgIGRlYnVnKCIiKTsK
KworICAgIGRlYnVnKCJUZXN0IHdpdGggYSBzaW5nbGUgZWxlbWVudC4iKTsKKyAgICBwYXJlbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBjaGlsZCA9IGNyZWF0ZUNoaWxk
KCk7CisgICAgcGFyZW50LmFwcGVuZENoaWxkKGNoaWxkKTsKKyAgICBkMSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGNoaWxkLmFmdGVyKGQxKTsKKyAgICBzaG91bGRCZSgi
cGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoIiwgIjIiKTsKKyAgICBzaG91bGRCZSgiY2hpbGQubmV4
dFNpYmxpbmciLCAiZDEiKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICBkZWJ1ZygiVGVzdCB3aXRo
IGEgc2luZ2xlIHN0cmluZy4iKTsKKyAgICBwYXJlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKKyAgICBjaGlsZCA9IGNyZWF0ZUNoaWxkKCk7CisgICAgcGFyZW50LmFwcGVuZENo
aWxkKGNoaWxkKTsKKyAgICBjaGlsZC5hZnRlcignaGVsbG8nKTsKKyAgICBzaG91bGRCZSgicGFy
ZW50LmNoaWxkTm9kZXMubGVuZ3RoIiwgIjIiKTsKKyAgICBzaG91bGRCZSgiY2hpbGQubmV4dFNp
YmxpbmcuZGF0YSIsICInaGVsbG8nIik7CisgICAgZGVidWcoIiIpOworCisgICAgZGVidWcoIlRl
c3Qgd2l0aCBhIGJvdGggc3RyaW5ncyBhbmQgZWxlbWVudHMuIik7CisgICAgcGFyZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgY2hpbGQgPSBjcmVhdGVDaGlsZCgpOwor
ICAgIHBhcmVudC5hcHBlbmRDaGlsZChjaGlsZCk7CisgICAgZDEgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKKyAgICBjaGlsZC5hZnRlcignaGVsbG8nLCBkMSk7CisgICAgc2hvdWxk
QmUoInBhcmVudC5jaGlsZE5vZGVzLmxlbmd0aCIsICIzIik7CisgICAgc2hvdWxkQmUoImNoaWxk
Lm5leHRTaWJsaW5nLmRhdGEiLCAiJ2hlbGxvJyIpOworICAgIHNob3VsZEJlVHlwZSgicGFyZW50
LmNoaWxkTm9kZXNbMV0iLCAiVGV4dCIpOworICAgIHNob3VsZEJlKCJwYXJlbnQuY2hpbGROb2Rl
c1sxXS5kYXRhIiwgIidoZWxsbyciKTsKKyAgICBzaG91bGRCZVR5cGUoInBhcmVudC5jaGlsZE5v
ZGVzWzJdIiwgIkVsZW1lbnQiKTsKKyAgICBzaG91bGRCZSgicGFyZW50LmNoaWxkTm9kZXNbMl0i
LCAiZDEiKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICBkZWJ1ZygiVGVzdCBjb252ZXJzaW9uIHRv
IHN0cmluZyIpOworICAgIHBhcmVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwor
ICAgIGNoaWxkID0gY3JlYXRlQ2hpbGQoKTsKKyAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoY2hpbGQp
OworICAgIGNoaWxkLmFmdGVyKG51bGwsIHVuZGVmaW5lZCwgNyk7CisgICAgc2hvdWxkQmUoInBh
cmVudC5jaGlsZE5vZGVzLmxlbmd0aCIsICI0Iik7CisgICAgc2hvdWxkQmVUeXBlKCJwYXJlbnQu
Y2hpbGROb2Rlc1swXSIsIHR5cGUpOworICAgIHNob3VsZEJlKCJwYXJlbnQuY2hpbGROb2Rlc1sw
XSIsICJjaGlsZCIpOworICAgIHNob3VsZEJlVHlwZSgicGFyZW50LmNoaWxkTm9kZXNbMV0iLCAi
VGV4dCIpOworICAgIHNob3VsZEJlKCJwYXJlbnQuY2hpbGROb2Rlc1sxXS5kYXRhIiwgIidudWxs
JyIpOworICAgIHNob3VsZEJlVHlwZSgicGFyZW50LmNoaWxkTm9kZXNbMl0iLCAiVGV4dCIpOwor
ICAgIHNob3VsZEJlKCJwYXJlbnQuY2hpbGROb2Rlc1syXS5kYXRhIiwgIid1bmRlZmluZWQnIik7
CisgICAgc2hvdWxkQmVUeXBlKCJwYXJlbnQuY2hpbGROb2Rlc1szXSIsICJUZXh0Iik7CisgICAg
c2hvdWxkQmUoInBhcmVudC5jaGlsZE5vZGVzWzNdLmRhdGEiLCAiJzcnIik7CisgICAgZGVidWco
IiIpOworCisgICAgZGVidWcoIlRlc3QgYSBjaGlsZCB3aXRob3V0IGEgcGFyZW50LiIpOworICAg
IGNoaWxkID0gY3JlYXRlQ2hpbGQoKTsKKyAgICBkMSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOworICAgIGNoaWxkLmFmdGVyKGQxKTsKKyAgICBzaG91bGRCZU51bGwoImNoaWxkLm5l
eHRTaWJsaW5nIik7CisgICAgZGVidWcoIiIpOworCisgICAgZGVidWcoIlRlc3Qgd2hlbiB0aGVy
ZSB0aGUgbmV4dCBzaWJsaW5nIGlzIG5vdCBhIHZpYWJsZSBuZXh0IHNpYmxpbmcuIik7CisgICAg
cGFyZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgY2hpbGQgPSBjcmVh
dGVDaGlsZCgpOworICAgIHBhcmVudC5hcHBlbmRDaGlsZChjaGlsZCk7CisgICAgZDEgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoZDEpOwor
ICAgIGQyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgcGFyZW50LmFwcGVu
ZENoaWxkKGQyKTsKKyAgICBjaGlsZC5hZnRlcigiaGVsbG8iLCBkMSwgIndvcmxkIik7CisgICAg
c2hvdWxkQmUoInBhcmVudC5jaGlsZE5vZGVzLmxlbmd0aCIsICI1Iik7CisgICAgc2hvdWxkQmVU
eXBlKCJwYXJlbnQuY2hpbGROb2Rlc1swXSIsIHR5cGUpOworICAgIHNob3VsZEJlKCJwYXJlbnQu
Y2hpbGROb2Rlc1swXSIsICJjaGlsZCIpOworICAgIHNob3VsZEJlVHlwZSgicGFyZW50LmNoaWxk
Tm9kZXNbMV0iLCAiVGV4dCIpOworICAgIHNob3VsZEJlKCJwYXJlbnQuY2hpbGROb2Rlc1sxXS5k
YXRhIiwgIidoZWxsbyciKTsKKyAgICBzaG91bGRCZVR5cGUoInBhcmVudC5jaGlsZE5vZGVzWzJd
IiwgIkVsZW1lbnQiKTsKKyAgICBzaG91bGRCZSgicGFyZW50LmNoaWxkTm9kZXNbMl0iLCAiZDEi
KTsKKyAgICBzaG91bGRCZVR5cGUoInBhcmVudC5jaGlsZE5vZGVzWzNdIiwgIlRleHQiKTsKKyAg
ICBzaG91bGRCZSgicGFyZW50LmNoaWxkTm9kZXNbM10uZGF0YSIsICInd29ybGQnIik7CisgICAg
c2hvdWxkQmVUeXBlKCJwYXJlbnQuY2hpbGROb2Rlc1s0XSIsICJFbGVtZW50Iik7CisgICAgc2hv
dWxkQmUoInBhcmVudC5jaGlsZE5vZGVzWzRdIiwgImQyIik7CisgICAgZGVidWcoIiIpOworCisg
ICAgZGVidWcoIlRlc3Qgd2hlbiB0aGVyZSBpcyBubyB2aWFibGUgbmV4dCBzaWJsaW5nLiIpOwor
ICAgIHBhcmVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIGNoaWxkID0g
Y3JlYXRlQ2hpbGQoKTsKKyAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoY2hpbGQpOworICAgIGQxID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgcGFyZW50LmFwcGVuZENoaWxkKGQx
KTsKKyAgICBkMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIHBhcmVudC5h
cHBlbmRDaGlsZChkMik7CisgICAgY2hpbGQuYWZ0ZXIoImhlbGxvIiwgZDEsICJ3b3JsZCIsIGQy
KTsKKyAgICBzaG91bGRCZSgicGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoIiwgIjUiKTsKKyAgICBz
aG91bGRCZVR5cGUoInBhcmVudC5jaGlsZE5vZGVzWzBdIiwgdHlwZSk7CisgICAgc2hvdWxkQmUo
InBhcmVudC5jaGlsZE5vZGVzWzBdIiwgImNoaWxkIik7CisgICAgc2hvdWxkQmVUeXBlKCJwYXJl
bnQuY2hpbGROb2Rlc1sxXSIsICJUZXh0Iik7CisgICAgc2hvdWxkQmUoInBhcmVudC5jaGlsZE5v
ZGVzWzFdLmRhdGEiLCAiJ2hlbGxvJyIpOworICAgIHNob3VsZEJlVHlwZSgicGFyZW50LmNoaWxk
Tm9kZXNbMl0iLCAiRWxlbWVudCIpOworICAgIHNob3VsZEJlKCJwYXJlbnQuY2hpbGROb2Rlc1sy
XSIsICJkMSIpOworICAgIHNob3VsZEJlVHlwZSgicGFyZW50LmNoaWxkTm9kZXNbM10iLCAiVGV4
dCIpOworICAgIHNob3VsZEJlKCJwYXJlbnQuY2hpbGROb2Rlc1szXS5kYXRhIiwgIid3b3JsZCci
KTsKKyAgICBzaG91bGRCZVR5cGUoInBhcmVudC5jaGlsZE5vZGVzWzRdIiwgIkVsZW1lbnQiKTsK
KyAgICBzaG91bGRCZSgicGFyZW50LmNoaWxkTm9kZXNbNF0iLCAiZDIiKTsKKworICAgIGRlYnVn
KCIiKTsKK30KKwordGVzdCgiRWxlbWVudCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7IH0pOwordGVzdCgiVGV4dCIsIGZ1bmN0aW9uKCkgeyByZXR1
cm4gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoInRleHQgbm9kZSB0ZXh0Iik7IH0pOwordGVzdCgi
Q29tbWVudCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gZG9jdW1lbnQuY3JlYXRlQ29tbWVudCgiY29t
bWVudCB0ZXh0Iik7IH0pOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL0NoaWxkTm9kZS1iZWZvcmUtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0NoaWxkTm9kZS1iZWZvcmUtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vQ2hpbGROb2RlLWJlZm9yZS1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxODkgQEAKK1Rlc3RzIENoaWxk
Tm9kZS5iZWZvcmUoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLikKKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1Rlc3QgRWxlbWVudC5iZWZvcmUoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLiku
CitUZXN0IHdpdGggbm8gYXJndW1lbnRzLgorUEFTUyBwYXJlbnQuY2hpbGROb2Rlcy5sZW5ndGgg
aXMgMQorCitUZXN0IHdpdGggYSBzaW5nbGUgZWxlbWVudC4KK1BBU1MgcGFyZW50LmNoaWxkTm9k
ZXMubGVuZ3RoIGlzIDIKK1BBU1MgY2hpbGQucHJldmlvdXNTaWJsaW5nIGlzIGQxCisKK1Rlc3Qg
d2l0aCBhIHNpbmdsZSBzdHJpbmcuCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzLmxlbmd0aCBpcyAy
CitQQVNTIGNoaWxkLnByZXZpb3VzU2libGluZy5kYXRhIGlzICdoZWxsbycKKworVGVzdCB3aXRo
IGEgYm90aCBzdHJpbmdzIGFuZCBlbGVtZW50cy4KK1BBU1MgcGFyZW50LmNoaWxkTm9kZXMubGVu
Z3RoIGlzIDMKK1BBU1MgY2hpbGQucHJldmlvdXNTaWJsaW5nIGlzIGQxCitQQVNTIHBhcmVudC5j
aGlsZE5vZGVzWzBdIGlzIGFuIGluc3RhbmNlIG9mIFRleHQKK1BBU1MgcGFyZW50LmNoaWxkTm9k
ZXNbMF0uZGF0YSBpcyAnaGVsbG8nCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzFdIGlzIGFuIGlu
c3RhbmNlIG9mIEVsZW1lbnQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMV0gaXMgZDEKKworVGVz
dCBjb252ZXJzaW9uIHRvIHN0cmluZworUEFTUyBwYXJlbnQuY2hpbGROb2Rlcy5sZW5ndGggaXMg
NAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1swXSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQQVNT
IHBhcmVudC5jaGlsZE5vZGVzWzBdLmRhdGEgaXMgJ251bGwnCitQQVNTIHBhcmVudC5jaGlsZE5v
ZGVzWzFdIGlzIGFuIGluc3RhbmNlIG9mIFRleHQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMV0u
ZGF0YSBpcyAndW5kZWZpbmVkJworUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1syXSBpcyBhbiBpbnN0
YW5jZSBvZiBUZXh0CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzJdLmRhdGEgaXMgJzcnCitQQVNT
IHBhcmVudC5jaGlsZE5vZGVzWzNdIGlzIGFuIGluc3RhbmNlIG9mIEVsZW1lbnQKK1BBU1MgcGFy
ZW50LmNoaWxkTm9kZXNbM10gaXMgY2hpbGQKKworVGVzdCBhIGNoaWxkIHdpdGhvdXQgYSBwYXJl
bnQuCitQQVNTIGNoaWxkLnByZXZpb3VzU2libGluZyBpcyBudWxsCisKK1Rlc3Qgd2hlbiB0aGVy
ZSB0aGUgcHJldmlvdXMgc2libGluZyBpcyBub3QgYSB2aWFibGUgcHJldmlvdXMgc2libGluZy4K
K1BBU1MgcGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoIGlzIDUKK1BBU1MgcGFyZW50LmNoaWxkTm9k
ZXNbMF0gaXMgYW4gaW5zdGFuY2Ugb2YgRWxlbWVudAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1sw
XSBpcyBkMQorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1sxXSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0
CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzFdLmRhdGEgaXMgJ2hlbGxvJworUEFTUyBwYXJlbnQu
Y2hpbGROb2Rlc1syXSBpcyBhbiBpbnN0YW5jZSBvZiBFbGVtZW50CitQQVNTIHBhcmVudC5jaGls
ZE5vZGVzWzJdIGlzIGQyCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzNdIGlzIGFuIGluc3RhbmNl
IG9mIFRleHQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbM10uZGF0YSBpcyAnd29ybGQnCitQQVNT
IHBhcmVudC5jaGlsZE5vZGVzWzRdIGlzIGFuIGluc3RhbmNlIG9mIEVsZW1lbnQKK1BBU1MgcGFy
ZW50LmNoaWxkTm9kZXNbNF0gaXMgY2hpbGQKKworVGVzdCB3aGVuIHRoZXJlIGlzIG5vIHZpYWJs
ZSBwcmV2aW91cyBzaWJsaW5nLgorUEFTUyBwYXJlbnQuY2hpbGROb2Rlcy5sZW5ndGggaXMgNQor
UEFTUyBwYXJlbnQuY2hpbGROb2Rlc1swXSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQQVNTIHBh
cmVudC5jaGlsZE5vZGVzWzBdLmRhdGEgaXMgJ2hlbGxvJworUEFTUyBwYXJlbnQuY2hpbGROb2Rl
c1sxXSBpcyBhbiBpbnN0YW5jZSBvZiBFbGVtZW50CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzFd
IGlzIGQxCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzJdIGlzIGFuIGluc3RhbmNlIG9mIFRleHQK
K1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMl0uZGF0YSBpcyAnd29ybGQnCitQQVNTIHBhcmVudC5j
aGlsZE5vZGVzWzNdIGlzIGFuIGluc3RhbmNlIG9mIEVsZW1lbnQKK1BBU1MgcGFyZW50LmNoaWxk
Tm9kZXNbM10gaXMgZDIKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbNF0gaXMgYW4gaW5zdGFuY2Ug
b2YgRWxlbWVudAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1s0XSBpcyBjaGlsZAorCitUZXN0IFRl
eHQuYmVmb3JlKChOb2RlIG9yIERPTVN0cmluZykuLi4pLgorVGVzdCB3aXRoIG5vIGFyZ3VtZW50
cy4KK1BBU1MgcGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoIGlzIDEKKworVGVzdCB3aXRoIGEgc2lu
Z2xlIGVsZW1lbnQuCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzLmxlbmd0aCBpcyAyCitQQVNTIGNo
aWxkLnByZXZpb3VzU2libGluZyBpcyBkMQorCitUZXN0IHdpdGggYSBzaW5nbGUgc3RyaW5nLgor
UEFTUyBwYXJlbnQuY2hpbGROb2Rlcy5sZW5ndGggaXMgMgorUEFTUyBjaGlsZC5wcmV2aW91c1Np
YmxpbmcuZGF0YSBpcyAnaGVsbG8nCisKK1Rlc3Qgd2l0aCBhIGJvdGggc3RyaW5ncyBhbmQgZWxl
bWVudHMuCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzLmxlbmd0aCBpcyAzCitQQVNTIGNoaWxkLnBy
ZXZpb3VzU2libGluZyBpcyBkMQorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1swXSBpcyBhbiBpbnN0
YW5jZSBvZiBUZXh0CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzBdLmRhdGEgaXMgJ2hlbGxvJwor
UEFTUyBwYXJlbnQuY2hpbGROb2Rlc1sxXSBpcyBhbiBpbnN0YW5jZSBvZiBFbGVtZW50CitQQVNT
IHBhcmVudC5jaGlsZE5vZGVzWzFdIGlzIGQxCisKK1Rlc3QgY29udmVyc2lvbiB0byBzdHJpbmcK
K1BBU1MgcGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoIGlzIDQKK1BBU1MgcGFyZW50LmNoaWxkTm9k
ZXNbMF0gaXMgYW4gaW5zdGFuY2Ugb2YgVGV4dAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1swXS5k
YXRhIGlzICdudWxsJworUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1sxXSBpcyBhbiBpbnN0YW5jZSBv
ZiBUZXh0CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzFdLmRhdGEgaXMgJ3VuZGVmaW5lZCcKK1BB
U1MgcGFyZW50LmNoaWxkTm9kZXNbMl0gaXMgYW4gaW5zdGFuY2Ugb2YgVGV4dAorUEFTUyBwYXJl
bnQuY2hpbGROb2Rlc1syXS5kYXRhIGlzICc3JworUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1szXSBp
cyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzNdIGlzIGNoaWxk
CisKK1Rlc3QgYSBjaGlsZCB3aXRob3V0IGEgcGFyZW50LgorUEFTUyBjaGlsZC5wcmV2aW91c1Np
YmxpbmcgaXMgbnVsbAorCitUZXN0IHdoZW4gdGhlcmUgdGhlIHByZXZpb3VzIHNpYmxpbmcgaXMg
bm90IGEgdmlhYmxlIHByZXZpb3VzIHNpYmxpbmcuCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzLmxl
bmd0aCBpcyA1CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzBdIGlzIGFuIGluc3RhbmNlIG9mIEVs
ZW1lbnQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMF0gaXMgZDEKK1BBU1MgcGFyZW50LmNoaWxk
Tm9kZXNbMV0gaXMgYW4gaW5zdGFuY2Ugb2YgVGV4dAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1sx
XS5kYXRhIGlzICdoZWxsbycKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMl0gaXMgYW4gaW5zdGFu
Y2Ugb2YgRWxlbWVudAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1syXSBpcyBkMgorUEFTUyBwYXJl
bnQuY2hpbGROb2Rlc1szXSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQQVNTIHBhcmVudC5jaGls
ZE5vZGVzWzNdLmRhdGEgaXMgJ3dvcmxkJworUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1s0XSBpcyBh
biBpbnN0YW5jZSBvZiBUZXh0CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzRdIGlzIGNoaWxkCisK
K1Rlc3Qgd2hlbiB0aGVyZSBpcyBubyB2aWFibGUgcHJldmlvdXMgc2libGluZy4KK1BBU1MgcGFy
ZW50LmNoaWxkTm9kZXMubGVuZ3RoIGlzIDUKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMF0gaXMg
YW4gaW5zdGFuY2Ugb2YgVGV4dAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1swXS5kYXRhIGlzICdo
ZWxsbycKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMV0gaXMgYW4gaW5zdGFuY2Ugb2YgRWxlbWVu
dAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1sxXSBpcyBkMQorUEFTUyBwYXJlbnQuY2hpbGROb2Rl
c1syXSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzJdLmRh
dGEgaXMgJ3dvcmxkJworUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1szXSBpcyBhbiBpbnN0YW5jZSBv
ZiBFbGVtZW50CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzNdIGlzIGQyCitQQVNTIHBhcmVudC5j
aGlsZE5vZGVzWzRdIGlzIGFuIGluc3RhbmNlIG9mIFRleHQKK1BBU1MgcGFyZW50LmNoaWxkTm9k
ZXNbNF0gaXMgY2hpbGQKKworVGVzdCBDb21tZW50LmJlZm9yZSgoTm9kZSBvciBET01TdHJpbmcp
Li4uKS4KK1Rlc3Qgd2l0aCBubyBhcmd1bWVudHMuCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzLmxl
bmd0aCBpcyAxCisKK1Rlc3Qgd2l0aCBhIHNpbmdsZSBlbGVtZW50LgorUEFTUyBwYXJlbnQuY2hp
bGROb2Rlcy5sZW5ndGggaXMgMgorUEFTUyBjaGlsZC5wcmV2aW91c1NpYmxpbmcgaXMgZDEKKwor
VGVzdCB3aXRoIGEgc2luZ2xlIHN0cmluZy4KK1BBU1MgcGFyZW50LmNoaWxkTm9kZXMubGVuZ3Ro
IGlzIDIKK1BBU1MgY2hpbGQucHJldmlvdXNTaWJsaW5nLmRhdGEgaXMgJ2hlbGxvJworCitUZXN0
IHdpdGggYSBib3RoIHN0cmluZ3MgYW5kIGVsZW1lbnRzLgorUEFTUyBwYXJlbnQuY2hpbGROb2Rl
cy5sZW5ndGggaXMgMworUEFTUyBjaGlsZC5wcmV2aW91c1NpYmxpbmcgaXMgZDEKK1BBU1MgcGFy
ZW50LmNoaWxkTm9kZXNbMF0gaXMgYW4gaW5zdGFuY2Ugb2YgVGV4dAorUEFTUyBwYXJlbnQuY2hp
bGROb2Rlc1swXS5kYXRhIGlzICdoZWxsbycKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMV0gaXMg
YW4gaW5zdGFuY2Ugb2YgRWxlbWVudAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1sxXSBpcyBkMQor
CitUZXN0IGNvbnZlcnNpb24gdG8gc3RyaW5nCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzLmxlbmd0
aCBpcyA0CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzBdIGlzIGFuIGluc3RhbmNlIG9mIFRleHQK
K1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMF0uZGF0YSBpcyAnbnVsbCcKK1BBU1MgcGFyZW50LmNo
aWxkTm9kZXNbMV0gaXMgYW4gaW5zdGFuY2Ugb2YgVGV4dAorUEFTUyBwYXJlbnQuY2hpbGROb2Rl
c1sxXS5kYXRhIGlzICd1bmRlZmluZWQnCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzJdIGlzIGFu
IGluc3RhbmNlIG9mIFRleHQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMl0uZGF0YSBpcyAnNycK
K1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbM10gaXMgYW4gaW5zdGFuY2Ugb2YgQ29tbWVudAorUEFT
UyBwYXJlbnQuY2hpbGROb2Rlc1szXSBpcyBjaGlsZAorCitUZXN0IGEgY2hpbGQgd2l0aG91dCBh
IHBhcmVudC4KK1BBU1MgY2hpbGQucHJldmlvdXNTaWJsaW5nIGlzIG51bGwKKworVGVzdCB3aGVu
IHRoZXJlIHRoZSBwcmV2aW91cyBzaWJsaW5nIGlzIG5vdCBhIHZpYWJsZSBwcmV2aW91cyBzaWJs
aW5nLgorUEFTUyBwYXJlbnQuY2hpbGROb2Rlcy5sZW5ndGggaXMgNQorUEFTUyBwYXJlbnQuY2hp
bGROb2Rlc1swXSBpcyBhbiBpbnN0YW5jZSBvZiBFbGVtZW50CitQQVNTIHBhcmVudC5jaGlsZE5v
ZGVzWzBdIGlzIGQxCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzFdIGlzIGFuIGluc3RhbmNlIG9m
IFRleHQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMV0uZGF0YSBpcyAnaGVsbG8nCitQQVNTIHBh
cmVudC5jaGlsZE5vZGVzWzJdIGlzIGFuIGluc3RhbmNlIG9mIEVsZW1lbnQKK1BBU1MgcGFyZW50
LmNoaWxkTm9kZXNbMl0gaXMgZDIKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbM10gaXMgYW4gaW5z
dGFuY2Ugb2YgVGV4dAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1szXS5kYXRhIGlzICd3b3JsZCcK
K1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbNF0gaXMgYW4gaW5zdGFuY2Ugb2YgQ29tbWVudAorUEFT
UyBwYXJlbnQuY2hpbGROb2Rlc1s0XSBpcyBjaGlsZAorCitUZXN0IHdoZW4gdGhlcmUgaXMgbm8g
dmlhYmxlIHByZXZpb3VzIHNpYmxpbmcuCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzLmxlbmd0aCBp
cyA1CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzBdIGlzIGFuIGluc3RhbmNlIG9mIFRleHQKK1BB
U1MgcGFyZW50LmNoaWxkTm9kZXNbMF0uZGF0YSBpcyAnaGVsbG8nCitQQVNTIHBhcmVudC5jaGls
ZE5vZGVzWzFdIGlzIGFuIGluc3RhbmNlIG9mIEVsZW1lbnQKK1BBU1MgcGFyZW50LmNoaWxkTm9k
ZXNbMV0gaXMgZDEKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMl0gaXMgYW4gaW5zdGFuY2Ugb2Yg
VGV4dAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1syXS5kYXRhIGlzICd3b3JsZCcKK1BBU1MgcGFy
ZW50LmNoaWxkTm9kZXNbM10gaXMgYW4gaW5zdGFuY2Ugb2YgRWxlbWVudAorUEFTUyBwYXJlbnQu
Y2hpbGROb2Rlc1szXSBpcyBkMgorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1s0XSBpcyBhbiBpbnN0
YW5jZSBvZiBDb21tZW50CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzRdIGlzIGNoaWxkCisKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9DaGlsZE5vZGUtYmVmb3JlLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9kb20vQ2hpbGROb2RlLWJlZm9yZS5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vQ2hpbGROb2RlLWJlZm9yZS5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTMzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KKworZGVzY3Jp
cHRpb24oIlRlc3RzIENoaWxkTm9kZS5iZWZvcmUoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLikiKTsK
K2Z1bmN0aW9uIHRlc3QodCwgY3JlYXRlQ2hpbGQpCit7CisgICAgdHlwZSA9IHQ7CisgICAgZGVi
dWcoIjxiPlRlc3QgIiArIHR5cGUgKyAiLmJlZm9yZSgoTm9kZSBvciBET01TdHJpbmcpLi4uKS48
L2I+Iik7CisgICAgCisgICAgZGVidWcoIlRlc3Qgd2l0aCBubyBhcmd1bWVudHMuIik7CisgICAg
cGFyZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgY2hpbGQgPSBjcmVh
dGVDaGlsZCgpOworICAgIHBhcmVudC5hcHBlbmRDaGlsZChjaGlsZCk7CisgICAgY2hpbGQuYmVm
b3JlKCk7CisgICAgc2hvdWxkQmUoInBhcmVudC5jaGlsZE5vZGVzLmxlbmd0aCIsICIxIik7Cisg
ICAgZGVidWcoIiIpOworCisgICAgZGVidWcoIlRlc3Qgd2l0aCBhIHNpbmdsZSBlbGVtZW50LiIp
OworICAgIHBhcmVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIGNoaWxk
ID0gY3JlYXRlQ2hpbGQoKTsKKyAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoY2hpbGQpOworICAgIGQx
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgY2hpbGQuYmVmb3JlKGQxKTsK
KyAgICBzaG91bGRCZSgicGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoIiwgIjIiKTsKKyAgICBzaG91
bGRCZSgiY2hpbGQucHJldmlvdXNTaWJsaW5nIiwgImQxIik7CisgICAgZGVidWcoIiIpOworCisg
ICAgZGVidWcoIlRlc3Qgd2l0aCBhIHNpbmdsZSBzdHJpbmcuIik7CisgICAgcGFyZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgY2hpbGQgPSBjcmVhdGVDaGlsZCgpOwor
ICAgIHBhcmVudC5hcHBlbmRDaGlsZChjaGlsZCk7CisgICAgY2hpbGQuYmVmb3JlKCdoZWxsbycp
OworICAgIHNob3VsZEJlKCJwYXJlbnQuY2hpbGROb2Rlcy5sZW5ndGgiLCAiMiIpOworICAgIHNo
b3VsZEJlKCJjaGlsZC5wcmV2aW91c1NpYmxpbmcuZGF0YSIsICInaGVsbG8nIik7CisgICAgZGVi
dWcoIiIpOworCisgICAgZGVidWcoIlRlc3Qgd2l0aCBhIGJvdGggc3RyaW5ncyBhbmQgZWxlbWVu
dHMuIik7CisgICAgcGFyZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAg
Y2hpbGQgPSBjcmVhdGVDaGlsZCgpOworICAgIHBhcmVudC5hcHBlbmRDaGlsZChjaGlsZCk7Cisg
ICAgZDEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBjaGlsZC5iZWZvcmUo
J2hlbGxvJywgZDEpOworICAgIHNob3VsZEJlKCJwYXJlbnQuY2hpbGROb2Rlcy5sZW5ndGgiLCAi
MyIpOworICAgIHNob3VsZEJlKCJjaGlsZC5wcmV2aW91c1NpYmxpbmciLCAiZDEiKTsKKyAgICBz
aG91bGRCZVR5cGUoInBhcmVudC5jaGlsZE5vZGVzWzBdIiwgIlRleHQiKTsKKyAgICBzaG91bGRC
ZSgicGFyZW50LmNoaWxkTm9kZXNbMF0uZGF0YSIsICInaGVsbG8nIik7CisgICAgc2hvdWxkQmVU
eXBlKCJwYXJlbnQuY2hpbGROb2Rlc1sxXSIsICJFbGVtZW50Iik7CisgICAgc2hvdWxkQmUoInBh
cmVudC5jaGlsZE5vZGVzWzFdIiwgImQxIik7CisgICAgZGVidWcoIiIpOworCisgICAgZGVidWco
IlRlc3QgY29udmVyc2lvbiB0byBzdHJpbmciKTsKKyAgICBwYXJlbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKTsKKyAgICBjaGlsZCA9IGNyZWF0ZUNoaWxkKCk7CisgICAgcGFyZW50
LmFwcGVuZENoaWxkKGNoaWxkKTsKKyAgICBjaGlsZC5iZWZvcmUobnVsbCwgdW5kZWZpbmVkLCA3
KTsKKyAgICBzaG91bGRCZSgicGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoIiwgIjQiKTsKKyAgICBz
aG91bGRCZVR5cGUoInBhcmVudC5jaGlsZE5vZGVzWzBdIiwgIlRleHQiKTsKKyAgICBzaG91bGRC
ZSgicGFyZW50LmNoaWxkTm9kZXNbMF0uZGF0YSIsICInbnVsbCciKTsKKyAgICBzaG91bGRCZVR5
cGUoInBhcmVudC5jaGlsZE5vZGVzWzFdIiwgIlRleHQiKTsKKyAgICBzaG91bGRCZSgicGFyZW50
LmNoaWxkTm9kZXNbMV0uZGF0YSIsICIndW5kZWZpbmVkJyIpOworICAgIHNob3VsZEJlVHlwZSgi
cGFyZW50LmNoaWxkTm9kZXNbMl0iLCAiVGV4dCIpOworICAgIHNob3VsZEJlKCJwYXJlbnQuY2hp
bGROb2Rlc1syXS5kYXRhIiwgIic3JyIpOworICAgIHNob3VsZEJlVHlwZSgicGFyZW50LmNoaWxk
Tm9kZXNbM10iLCB0eXBlKTsKKyAgICBzaG91bGRCZSgicGFyZW50LmNoaWxkTm9kZXNbM10iLCAi
Y2hpbGQiKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICBkZWJ1ZygiVGVzdCBhIGNoaWxkIHdpdGhv
dXQgYSBwYXJlbnQuIik7CisgICAgY2hpbGQgPSBjcmVhdGVDaGlsZCgpOworICAgIGQxID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgY2hpbGQuYmVmb3JlKGQxKTsKKyAgICBz
aG91bGRCZU51bGwoImNoaWxkLnByZXZpb3VzU2libGluZyIpOworICAgIGRlYnVnKCIiKTsKKwor
ICAgIGRlYnVnKCJUZXN0IHdoZW4gdGhlcmUgdGhlIHByZXZpb3VzIHNpYmxpbmcgaXMgbm90IGEg
dmlhYmxlIHByZXZpb3VzIHNpYmxpbmcuIik7CisgICAgcGFyZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZGl2Jyk7CisgICAgY2hpbGQgPSBjcmVhdGVDaGlsZCgpOworICAgIGQxID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgcGFyZW50LmFwcGVuZENoaWxkKGQxKTsK
KyAgICBkMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIHBhcmVudC5hcHBl
bmRDaGlsZChkMik7CisgICAgcGFyZW50LmFwcGVuZENoaWxkKGNoaWxkKTsKKyAgICBjaGlsZC5i
ZWZvcmUoImhlbGxvIiwgZDIsICJ3b3JsZCIpOworICAgIHNob3VsZEJlKCJwYXJlbnQuY2hpbGRO
b2Rlcy5sZW5ndGgiLCAiNSIpOworICAgIHNob3VsZEJlVHlwZSgicGFyZW50LmNoaWxkTm9kZXNb
MF0iLCAiRWxlbWVudCIpOworICAgIHNob3VsZEJlKCJwYXJlbnQuY2hpbGROb2Rlc1swXSIsICJk
MSIpOworICAgIHNob3VsZEJlVHlwZSgicGFyZW50LmNoaWxkTm9kZXNbMV0iLCAiVGV4dCIpOwor
ICAgIHNob3VsZEJlKCJwYXJlbnQuY2hpbGROb2Rlc1sxXS5kYXRhIiwgIidoZWxsbyciKTsKKyAg
ICBzaG91bGRCZVR5cGUoInBhcmVudC5jaGlsZE5vZGVzWzJdIiwgIkVsZW1lbnQiKTsKKyAgICBz
aG91bGRCZSgicGFyZW50LmNoaWxkTm9kZXNbMl0iLCAiZDIiKTsKKyAgICBzaG91bGRCZVR5cGUo
InBhcmVudC5jaGlsZE5vZGVzWzNdIiwgIlRleHQiKTsKKyAgICBzaG91bGRCZSgicGFyZW50LmNo
aWxkTm9kZXNbM10uZGF0YSIsICInd29ybGQnIik7CisgICAgc2hvdWxkQmVUeXBlKCJwYXJlbnQu
Y2hpbGROb2Rlc1s0XSIsIHR5cGUpOworICAgIHNob3VsZEJlKCJwYXJlbnQuY2hpbGROb2Rlc1s0
XSIsICJjaGlsZCIpOworICAgIGRlYnVnKCIiKTsKKworICAgIGRlYnVnKCJUZXN0IHdoZW4gdGhl
cmUgaXMgbm8gdmlhYmxlIHByZXZpb3VzIHNpYmxpbmcuIik7CisgICAgcGFyZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgY2hpbGQgPSBjcmVhdGVDaGlsZCgpOworICAg
IGQxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgcGFyZW50LmFwcGVuZENo
aWxkKGQxKTsKKyAgICBkMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIHBh
cmVudC5hcHBlbmRDaGlsZChkMik7CisgICAgcGFyZW50LmFwcGVuZENoaWxkKGNoaWxkKTsKKyAg
ICBjaGlsZC5iZWZvcmUoImhlbGxvIiwgZDEsICJ3b3JsZCIsIGQyKTsKKyAgICBzaG91bGRCZSgi
cGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoIiwgIjUiKTsKKyAgICBzaG91bGRCZVR5cGUoInBhcmVu
dC5jaGlsZE5vZGVzWzBdIiwgIlRleHQiKTsKKyAgICBzaG91bGRCZSgicGFyZW50LmNoaWxkTm9k
ZXNbMF0uZGF0YSIsICInaGVsbG8nIik7CisgICAgc2hvdWxkQmVUeXBlKCJwYXJlbnQuY2hpbGRO
b2Rlc1sxXSIsICJFbGVtZW50Iik7CisgICAgc2hvdWxkQmUoInBhcmVudC5jaGlsZE5vZGVzWzFd
IiwgImQxIik7CisgICAgc2hvdWxkQmVUeXBlKCJwYXJlbnQuY2hpbGROb2Rlc1syXSIsICJUZXh0
Iik7CisgICAgc2hvdWxkQmUoInBhcmVudC5jaGlsZE5vZGVzWzJdLmRhdGEiLCAiJ3dvcmxkJyIp
OworICAgIHNob3VsZEJlVHlwZSgicGFyZW50LmNoaWxkTm9kZXNbM10iLCAiRWxlbWVudCIpOwor
ICAgIHNob3VsZEJlKCJwYXJlbnQuY2hpbGROb2Rlc1szXSIsICJkMiIpOworICAgIHNob3VsZEJl
VHlwZSgicGFyZW50LmNoaWxkTm9kZXNbNF0iLCB0eXBlKTsKKyAgICBzaG91bGRCZSgicGFyZW50
LmNoaWxkTm9kZXNbNF0iLCAiY2hpbGQiKTsKKworICAgIGRlYnVnKCIiKTsKK30KKwordGVzdCgi
RWxlbWVudCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7IH0pOwordGVzdCgiVGV4dCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUoInRleHQgbm9kZSB0ZXh0Iik7IH0pOwordGVzdCgiQ29tbWVudCIsIGZ1bmN0aW9u
KCkgeyByZXR1cm4gZG9jdW1lbnQuY3JlYXRlQ29tbWVudCgiY29tbWVudCB0ZXh0Iik7IH0pOwor
Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9t
L0NoaWxkTm9kZS1yZXBsYWNlV2l0aC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vQ2hpbGROb2RlLXJlcGxhY2VXaXRoLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0NoaWxkTm9kZS1yZXBsYWNlV2l0aC1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxODMgQEAKK1Rlc3RzIENoaWxkTm9k
ZS5yZXBsYWNlV2l0aCgoTm9kZSBvciBET01TdHJpbmcpLi4uKQorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworVGVzdCBFbGVtZW50LnJlcGxhY2VXaXRoKChOb2RlIG9yIERPTVN0cmlu
ZykuLi4pLgorVGVzdCB3aXRoIG5vIGFyZ3VtZW50cy4KK1BBU1MgcGFyZW50LmNoaWxkTm9kZXMu
bGVuZ3RoIGlzIDEKKworVGVzdCB3aXRoIGEgc2luZ2xlIGVsZW1lbnQuCitQQVNTIHBhcmVudC5j
aGlsZE5vZGVzLmxlbmd0aCBpcyAxCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzBdIGlzIGQxCisK
K1Rlc3Qgd2l0aCBhIHNpbmdsZSBzdHJpbmcuCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzLmxlbmd0
aCBpcyAxCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzBdLmRhdGEgaXMgJ2hlbGxvJworCitUZXN0
IHdpdGggYSBib3RoIHN0cmluZ3MgYW5kIGVsZW1lbnRzLgorUEFTUyBwYXJlbnQuY2hpbGROb2Rl
cy5sZW5ndGggaXMgMgorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1swXSBpcyBhbiBpbnN0YW5jZSBv
ZiBUZXh0CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzBdLmRhdGEgaXMgJ2hlbGxvJworUEFTUyBw
YXJlbnQuY2hpbGROb2Rlc1sxXSBpcyBhbiBpbnN0YW5jZSBvZiBFbGVtZW50CitQQVNTIHBhcmVu
dC5jaGlsZE5vZGVzWzFdIGlzIGQxCisKK1Rlc3QgY29udmVyc2lvbiB0byBzdHJpbmcKK1BBU1Mg
cGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoIGlzIDMKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMF0g
aXMgYW4gaW5zdGFuY2Ugb2YgVGV4dAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1swXS5kYXRhIGlz
ICdudWxsJworUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1sxXSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0
CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzFdLmRhdGEgaXMgJ3VuZGVmaW5lZCcKK1BBU1MgcGFy
ZW50LmNoaWxkTm9kZXNbMl0gaXMgYW4gaW5zdGFuY2Ugb2YgVGV4dAorUEFTUyBwYXJlbnQuY2hp
bGROb2Rlc1syXS5kYXRhIGlzICc3JworCitUZXN0IGEgY2hpbGQgd2l0aG91dCBhIHBhcmVudC4K
K1BBU1MgY2hpbGQucmVwbGFjZVdpdGgoZDEpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorCitU
ZXN0IHJlcGxhY2luZyB3aXRoIGFuIGV4aXN0aW5nIHNpYmxpbmcuCitQQVNTIHBhcmVudC5jaGls
ZE5vZGVzLmxlbmd0aCBpcyAyCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzBdIGlzIGFuIGluc3Rh
bmNlIG9mIEVsZW1lbnQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMF0gaXMgZDEKK1BBU1MgcGFy
ZW50LmNoaWxkTm9kZXNbMV0gaXMgYW4gaW5zdGFuY2Ugb2YgRWxlbWVudAorUEFTUyBwYXJlbnQu
Y2hpbGROb2Rlc1sxXSBpcyBkMgorCitUZXN0IHJlcGxhY2luZyBhIGNoaWxkIHdpdGggaXRzZWxm
LgorUEFTUyBwYXJlbnQuY2hpbGROb2Rlcy5sZW5ndGggaXMgMQorUEFTUyBwYXJlbnQuY2hpbGRO
b2Rlc1swXSBpcyBhbiBpbnN0YW5jZSBvZiBFbGVtZW50CitQQVNTIHBhcmVudC5jaGlsZE5vZGVz
WzBdIGlzIGNoaWxkCisKK1Rlc3QgcmVwbGFjaW5nIGEgY2hpbGQgd2l0aCBpdHNlbGYgYW5kIGFu
b3RoZXIgbm9kZS4KK1BBU1MgcGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoIGlzIDIKK1BBU1MgcGFy
ZW50LmNoaWxkTm9kZXNbMF0gaXMgYW4gaW5zdGFuY2Ugb2YgRWxlbWVudAorUEFTUyBwYXJlbnQu
Y2hpbGROb2Rlc1swXSBpcyBjaGlsZAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1sxXSBpcyBhbiBp
bnN0YW5jZSBvZiBFbGVtZW50CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzFdIGlzIGQxCisKK1Rl
c3QgcmVwbGFjaW5nIGEgY2hpbGQgd2l0aCBpdHNlbGYgYW5kIGEgc2libGluZy4KK1BBU1MgcGFy
ZW50LmNoaWxkTm9kZXMubGVuZ3RoIGlzIDIKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMF0gaXMg
YW4gaW5zdGFuY2Ugb2YgRWxlbWVudAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1swXSBpcyBkMQor
UEFTUyBwYXJlbnQuY2hpbGROb2Rlc1sxXSBpcyBhbiBpbnN0YW5jZSBvZiBFbGVtZW50CitQQVNT
IHBhcmVudC5jaGlsZE5vZGVzWzFdIGlzIGNoaWxkCisKKworVGVzdCBUZXh0LnJlcGxhY2VXaXRo
KChOb2RlIG9yIERPTVN0cmluZykuLi4pLgorVGVzdCB3aXRoIG5vIGFyZ3VtZW50cy4KK1BBU1Mg
cGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoIGlzIDEKKworVGVzdCB3aXRoIGEgc2luZ2xlIGVsZW1l
bnQuCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzLmxlbmd0aCBpcyAxCitQQVNTIHBhcmVudC5jaGls
ZE5vZGVzWzBdIGlzIGQxCisKK1Rlc3Qgd2l0aCBhIHNpbmdsZSBzdHJpbmcuCitQQVNTIHBhcmVu
dC5jaGlsZE5vZGVzLmxlbmd0aCBpcyAxCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzBdLmRhdGEg
aXMgJ2hlbGxvJworCitUZXN0IHdpdGggYSBib3RoIHN0cmluZ3MgYW5kIGVsZW1lbnRzLgorUEFT
UyBwYXJlbnQuY2hpbGROb2Rlcy5sZW5ndGggaXMgMgorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1sw
XSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzBdLmRhdGEg
aXMgJ2hlbGxvJworUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1sxXSBpcyBhbiBpbnN0YW5jZSBvZiBF
bGVtZW50CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzFdIGlzIGQxCisKK1Rlc3QgY29udmVyc2lv
biB0byBzdHJpbmcKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoIGlzIDMKK1BBU1MgcGFy
ZW50LmNoaWxkTm9kZXNbMF0gaXMgYW4gaW5zdGFuY2Ugb2YgVGV4dAorUEFTUyBwYXJlbnQuY2hp
bGROb2Rlc1swXS5kYXRhIGlzICdudWxsJworUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1sxXSBpcyBh
biBpbnN0YW5jZSBvZiBUZXh0CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzFdLmRhdGEgaXMgJ3Vu
ZGVmaW5lZCcKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMl0gaXMgYW4gaW5zdGFuY2Ugb2YgVGV4
dAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1syXS5kYXRhIGlzICc3JworCitUZXN0IGEgY2hpbGQg
d2l0aG91dCBhIHBhcmVudC4KK1BBU1MgY2hpbGQucmVwbGFjZVdpdGgoZDEpIGRpZCBub3QgdGhy
b3cgZXhjZXB0aW9uLgorCitUZXN0IHJlcGxhY2luZyB3aXRoIGFuIGV4aXN0aW5nIHNpYmxpbmcu
CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzLmxlbmd0aCBpcyAyCitQQVNTIHBhcmVudC5jaGlsZE5v
ZGVzWzBdIGlzIGFuIGluc3RhbmNlIG9mIEVsZW1lbnQKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNb
MF0gaXMgZDEKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMV0gaXMgYW4gaW5zdGFuY2Ugb2YgRWxl
bWVudAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1sxXSBpcyBkMgorCitUZXN0IHJlcGxhY2luZyBh
IGNoaWxkIHdpdGggaXRzZWxmLgorUEFTUyBwYXJlbnQuY2hpbGROb2Rlcy5sZW5ndGggaXMgMQor
UEFTUyBwYXJlbnQuY2hpbGROb2Rlc1swXSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQQVNTIHBh
cmVudC5jaGlsZE5vZGVzWzBdIGlzIGNoaWxkCisKK1Rlc3QgcmVwbGFjaW5nIGEgY2hpbGQgd2l0
aCBpdHNlbGYgYW5kIGFub3RoZXIgbm9kZS4KK1BBU1MgcGFyZW50LmNoaWxkTm9kZXMubGVuZ3Ro
IGlzIDIKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMF0gaXMgYW4gaW5zdGFuY2Ugb2YgVGV4dAor
UEFTUyBwYXJlbnQuY2hpbGROb2Rlc1swXSBpcyBjaGlsZAorUEFTUyBwYXJlbnQuY2hpbGROb2Rl
c1sxXSBpcyBhbiBpbnN0YW5jZSBvZiBFbGVtZW50CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzFd
IGlzIGQxCisKK1Rlc3QgcmVwbGFjaW5nIGEgY2hpbGQgd2l0aCBpdHNlbGYgYW5kIGEgc2libGlu
Zy4KK1BBU1MgcGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoIGlzIDIKK1BBU1MgcGFyZW50LmNoaWxk
Tm9kZXNbMF0gaXMgYW4gaW5zdGFuY2Ugb2YgRWxlbWVudAorUEFTUyBwYXJlbnQuY2hpbGROb2Rl
c1swXSBpcyBkMQorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1sxXSBpcyBhbiBpbnN0YW5jZSBvZiBU
ZXh0CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzFdIGlzIGNoaWxkCisKKworVGVzdCBDb21tZW50
LnJlcGxhY2VXaXRoKChOb2RlIG9yIERPTVN0cmluZykuLi4pLgorVGVzdCB3aXRoIG5vIGFyZ3Vt
ZW50cy4KK1BBU1MgcGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoIGlzIDEKKworVGVzdCB3aXRoIGEg
c2luZ2xlIGVsZW1lbnQuCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzLmxlbmd0aCBpcyAxCitQQVNT
IHBhcmVudC5jaGlsZE5vZGVzWzBdIGlzIGQxCisKK1Rlc3Qgd2l0aCBhIHNpbmdsZSBzdHJpbmcu
CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzLmxlbmd0aCBpcyAxCitQQVNTIHBhcmVudC5jaGlsZE5v
ZGVzWzBdLmRhdGEgaXMgJ2hlbGxvJworCitUZXN0IHdpdGggYSBib3RoIHN0cmluZ3MgYW5kIGVs
ZW1lbnRzLgorUEFTUyBwYXJlbnQuY2hpbGROb2Rlcy5sZW5ndGggaXMgMgorUEFTUyBwYXJlbnQu
Y2hpbGROb2Rlc1swXSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQQVNTIHBhcmVudC5jaGlsZE5v
ZGVzWzBdLmRhdGEgaXMgJ2hlbGxvJworUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1sxXSBpcyBhbiBp
bnN0YW5jZSBvZiBFbGVtZW50CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzFdIGlzIGQxCisKK1Rl
c3QgY29udmVyc2lvbiB0byBzdHJpbmcKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoIGlz
IDMKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMF0gaXMgYW4gaW5zdGFuY2Ugb2YgVGV4dAorUEFT
UyBwYXJlbnQuY2hpbGROb2Rlc1swXS5kYXRhIGlzICdudWxsJworUEFTUyBwYXJlbnQuY2hpbGRO
b2Rlc1sxXSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzFd
LmRhdGEgaXMgJ3VuZGVmaW5lZCcKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMl0gaXMgYW4gaW5z
dGFuY2Ugb2YgVGV4dAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1syXS5kYXRhIGlzICc3JworCitU
ZXN0IGEgY2hpbGQgd2l0aG91dCBhIHBhcmVudC4KK1BBU1MgY2hpbGQucmVwbGFjZVdpdGgoZDEp
IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorCitUZXN0IHJlcGxhY2luZyB3aXRoIGFuIGV4aXN0
aW5nIHNpYmxpbmcuCitQQVNTIHBhcmVudC5jaGlsZE5vZGVzLmxlbmd0aCBpcyAyCitQQVNTIHBh
cmVudC5jaGlsZE5vZGVzWzBdIGlzIGFuIGluc3RhbmNlIG9mIEVsZW1lbnQKK1BBU1MgcGFyZW50
LmNoaWxkTm9kZXNbMF0gaXMgZDEKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMV0gaXMgYW4gaW5z
dGFuY2Ugb2YgRWxlbWVudAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1sxXSBpcyBkMgorCitUZXN0
IHJlcGxhY2luZyBhIGNoaWxkIHdpdGggaXRzZWxmLgorUEFTUyBwYXJlbnQuY2hpbGROb2Rlcy5s
ZW5ndGggaXMgMQorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1swXSBpcyBhbiBpbnN0YW5jZSBvZiBD
b21tZW50CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzBdIGlzIGNoaWxkCisKK1Rlc3QgcmVwbGFj
aW5nIGEgY2hpbGQgd2l0aCBpdHNlbGYgYW5kIGFub3RoZXIgbm9kZS4KK1BBU1MgcGFyZW50LmNo
aWxkTm9kZXMubGVuZ3RoIGlzIDIKK1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMF0gaXMgYW4gaW5z
dGFuY2Ugb2YgQ29tbWVudAorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1swXSBpcyBjaGlsZAorUEFT
UyBwYXJlbnQuY2hpbGROb2Rlc1sxXSBpcyBhbiBpbnN0YW5jZSBvZiBFbGVtZW50CitQQVNTIHBh
cmVudC5jaGlsZE5vZGVzWzFdIGlzIGQxCisKK1Rlc3QgcmVwbGFjaW5nIGEgY2hpbGQgd2l0aCBp
dHNlbGYgYW5kIGEgc2libGluZy4KK1BBU1MgcGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoIGlzIDIK
K1BBU1MgcGFyZW50LmNoaWxkTm9kZXNbMF0gaXMgYW4gaW5zdGFuY2Ugb2YgRWxlbWVudAorUEFT
UyBwYXJlbnQuY2hpbGROb2Rlc1swXSBpcyBkMQorUEFTUyBwYXJlbnQuY2hpbGROb2Rlc1sxXSBp
cyBhbiBpbnN0YW5jZSBvZiBDb21tZW50CitQQVNTIHBhcmVudC5jaGlsZE5vZGVzWzFdIGlzIGNo
aWxkCisKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0NoaWxkTm9kZS1yZXBsYWNlV2l0aC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0NoaWxkTm9kZS1yZXBsYWNlV2l0
aC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vQ2hpbGROb2RlLXJl
cGxhY2VXaXRoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzkgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGVzdHMgQ2hpbGROb2RlLnJlcGxhY2VX
aXRoKChOb2RlIG9yIERPTVN0cmluZykuLi4pIik7CitmdW5jdGlvbiB0ZXN0KHQsIGNyZWF0ZUNo
aWxkKQoreworICAgIHR5cGUgPSB0OworICAgIGRlYnVnKCI8Yj5UZXN0ICIgKyB0eXBlICsgIi5y
ZXBsYWNlV2l0aCgoTm9kZSBvciBET01TdHJpbmcpLi4uKS48L2I+Iik7CisgICAgCisgICAgZGVi
dWcoIlRlc3Qgd2l0aCBubyBhcmd1bWVudHMuIik7CisgICAgcGFyZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7CisgICAgY2hpbGQgPSBjcmVhdGVDaGlsZCgpOworICAgIHBhcmVu
dC5hcHBlbmRDaGlsZChjaGlsZCk7CisgICAgY2hpbGQucmVwbGFjZVdpdGgoKTsKKyAgICBzaG91
bGRCZSgicGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoIiwgIjEiKTsKKyAgICBkZWJ1ZygiIik7CisK
KyAgICBkZWJ1ZygiVGVzdCB3aXRoIGEgc2luZ2xlIGVsZW1lbnQuIik7CisgICAgcGFyZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgY2hpbGQgPSBjcmVhdGVDaGlsZCgp
OworICAgIHBhcmVudC5hcHBlbmRDaGlsZChjaGlsZCk7CisgICAgZDEgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKKyAgICBjaGlsZC5yZXBsYWNlV2l0aChkMSk7CisgICAgc2hvdWxk
QmUoInBhcmVudC5jaGlsZE5vZGVzLmxlbmd0aCIsICIxIik7CisgICAgc2hvdWxkQmUoInBhcmVu
dC5jaGlsZE5vZGVzWzBdIiwgImQxIik7CisgICAgZGVidWcoIiIpOworICAgIAorICAgIGRlYnVn
KCJUZXN0IHdpdGggYSBzaW5nbGUgc3RyaW5nLiIpOworICAgIHBhcmVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIGNoaWxkID0gY3JlYXRlQ2hpbGQoKTsKKyAgICBwYXJl
bnQuYXBwZW5kQ2hpbGQoY2hpbGQpOworICAgIGNoaWxkLnJlcGxhY2VXaXRoKCdoZWxsbycpOwor
ICAgIHNob3VsZEJlKCJwYXJlbnQuY2hpbGROb2Rlcy5sZW5ndGgiLCAiMSIpOworICAgIHNob3Vs
ZEJlKCJwYXJlbnQuY2hpbGROb2Rlc1swXS5kYXRhIiwgIidoZWxsbyciKTsKKyAgICBkZWJ1Zygi
Iik7CisgICAgCisgICAgZGVidWcoIlRlc3Qgd2l0aCBhIGJvdGggc3RyaW5ncyBhbmQgZWxlbWVu
dHMuIik7CisgICAgcGFyZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAg
Y2hpbGQgPSBjcmVhdGVDaGlsZCgpOworICAgIHBhcmVudC5hcHBlbmRDaGlsZChjaGlsZCk7Cisg
ICAgZDEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBjaGlsZC5yZXBsYWNl
V2l0aCgnaGVsbG8nLCBkMSk7CisgICAgc2hvdWxkQmUoInBhcmVudC5jaGlsZE5vZGVzLmxlbmd0
aCIsICIyIik7CisgICAgc2hvdWxkQmVUeXBlKCJwYXJlbnQuY2hpbGROb2Rlc1swXSIsICJUZXh0
Iik7CisgICAgc2hvdWxkQmUoInBhcmVudC5jaGlsZE5vZGVzWzBdLmRhdGEiLCAiJ2hlbGxvJyIp
OworICAgIHNob3VsZEJlVHlwZSgicGFyZW50LmNoaWxkTm9kZXNbMV0iLCAiRWxlbWVudCIpOwor
ICAgIHNob3VsZEJlKCJwYXJlbnQuY2hpbGROb2Rlc1sxXSIsICJkMSIpOworICAgIGRlYnVnKCIi
KTsKKyAgICAKKyAgICBkZWJ1ZygiVGVzdCBjb252ZXJzaW9uIHRvIHN0cmluZyIpOworICAgIHBh
cmVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIGNoaWxkID0gY3JlYXRl
Q2hpbGQoKTsKKyAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoY2hpbGQpOworICAgIGNoaWxkLnJlcGxh
Y2VXaXRoKG51bGwsIHVuZGVmaW5lZCwgNyk7CisgICAgc2hvdWxkQmUoInBhcmVudC5jaGlsZE5v
ZGVzLmxlbmd0aCIsICIzIik7CisgICAgc2hvdWxkQmVUeXBlKCJwYXJlbnQuY2hpbGROb2Rlc1sw
XSIsICJUZXh0Iik7CisgICAgc2hvdWxkQmUoInBhcmVudC5jaGlsZE5vZGVzWzBdLmRhdGEiLCAi
J251bGwnIik7CisgICAgc2hvdWxkQmVUeXBlKCJwYXJlbnQuY2hpbGROb2Rlc1sxXSIsICJUZXh0
Iik7CisgICAgc2hvdWxkQmUoInBhcmVudC5jaGlsZE5vZGVzWzFdLmRhdGEiLCAiJ3VuZGVmaW5l
ZCciKTsKKyAgICBzaG91bGRCZVR5cGUoInBhcmVudC5jaGlsZE5vZGVzWzJdIiwgIlRleHQiKTsK
KyAgICBzaG91bGRCZSgicGFyZW50LmNoaWxkTm9kZXNbMl0uZGF0YSIsICInNyciKTsKKyAgICBk
ZWJ1ZygiIik7CisgICAgCisgICAgZGVidWcoIlRlc3QgYSBjaGlsZCB3aXRob3V0IGEgcGFyZW50
LiIpOworICAgIGNoaWxkID0gY3JlYXRlQ2hpbGQoKTsKKyAgICBkMSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOworICAgIHNob3VsZE5vdFRocm93KCJjaGlsZC5yZXBsYWNlV2l0aChk
MSkiKTsKKyAgICBkZWJ1ZygiIik7CisgICAgCisgICAgZGVidWcoIlRlc3QgcmVwbGFjaW5nIHdp
dGggYW4gZXhpc3Rpbmcgc2libGluZy4iKTsKKyAgICBwYXJlbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKTsKKyAgICBjaGlsZCA9IGNyZWF0ZUNoaWxkKCk7CisgICAgcGFyZW50LmFw
cGVuZENoaWxkKGNoaWxkKTsKKyAgICBkMSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OworICAgIHBhcmVudC5hcHBlbmRDaGlsZChkMSk7CisgICAgZDIgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKKyAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoZDIpOworICAgIGNoaWxkLnJl
cGxhY2VXaXRoKGQxKTsKKyAgICBzaG91bGRCZSgicGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoIiwg
IjIiKTsKKyAgICBzaG91bGRCZVR5cGUoInBhcmVudC5jaGlsZE5vZGVzWzBdIiwgIkVsZW1lbnQi
KTsKKyAgICBzaG91bGRCZSgicGFyZW50LmNoaWxkTm9kZXNbMF0iLCAiZDEiKTsKKyAgICBzaG91
bGRCZVR5cGUoInBhcmVudC5jaGlsZE5vZGVzWzFdIiwgIkVsZW1lbnQiKTsKKyAgICBzaG91bGRC
ZSgicGFyZW50LmNoaWxkTm9kZXNbMV0iLCAiZDIiKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICBk
ZWJ1ZygiVGVzdCByZXBsYWNpbmcgYSBjaGlsZCB3aXRoIGl0c2VsZi4iKTsKKyAgICBwYXJlbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBjaGlsZCA9IGNyZWF0ZUNoaWxk
KCk7CisgICAgcGFyZW50LmFwcGVuZENoaWxkKGNoaWxkKTsKKyAgICBjaGlsZC5yZXBsYWNlV2l0
aChjaGlsZCk7CisgICAgc2hvdWxkQmUoInBhcmVudC5jaGlsZE5vZGVzLmxlbmd0aCIsICIxIik7
CisgICAgc2hvdWxkQmVUeXBlKCJwYXJlbnQuY2hpbGROb2Rlc1swXSIsIHR5cGUpOworICAgIHNo
b3VsZEJlKCJwYXJlbnQuY2hpbGROb2Rlc1swXSIsICJjaGlsZCIpOworICAgIGRlYnVnKCIiKTsK
KworICAgIGRlYnVnKCJUZXN0IHJlcGxhY2luZyBhIGNoaWxkIHdpdGggaXRzZWxmIGFuZCBhbm90
aGVyIG5vZGUuIik7CisgICAgcGFyZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7
CisgICAgY2hpbGQgPSBjcmVhdGVDaGlsZCgpOworICAgIHBhcmVudC5hcHBlbmRDaGlsZChjaGls
ZCk7CisgICAgZDEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBjaGlsZC5y
ZXBsYWNlV2l0aChjaGlsZCwgZDEpOworICAgIHNob3VsZEJlKCJwYXJlbnQuY2hpbGROb2Rlcy5s
ZW5ndGgiLCAiMiIpOworICAgIHNob3VsZEJlVHlwZSgicGFyZW50LmNoaWxkTm9kZXNbMF0iLCB0
eXBlKTsKKyAgICBzaG91bGRCZSgicGFyZW50LmNoaWxkTm9kZXNbMF0iLCAiY2hpbGQiKTsKKyAg
ICBzaG91bGRCZVR5cGUoInBhcmVudC5jaGlsZE5vZGVzWzFdIiwgIkVsZW1lbnQiKTsKKyAgICBz
aG91bGRCZSgicGFyZW50LmNoaWxkTm9kZXNbMV0iLCAiZDEiKTsKKyAgICBkZWJ1ZygiIik7CisK
KyAgICBkZWJ1ZygiVGVzdCByZXBsYWNpbmcgYSBjaGlsZCB3aXRoIGl0c2VsZiBhbmQgYSBzaWJs
aW5nLiIpOworICAgIHBhcmVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAg
IGNoaWxkID0gY3JlYXRlQ2hpbGQoKTsKKyAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoY2hpbGQpOwor
ICAgIGQxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgcGFyZW50LmFwcGVu
ZENoaWxkKGQxKTsKKyAgICBjaGlsZC5yZXBsYWNlV2l0aChkMSwgY2hpbGQpOworICAgIHNob3Vs
ZEJlKCJwYXJlbnQuY2hpbGROb2Rlcy5sZW5ndGgiLCAiMiIpOworICAgIHNob3VsZEJlVHlwZSgi
cGFyZW50LmNoaWxkTm9kZXNbMF0iLCAiRWxlbWVudCIpOworICAgIHNob3VsZEJlKCJwYXJlbnQu
Y2hpbGROb2Rlc1swXSIsICJkMSIpOworICAgIHNob3VsZEJlVHlwZSgicGFyZW50LmNoaWxkTm9k
ZXNbMV0iLCB0eXBlKTsKKyAgICBzaG91bGRCZSgicGFyZW50LmNoaWxkTm9kZXNbMV0iLCAiY2hp
bGQiKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICBkZWJ1ZygiIik7Cit9CisKK3Rlc3QoIkVsZW1l
bnQiLCBmdW5jdGlvbigpIHsgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOyB9
KTsKK3Rlc3QoIlRleHQiLCBmdW5jdGlvbigpIHsgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKCJ0ZXh0IG5vZGUgdGV4dCIpOyB9KTsKK3Rlc3QoIkNvbW1lbnQiLCBmdW5jdGlvbigpIHsg
cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoImNvbW1lbnQgdGV4dCIpOyB9KTsKKworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9QYXJl
bnROb2RlLWFwcGVuZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vUGFyZW50Tm9kZS1hcHBlbmQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9kb20vUGFyZW50Tm9kZS1hcHBlbmQtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNzUgQEAKK1Rlc3RzIFBhcmVudE5vZGUuYXBwZW5kKChOb2RlIG9y
IERPTVN0cmluZykuLi4pCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitUZXN0IEVs
ZW1lbnQuYXBwZW5kKChOb2RlIG9yIERPTVN0cmluZykuLi4pLgorCitUZXN0IHNpbmdsZSBub2Rl
LgorUEFTUyBkMS5wYXJlbnROb2RlIGlzIGNvbnRhaW5lcgorCitUZXN0IG11bHRpcGxlIG5vZGVz
LgorUEFTUyBkMS5wYXJlbnROb2RlIGlzIGNvbnRhaW5lcgorUEFTUyBkMi5wYXJlbnROb2RlIGlz
IGNvbnRhaW5lcgorUEFTUyBkMS5uZXh0U2libGluZyBpcyBkMgorUEFTUyBkMi5wcmV2aW91c1Np
YmxpbmcgaXMgZDEKKworVGVzdCBhIHNpbmdsZSBzdHJpbmcuCitQQVNTIGNvbnRhaW5lci5maXJz
dENoaWxkIGlzIGFuIGluc3RhbmNlIG9mIFRleHQKK1BBU1MgY29udGFpbmVyLmZpcnN0Q2hpbGQu
ZGF0YSBpcyAnaGVsbG8nCisKK1Rlc3QgbXVsdGlwbGUgc3RyaW5ncy4KK1BBU1MgY29udGFpbmVy
LmNoaWxkTm9kZXNbMF0gaXMgYW4gaW5zdGFuY2Ugb2YgVGV4dAorUEFTUyBjb250YWluZXIuY2hp
bGROb2Rlc1swXS5kYXRhIGlzICdoZWxsbycKK1BBU1MgY29udGFpbmVyLmNoaWxkTm9kZXNbMV0g
aXMgYW4gaW5zdGFuY2Ugb2YgVGV4dAorUEFTUyBjb250YWluZXIuY2hpbGROb2Rlc1sxXS5kYXRh
IGlzICd3b3JsZCcKKworVGVzdCBub2RlcyBhbmQgc3RyaW5ncy4KK1BBU1MgY29udGFpbmVyLmNo
aWxkTm9kZXNbMF0gaXMgYW4gaW5zdGFuY2Ugb2YgVGV4dAorUEFTUyBjb250YWluZXIuY2hpbGRO
b2Rlc1sxXSBpcyBhbiBpbnN0YW5jZSBvZiBFbGVtZW50CitQQVNTIGNvbnRhaW5lci5jaGlsZE5v
ZGVzWzJdIGlzIGFuIGluc3RhbmNlIG9mIFRleHQKKworVGVzdCB3aGVuIGNvbnRhaW5lciBhbHJl
YWR5IGhhcyBjaGlsZHJlbi4KK1BBU1MgY29udGFpbmVyLmNoaWxkTm9kZXNbMF0gaXMgYW4gaW5z
dGFuY2Ugb2YgRWxlbWVudAorUEFTUyBjb250YWluZXIuY2hpbGROb2Rlc1swXSBpcyBkMQorUEFT
UyBjb250YWluZXIuY2hpbGROb2Rlc1sxXSBpcyBhbiBpbnN0YW5jZSBvZiBFbGVtZW50CitQQVNT
IGNvbnRhaW5lci5jaGlsZE5vZGVzWzFdIGlzIGQyCitQQVNTIGNvbnRhaW5lci5jaGlsZE5vZGVz
WzJdIGlzIGFuIGluc3RhbmNlIG9mIFRleHQKK1BBU1MgY29udGFpbmVyLmNoaWxkTm9kZXNbMl0u
ZGF0YSBpcyAnaGVsbG8nCisKK1Rlc3QgY29udmVyc2lvbiB0byBzdHJpbmcKK1BBU1MgY29udGFp
bmVyLmNoaWxkTm9kZXNbMF0gaXMgYW4gaW5zdGFuY2Ugb2YgVGV4dAorUEFTUyBjb250YWluZXIu
Y2hpbGROb2Rlc1swXS5kYXRhIGlzICdudWxsJworUEFTUyBjb250YWluZXIuY2hpbGROb2Rlc1sx
XSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQQVNTIGNvbnRhaW5lci5jaGlsZE5vZGVzWzFdLmRh
dGEgaXMgJ3VuZGVmaW5lZCcKK1BBU1MgY29udGFpbmVyLmNoaWxkTm9kZXNbMl0gaXMgYW4gaW5z
dGFuY2Ugb2YgVGV4dAorUEFTUyBjb250YWluZXIuY2hpbGROb2Rlc1syXS5kYXRhIGlzICc3Jwor
CitUZXN0IG5vIHBhcmFtZXRlcnMKK1BBU1MgY29udGFpbmVyLmFwcGVuZCgpIGRpZCBub3QgdGhy
b3cgZXhjZXB0aW9uLgorUEFTUyBjb250YWluZXIuY2hpbGROb2Rlcy5sZW5ndGggaXMgMAorCitU
ZXN0IGVycm9yIGNvbmRpdGlvbiBvZiBzZWxmLWFwcGVuZGluZy4KK1BBU1MgY29udGFpbmVyLmFw
cGVuZChjb250YWluZXIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSGllcmFyY2h5UmVxdWVzdEVy
cm9yOiBET00gRXhjZXB0aW9uIDMuCisKK1Rlc3QgRG9jdW1lbnRGcmFnbWVudC5hcHBlbmQoKE5v
ZGUgb3IgRE9NU3RyaW5nKS4uLikuCitQQVNTIGQxLnBhcmVudE5vZGUgaXMgZnJhZ21lbnQKKwor
VGVzdCBEb2N1bWVudC5hcHBlbmQoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLikuCisKK1Rlc3Qgc2lt
cGxlIGNhc2Ugb2Ygc2luZ2xlIGNoaWxkIGFwcGVuZC4KK1BBU1MgZDEucGFyZW50Tm9kZSBpcyBk
b2MKKworVGVzdCBjYXNlIGFwcGVuZGluZyBhIHJvb3QgZWxlbWVudCBhbmQgYSBjb21tZW50Lgor
UEFTUyBkMS5wYXJlbnROb2RlIGlzIGRvYworUEFTUyBjMS5wYXJlbnROb2RlIGlzIGRvYworCitU
ZXN0IGVycm9yIGNvbmRpdGlvbiBhcHBlbmRpbmcgYSBzZWNvbmQgcm9vdCBlbGVtZW50LgorUEFT
UyBkb2MuYXBwZW5kKGQyKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IEhpZXJhcmNoeVJlcXVlc3RF
cnJvcjogRE9NIEV4Y2VwdGlvbiAzLgorCitUZXN0IGVycm9yIGNvbmRpdGlvbiBhcHBlbmRpbmcg
VGV4dCBub2RlIGFzIHRoZSByb290IGVsZW1lbnQuCitQQVNTIGRvYy5hcHBlbmQoJ2hlbGxvJykg
dGhyZXcgZXhjZXB0aW9uIEVycm9yOiBIaWVyYXJjaHlSZXF1ZXN0RXJyb3I6IERPTSBFeGNlcHRp
b24gMy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9QYXJlbnROb2RlLWFwcGVuZC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1BhcmVudE5vZGUtYXBwZW5kLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9QYXJlbnROb2RlLWFwcGVuZC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlw
dD4KKworZGVzY3JpcHRpb24oIlRlc3RzIFBhcmVudE5vZGUuYXBwZW5kKChOb2RlIG9yIERPTVN0
cmluZykuLi4pIik7CisKK2RlYnVnKCJUZXN0IEVsZW1lbnQuYXBwZW5kKChOb2RlIG9yIERPTVN0
cmluZykuLi4pLiIpOworZGVidWcoIiIpOworZGVidWcoIlRlc3Qgc2luZ2xlIG5vZGUuIik7Cit2
YXIgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Cit2YXIgZDEgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2NvbnRhaW5lci5hcHBlbmQoZDEpOworc2hv
dWxkQmUoImQxLnBhcmVudE5vZGUiLCAiY29udGFpbmVyIik7CitkZWJ1ZygiIik7CisKK2RlYnVn
KCJUZXN0IG11bHRpcGxlIG5vZGVzLiIpOworY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7CitkMSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwordmFyIGQy
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Citjb250YWluZXIuYXBwZW5kKGQxLCBk
Mik7CitzaG91bGRCZSgiZDEucGFyZW50Tm9kZSIsICJjb250YWluZXIiKTsKK3Nob3VsZEJlKCJk
Mi5wYXJlbnROb2RlIiwgImNvbnRhaW5lciIpOworc2hvdWxkQmUoImQxLm5leHRTaWJsaW5nIiwg
ImQyIik7CitzaG91bGRCZSgiZDIucHJldmlvdXNTaWJsaW5nIiwgImQxIik7CitkZWJ1ZygiIik7
CisKK2RlYnVnKCJUZXN0IGEgc2luZ2xlIHN0cmluZy4iKTsKK2NvbnRhaW5lciA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworY29udGFpbmVyLmFwcGVuZCgiaGVsbG8iKTsKK3Nob3Vs
ZEJlVHlwZSgiY29udGFpbmVyLmZpcnN0Q2hpbGQiLCAiVGV4dCIpOworc2hvdWxkQmUoImNvbnRh
aW5lci5maXJzdENoaWxkLmRhdGEiLCAiJ2hlbGxvJyIpOworZGVidWcoIiIpOworCitkZWJ1Zygi
VGVzdCBtdWx0aXBsZSBzdHJpbmdzLiIpOworY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7Citjb250YWluZXIuYXBwZW5kKCJoZWxsbyIsICJ3b3JsZCIpOworc2hvdWxk
QmVUeXBlKCJjb250YWluZXIuY2hpbGROb2Rlc1swXSIsICJUZXh0Iik7CitzaG91bGRCZSgiY29u
dGFpbmVyLmNoaWxkTm9kZXNbMF0uZGF0YSIsICInaGVsbG8nIik7CitzaG91bGRCZVR5cGUoImNv
bnRhaW5lci5jaGlsZE5vZGVzWzFdIiwgIlRleHQiKTsKK3Nob3VsZEJlKCJjb250YWluZXIuY2hp
bGROb2Rlc1sxXS5kYXRhIiwgIid3b3JsZCciKTsKK2RlYnVnKCIiKTsKKworZGVidWcoIlRlc3Qg
bm9kZXMgYW5kIHN0cmluZ3MuIik7Citjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKK2QxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Citjb250YWluZXIu
YXBwZW5kKCJoZWxsbyIsIGQxLCAid29ybGQiKTsKK3Nob3VsZEJlVHlwZSgiY29udGFpbmVyLmNo
aWxkTm9kZXNbMF0iLCAiVGV4dCIpOworc2hvdWxkQmVUeXBlKCJjb250YWluZXIuY2hpbGROb2Rl
c1sxXSIsICJFbGVtZW50Iik7CitzaG91bGRCZVR5cGUoImNvbnRhaW5lci5jaGlsZE5vZGVzWzJd
IiwgIlRleHQiKTsKK2RlYnVnKCIiKTsKKworZGVidWcoIlRlc3Qgd2hlbiBjb250YWluZXIgYWxy
ZWFkeSBoYXMgY2hpbGRyZW4uIik7Citjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKK2QxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CitkMiA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworY29udGFpbmVyLmFwcGVuZENoaWxkKGQxKTsKK2Nv
bnRhaW5lci5hcHBlbmQoZDIsICJoZWxsbyIpOworc2hvdWxkQmVUeXBlKCJjb250YWluZXIuY2hp
bGROb2Rlc1swXSIsICJFbGVtZW50Iik7CitzaG91bGRCZSgiY29udGFpbmVyLmNoaWxkTm9kZXNb
MF0iLCAiZDEiKTsKK3Nob3VsZEJlVHlwZSgiY29udGFpbmVyLmNoaWxkTm9kZXNbMV0iLCAiRWxl
bWVudCIpOworc2hvdWxkQmUoImNvbnRhaW5lci5jaGlsZE5vZGVzWzFdIiwgImQyIik7CitzaG91
bGRCZVR5cGUoImNvbnRhaW5lci5jaGlsZE5vZGVzWzJdIiwgIlRleHQiKTsKK3Nob3VsZEJlKCJj
b250YWluZXIuY2hpbGROb2Rlc1syXS5kYXRhIiwgIidoZWxsbyciKTsKK2RlYnVnKCIiKTsKKwor
ZGVidWcoIlRlc3QgY29udmVyc2lvbiB0byBzdHJpbmciKTsKK2NvbnRhaW5lciA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworY29udGFpbmVyLmFwcGVuZChudWxsLCB1bmRlZmluZWQs
IDcpOworc2hvdWxkQmVUeXBlKCJjb250YWluZXIuY2hpbGROb2Rlc1swXSIsICJUZXh0Iik7Citz
aG91bGRCZSgiY29udGFpbmVyLmNoaWxkTm9kZXNbMF0uZGF0YSIsICInbnVsbCciKTsKK3Nob3Vs
ZEJlVHlwZSgiY29udGFpbmVyLmNoaWxkTm9kZXNbMV0iLCAiVGV4dCIpOworc2hvdWxkQmUoImNv
bnRhaW5lci5jaGlsZE5vZGVzWzFdLmRhdGEiLCAiJ3VuZGVmaW5lZCciKTsKK3Nob3VsZEJlVHlw
ZSgiY29udGFpbmVyLmNoaWxkTm9kZXNbMl0iLCAiVGV4dCIpOworc2hvdWxkQmUoImNvbnRhaW5l
ci5jaGlsZE5vZGVzWzJdLmRhdGEiLCAiJzcnIik7CitkZWJ1ZygiIik7CisKK2RlYnVnKCJUZXN0
IG5vIHBhcmFtZXRlcnMiKTsKK2NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOworc2hvdWxkTm90VGhyb3coImNvbnRhaW5lci5hcHBlbmQoKSIpOworc2hvdWxkQmUoImNv
bnRhaW5lci5jaGlsZE5vZGVzLmxlbmd0aCIsICIwIik7CitkZWJ1ZygiIik7CisKK2RlYnVnKCJU
ZXN0IGVycm9yIGNvbmRpdGlvbiBvZiBzZWxmLWFwcGVuZGluZy4iKTsKK2NvbnRhaW5lciA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworc2hvdWxkVGhyb3coImNvbnRhaW5lci5hcHBl
bmQoY29udGFpbmVyKSIpOworZGVidWcoIiIpOworCitkZWJ1ZygiVGVzdCBEb2N1bWVudEZyYWdt
ZW50LmFwcGVuZCgoTm9kZSBvciBET01TdHJpbmcpLi4uKS4iKTsKK3ZhciBmcmFnbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKK2QxID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7CitmcmFnbWVudC5hcHBlbmQoZDEpOworc2hvdWxkQmUoImQxLnBhcmVudE5v
ZGUiLCAiZnJhZ21lbnQiKTsKK2RlYnVnKCIiKTsKKworCitkZWJ1ZygiVGVzdCBEb2N1bWVudC5h
cHBlbmQoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLikuIik7CitkZWJ1ZygiIikKK2RlYnVnKCJUZXN0
IHNpbXBsZSBjYXNlIG9mIHNpbmdsZSBjaGlsZCBhcHBlbmQuIikKK3ZhciBkb2MgPSBkb2N1bWVu
dC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoKTsKK3doaWxlIChkb2MuZmlyc3RD
aGlsZCkKKyAgICBkb2MuZmlyc3RDaGlsZC5yZW1vdmUoKTsKK2QxID0gZG9jLmNyZWF0ZUVsZW1l
bnQoImRpdiIpOworZG9jLmFwcGVuZChkMSk7CitzaG91bGRCZSgiZDEucGFyZW50Tm9kZSIsICJk
b2MiKTsKK2RlYnVnKCIiKTsKKworZGVidWcoIlRlc3QgY2FzZSBhcHBlbmRpbmcgYSByb290IGVs
ZW1lbnQgYW5kIGEgY29tbWVudC4iKQordmFyIGRvYyA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9u
LmNyZWF0ZUhUTUxEb2N1bWVudCgpOword2hpbGUgKGRvYy5maXJzdENoaWxkKQorICAgIGRvYy5m
aXJzdENoaWxkLnJlbW92ZSgpOworZDEgPSBkb2MuY3JlYXRlRWxlbWVudCgiZGl2Iik7CitjMSA9
IGRvYy5jcmVhdGVDb21tZW50KCJjb21tZW50IHRleHQiKTsKK2RvYy5hcHBlbmQoZDEsIGMxKTsK
K3Nob3VsZEJlKCJkMS5wYXJlbnROb2RlIiwgImRvYyIpOworc2hvdWxkQmUoImMxLnBhcmVudE5v
ZGUiLCAiZG9jIik7CitkZWJ1ZygiIik7CisKK2RlYnVnKCJUZXN0IGVycm9yIGNvbmRpdGlvbiBh
cHBlbmRpbmcgYSBzZWNvbmQgcm9vdCBlbGVtZW50LiIpCitkb2MgPSBkb2N1bWVudC5pbXBsZW1l
bnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoKTsKK3doaWxlIChkb2MuZmlyc3RDaGlsZCkKKyAg
ICBkb2MuZmlyc3RDaGlsZC5yZW1vdmUoKTsKK2QxID0gZG9jLmNyZWF0ZUVsZW1lbnQoImRpdiIp
OworZDIgPSBkb2MuY3JlYXRlRWxlbWVudCgiZGl2Iik7Citkb2MuYXBwZW5kQ2hpbGQoZDEpOwor
c2hvdWxkVGhyb3coImRvYy5hcHBlbmQoZDIpIik7CitkZWJ1ZygiIik7CisKK2RlYnVnKCJUZXN0
IGVycm9yIGNvbmRpdGlvbiBhcHBlbmRpbmcgVGV4dCBub2RlIGFzIHRoZSByb290IGVsZW1lbnQu
IikKK2RvYyA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgpOwor
d2hpbGUgKGRvYy5maXJzdENoaWxkKQorICAgIGRvYy5maXJzdENoaWxkLnJlbW92ZSgpOworc2hv
dWxkVGhyb3coImRvYy5hcHBlbmQoJ2hlbGxvJykiKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9QYXJlbnROb2RlLXByZXBlbmQtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1BhcmVudE5vZGUt
cHJlcGVuZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9QYXJlbnROb2RlLXByZXBlbmQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNzUgQEAKK1Rlc3RzIFBhcmVudE5vZGUucHJlcGVuZCgoTm9kZSBvciBET01TdHJpbmcpLi4u
KQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworVGVzdCBFbGVtZW50LnByZXBlbmQo
KE5vZGUgb3IgRE9NU3RyaW5nKS4uLikuCisKK1Rlc3Qgc2luZ2xlIG5vZGUuCitQQVNTIGQxLnBh
cmVudE5vZGUgaXMgY29udGFpbmVyCisKK1Rlc3QgbXVsdGlwbGUgbm9kZXMuCitQQVNTIGQxLnBh
cmVudE5vZGUgaXMgY29udGFpbmVyCitQQVNTIGQyLnBhcmVudE5vZGUgaXMgY29udGFpbmVyCitQ
QVNTIGQxLm5leHRTaWJsaW5nIGlzIGQyCitQQVNTIGQyLnByZXZpb3VzU2libGluZyBpcyBkMQor
CitUZXN0IGEgc2luZ2xlIHN0cmluZy4KK1BBU1MgY29udGFpbmVyLmZpcnN0Q2hpbGQgaXMgYW4g
aW5zdGFuY2Ugb2YgVGV4dAorUEFTUyBjb250YWluZXIuZmlyc3RDaGlsZC5kYXRhIGlzICdoZWxs
bycKKworVGVzdCBtdWx0aXBsZSBzdHJpbmdzLgorUEFTUyBjb250YWluZXIuY2hpbGROb2Rlc1sw
XSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQQVNTIGNvbnRhaW5lci5jaGlsZE5vZGVzWzBdLmRh
dGEgaXMgJ2hlbGxvJworUEFTUyBjb250YWluZXIuY2hpbGROb2Rlc1sxXSBpcyBhbiBpbnN0YW5j
ZSBvZiBUZXh0CitQQVNTIGNvbnRhaW5lci5jaGlsZE5vZGVzWzFdLmRhdGEgaXMgJ3dvcmxkJwor
CitUZXN0IG5vZGVzIGFuZCBzdHJpbmdzLgorUEFTUyBjb250YWluZXIuY2hpbGROb2Rlc1swXSBp
cyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQQVNTIGNvbnRhaW5lci5jaGlsZE5vZGVzWzFdIGlzIGFu
IGluc3RhbmNlIG9mIEVsZW1lbnQKK1BBU1MgY29udGFpbmVyLmNoaWxkTm9kZXNbMl0gaXMgYW4g
aW5zdGFuY2Ugb2YgVGV4dAorCitUZXN0IHdoZW4gY29udGFpbmVyIGFscmVhZHkgaGFzIGNoaWxk
cmVuLgorUEFTUyBjb250YWluZXIuY2hpbGROb2Rlc1swXSBpcyBhbiBpbnN0YW5jZSBvZiBFbGVt
ZW50CitQQVNTIGNvbnRhaW5lci5jaGlsZE5vZGVzWzBdIGlzIGQyCitQQVNTIGNvbnRhaW5lci5j
aGlsZE5vZGVzWzFdIGlzIGFuIGluc3RhbmNlIG9mIFRleHQKK1BBU1MgY29udGFpbmVyLmNoaWxk
Tm9kZXNbMV0uZGF0YSBpcyAnaGVsbG8nCitQQVNTIGNvbnRhaW5lci5jaGlsZE5vZGVzWzJdIGlz
IGFuIGluc3RhbmNlIG9mIEVsZW1lbnQKK1BBU1MgY29udGFpbmVyLmNoaWxkTm9kZXNbMl0gaXMg
ZDEKKworVGVzdCBjb252ZXJzaW9uIHRvIHN0cmluZworUEFTUyBjb250YWluZXIuY2hpbGROb2Rl
c1swXSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0CitQQVNTIGNvbnRhaW5lci5jaGlsZE5vZGVzWzBd
LmRhdGEgaXMgJ251bGwnCitQQVNTIGNvbnRhaW5lci5jaGlsZE5vZGVzWzFdIGlzIGFuIGluc3Rh
bmNlIG9mIFRleHQKK1BBU1MgY29udGFpbmVyLmNoaWxkTm9kZXNbMV0uZGF0YSBpcyAndW5kZWZp
bmVkJworUEFTUyBjb250YWluZXIuY2hpbGROb2Rlc1syXSBpcyBhbiBpbnN0YW5jZSBvZiBUZXh0
CitQQVNTIGNvbnRhaW5lci5jaGlsZE5vZGVzWzJdLmRhdGEgaXMgJzcnCisKK1Rlc3Qgbm8gcGFy
YW1ldGVycworUEFTUyBjb250YWluZXIucHJlcGVuZCgpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9u
LgorUEFTUyBjb250YWluZXIuY2hpbGROb2Rlcy5sZW5ndGggaXMgMAorCitUZXN0IGVycm9yIGNv
bmRpdGlvbiBvZiBzZWxmLXByZXBlbmRpbmcuCitQQVNTIGNvbnRhaW5lci5wcmVwZW5kKGNvbnRh
aW5lcikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBIaWVyYXJjaHlSZXF1ZXN0RXJyb3I6IERPTSBF
eGNlcHRpb24gMy4KKworVGVzdCBEb2N1bWVudEZyYWdtZW50LnByZXBlbmQoKE5vZGUgb3IgRE9N
U3RyaW5nKS4uLikuCitQQVNTIGQxLnBhcmVudE5vZGUgaXMgZnJhZ21lbnQKKworVGVzdCBEb2N1
bWVudC5wcmVwZW5kKChOb2RlIG9yIERPTVN0cmluZykuLi4pLgorCitUZXN0IHNpbXBsZSBjYXNl
IG9mIHNpbmdsZSBjaGlsZCBwcmVwZW5kLgorUEFTUyBkMS5wYXJlbnROb2RlIGlzIGRvYworCitU
ZXN0IGNhc2UgcHJlcGVuZGluZyBhIHJvb3QgZWxlbWVudCBhbmQgYSBjb21tZW50LgorUEFTUyBk
MS5wYXJlbnROb2RlIGlzIGRvYworUEFTUyBjMS5wYXJlbnROb2RlIGlzIGRvYworCitUZXN0IGVy
cm9yIGNvbmRpdGlvbiBwcmVwZW5kaW5nIGEgc2Vjb25kIHJvb3QgZWxlbWVudC4KK1BBU1MgZG9j
LnByZXBlbmQoZDIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSGllcmFyY2h5UmVxdWVzdEVycm9y
OiBET00gRXhjZXB0aW9uIDMuCisKK1Rlc3QgZXJyb3IgY29uZGl0aW9uIHByZXBlbmRpbmcgVGV4
dCBub2RlIGFzIHRoZSByb290IGVsZW1lbnQuCitQQVNTIGRvYy5wcmVwZW5kKCdoZWxsbycpIHRo
cmV3IGV4Y2VwdGlvbiBFcnJvcjogSGllcmFyY2h5UmVxdWVzdEVycm9yOiBET00gRXhjZXB0aW9u
IDMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vUGFyZW50Tm9kZS1wcmVwZW5kLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vUGFyZW50Tm9kZS1wcmVwZW5kLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9QYXJlbnROb2RlLXByZXBlbmQuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3Jp
cHQ+CisKK2Rlc2NyaXB0aW9uKCJUZXN0cyBQYXJlbnROb2RlLnByZXBlbmQoKE5vZGUgb3IgRE9N
U3RyaW5nKS4uLikiKTsKKworZGVidWcoIlRlc3QgRWxlbWVudC5wcmVwZW5kKChOb2RlIG9yIERP
TVN0cmluZykuLi4pLiIpOworZGVidWcoIiIpOworZGVidWcoIlRlc3Qgc2luZ2xlIG5vZGUuIik7
Cit2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Cit2YXIgZDEg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2NvbnRhaW5lci5wcmVwZW5kKGQxKTsK
K3Nob3VsZEJlKCJkMS5wYXJlbnROb2RlIiwgImNvbnRhaW5lciIpOworZGVidWcoIiIpOworCitk
ZWJ1ZygiVGVzdCBtdWx0aXBsZSBub2Rlcy4iKTsKK2NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOworZDEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK3Zh
ciBkMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworY29udGFpbmVyLnByZXBlbmQo
ZDEsIGQyKTsKK3Nob3VsZEJlKCJkMS5wYXJlbnROb2RlIiwgImNvbnRhaW5lciIpOworc2hvdWxk
QmUoImQyLnBhcmVudE5vZGUiLCAiY29udGFpbmVyIik7CitzaG91bGRCZSgiZDEubmV4dFNpYmxp
bmciLCAiZDIiKTsKK3Nob3VsZEJlKCJkMi5wcmV2aW91c1NpYmxpbmciLCAiZDEiKTsKK2RlYnVn
KCIiKTsKKworZGVidWcoIlRlc3QgYSBzaW5nbGUgc3RyaW5nLiIpOworY29udGFpbmVyID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Citjb250YWluZXIucHJlcGVuZCgiaGVsbG8iKTsK
K3Nob3VsZEJlVHlwZSgiY29udGFpbmVyLmZpcnN0Q2hpbGQiLCAiVGV4dCIpOworc2hvdWxkQmUo
ImNvbnRhaW5lci5maXJzdENoaWxkLmRhdGEiLCAiJ2hlbGxvJyIpOworZGVidWcoIiIpOworCitk
ZWJ1ZygiVGVzdCBtdWx0aXBsZSBzdHJpbmdzLiIpOworY29udGFpbmVyID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7Citjb250YWluZXIucHJlcGVuZCgiaGVsbG8iLCAid29ybGQiKTsK
K3Nob3VsZEJlVHlwZSgiY29udGFpbmVyLmNoaWxkTm9kZXNbMF0iLCAiVGV4dCIpOworc2hvdWxk
QmUoImNvbnRhaW5lci5jaGlsZE5vZGVzWzBdLmRhdGEiLCAiJ2hlbGxvJyIpOworc2hvdWxkQmVU
eXBlKCJjb250YWluZXIuY2hpbGROb2Rlc1sxXSIsICJUZXh0Iik7CitzaG91bGRCZSgiY29udGFp
bmVyLmNoaWxkTm9kZXNbMV0uZGF0YSIsICInd29ybGQnIik7CitkZWJ1ZygiIik7CisKK2RlYnVn
KCJUZXN0IG5vZGVzIGFuZCBzdHJpbmdzLiIpOworY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7CitkMSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworY29u
dGFpbmVyLnByZXBlbmQoImhlbGxvIiwgZDEsICJ3b3JsZCIpOworc2hvdWxkQmVUeXBlKCJjb250
YWluZXIuY2hpbGROb2Rlc1swXSIsICJUZXh0Iik7CitzaG91bGRCZVR5cGUoImNvbnRhaW5lci5j
aGlsZE5vZGVzWzFdIiwgIkVsZW1lbnQiKTsKK3Nob3VsZEJlVHlwZSgiY29udGFpbmVyLmNoaWxk
Tm9kZXNbMl0iLCAiVGV4dCIpOworZGVidWcoIiIpOworCitkZWJ1ZygiVGVzdCB3aGVuIGNvbnRh
aW5lciBhbHJlYWR5IGhhcyBjaGlsZHJlbi4iKTsKK2NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOworZDEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2Qy
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Citjb250YWluZXIuYXBwZW5kQ2hpbGQo
ZDEpOworY29udGFpbmVyLnByZXBlbmQoZDIsICJoZWxsbyIpOworc2hvdWxkQmVUeXBlKCJjb250
YWluZXIuY2hpbGROb2Rlc1swXSIsICJFbGVtZW50Iik7CitzaG91bGRCZSgiY29udGFpbmVyLmNo
aWxkTm9kZXNbMF0iLCAiZDIiKTsKK3Nob3VsZEJlVHlwZSgiY29udGFpbmVyLmNoaWxkTm9kZXNb
MV0iLCAiVGV4dCIpOworc2hvdWxkQmUoImNvbnRhaW5lci5jaGlsZE5vZGVzWzFdLmRhdGEiLCAi
J2hlbGxvJyIpOworc2hvdWxkQmVUeXBlKCJjb250YWluZXIuY2hpbGROb2Rlc1syXSIsICJFbGVt
ZW50Iik7CitzaG91bGRCZSgiY29udGFpbmVyLmNoaWxkTm9kZXNbMl0iLCAiZDEiKTsKK2RlYnVn
KCIiKTsKKworZGVidWcoIlRlc3QgY29udmVyc2lvbiB0byBzdHJpbmciKTsKK2NvbnRhaW5lciA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworY29udGFpbmVyLnByZXBlbmQobnVsbCwg
dW5kZWZpbmVkLCA3KTsKK3Nob3VsZEJlVHlwZSgiY29udGFpbmVyLmNoaWxkTm9kZXNbMF0iLCAi
VGV4dCIpOworc2hvdWxkQmUoImNvbnRhaW5lci5jaGlsZE5vZGVzWzBdLmRhdGEiLCAiJ251bGwn
Iik7CitzaG91bGRCZVR5cGUoImNvbnRhaW5lci5jaGlsZE5vZGVzWzFdIiwgIlRleHQiKTsKK3No
b3VsZEJlKCJjb250YWluZXIuY2hpbGROb2Rlc1sxXS5kYXRhIiwgIid1bmRlZmluZWQnIik7Citz
aG91bGRCZVR5cGUoImNvbnRhaW5lci5jaGlsZE5vZGVzWzJdIiwgIlRleHQiKTsKK3Nob3VsZEJl
KCJjb250YWluZXIuY2hpbGROb2Rlc1syXS5kYXRhIiwgIic3JyIpOworZGVidWcoIiIpOworCitk
ZWJ1ZygiVGVzdCBubyBwYXJhbWV0ZXJzIik7Citjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKK3Nob3VsZE5vdFRocm93KCJjb250YWluZXIucHJlcGVuZCgpIik7Citz
aG91bGRCZSgiY29udGFpbmVyLmNoaWxkTm9kZXMubGVuZ3RoIiwgIjAiKTsKK2RlYnVnKCIiKTsK
KworZGVidWcoIlRlc3QgZXJyb3IgY29uZGl0aW9uIG9mIHNlbGYtcHJlcGVuZGluZy4iKTsKK2Nv
bnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworc2hvdWxkVGhyb3coImNv
bnRhaW5lci5wcmVwZW5kKGNvbnRhaW5lcikiKTsKK2RlYnVnKCIiKTsKKworZGVidWcoIlRlc3Qg
RG9jdW1lbnRGcmFnbWVudC5wcmVwZW5kKChOb2RlIG9yIERPTVN0cmluZykuLi4pLiIpOwordmFy
IGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOworZDEgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2ZyYWdtZW50LnByZXBlbmQoZDEpOworc2hvdWxk
QmUoImQxLnBhcmVudE5vZGUiLCAiZnJhZ21lbnQiKTsKK2RlYnVnKCIiKTsKKworCitkZWJ1Zygi
VGVzdCBEb2N1bWVudC5wcmVwZW5kKChOb2RlIG9yIERPTVN0cmluZykuLi4pLiIpOworZGVidWco
IiIpCitkZWJ1ZygiVGVzdCBzaW1wbGUgY2FzZSBvZiBzaW5nbGUgY2hpbGQgcHJlcGVuZC4iKQor
dmFyIGRvYyA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgpOwor
d2hpbGUgKGRvYy5maXJzdENoaWxkKQorICAgIGRvYy5maXJzdENoaWxkLnJlbW92ZSgpOworZDEg
PSBkb2MuY3JlYXRlRWxlbWVudCgiZGl2Iik7Citkb2MucHJlcGVuZChkMSk7CitzaG91bGRCZSgi
ZDEucGFyZW50Tm9kZSIsICJkb2MiKTsKK2RlYnVnKCIiKTsKKworZGVidWcoIlRlc3QgY2FzZSBw
cmVwZW5kaW5nIGEgcm9vdCBlbGVtZW50IGFuZCBhIGNvbW1lbnQuIikKK3ZhciBkb2MgPSBkb2N1
bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoKTsKK3doaWxlIChkb2MuZmly
c3RDaGlsZCkKKyAgICBkb2MuZmlyc3RDaGlsZC5yZW1vdmUoKTsKK2QxID0gZG9jLmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOworYzEgPSBkb2MuY3JlYXRlQ29tbWVudCgiY29tbWVudCB0ZXh0Iik7Citk
b2MucHJlcGVuZChkMSwgYzEpOworc2hvdWxkQmUoImQxLnBhcmVudE5vZGUiLCAiZG9jIik7Citz
aG91bGRCZSgiYzEucGFyZW50Tm9kZSIsICJkb2MiKTsKK2RlYnVnKCIiKTsKKworZGVidWcoIlRl
c3QgZXJyb3IgY29uZGl0aW9uIHByZXBlbmRpbmcgYSBzZWNvbmQgcm9vdCBlbGVtZW50LiIpCitk
b2MgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoKTsKK3doaWxl
IChkb2MuZmlyc3RDaGlsZCkKKyAgICBkb2MuZmlyc3RDaGlsZC5yZW1vdmUoKTsKK2QxID0gZG9j
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworZDIgPSBkb2MuY3JlYXRlRWxlbWVudCgiZGl2Iik7Citk
b2MuYXBwZW5kQ2hpbGQoZDEpOworc2hvdWxkVGhyb3coImRvYy5wcmVwZW5kKGQyKSIpOworZGVi
dWcoIiIpOworCitkZWJ1ZygiVGVzdCBlcnJvciBjb25kaXRpb24gcHJlcGVuZGluZyBUZXh0IG5v
ZGUgYXMgdGhlIHJvb3QgZWxlbWVudC4iKQorZG9jID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24u
Y3JlYXRlSFRNTERvY3VtZW50KCk7Cit3aGlsZSAoZG9jLmZpcnN0Q2hpbGQpCisgICAgZG9jLmZp
cnN0Q2hpbGQucmVtb3ZlKCk7CitzaG91bGRUaHJvdygiZG9jLnByZXBlbmQoJ2hlbGxvJykiKTsK
KworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="281760"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>