<?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>21288</bug_id>
          
          <creation_ts>2008-10-01 16:57:18 -0700</creation_ts>
          <short_desc>Implement HTML5&apos;s sandbox attribute for iframes</short_desc>
          <delta_ts>2025-12-09 08:28:00 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Frames</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>32934</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Robbie Paplin">rpaplin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>baochun19920616</cc>
    
    <cc>bdakin</cc>
    
    <cc>bjorn.a.johansson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>ian</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>mike</cc>
    
    <cc>patrik.j.persson</cc>
    
    <cc>sam</cc>
    
    <cc>song.yuan</cc>
    
    <cc>song</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>93626</commentid>
    <comment_count>0</comment_count>
    <who name="Robbie Paplin">rpaplin</who>
    <bug_when>2008-10-01 16:57:18 -0700</bug_when>
    <thetext>We would like to see Safari implement restricted attribute on Iframes. For more information on what we mean, please check out 

http://blogs.msdn.com/ie/archive/2008/01/18/using-frames-more-securely.aspx


For detailed design on how Internet Explorer provides this, please check: 
http://msdn.microsoft.com/en-us/library/ms534622(VS.85).aspx</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93641</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-10-01 18:46:32 -0700</bug_when>
    <thetext>I think we&apos;re more likely to implement HTML 5&apos;s iframe sandboxing (&lt;http://www.whatwg.org/specs/web-apps/current-work/#attr-iframe-sandbox&gt;) than Microsoft&apos;s proprietary approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93647</commentid>
    <comment_count>2</comment_count>
    <who name="Robbie Paplin">rpaplin</who>
    <bug_when>2008-10-01 19:21:11 -0700</bug_when>
    <thetext>I was previously unaware of the HTML 5 IFRAME sandbox attribute. Thanks for bringing it to my attention. In any event, either approach works for us.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93844</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-10-02 19:42:40 -0700</bug_when>
    <thetext>&lt;rdar://problem/6266825&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160408</commentid>
    <comment_count>4</comment_count>
      <attachid>42473</attachid>
    <who name="Yuan Song">song.yuan</who>
    <bug_when>2009-11-04 03:44:43 -0800</bug_when>
    <thetext>Created attachment 42473
HTML5 IFrame sandboxing

HTML5 IFrame sandboxing patch.

Since svn-apply currently does not handle file attributes, the following command needs to be run manually  after patching:

chmod a+x LayoutTests/http/tests/xmlhttprequest/resources/access-control-sandboxed-iframe-allow.cgi \
  LayoutTests/http/tests/xmlhttprequest/resources/access-control-sandboxed-iframe-denied-without-wildcard.cgi \
  LayoutTests/http/tests/xmlhttprequest/resources/access-control-sandboxed-iframe-denied.cgi</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160489</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-04 10:16:51 -0800</bug_when>
    <thetext>svn-apply does handle svn-properties like svn:executable, or at least it did last time I checked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160490</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-04 10:17:43 -0800</bug_when>
    <thetext>I have no idea if this is a good thing.  Sam or abarth would know.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160539</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-04 11:52:07 -0800</bug_when>
    <thetext>Yes.  We&apos;d definitely like an implementation of the sandbox attribute.  I&apos;ll review this patch carefully tonight.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160680</commentid>
    <comment_count>8</comment_count>
      <attachid>42473</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-04 18:15:32 -0800</bug_when>
    <thetext>Comment on attachment 42473
HTML5 IFrame sandboxing

This patch is very good.  There is one design issue that I&apos;d like you to change.  Instead of storing the sandbox information only on the ownerElement, we should copy the information to the document&apos;s securityOrigin.  (We might as well copy the whole bit array.)  This is to make sure w can keep track of the document&apos;s privileges after it get detached from the frame.

Also, we should unify SecurityOrigin::m_noAccess with the sandbox bits.  If you see how to do that, we can do that in the first patch.  Otherwise, we can do it in a second patch.

Detailed comments below:

+ String Document::cookie(ExceptionCode &amp;ec) const

In this function, you want to get the sandbox information out of the securityOrigin instead of the Frame to handle the case when the document is detached from the frame (i.e., with m_frame is null).

+ Document::initSecurityContext

Basically, you want to copy the sandbox state into securityOrigin here.  That way you can have wit with all the Document-lifetime objects that need it.

+ HTMLFrameOwnerElement* ownerElement = document()-&gt;frame()-&gt;ownerElement();

Careful!  frame() can be null!  Once you move the sandbox state into SecurityOrigin, then you can just get it from the document() and not have to worry about frame() being null.

+  // Parse the unordered set of unique space-separated tokens.

Please move the parser code into a separate function.  Also, you should add some tests that exercise this parser, e.g., by using mixed case and crazy parser cases.

+ isIFrameSandboxStringWhitespace

Why do we need a special function for this?  Why not just use IsASCIIWhitespace or some-such?  If the spec really requires this goofy set of characters, we can change the spec to be sane.

+ bool originSandboxed() const { return m_originSandboxed; }

We should combine these concepts.

+ src=&quot;data:text/html,

Please don&apos;t use data URLs in your test unless you&apos;re specifically testing the interaction of sandbox and data URLs.  We already sandbox data URLs to a certain extent, so it&apos;s a bit unclear what you&apos;re testing.

+ navigated_frames ++;

No space before the ++ operator.

+ LayoutTests/fast/frames/resources/sandboxed-iframe-document-cookie-read-denied.html

Please test cookie operators in HTTP tests.  The rules for cookies interacting with file URLs are tricky and not what we want to test here.

+  11           text run at (92,18) width 268: &quot;full render tree to include Iframe contents.)&quot;

You can use layoutTestController.dumpChildFramesAsText (or something like that) to achieve the same effect while keeping a text test (which are infinitely easier to deal with).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160693</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-11-04 19:33:04 -0800</bug_when>
    <thetext>         // FIXME: the DOM spec states that this attribute can 
         // raise an exception on setting.
                  attribute [ConvertNullToNullString] DOMString cookie
-                     /*setter raises (DOMException)*/;
+                     getter raises (DOMException),
+                     setter raises (/*DOMException*/);

I&apos;m not sure why the second line has DOMException commented out. The usual style is to use per-file and per-function comments in ChangeLogs to explain any non-trivial changes (that&apos;s why the list of changed locations is generated by prepare-ChangeLog). It doesn&apos;t look like the &quot;setter raises (/*DOMException*/)&quot; syntax is actually making setCookie change ExceptionCode.

+    if (accessControlOriginString != &quot;*&quot; &amp;&amp; securityOrigin-&gt;originSandboxed())
+        return false;

This check could also use some explanation, probably even as a comment in code.

+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600

Pixel tests should have pixel results, as well. As Adam said, it&apos;s best to keep these tests text-only.

&gt; + navigated_frames ++;
&gt; No space before the ++ operator.

It is also slightly nicer to use prefix form: &quot;++navigated_frames&quot;. This mostly matters for complex types like C++ container iterators, but is a good habit to keep.

But since this is test code, I&apos;m fine with doing things in unconventional ways, just for the slight chance of it ever catching a completely unrelated error by surprise :)

+CONSOLE MESSAGE: line 1: Unsafe JavaScript attempt to access frame with URL http://127.0.0.1:8000/security/xss-DENIED-sandboxed-iframe.html from frame with URL http://127.0.0.1:8000/security/resources/xss-DENIED-sandboxed-iframe-attacker.html. Domains, protocols and ports must match.
+
+CONSOLE MESSAGE: line 1: Unsafe JavaScript attempt to access frame with URL http://127.0.0.1:8000/security/xss-DENIED-sandboxed-iframe.html from frame with URL http://127.0.0.1:8000/security/resources/xss-DENIED-sandboxed-iframe-attacker.html. Domains, protocols and ports must match.
+
+This test verifies that sandboxed iframe prevents cross-domain script access.

This test only dumps its results to console, and would be surprising if opened in Safari manually. If it&apos;s not easy to make it work in Safari, please add some text to the test explaining that it only works with run-webkit-tests.

+    &lt;p&gt;This test case verifies that a sandboxed frame cannot break out
+        of its sandbox by modifying its own sandbox attribute. A warning
+        message (about cross-site scripting) is expected.&lt;/p&gt;
+
+    &lt;p id=&quot;result&quot;&gt;FAIL&lt;/p&gt;
+
+    &lt;iframe id=&quot;f&quot;
+            sandbox=&quot;allow-scripts&quot;
+            src=&quot;data:text/html,
+                &lt;head&gt;
+                    &lt;script&gt;
+                    try {
+                        self.sandbox = &apos;allow-scripts allow-same-origin hacked-via-window-object&apos;;
+                    } catch (e) { /* ignore exception */ }
+                    if (top.document) {
+                        top.document.getElementById(&apos;f&apos;).sandbox = &apos;allow-scripts allow-same-origin hacked-via-dom&apos;;
+                    }
+                    &lt;/script&gt;

This test is somewhat confusing - it looks like it&apos;s doing almost the same thing twice, but only expects one error message. And it&apos;s not clear if the exception that&apos;s ignored is meant to be raised.

I&apos;m confused by this text from the spec: &quot;If the sandbox attribute is dynamically added after the iframe has loaded a page, scripts already compiled by that page (whether in script elements, or in event handlers, or elsewhere) will continue to run. Only new scripts will be prevented from executing by this flag.&quot;

Is this what is implemented here? Does removing the attribute dynamically work in the same way?

+String Document::cookie(ExceptionCode &amp;ec) const

Should be &quot;ExceptionCode&amp; ec&quot;.

+    SandboxFlags m_sandboxFlagsDecl;

Please don&apos;t abbreviate &quot;decl&quot; (and it&apos;s not very easy to tell from the name how this member is different from m_sandboxFlags).

+                AtomicString sandboxToken = AtomicString(characters + start, end - start);
+                if (equalIgnoringCase(sandboxToken, &quot;allow-same-origin&quot;))

The reason for AtomicStrings&apos; existence is that they are compared with other AtomicStrings very quickly. So, comparing with literals defeats the purpose - you should use static constants for these strings.

+    static const SandboxFlags SandboxFlagsAll = 0x1f;

Why this isn&apos;t 0xff?

Overall, the patch looks really good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160804</commentid>
    <comment_count>10</comment_count>
    <who name="Yuan Song">song.yuan</who>
    <bug_when>2009-11-05 06:10:25 -0800</bug_when>
    <thetext>Thank you for your comments. We will be back with a revised patch
shortly.

I&apos;d just like to ask a few questions, to make sure we understand your
proposed changes.

* The spec associates the sandbox status with the iframe and its
  nested browsing context (we chose to use the ownerElement for this),
  independent of the current document in the frame. Is there a
  particular advantage with associating the sandbox status with the
  document (beyond as a useful shorthand when checking)?

  This would essentially be a cached copy of the ownerElement&apos;s
  sandbox status. When the document is detached from its frame, the
  cached sandbox status becomes stale. Or am I getting it wrong?

* What do you mean by unifying SecurityOrigin::m_noAccess with the
  sandbox bits? If you mean treating m_noAccess as a sixth flag along
  with the sandbox flags, then I see what you mean (assuming the
  modification discussed in the previous bullet is made). But if you
  mean unifying m_noAccess and the origin sandbox flag, then I&apos;d
  prefer to duck the unification (for now).

  The reason is that SecurityOrigin::m_noAccess and the origin sandbox
  flag work slightly differently. Take the SecurityOrigin::equal()
  method for example. When comparing two identical &quot;data:&quot; URLs (i.e.,
  m_noAccess is set) it returns true, unless any of them is
  sandboxed. Mapping this flag to the origin sandbox flag would make
  equal() behave differently for &quot;data:&quot; URLs. If this change is
  desirable, then we propose doing it in a separate patch.

* The funny syntax for the IDL &apos;cookie&apos; setter is an attempt to work
  around (what seems to me like) an IDL quirk. I&apos;d actually like to
  omit the line about the setter entirely (the setter throws no
  exceptions), but then the exception status of the getter seemed to
  somehow &quot;leak&quot; to the setter too in the generated code (as if though
  the setter was declared to throw DOMException).

  Should we add a comment to Document.idl on this (possibly along with
  a separate bug report), or are we just doing it wrong?

We hope we don&apos;t come off as too defensive to your comments -- they
are very valid, we mostly agree, and we&apos;re happy to revise the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160807</commentid>
    <comment_count>11</comment_count>
    <who name="Yuan Song">song.yuan</who>
    <bug_when>2009-11-05 06:36:35 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; svn-apply does handle svn-properties like svn:executable, or at least it did
&gt; last time I checked.

I could be mistaken. I failed to get svn:executable to &quot;bite&quot; when running svn-apply, and blamed my failure on this:
https://bugs.webkit.org/show_bug.cgi?id=27204</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160811</commentid>
    <comment_count>12</comment_count>
    <who name="Yuan Song">song.yuan</who>
    <bug_when>2009-11-05 06:58:33 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; ...
&gt; +
&gt; +This test verifies that sandboxed iframe prevents cross-domain script access.
&gt; 
&gt; This test only dumps its results to console, and would be surprising if opened
&gt; in Safari manually. If it&apos;s not easy to make it work in Safari, please add some
&gt; text to the test explaining that it only works with run-webkit-tests.

Actually, there is a tiny line of information in the expected output (which is also visible in Safari):

&gt; PASS: cross-domain script access disallowed from sandboxed iframe

Do you want us to make this output more elaborate, or did you miss the line above?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160839</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-11-05 08:35:36 -0800</bug_when>
    <thetext>Yes, I did overlook the line above. One thing you could do to make it more discoverable is to add text such as &quot;Should say PASS below:&quot; to bug description.

Also, &apos;&lt;div id=&quot;console&quot;&gt;...&lt;/div&gt;&apos; could have descriptive placeholder text for users with disabled JS, or engines that cannot parse test script, something like &apos;FAIL: Script didn&apos;t run&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160840</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-05 08:38:54 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; * The spec associates the sandbox status with the iframe and its
&gt;   nested browsing context (we chose to use the ownerElement for this),
&gt;   independent of the current document in the frame. Is there a
&gt;   particular advantage with associating the sandbox status with the
&gt;   document (beyond as a useful shorthand when checking)?

The spec doesn&apos;t quite understand detached documents in perfect detail.  We could ask Ian to spec this completely, but it might not be worth while.  In the case of this patch, we want to do this to avoid crashing on the line I indicated.

&gt;   This would essentially be a cached copy of the ownerElement&apos;s
&gt;   sandbox status. When the document is detached from its frame, the
&gt;   cached sandbox status becomes stale. Or am I getting it wrong?

That&apos;s right.  It&apos;s fine for things to get stale when the document is detached.  We just want to avoid:

1) Crashing
2) Accidentally given privileges back to the scripts associated with that document.

&gt; * What do you mean by unifying SecurityOrigin::m_noAccess with the
&gt;   sandbox bits?

The m_noAccess flag is implementing the same concept from the spec as one fo the sandbox flags (the concept of a unique origin).  Any differences between m_noAccess and the lack of an allow-same-origin directive are bugs.  I suspect m_noAccess has a number of such bugs because it pre-dates the concept getting added to the spec.  :)

&gt;   If you mean treating m_noAccess as a sixth flag along
&gt;   with the sandbox flags, then I see what you mean (assuming the
&gt;   modification discussed in the previous bullet is made). But if you
&gt;   mean unifying m_noAccess and the origin sandbox flag, then I&apos;d
&gt;   prefer to duck the unification (for now).

That&apos;s fine.  I can do that in a follow up patch if you&apos;d rather not do it yourself.

&gt;   The reason is that SecurityOrigin::m_noAccess and the origin sandbox
&gt;   flag work slightly differently. Take the SecurityOrigin::equal()
&gt;   method for example. When comparing two identical &quot;data:&quot; URLs (i.e.,
&gt;   m_noAccess is set) it returns true, unless any of them is
&gt;   sandboxed. Mapping this flag to the origin sandbox flag would make
&gt;   equal() behave differently for &quot;data:&quot; URLs. If this change is
&gt;   desirable, then we propose doing it in a separate patch.

We&apos;d have to look at where equals is used, but I&apos;m pretty sure we want the behavior you have for the sandbox flag for noAccess too.

&gt; * The funny syntax for the IDL &apos;cookie&apos; setter is an attempt to work
&gt;   around (what seems to me like) an IDL quirk. I&apos;d actually like to
&gt;   omit the line about the setter entirely (the setter throws no
&gt;   exceptions), but then the exception status of the getter seemed to
&gt;   somehow &quot;leak&quot; to the setter too in the generated code (as if though
&gt;   the setter was declared to throw DOMException).

Can we fix the code generator to avoid this workaround?

&gt;   Should we add a comment to Document.idl on this (possibly along with
&gt;   a separate bug report), or are we just doing it wrong?

In general, we&apos;re not shy about fixing bugs in the code generator.  I&apos;m fine with fixing the code generator in another patch (either before or after this patch), but I&apos;d like to hear Alexey&apos;s view on this topic.

&gt; We hope we don&apos;t come off as too defensive to your comments -- they
&gt; are very valid, we mostly agree, and we&apos;re happy to revise the patch.

In general, there is a lot of back and forth in WebKit reviews.  The goal of these reviews is to keep the quality of the code as high as possible.  If this is your first patch, you&apos;ve done a remarkable job.  Most folks start off with small patches to get acquainted with the process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160846</commentid>
    <comment_count>15</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-11-05 09:14:03 -0800</bug_when>
    <thetext>&gt; In general, we&apos;re not shy about fixing bugs in the code generator.  I&apos;m fine
&gt; with fixing the code generator in another patch (either before or after this
&gt; patch), but I&apos;d like to hear Alexey&apos;s view on this topic.

Yes, the code generator is just part of WebCore, and can be fixed like any other code.

But since cookie can raise exceptions on both getting and setting, we want both getter and setter to take an ExceptionCode&amp; parameter. So, we can just use &quot;raises (DOMException)&quot; here and move the FIXME about exceptions on setting from IDL to DOM code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160852</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-05 09:38:41 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; But since cookie can raise exceptions on both getting and setting, we want both
&gt; getter and setter to take an ExceptionCode&amp; parameter. So, we can just use
&gt; &quot;raises (DOMException)&quot; here and move the FIXME about exceptions on setting
&gt; from IDL to DOM code.

That&apos;s a good point, but why don&apos;t we just throw the exception from the cookie setter?  That seems like an important part of the security of the sandbox attribute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160908</commentid>
    <comment_count>17</comment_count>
      <attachid>42473</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-11-05 11:57:11 -0800</bug_when>
    <thetext>Comment on attachment 42473
HTML5 IFrame sandboxing

&gt; -String Document::cookie() const
&gt; +String Document::cookie(ExceptionCode &amp;ec) const

Nit: the &amp; should go next to ExceptionCode, not ec.

&gt;                   attribute [ConvertNullToNullString] DOMString cookie
&gt; -                     /*setter raises (DOMException)*/;
&gt; +                     getter raises (DOMException),
&gt; +                     setter raises (/*DOMException*/);

The &quot;setter raises (/*DOMException*/)&quot; is wrong here and should be removed.


&gt; Index: WebCore/html/HTMLFrameOwnerElement.h
&gt; ===================================================================
&gt; --- WebCore/html/HTMLFrameOwnerElement.h	(revision 50452)
&gt; +++ WebCore/html/HTMLFrameOwnerElement.h	(working copy)
&gt; @@ -32,6 +32,8 @@ class Frame;
&gt;  class SVGDocument;
&gt;  #endif
&gt;  
&gt; +typedef uint8_t SandboxFlags;
&gt; +
&gt;  class HTMLFrameOwnerElement : public HTMLElement {
&gt;  public:
&gt;      virtual ~HTMLFrameOwnerElement();
&gt; @@ -46,17 +48,36 @@ public:
&gt;  
&gt;      virtual ScrollbarMode scrollingMode() const { return ScrollbarAuto; }
&gt;  
&gt; +    static const SandboxFlags SandboxFlagsNone = 0;
&gt; +    static const SandboxFlags SandboxFlagsAll = 0x1f;
&gt; +    static const SandboxFlags SandboxFlagsNavigation = 0x10;
&gt; +    static const SandboxFlags SandboxFlagsPlugins = 0x08;
&gt; +    static const SandboxFlags SandboxFlagsOrigin = 0x04;
&gt; +    static const SandboxFlags SandboxFlagsForms = 0x02;
&gt; +    static const SandboxFlags SandboxFlagsScripts = 0x01;

This seems better suited for an enum.

&gt;  
&gt; Index: WebCore/html/HTMLIFrameElement.cpp
&gt; ===================================================================
&gt; --- WebCore/html/HTMLIFrameElement.cpp	(revision 50452)
&gt; +++ WebCore/html/HTMLIFrameElement.cpp	(working copy)
&gt; @@ -88,6 +88,42 @@ void HTMLIFrameElement::parseMappedAttri
&gt;          if (!attr-&gt;isNull() &amp;&amp; !attr-&gt;value().toInt())
&gt;              // Add a rule that nulls out our border width.
&gt;              addCSSLength(attr, CSSPropertyBorderWidth, &quot;0&quot;);
&gt; +    } else if (attr-&gt;name() == sandboxAttr) {
&gt; +        SandboxFlags newSandboxFlagsDecl;
&gt; +        // Parse the unordered set of unique space-separated tokens.
&gt; +        if (attr-&gt;isNull())
&gt; +            newSandboxFlagsDecl = SandboxFlagsNone;
&gt; +        else {
&gt; +            newSandboxFlagsDecl = SandboxFlagsAll;
&gt; +            const UChar* characters = attr-&gt;value().characters();
&gt; +            unsigned length = attr-&gt;value().length();
&gt; +            unsigned start = 0;
&gt; +            while (true) {
&gt; +                while (start &lt; length &amp;&amp; isIFrameSandboxStringWhitespace(characters[start]))
&gt; +                    ++start;
&gt; +                if (start &gt;= length)
&gt; +                    break;
&gt; +                unsigned end = start + 1;
&gt; +                while (end &lt; length &amp;&amp; !isIFrameSandboxStringWhitespace(characters[end]))
&gt; +                    ++end;
&gt; +
&gt; +                // Turn off the corresponding sandbox flag if it&apos;s set as &quot;allowed&quot;.
&gt; +                AtomicString sandboxToken = AtomicString(characters + start, end - start);
&gt; +                if (equalIgnoringCase(sandboxToken, &quot;allow-same-origin&quot;))
&gt; +                    newSandboxFlagsDecl &amp;= ~SandboxFlagsOrigin;
&gt; +                else if (equalIgnoringCase(sandboxToken, &quot;allow-forms&quot;))
&gt; +                    newSandboxFlagsDecl &amp;= ~SandboxFlagsForms;
&gt; +                else if (equalIgnoringCase(sandboxToken, &quot;allow-scripts&quot;))
&gt; +                    newSandboxFlagsDecl &amp;= ~SandboxFlagsScripts;
&gt; +
&gt; +                start = end + 1;
&gt; +            }

Please split this parsing out into its own function?

&gt; Index: WebCore/html/HTMLIFrameElement.h
&gt; ===================================================================
&gt; --- WebCore/html/HTMLIFrameElement.h	(revision 50452)
&gt; +++ WebCore/html/HTMLIFrameElement.h	(working copy)
&gt; @@ -54,6 +54,11 @@ private:
&gt;      AtomicString m_name;
&gt;  };
&gt;  
&gt; +inline bool isIFrameSandboxStringWhitespace(UChar c)
&gt; +{
&gt; +    return c == &apos; &apos; || c == &apos;\r&apos; || c == &apos;\n&apos; || c == &apos;\t&apos; || c == &apos;\f&apos;;
&gt; +}


Does this need to be in the header?  It seems to be only used by one .cpp file.


&gt; Index: WebCore/inspector/InspectorController.cpp
&gt; ===================================================================
&gt; --- WebCore/inspector/InspectorController.cpp	(revision 50452)
&gt; +++ WebCore/inspector/InspectorController.cpp	(working copy)
&gt; @@ -1181,10 +1181,15 @@ void InspectorController::getCookies(lon
&gt;              Vector&lt;Cookie&gt; docCookiesList;
&gt;              rawCookiesImplemented = getRawCookies(document, document-&gt;cookieURL(), docCookiesList);
&gt;              
&gt; -            if (!rawCookiesImplemented)
&gt; +            if (!rawCookiesImplemented) {
&gt;                  // FIXME: We need duplication checking for the String representation of cookies.
&gt; -                stringCookiesList += document-&gt;cookie();
&gt; -            else {
&gt; +
&gt; +                ExceptionCode ec = 0;
&gt; +                // Ignore exception thrown by cookie() below -- the only case an exception is
&gt; +                // thrown here is when the iframe is sandboxed, which will never happen here
&gt; +                // because &quot;doc&quot; is the document of the main frame of the page.
&gt; +                stringCookiesList += document-&gt;cookie(ec);

Please add an ASSERT that an exception was not thrown.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161029</commentid>
    <comment_count>18</comment_count>
      <attachid>42473</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-05 17:40:59 -0800</bug_when>
    <thetext>Comment on attachment 42473
HTML5 IFrame sandboxing

&gt; -                     /*setter raises (DOMException)*/;
&gt; +                     getter raises (DOMException),
&gt; +                     setter raises (/*DOMException*/);

I don&apos;t understand the syntax here. It&apos;s not right to have &quot;setter raises ()&quot; is it? I suggest entirely commenting the setter out as before. Does sandboxing not cause trying to set the cookie to raise an exception?

&gt; +    , m_sandboxFlagsDecl(0)

Is this &quot;decl&quot; abbreviation needed? I think a better name would be m_sandboxFlagsFromAttribute.

&gt; +typedef uint8_t SandboxFlags;

We would normally use an enum for this, even though the values are flags. See examples like PaintLayerFlags in RenderLayer.h for a design pattern to follow.

&gt; +    SandboxFlags m_sandboxFlagsDecl;

We normally try to avoid having protected data members. How about exposing a protected setter function instead. You probably do not need a getter. One advantage of that is that updateSandboxFlags could be called automatically instead of relying on the derived class to do so.

&gt; +    } else if (attr-&gt;name() == sandboxAttr) {
&gt; +        SandboxFlags newSandboxFlagsDecl;
&gt; +        // Parse the unordered set of unique space-separated tokens.
&gt; +        if (attr-&gt;isNull())
&gt; +            newSandboxFlagsDecl = SandboxFlagsNone;
&gt; +        else {
&gt; +            newSandboxFlagsDecl = SandboxFlagsAll;
&gt; +            const UChar* characters = attr-&gt;value().characters();
&gt; +            unsigned length = attr-&gt;value().length();
&gt; +            unsigned start = 0;
&gt; +            while (true) {
&gt; +                while (start &lt; length &amp;&amp; isIFrameSandboxStringWhitespace(characters[start]))
&gt; +                    ++start;
&gt; +                if (start &gt;= length)
&gt; +                    break;
&gt; +                unsigned end = start + 1;
&gt; +                while (end &lt; length &amp;&amp; !isIFrameSandboxStringWhitespace(characters[end]))
&gt; +                    ++end;
&gt; +
&gt; +                // Turn off the corresponding sandbox flag if it&apos;s set as &quot;allowed&quot;.
&gt; +                AtomicString sandboxToken = AtomicString(characters + start, end - start);
&gt; +                if (equalIgnoringCase(sandboxToken, &quot;allow-same-origin&quot;))
&gt; +                    newSandboxFlagsDecl &amp;= ~SandboxFlagsOrigin;
&gt; +                else if (equalIgnoringCase(sandboxToken, &quot;allow-forms&quot;))
&gt; +                    newSandboxFlagsDecl &amp;= ~SandboxFlagsForms;
&gt; +                else if (equalIgnoringCase(sandboxToken, &quot;allow-scripts&quot;))
&gt; +                    newSandboxFlagsDecl &amp;= ~SandboxFlagsScripts;
&gt; +
&gt; +                start = end + 1;
&gt; +            }
&gt; +        }
&gt; +
&gt; +        if (newSandboxFlagsDecl != m_sandboxFlagsDecl) {
&gt; +            m_sandboxFlagsDecl = newSandboxFlagsDecl;
&gt; +            updateSandboxFlags();
&gt; +        }

This is too much code to have all inline here. You should factor all or some of this out into a separate parsing function.

It doesn&apos;t make sense to construct an AtomicString just so you can call equalIgnoringCase on it. You can just create a String, and if you do it by calling substring you might even enefit from a substring sharing optimization and avoid making a copy of the characters. It would be slightly better to write a charactersEqualIgnoringCase function for PlatformString.h -- long run we don&apos;t want to require creating a String object just to compare something with it.

&gt; +inline bool isIFrameSandboxStringWhitespace(UChar c)
&gt; +{
&gt; +    return c == &apos; &apos; || c == &apos;\r&apos; || c == &apos;\n&apos; || c == &apos;\t&apos; || c == &apos;\f&apos;;
&gt; +}

Do we really need a unique function for this? I guess this handles 0x000B differently from isASCIISpace, but it&apos;s really frustrating to have yet *another* whitespace function. Does sandboxing really need its own? Since this is the same as isClassWhitespace, maybe there is a pattern here. Maybe we can put this in ASCIICType.h if we can figure out a name to give it to distinguish it from isASCIISpace. Maybe if we audit them we will find that the other clients of isASCIISpace really don&apos;t want true for 0x000B. Wouldn&apos;t that be nice if we could just have the one function! I&apos;m surprised that web technology isn&apos;t consistent on this.

Looks like pretty good test coverage.

Since the sandboxing string has a custom parser, you need a test that tests all the edge cases; we don&apos;t want to learn about something like a buffer. All the various whitespace characters and other characters. Empty string. Leading whitespace, trailing, more than one space in the middle, etc. I didn&apos;t see that in any of the tests.

It&apos;s great to have lots of tests. But can we do more than one test in a single test file? It seems it would be better to have a smaller number of test files that tested a larger combination of things.

Normally we ask people to follow WebKit coding style for the test code too and here you have not done that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161590</commentid>
    <comment_count>19</comment_count>
    <who name="Yuan Song">song.yuan</who>
    <bug_when>2009-11-09 08:43:28 -0800</bug_when>
    <thetext>FYI: the revised patch will be submitted by my colleague, Patrik Persson. We&apos;re working together on this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161803</commentid>
    <comment_count>20</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-11-09 14:40:38 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; FYI: the revised patch will be submitted by my colleague, Patrik Persson. We&apos;re
&gt; working together on this patch.

Thanks so much for taking this on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162027</commentid>
    <comment_count>21</comment_count>
      <attachid>42859</attachid>
    <who name="Patrik Persson">patrik.j.persson</who>
    <bug_when>2009-11-10 06:11:18 -0800</bug_when>
    <thetext>Created attachment 42859
Revised patch for HTML5 sandboxing.

Updated in response to your feedback on the previous version. A few general comments:

* A copy of the sandbox status is now kept in the document&apos;s
  SecurityOrigin, as discussed in posts 8, 10, and 14.

* Both setter and getter for Document::cookie now raise exceptions,
  like they should). The FIXME note that used to be in Document.idl has
  been moved to Document.cpp, and made more specific.

* A new test has been added for the attribute parser, to ensure that
  it behaves nicely when given unconventional input.

* We have combined some test cases into larger ones: plugins
  (applets+embeds+objects), allowed navigation (child navigation, self
  navigation, sandbox propagation).

* Finally, we have set &apos;svn:executable&apos; on our CGI scripts, but we
  just can&apos;t get that carry over from svn-create-patch to
  svn-apply. You may need to do

    cd LayoutTests/http/tests/xmlhttprequest/resources
    chmod a+x access-control-sandboxed-iframe-*.cgi

  for things to work properly after patching.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162057</commentid>
    <comment_count>22</comment_count>
      <attachid>42859</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-10 08:17:41 -0800</bug_when>
    <thetext>Comment on attachment 42859
Revised patch for HTML5 sandboxing.

This is getting really close!  Thanks for working on this feature.

 106     if (accessControlOriginString != &quot;*&quot; &amp;&amp; securityOrigin-&gt;isSandboxed(SandboxOrigin))

I don&apos;t quite understand why we need to look at accessControlOriginString in this check.  It seems like passesAccessControlCheck should just return true unconditionally when accessControlOriginString == &quot;*&quot; before we get here.  Also,

 110     if (!accessControlOrigin-&gt;isSameSchemeHostPort(securityOrigin))

Should return false when securityOrigin is sandboxed.

 90     HTMLFrameOwnerElement::inheritSandboxFlags

Shouldn&apos;t this push the new sandbox flags into the document&apos;s security origin to keep it up-to-date?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162058</commentid>
    <comment_count>23</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-10 08:20:13 -0800</bug_when>
    <thetext>To be slightly more precise, it seems like passesAccessControlCheck shouldn&apos;t know anything about sandboxing.  All that knowledge should be pushed into SecurityOrigin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162462</commentid>
    <comment_count>24</comment_count>
      <attachid>42959</attachid>
    <who name="Patrik Persson">patrik.j.persson</who>
    <bug_when>2009-11-11 06:14:13 -0800</bug_when>
    <thetext>Created attachment 42959
Revised patch.

Changes from previous patch:

* Moved up to r50793.

* SecurityOrigin::isSameSchemeHostPort now considers sandbox
  status. CrossOriginAccessControl no longer knows anything about
  sandboxing.

* HTMLFrameOwnerElement::inheritSandboxFlags now copies sandbox flags
  to the document&apos;s SecurityOrigin.

  Also excluded some logic in the same method to terminate flag
  propagation early if flags have not changed: if the &apos;inDocument()&apos;
  status has changed, we still need to copy flags to the descendants&apos;
  SecurityOrigins.

* Minor changes to meet coding style guidelines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162481</commentid>
    <comment_count>25</comment_count>
      <attachid>42959</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-11 08:26:36 -0800</bug_when>
    <thetext>Comment on attachment 42959
Revised patch.

This looks great.  We can&apos;t land this automatically because of the svn:executable bits, but I&apos;ll be happy to land it manually.

Let&apos;s give other reviewers until Monday to comment before landing the patch.  Thanks again!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162491</commentid>
    <comment_count>26</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-11 08:37:09 -0800</bug_when>
    <thetext>svn-apply not understanding the executable bit is tracked by bug 27204.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162546</commentid>
    <comment_count>27</comment_count>
      <attachid>42959</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-11 10:26:54 -0800</bug_when>
    <thetext>Comment on attachment 42959
Revised patch.

&gt; +    // Sandboxed iframes cannot open new auxiliary browsing contexts
&gt; +    if (openerFrame &amp;&amp; openerFrame-&gt;ownerElement()
&gt; +        &amp;&amp; openerFrame-&gt;ownerElement()-&gt;isSandboxed(SandboxNavigation))
&gt; +        return 0;

I think it would be better to have an isSandboxed function you can call on the script controller or some other object in the family of Frame objects. Having the individual callers dig down to the owner element seems a little inelegant. This would simplify some the call sites. I think that the fact that sandboxing is controlled solely by the owner element is something we might change in the future, and it would be best to have that policy localized.

Adam may have a suggestion about which object should have it. I believe in general we would like a member of the Frame family of objects to know how sandboxed the frame keeps its documents, and be consulted in cases where there is not a document involved, and use the document&apos;s security origin in all cases where there is a document involved. We want clients to not know specifically that sandboxing comes from owner elements, and also ideally we want to make it difficult to accidentally consult the wrong sandboxing flags (the current flags on the frame instead of the ones on the document which may no longer be current that frame, for example).

&gt; +    HTMLFrameOwnerElement* ownerElement = m_frame-&gt;ownerElement();
&gt; +    if (ownerElement &amp;&amp; ownerElement-&gt;isSandboxed(SandboxScripts))
&gt; +        return false;

Same comment/question as above.

&gt; +        if (isHTMLDocument()) {
&gt; +            ExceptionCode ec = 0;   // Exception (for sandboxed documents) ignored
&gt; +            static_cast&lt;HTMLDocument*&gt;(this)-&gt;setCookie(content, ec);
&gt; +        }

When ignoring an exception, you do not have to initialize the ExceptionCode, and it&apos;s probably best to consistently not do it. If you were going to look at the exception code, then you would be obligated to initialize it.

Normally we use a single space before comments, not three spaces. And we put periods at the ends of comments.

&gt; +    // Set the iframe sandbox origin flag from the corresponding property 
&gt; +    // of its frame owner element (iframe)
&gt; +    if (HTMLFrameOwnerElement* ownerElement = m_frame-&gt;ownerElement())
&gt; +        securityOrigin()-&gt;setSandboxFlags(ownerElement-&gt;sandboxFlags());

Again, might be good to get the sandbox flags from some Frame-family object rather than actually going to the owner element explicitly.

&gt; -    if (settings &amp;&amp; settings-&gt;isJavaEnabled()) {
&gt; +    if (settings &amp;&amp; settings-&gt;isJavaEnabled()
&gt; +        &amp;&amp; !document()-&gt;securityOrigin()-&gt;isSandboxed(SandboxPlugins)) {

&gt;      if (!settings || !settings-&gt;isJavaEnabled())
&gt;          return 0;
&gt;  
&gt; +    if (inDocument() &amp;&amp; document()-&gt;securityOrigin()-&gt;isSandboxed(SandboxPlugins))
&gt; +        return 0;

I&apos;d like to see the above two checks factored to share code instead of repeating the logic twice.

I know I should have commented on this in the earlier round, but I think the actual sandbox flags should live in some object in the Frame family, not in the owner element itself. The owner element could map the attribute to sandbox flags, but the actual sandboxing state could be stored elsewhere, within the Frame. This change isn&apos;t mandatory but it seems like something that could make the code clearer and more elegant. And prepare us for having other ways to control sandboxing other than attributes on the owner element.

&gt; +void HTMLFrameOwnerElement::inheritSandboxFlags(SandboxFlags flagsFromParent)
&gt; +{
&gt; +    m_sandboxFlags = m_sandboxFlagsFromAttribute | flagsFromParent;
&gt; +
&gt; +    if (inDocument())
&gt; +        document()-&gt;securityOrigin()-&gt;setSandboxFlags(m_sandboxFlags);

This seems wrong. It is changing the sandbox flags of a document based on an element inside that document!

&gt; +void HTMLIFrameElement::addSandboxStatus(MappedAttribute* attr)

In a new function I&apos;d prefer you use a whole word, attribute, rather than the abbreviation. Words are usually easier to read.

It&apos;s great that you factored this out. But I think a slightly better factoring would be to factor our just the parsing. The call to setSandboxFlagsFromAttribute could be in the caller. I think that&apos;s a slightly clearer division of responsibilities.

&gt; +                ExceptionCode ec = 0;
&gt; +                // Ignore exception thrown by cookie() below -- the only case an exception is
&gt; +                // thrown here is when the iframe is sandboxed, which will never happen here
&gt; +                // because &quot;doc&quot; is the document of the main frame of the page.
&gt; +                stringCookiesList += document-&gt;cookie(ec);
&gt; +                ASSERT(ec == 0);

The variable name is &quot;document&quot;, not &quot;doc&quot;, right?

The two sentences should each have periods. There&apos;s no need to splice them together with a dash.

&gt; +    HTMLFrameOwnerElement* ownerElement = m_frame-&gt;ownerElement();
&gt; +    if (ownerElement &amp;&amp; ownerElement-&gt;isSandboxed(SandboxForms))
&gt; +        return;

Same comment again about explicitly getting at the owner element.

&gt; +        HTMLFrameOwnerElement* ownerElement = m_frame-&gt;ownerElement();
&gt; +        if (ownerElement &amp;&amp; ownerElement-&gt;isSandboxed(SandboxPlugins))
&gt; +            return false;

And here.

&gt; +    // Sandboxed frames can only navigate their descendants.
&gt; +    HTMLFrameOwnerElement* ownerElement = m_frame-&gt;ownerElement();
&gt; +    if (ownerElement &amp;&amp; ownerElement-&gt;isSandboxed(SandboxNavigation)
&gt; +        &amp;&amp; !targetFrame-&gt;tree()-&gt;isDescendantOf(m_frame))
&gt; +        return false;

And here. I also think you should consider putting these things on one line. In this project we tend to make longer lines and not break things so early, even though I know on others they try to stick to 80 columns.

&gt; +        // Sandboxing status, copied from the document&apos;s ownerElement

I don&apos;t think &quot;copied from the document&apos;s ownerElement&quot; is a good comment. I would instead say &quot;determined by the frame&quot; or something along those lines. Also, please include a period.

&gt; +    // Disable the usage of the database if the sandboxed origin browsing context flags takes effect
&gt; +    if (origin-&gt;isSandboxed(SandboxOrigin))
&gt; +        return false;

Need a period here.

&gt; +                    if (cookiesEnabled(document)) {
&gt; +                        ExceptionCode ec = 0;   // Exception (for sandboxed documents) ignored
&gt; +                        document-&gt;setCookie(m_handshake.serverSetCookie(), ec);
&gt; +                    }

When ignoring an exception, you do not have to initialize the ExceptionCode, and it&apos;s probably best to consistently not do it. If you were going to look at the exception code, then you would be obligated to initialize it.

Normally we use a single space before comments, not three spaces. And we put periods at the ends of comments.

Changing to review- because of the apparent error in HTMLFrameOwnerElement::inheritSandboxFlags. My other comments are not important enough and I would not have changed the review state based on them, although I think they could improve this work.

This is going to be a great feature to have. Thank you very much for your work on it!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162594</commentid>
    <comment_count>28</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-11 11:45:15 -0800</bug_when>
    <thetext>&gt; Adam may have a suggestion about which object should have it. I believe in
&gt; general we would like a member of the Frame family of objects to know how
&gt; sandboxed the frame keeps its documents, and be consulted in cases where there
&gt; is not a document involved, and use the document&apos;s security origin in all cases
&gt; where there is a document involved.

I&apos;m not sure there&apos;s a great place in Frame for this currently.  ScriptController is tempting, but sandboxing affects more than scripts.  The rest of our security-related state has document lifetime.  Maybe we need to create something here?

There&apos;s also a subtle bug for the case of

&lt;iframe src=&quot;about:blank&quot; sandbox&gt;&lt;/iframe&gt;

I think that will end up sandboxing the containing frame because the SecurityOrigin object is shared by the two frames.

In general, I think it&apos;s better to land the initial implementation and iterate instead of trying to get everything perfect in the first patch.  I&apos;d recommend addressing Darin&apos;s comments in this patch (because they affect most of the call sites) and worrying about the about:blank case in a future patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163991</commentid>
    <comment_count>29</comment_count>
      <attachid>43307</attachid>
    <who name="Patrik Persson">patrik.j.persson</who>
    <bug_when>2009-11-16 07:48:51 -0800</bug_when>
    <thetext>Created attachment 43307
Thank you for your informative review. Here&apos;s our updated patch.

* General: Clarified comments and added missing periods.

* Document, WebSocketChannel: Removed initializations of ignored
  exceptions.

* Frame, HTMLFrameOwnerElement:

  - Moved most of the sandbox flag management to Frame. Modified call
    sites in JSDOMWindowCustom, ScriptController, and FrameLoader to
    reflect this.

    The flags from the attribute are still kept in
    HTMLFrameOwnerElement. (There is not necessarily a frame available
    to store the flags in when the attribute is parsed.)

  - Sandbox flags are now copied to the document contained by the
    Frame, rather than the one containing the Frame. This was a bug
    on my part.

* HTMLAppletElement: Introduced private helper method isJavaEnabled().

* HTMLIFrameElement: Separated parsing of sandbox attribute from
  assignment of sandbox status.

* We have _NOT_ accounted for &quot;about:blank&quot; frames. We agree with
  Adam&apos;s comment that this should be addressed by a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164006</commentid>
    <comment_count>30</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-16 09:25:42 -0800</bug_when>
    <thetext>(In reply to comment #29)
&gt;   - Moved most of the sandbox flag management to Frame. Modified call
&gt;     sites in JSDOMWindowCustom, ScriptController, and FrameLoader to
&gt;     reflect this.

It&apos;s much better to have this in the frame rather than in the owner element. But new logic in the actual class Frame is not right. Frame is supposed to simply be a &quot;hub&quot; class, with the substantive code in other classes. Frame itself simply holds the pointers to these other objects. The new logic could go in FrameLoader or one of the other Frame sub-objects, but it should not be added to Frame itself. If you look at Frame.h you&apos;ll see that most of the member functions and data are planned to be moved to other objects.

Adam Barth may have an opinion about which is the right object to put this in, since he is working to refactor FrameLoader to make it smaller.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164014</commentid>
    <comment_count>31</comment_count>
      <attachid>43307</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-16 09:58:47 -0800</bug_when>
    <thetext>Comment on attachment 43307
Thank you for your informative review. Here&apos;s our updated patch.

Exciting work. Looking forward to getting this feature in.

Below I&apos;ll say &quot;the frame loader&quot; to mean whatever object in the frame collection we use for the sandboxing logic. I think probably the frame loader. The Frame object itself should not have new functions.

&gt; +bool HTMLAppletElement::isJavaEnabled() const
&gt; +{
&gt; +    if (!inDocument())
&gt; +        return false;

This is a policy change. Before there was no check of inDocument. I presume this change is done because it fixes a bug. Is there a test that shows why this improves things? Can this bug fix be done in a separate patch?

&gt; +void HTMLFrameOwnerElement::setSandboxFlagsFromAttribute(SandboxFlags flagsFromAttribute)
&gt; +{
&gt; +    m_sandboxFlagsFromAttribute = flagsFromAttribute;
&gt; +    updateSandboxFlags();
&gt; +}

I think the argument can just be named &quot;flags&quot;. I also think that maybe m_sandboxFlags would be fine for the data member. After all, these are just the element&apos;s flags now, not the frame&apos;s so the &quot;from attribute&quot; distinction may not be necessary. These are the sandbox flags provided by the element.

&gt; +void HTMLFrameOwnerElement::updateSandboxFlags()
&gt; +{
&gt; +    SandboxFlags flagsFromParent = m_sandboxFlagsFromAttribute;
&gt; +    
&gt; +    // Inherit sandbox flags from the parent frame, if there is one.
&gt; +    Frame* parentFrame;
&gt; +    if (inDocument() &amp;&amp; (parentFrame = document()-&gt;frame()))
&gt; +        flagsFromParent |= parentFrame-&gt;sandboxFlags();
&gt; +
&gt; +    if (contentFrame())
&gt; +        contentFrame()-&gt;inheritSandboxFlags(flagsFromParent);
&gt; +}

The logic here should be moved to FrameLoader. There&apos;s no reason to take a trip through the owner element to do this operation. A frame can find its own parent and there is no need for the owner element to pass the flags that it gets from the parent document. It is appropriate for the owner element to pass in the flags it is specifying when telling the frame the have changed, although even that is not entirely necessary. The function in the frame loader could be called setOwnerElementSandboxFlags or ownerElementSandboxFlagsChanged or even updateSandboxFlags if you decide to have it get the flags directly rather than taking an argument.

The rules about inheritance of sandbox flags do *not* belong in the owner element code, but rather in the frame loader. A frame&apos;s inheritance of its parent&apos;s sandbox flags should be done without being triggered by the owner element, simply because it&apos;s installed in the frame tree with a particular parent, and should not even depend on the presence of an owner element.

&gt; +void HTMLFrameOwnerElement::insertedIntoDocument()
&gt; +{
&gt; +    HTMLElement::insertedIntoDocument();
&gt; +
&gt; +    updateSandboxFlags();
&gt; +}

If insertedIntoDocument is one place we need to update these flags, what about when the element is removed from a document? Is there a good reason that can&apos;t affect sandbox flags or doesn&apos;t matter? Could we include a test case to test this? Does the frame already exist when insertedIntoDocument is called? If not, then do we really need the updateSandboxFlags call? Which test fails if you remove this function override?

&gt; +#include &quot;Frame.h&quot;
&gt;  #include &quot;HTMLElement.h&quot;

This is something we do not want to do; including &quot;Frame.h&quot; in another header is something to be avoided if possible, because Frame.h in turn includes a *lot* of other files. The SandboxFlags enum should be put into a smaller header file. FrameLoaderTypes.h is probably the right choice. We don&apos;t want all files that include HTMLFrameOwnerElement.h to include Frame.h too and all the files it includes. In general we try to not &quot;include the world&quot;; this is the reason for files like FrameLoaderTypes.h, RenderStyleContents.h, ScrollBehavior.h, PointerEventsHitRules.h, and others.

It&apos;s especially strange that this file includes &quot;Frame.h&quot; when the sandbox flags enum is in SecurityOrigin.h. But even SecurityOrigin.h probably should not be included here.

&gt; +            AtomicString sandboxToken = AtomicString(characters + start, end - start);
&gt; +            if (equalIgnoringCase(sandboxToken, allowSameOrigin))
&gt; +                newSandboxFlags &amp;= ~SandboxOrigin;
&gt; +            else if (equalIgnoringCase(sandboxToken, allowForms))
&gt; +                newSandboxFlags &amp;= ~SandboxForms;
&gt; +            else if (equalIgnoringCase(sandboxToken, allowScripts))
&gt; +                newSandboxFlags &amp;= ~SandboxScripts;

It&apos;s a mistake to construct an AtomicString here. There is extra cost, and no benefit, to making an AtomicString instead of just a String. Similarly, the constants for the allow strings can just be const char*. There is little to no benefit to constructing an AtomicString for each of them. Comparing with a const char* is roughly the same performance as comparing with a string object if ignoring case.

Longer term, we should create a new function, charactersEqualIgnoringCase(const UChar*, size_t, const char*), and use it in this case; short term you should just make a String and use equalIgnoringCase.

I would call the SandboxFlags variable just &quot;flags&quot;, not &quot;newSandboxFlags&quot;, given the purpose of the function. The extra words aren&apos;t really needed inside a function with the focused job of parsing.

&gt; +                ASSERT(ec == 0);

WebKit coding style writes this ASSERT(!ec) rather than with &quot;== 0&quot;.

&gt; +        void inheritSandboxFlags(SandboxFlags); // Propagate sandbox flags to descendants in the frame tree.

This seems like the wrong interface. The caller should not be passing sandbox flags in. See my other comments above.

These functions should be on FrameLoader rather than Frame. It&apos;s too bad FrameLoader is so big, but putting new members directly into Frame is even worse than adding new FrameLoader members.

&gt; +    // Disable database access if the sandboxed origin flag is set.
&gt; +    if (origin-&gt;isSandboxed(SandboxOrigin))
&gt; +        return false;

Checks directly on the sandboxing setting seem a little low level to me. Is there some higher level question we can ask the security origin? Maybe canAccess or canRequest?

I think it is strange that isSameSchemeHostPort is checking the sandboxing flags. That function now doesn&apos;t make as much sense as before, because it can return false even if you ask if a security origin is the same as itself. Are you sure that&apos;s the bst design for this? Can we look at call sites and consider a different approach?

I&apos;m not sure all the isSandboxed calls are talking to the right frame. In particular, I am surprised that createWindow is checking openerFrame rather than either lexicalFrame or dynamicFrame and that FrameLoader::submitForm is checking the frame rather than the document. Those might be right, but I&apos;m not sure they are.

Where is the code where a new document gets its security origin flags set based on the frame it is created in?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164021</commentid>
    <comment_count>32</comment_count>
      <attachid>43307</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-11-16 10:21:42 -0800</bug_when>
    <thetext>Comment on attachment 43307
Thank you for your informative review. Here&apos;s our updated patch.

A couple of minor comments.

&gt; +                     getter raises (DOMException),
&gt; +                     setter raises (DOMException);

This can be just &quot;raises (DOMException)&quot;, no need for separate lines for getter and setter.

&gt; +bool HTMLAppletElement::isJavaEnabled() const
&gt; +{
&gt; +    if (!inDocument())
&gt; +        return false;
&gt; +
&gt; +    if (document()-&gt;securityOrigin()-&gt;isSandboxed(SandboxPlugins))
&gt; +        return false;
&gt; +
&gt; +    Settings* settings = document()-&gt;settings();
&gt; +    return settings &amp;&amp; settings-&gt;isJavaEnabled();
&gt; +}

&lt;...&gt;

 bool ScriptController::isEnabled()
 {
+    if (m_frame-&gt;isSandboxed(SandboxScripts))
+        return false;

I&apos;m not sure if it&apos;s so great to have policy checks in simple &quot;isEnabled&quot; functions. I don&apos;t have better names to suggest, but for functions like these, the names should probably start with &quot;should&quot; or &quot;can&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164035</commentid>
    <comment_count>33</comment_count>
    <who name="Patrik Persson">patrik.j.persson</who>
    <bug_when>2009-11-16 11:16:06 -0800</bug_when>
    <thetext>(In reply to comment #31)
&gt; (From update of attachment 43307 [details])

Before we revise the patch, I&apos;d just like to make sure I understand you right.

&gt; &gt; +bool HTMLAppletElement::isJavaEnabled() const
&gt; &gt; +{
&gt; &gt; +    if (!inDocument())
&gt; &gt; +        return false;
&gt; 
&gt; This is a policy change. Before there was no check of inDocument. I presume
&gt; this change is done because it fixes a bug. Is there a test that shows why this
&gt; improves things? Can this bug fix be done in a separate patch?

My mistake. I really intended to do &quot;if (document())&quot;, since document() is dereferenced further down in the code.

&gt; &gt; +void HTMLFrameOwnerElement::updateSandboxFlags()
&gt; &gt; +{
&gt; &gt; +    ...
&gt; &gt; +}
&gt; 
&gt; The logic here should be moved to FrameLoader.

I see. I&apos;ll prepare a patch with the logic currently in Frame, and as much as possible of the logic in the HTMLFrameOwnerElement, moved to the FrameLoader.

&gt; I think it is strange that isSameSchemeHostPort is checking the sandboxing
&gt; flags. That function now doesn&apos;t make as much sense as before, because it can
&gt; return false even if you ask if a security origin is the same as itself. Are
&gt; you sure that&apos;s the bst design for this? Can we look at call sites and consider
&gt; a different approach?

I did this in response to comment #22. It should probably return true when other==this, though. It does so without the patch, so such a check shouldn&apos;t break anything.

&gt; Where is the code where a new document gets its security origin flags set based
&gt; on the frame it is created in?

Currently in Frame::inheritSandboxFlags() and Document::initSecurityContext().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164047</commentid>
    <comment_count>34</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-16 12:10:22 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; My mistake. I really intended to do &quot;if (document())&quot;, since document() is
&gt; dereferenced further down in the code.

The document() of an element can never be 0. The only node that can have a document() of 0 is a DocumentType.

&gt; &gt; I think it is strange that isSameSchemeHostPort is checking the sandboxing
&gt; &gt; flags. That function now doesn&apos;t make as much sense as before, because it can
&gt; &gt; return false even if you ask if a security origin is the same as itself. Are
&gt; &gt; you sure that&apos;s the bst design for this? Can we look at call sites and consider
&gt; &gt; a different approach?
&gt; 
&gt; I did this in response to comment #22. It should probably return true when
&gt; other==this, though. It does so without the patch, so such a check shouldn&apos;t
&gt; break anything.

I don&apos;t think that&apos;s right. A function shouldn’t have a name that gives only part of what it does. Special values like NaN that are never equal to anything are confusing in IEEE floating point, and I think this would be confusing too.

I imagine Adam can suggest a cleaner way to do this. Maybe we can both rename and change what the function does. Or we can change callers to call something slightly higher level.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164103</commentid>
    <comment_count>35</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-16 15:03:54 -0800</bug_when>
    <thetext>FrameLoader is fine for now.  We might move it later, but I&apos;m not sure there&apos;s another object that&apos;s better at the moment.

&gt; I&apos;m not sure all the isSandboxed calls are talking to the right frame. In
&gt; particular, I am surprised that createWindow is checking openerFrame rather
&gt; than either lexicalFrame or dynamicFrame and that FrameLoader::submitForm is
&gt; checking the frame rather than the document. Those might be right, but I&apos;m not
&gt; sure they are.

lexicalFrame is likely correct here.  dynamicFrame would be the &quot;first script&quot; in HTML5 parlance.  openerFrame is whatever the attacker wants it to be.

w.r.t. FrameLoader::submitForm, I think it&apos;s fine to use m_frame here.  That function only works for active documents anyway, so the frame and the document are in harmony.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164205</commentid>
    <comment_count>36</comment_count>
    <who name="Patrik Persson">patrik.j.persson</who>
    <bug_when>2009-11-17 05:35:44 -0800</bug_when>
    <thetext>(In reply to comment #32)
&gt; (From update of attachment 43307 [details])
&gt; 
&gt; &gt; +                     getter raises (DOMException),
&gt; &gt; +                     setter raises (DOMException);
&gt; 
&gt; This can be just &quot;raises (DOMException)&quot;, no need for separate lines for getter
&gt; and setter.

I wasn&apos;t able to get this revised exception specification to work. The
current (two-line) specification results in this Objective-C code
(DOMDocument.mm):

- (NSString *)cookie
{
    WebCore::ExceptionCode ec = 0;
    NSString *result = IMPL-&gt;cookie(ec);
    WebCore::raiseOnDOMError(ec);
    return result;
}

- (void)setCookie:(NSString *)newCookie
{
    WebCore::ExceptionCode ec = 0;
    IMPL-&gt;setCookie(newCookie, ec);
    WebCore::raiseOnDOMError(ec);
}

However, changing this to just &quot;raises (DOMException)&quot; results in
generated code that does not expect exceptions (giving me
compilation errors):

  attribute [ConvertNullToNullString] DOMString cookie
                     raises (DOMException);

  --

- (NSString *)cookie
{
    return IMPL-&gt;cookie();
}

- (void)setCookie:(NSString *)newCookie
{
    IMPL-&gt;setCookie(newCookie);
}

Am I doing it wrong, or should this be treated as a separate issue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164262</commentid>
    <comment_count>37</comment_count>
      <attachid>43367</attachid>
    <who name="Patrik Persson">patrik.j.persson</who>
    <bug_when>2009-11-17 10:11:08 -0800</bug_when>
    <thetext>Created attachment 43367
New patch for HTML5 iframe sandboxing.

Changes:

* Changed openerFrame to lexicalFrame in JSDOMWindow::createWindow().

* Moved sandbox flag management to FrameLoader. Functions
  updateSandboxFlags() and inheritSandboxFlags() have been combined
  into the single function ownerElementSandboxFlagsChanged().

* Moved SandboxFlag(s) type definitions to FrameLoaderTypes.h.

* Removed HTMLFrameOwnerElement::insertedIntoDocument() override
  (unnecessary in this design).

* Removed erroneous inDocument() check in
  HTMLAppletElement::isJavaEnabled().

* Renamed HTMLFrameOwnerElement::m_sandboxFlagsFromAttribute to
  m_sandboxFlags.

* Introduced SecurityOrigin::canCreateDatabase(). I was not able to
  figure out how to use canAccess() or canRequest() for this purpose
  in a clear way.

* Changed function parseSandboxAttribute() in HTMLIFrameElement to use
  regular Strings. Also renamed &apos;newSandboxFlags&apos; to &apos;flags&apos; in same
  function.

* Moved sandboxing check from SecurityOrigin::isSameSchemeHostPort()
  to SecurityOrigin::equal(). (Database origin checks depend on it.)

* Added sandboxing check to passesAccessControlCheck() in
  CrossOriginAccessControl.cpp.

* I have NOT addressed the comment on ScriptController::isEnabled()
  (comment #32). There&apos;s quite a lot of calls to it. If someone
  proposes a better name for this function (or another way of doing
  it), we&apos;ll be happy to change it.

* Minor changes to match coding guidelines:
  - changed &quot;ec == 0&quot; to &quot;!ec&quot; in InspectorController.cpp

Please let us know what you think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164467</commentid>
    <comment_count>38</comment_count>
      <attachid>43367</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-17 23:04:52 -0800</bug_when>
    <thetext>Comment on attachment 43367
New patch for HTML5 iframe sandboxing.

Looks great. Very few issues remain.

&gt; +    if (m_frame-&gt;loader()-&gt;isSandboxed(SandboxScripts))
&gt; +        return false;
&gt; +        
&gt;      Settings* settings = m_frame-&gt;settings();
&gt;      return m_frame-&gt;loader()-&gt;client()-&gt;allowJavaScript(settings &amp;&amp; settings-&gt;isJavaScriptEnabled());

I think maybe the sandboxing should contribute to the allowJavaScript argument rather than unconditionally returning false here. Ultimate control should go to the frame loader client. Not sure if this will ever matter in practice.

&gt; +    // FIXME: the HTML5 DOM spec states that this attribute can raise an
&gt; +    // INVALID_STATE_ERR exception on getting if the Document has no
&gt; +    // browsing context.

The word &quot;the&quot; should have a capital &quot;T&quot;.

&gt; +void HTMLFrameOwnerElement::setSandboxFlags(SandboxFlags flags)
&gt; +{
&gt; +    m_sandboxFlags = flags;
&gt; +    
&gt; +    if (Frame* frame = contentFrame())
&gt; +        frame-&gt;loader()-&gt;ownerElementSandboxFlagsChanged();
&gt; +}

Often in a function like this we would return early if m_sandboxFlags was already == flags. Maybe that&apos;s just excess not-really-helpful code?

&gt; +void FrameLoader::ownerElementSandboxFlagsChanged()
&gt; +{
&gt; +    m_sandboxFlags = SandboxNone;
&gt; +    
&gt; +    if (Frame* parentFrame = m_frame-&gt;tree()-&gt;parent())
&gt; +        m_sandboxFlags |= parentFrame-&gt;loader()-&gt;sandboxFlags();
&gt; +
&gt; +    if (HTMLFrameOwnerElement* ownerElement = m_frame-&gt;ownerElement())
&gt; +        m_sandboxFlags |= ownerElement-&gt;sandboxFlags();
&gt; +
&gt; +    if (Document* doc = m_frame-&gt;document()) 
&gt; +        doc-&gt;securityOrigin()-&gt;setSandboxFlags(m_sandboxFlags);

I&apos;d prefer &quot;document&quot; over &quot;doc&quot; here for the local variable name.

&gt; +    for (Frame* child = m_frame-&gt;tree()-&gt;firstChild(); child; child = child-&gt;tree()-&gt;nextSibling())
&gt; +        child-&gt;loader()-&gt;ownerElementSandboxFlagsChanged();
&gt; +}

I suggest renaming this function to updateSandboxFlags and calling it from both FrameLoader::ownerElementSandboxFlagsChanged and FrameLoader::init. Then you can get rid of the call to this function in Frame.cpp.

It would be slightly nicer if this used a non-recursive algorithm. You could put most of the logic into a private function named updateSandboxFlagsForSingleFrame and then walk all descendant frames without using recursion by using tree()-&gt;traverseNext(). On the other hand, I suppose this is not a real issue, since we can&apos;t have an arbitrarily deeply nested frame tree. Still, I&apos;d like it slightly better that way.

    for (Frame* affectedFrame = m_frame; affectedFrame; affectedFrame = affectedFrame-&gt;tree()-&gt;traverseNext(m_frame))
        affectedFrame-&gt;loader()-&gt;updateSandboxFlagsForSingleFrame();

I also think we might want to compute the new sandbox flags and do an early return in the case where m_sandboxFlags hasn&apos;t changed. Again, not sure that really is an improvement.

&gt; @@ -369,6 +371,9 @@ bool SecurityOrigin::equal(const Securit
&gt;      if (m_domainWasSetInDOM &amp;&amp; m_domain != other-&gt;m_domain)
&gt;          return false;
&gt;  
&gt; +    if (isSandboxed(SandboxOrigin) || other-&gt;isSandboxed(SandboxOrigin))
&gt; +        return false;
&gt; +
&gt;      return true;

I still don&apos;t think this is the right. The function name should not be equal if it has a special rule that says it will return false if either frame is sandboxed. The function name should change if its behavior is changing like this. How many different callers of SecurityOrigin::equal are there? Can we easily change the name of the function? What is the concept of the function? Can we change it to be a canAccessAsPartOfSameOrigin function or something like that but less wordy? It&apos;s not really an &quot;equal&quot; check if it&apos;s actually an check to see if some action is allowed.

Even though this is almost perfect, I think I&apos;ll say review- because of the SecurityOrigin::equal design issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164470</commentid>
    <comment_count>39</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-17 23:12:19 -0800</bug_when>
    <thetext>(In reply to comment #37)
&gt; * Moved sandboxing check from SecurityOrigin::isSameSchemeHostPort()
&gt;   to SecurityOrigin::equal(). (Database origin checks depend on it.)

The database origin checks should use a higher level function rather than an &quot;equal&quot; function. We just need a name.

&gt; * I have NOT addressed the comment on ScriptController::isEnabled()
&gt;   (comment #32). There&apos;s quite a lot of calls to it. If someone
&gt;   proposes a better name for this function (or another way of doing
&gt;   it), we&apos;ll be happy to change it.

I agree with Alexey that we need a name change since it&apos;s now checking more than just whether scripting is enabled. I&apos;d like to look at call sites to figure out what they are checking. Maybe they are checking if they can execute scripts, in which case canExecuteScripts() would be one good name. Or maybe they are checking something else.

It&apos;s true that there are between 10 and 20 call sites, but I don&apos;t think that&apos;s too many to rename. I won&apos;t insist on doing it in this patch, but I&apos;d like to see it done. To keep the code readable over time it is important to avoid letting design changes creep in that subtle change the meanings of functions, while retaining their old names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164551</commentid>
    <comment_count>40</comment_count>
      <attachid>43431</attachid>
    <who name="Patrik Persson">patrik.j.persson</who>
    <bug_when>2009-11-18 06:01:14 -0800</bug_when>
    <thetext>Created attachment 43431
Revised patch in response to comment #38 and comment #39.

I understand your concerns regarding SecurityOrigin::equal(). We had a
closer look, and think that SecurityOriginHash is a better place for
this check. The check now explicitly concerns hash table equality (for
same-origin comparisons). The change also fits nicely with a FIXME in
SecurityOrigin calling for similar refactoring.

In a sense the concern regarding equal() remains, but on a smaller
scale (SecurityOriginHash rather than SecurityOrigin). I am currently
unable to see how to get around this without a re-design of the local
storage database. (As long as the database uses hash tables for
same-origin comparisons, there has to be an equals() somewhere that
compares two SecurityOrigins and accounts for sandboxing.)

Please let us know what you think of this design.

Other changes:

* Revised ScriptController check.

* Refactored frame subtree traversal in FrameLoader.

* Added early return to HTMLFrameOwnerElement::setSandboxFlags() and
  FrameLoader::updateSandboxFlagsForSingleFrame().

* Fixed capitalization in Document.cpp comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164568</commentid>
    <comment_count>41</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-18 07:51:25 -0800</bug_when>
    <thetext>(In reply to comment #40)
&gt; I understand your concerns regarding SecurityOrigin::equal(). We had a
&gt; closer look, and think that SecurityOriginHash is a better place for
&gt; this check. The check now explicitly concerns hash table equality (for
&gt; same-origin comparisons). The change also fits nicely with a FIXME in
&gt; SecurityOrigin calling for similar refactoring.

I don&apos;t think that&apos;s right. I appreciate your efforts, but this is still wrong.

&gt; I am currently
&gt; unable to see how to get around this without a re-design of the local
&gt; storage database. (As long as the database uses hash tables for
&gt; same-origin comparisons, there has to be an equals() somewhere that
&gt; compares two SecurityOrigins and accounts for sandboxing.)

That&apos;s incorrect.

There&apos;s no reason we can&apos;t do security checks either before or after looking in the hash table. There&apos;s no reason to put sandboxed security origins into the table in the first place. More importantly, the sandboxing state could change on a security origin once it&apos;s in the hash table.

The point of the hash is to be able to store per-security-origin data such as the quota, database origin, usage, and storage area. There&apos;s no reason the hash&apos;s equality function also has to perform the security check.

There&apos;s no need for the equality function of the hash table itself to consider the sandbox flags. There&apos;s no need to look at the hash table at all if the origin is sandboxed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164580</commentid>
    <comment_count>42</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-18 08:29:24 -0800</bug_when>
    <thetext>W.r.t. the equal() issue: The way a sandboxed origin is modeled in HTML5 is as a &quot;unique value,&quot; which you can think of as a random string for each instance that&apos;s not equal to anything except itself.  We might improve our implementation of sandboxed SecurityOrigins by representing them this way.  If we do that, it&apos;s clear that two sandboxed origins are equal if, and only if, they are the same physical object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164589</commentid>
    <comment_count>43</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-18 09:19:09 -0800</bug_when>
    <thetext>(In reply to comment #42)
&gt; W.r.t. the equal() issue: The way a sandboxed origin is modeled in HTML5 is as
&gt; a &quot;unique value,&quot; which you can think of as a random string for each instance
&gt; that&apos;s not equal to anything except itself.  We might improve our
&gt; implementation of sandboxed SecurityOrigins by representing them this way.  If
&gt; we do that, it&apos;s clear that two sandboxed origins are equal if, and only if,
&gt; they are the same physical object.

That sounds like a good design. When sandboxed, a SecurityOrigin would not check anything except object identity to determine equality and to do hashing.

I&apos;m also not sure we want to allow storage and database access from these sandboxed origins even temporarily. So it is good, but may not be enough to simply make it compare unequal to all other origins. I suspect that in any case we will need to add &quot;can&quot; type checks to StorageNamespaceImpl::storageArea and a some of the functions in DatabaseTracker so that storage and database access are subject to sandboxing rules.

But I don&apos;t know for sure. What behavior do we want for storage and database?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164642</commentid>
    <comment_count>44</comment_count>
    <who name="Patrik Persson">patrik.j.persson</who>
    <bug_when>2009-11-18 11:55:00 -0800</bug_when>
    <thetext>(In reply to comment #43)
&gt; I&apos;m also not sure we want to allow storage and database access from these
&gt; sandboxed origins even temporarily. So it is good, but may not be enough to
&gt; simply make it compare unequal to all other origins. I suspect that in any case
&gt; we will need to add &quot;can&quot; type checks to StorageNamespaceImpl::storageArea and
&gt; a some of the functions in DatabaseTracker so that storage and database access
&gt; are subject to sandboxing rules.
&gt; 
&gt; But I don&apos;t know for sure. What behavior do we want for storage and database?

If you don&apos;t want storage access from sandboxed frames,, a simple alternative would be to have such frames behave as if storage/database access was disabled in Settings. This would make localStorage()/sessionStorage() return Undefined in JavaScript. I haven&apos;t tested this, but I suspect it would be as simple as a sandbox check in DOMWindow::localStorage()/sessionStorage().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164644</commentid>
    <comment_count>45</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-18 11:57:19 -0800</bug_when>
    <thetext>(In reply to comment #44)
&gt; I haven&apos;t tested this, but I suspect it would be as simple as a
&gt; sandbox check in DOMWindow::localStorage()/sessionStorage().

Sure, makes sense.

So you changed the equal function for some reason relating to storage and database. What was the design you were trying to implement? What did you expect storage-wise and database-wise? Did you expect a separate store that only lived as long as the sandboxed frame? If so, then where is the code to delete the storage and database when the frame goes away? Did you expect to prohibit storage and database access in the sandboxed frame?

We need to design before we can nail down the implementation.

And it would be OK to land this with an interim design even if we change it later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164666</commentid>
    <comment_count>46</comment_count>
    <who name="Patrik Persson">patrik.j.persson</who>
    <bug_when>2009-11-18 12:35:38 -0800</bug_when>
    <thetext>(In reply to comment #45)
&gt; (In reply to comment #44)
&gt; &gt; I haven&apos;t tested this, but I suspect it would be as simple as a
&gt; &gt; sandbox check in DOMWindow::localStorage()/sessionStorage().
&gt; 
&gt; Sure, makes sense.
&gt; 
&gt; So you changed the equal function for some reason relating to storage and
&gt; database. What was the design you were trying to implement? What did you expect
&gt; storage-wise and database-wise? Did you expect a separate store that only lived
&gt; as long as the sandboxed frame? If so, then where is the code to delete the
&gt; storage and database when the frame goes away? Did you expect to prohibit
&gt; storage and database access in the sandboxed frame?
&gt; 
&gt; We need to design before we can nail down the implementation.

I understand we should have been clearer in how we interpreted sandboxed storage and databases. Our intention was to implement sandboxed frames to have a unique origin, like Adam Barth&apos;s comment suggests. In particular, the same frame at a later time would have a new origin and not be able to access data from a previous session. Your points above are very valid and suggest that we may need to think more about that alternative, if you want us to pursue it.

However, if you would prefer sandboxed frames to simply receive Undefined from window.localStorage()/sessionStorage(), then I think the equal() discussion is solved. (We were able to easily move all other sandbox checks away from SecurityOrigin equality except database/storage access.) I&apos;m sorry for not presenting this alternative earlier, and wasting your time in the meantime.

I absolutely agree that we should reason about design rather than implementation details. We&apos;re still learning about WebKit on our side, and we need to try design alternatives to understand them. I understand this makes for frequent patches to review. Any feedback on how we can streamline the review process is welcome.

Thanks for enduring our patches and cocky comments. We appreciate your work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164808</commentid>
    <comment_count>47</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-18 16:24:17 -0800</bug_when>
    <thetext>(In reply to comment #46)
&gt; Our intention was to implement sandboxed frames to have
&gt; a unique origin, like Adam Barth&apos;s comment suggests. In particular, the same
&gt; frame at a later time would have a new origin and not be able to access data
&gt; from a previous session.

Seems OK. And Adam had some ideas about how to implement that correctly.

&gt; However, if you would prefer sandboxed frames to simply receive Undefined from
&gt; window.localStorage()/sessionStorage(), then I think the equal() discussion is
&gt; solved. (We were able to easily move all other sandbox checks away from
&gt; SecurityOrigin equality except database/storage access.) I&apos;m sorry for not
&gt; presenting this alternative earlier, and wasting your time in the meantime.

Is this really only about storage, not databases? I guess we already sandbox databases with some other change I forgot?

It&apos;s not really my preferences that are important here; as I’m sure you know, issues that matter are cross-browser compatibility, matching the standard, and making sure the features are useful and work together well. What do you think HTML5 suggests for this?

Do you think it&apos;s important to allow ephemeral storage that&apos;s limited to a single sandboxed frame tree? Will we make some helpful use cases impossible if we don&apos;t allow this?

I think an initial version that simply blocks localStorage and sessionStorage would be a fine start; there&apos;s no need to hold the entire thing up until this is resolved.

Refining further should be straightforward.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164986</commentid>
    <comment_count>48</comment_count>
    <who name="Patrik Persson">patrik.j.persson</who>
    <bug_when>2009-11-19 08:41:12 -0800</bug_when>
    <thetext>(In reply to comment #43)
&gt; (In reply to comment #42)
&gt; &gt; W.r.t. the equal() issue: The way a sandboxed origin is modeled in HTML5 is as
&gt; &gt; a &quot;unique value,&quot; which you can think of as a random string for each instance
&gt; &gt; that&apos;s not equal to anything except itself.  We might improve our
&gt; &gt; implementation of sandboxed SecurityOrigins by representing them this way.  If
&gt; &gt; we do that, it&apos;s clear that two sandboxed origins are equal if, and only if,
&gt; &gt; they are the same physical object.
&gt; 
&gt; That sounds like a good design. When sandboxed, a SecurityOrigin would not
&gt; check anything except object identity to determine equality and to do hashing.

I&apos;m a bit confused. That was what we were trying to do, an equal()
implementation that always returns false if one or both of the
SecurityOrigins is sandboxed (unless we compare an object to itself).

&gt; I&apos;m also not sure we want to allow storage and database access from these
&gt; sandboxed origins even temporarily. So it is good, but may not be enough to
&gt; simply make it compare unequal to all other origins. I suspect that in any case
&gt; we will need to add &quot;can&quot; type checks to StorageNamespaceImpl::storageArea and
&gt; a some of the functions in DatabaseTracker so that storage and database access
&gt; are subject to sandboxing rules.
&gt; 
&gt; But I don&apos;t know for sure. What behavior do we want for storage and database?

I don&apos;t think HTML5 says much about how client-side storage
(localStorage/sessionStorage/openDatabase) interacts with
sandboxing. To explain our (previous) design decisions, here&apos;s my
interpretation.

I think sessionStorage would make sense, as long as sandboxes are
respected. I think localStorage would end up equivalent to
sessionStorage in a sandboxed frame, making it somewhat less useful. I
don&apos;t think a sandboxed database would be very useful: it wouldn&apos;t
survive beyond a session.

Our idea with previous patch was to sandbox localStorage and
sessionStorage with respect to origin, and to disable databases in
sandboxes entirely. I should have been clearer about this assumption
from the start.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164988</commentid>
    <comment_count>49</comment_count>
      <attachid>43508</attachid>
    <who name="Patrik Persson">patrik.j.persson</who>
    <bug_when>2009-11-19 08:53:12 -0800</bug_when>
    <thetext>Created attachment 43508
Patch with simplified storage/database sandboxing

To solve the short-term issue of client-side storage/databases in
sandboxes, this patch makes sandboxed frames work as if though
client-side storage/databases were disabled in Settings.

Changes:

* SecurityOrigin::equal() and SecurityOriginHash no longer know about
  sandboxing.

* DOMWindow attributes localStorage and sessionStorage are null in
  sandboxed frames.

* DOMWindow method openDatabase() returns null in sandboxed frames.

* Revised test case for sandboxed storage and database
  (LayoutTests/fast/frames/sandboxed-iframe-storage.html).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165011</commentid>
    <comment_count>50</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-19 10:06:29 -0800</bug_when>
    <thetext>I haven&apos;t reviewed the current patch, but the discussion seems to be getting to the point where it might make sense to land the current iteration and then make improvements in followup patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165028</commentid>
    <comment_count>51</comment_count>
      <attachid>43508</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-19 11:13:33 -0800</bug_when>
    <thetext>Comment on attachment 43508
Patch with simplified storage/database sandboxing

Looking good. Nearly done. A few small mistakes, and one bigger mistake based on bad advice from me.

I miss the canAccessDatabase function from your earlier patch; didn&apos;t see why you rolled that back. Maybe because you didn&apos;t want a separate canAccessStorage?

&gt;  bool ScriptController::isEnabled()
&gt;  {
&gt;      Settings* settings = m_frame-&gt;settings();
&gt; -    return m_frame-&gt;loader()-&gt;client()-&gt;allowJavaScript(settings &amp;&amp; settings-&gt;isJavaScriptEnabled());
&gt; +    return m_frame-&gt;loader()-&gt;client()-&gt;allowJavaScript(settings &amp;&amp; settings-&gt;isJavaScriptEnabled() &amp;&amp; !m_frame-&gt;loader()-&gt;isSandboxed(SandboxScripts));
&gt;  }

Loose end for after this lands: ScriptController::isEnabled needs to be renamed. It already checked more than just whether JavaScript was enabled. Maybe canExecuteScripts is the right name.

&gt; +    // FIXME: The HTML5 DOM spec states that this attribute can raise an
&gt; +    // INVALID_STATE_ERR exception on getting if the Document has no
&gt; +    // browsing context.

Loose end for after this lands: Test case showing the problem? Bug report for the problem?

&gt;                   attribute [ConvertNullToNullString] DOMString cookie
&gt; -                     /*setter raises (DOMException)*/;
&gt; +                     setter raises (DOMException),
&gt; +                     getter raises (DOMException);

Loose end for after this lands: Bug report for the problem that just plain &quot;raises&quot; does not work. Should be easy to fix.

&gt; +bool HTMLAppletElement::isJavaEnabled() const

Same problem with this name as with ScriptController::isEnabled, but this is a new name, not an existing name. Should be named something like canEmbedJava instead. Think of it as completing this sentence &quot;the applet element &lt;functionName&gt;&quot; and you can see that &quot;the applet element is Java enabled&quot; does not work at all.

I&apos;d be willing to approve landing this patch if you have firm plans to rename afterwards.

&gt; +    SandboxFlags flags;
&gt; +    // Parse the unordered set of unique space-separated tokens.
&gt; +    if (attribute-&gt;isNull())
&gt; +        flags = SandboxNone;

We love early return in the WebKit coding style. It might be nice to just do this before even declaring a local variable, and avoid nesting the whole body of the function inside an else.

&gt; +void FrameLoader::ownerElementSandboxFlagsChanged()
&gt; +{
&gt; +    updateSandboxFlags();
&gt; +}

This could be inlined by defining it in the class definition in the header. Probably not important, though there seems to be no downside to doing this.

&gt; +void FrameLoader::updateSandboxFlags()
&gt; +{
&gt; +    updateSandboxFlagsForSingleFrame();
&gt; +
&gt; +    for (Frame* affectedFrame = m_frame; affectedFrame; affectedFrame = affectedFrame-&gt;tree()-&gt;traverseNext(m_frame))
&gt; +        affectedFrame-&gt;loader()-&gt;updateSandboxFlagsForSingleFrame();
&gt; +}

This calls updateSandboxFlagsForSingleFrame twice on the current frame. The first call to updateSandboxFlagsForSingleFrame outside the loop can be removed.

But also, I made you break this with my suggestion! The updateSandboxFlagsForSingleFrame function only works if the parent updates its flags before the child. And this non-recursive algorithm does not guarantee that. So you probably need to go back to the recursive version. Sorry.

&gt; +    m_frame-&gt;document()-&gt;securityOrigin()-&gt;setSandboxFlags(m_sandboxFlags);

Probably OK as is, but we might want to change this to just call a function named updateSandboxFlags on the Document rather than digging directly into the security origin. The document already has to know that it gets its sandbox flags from the frame, and it seems a little strange for half the knowledge of that to be in Document and the other half in FrameLoader.

&gt; +    , m_sandboxFlags(SandboxNone)

I wonder if maybe the default should instead be entirely sandboxed. Is there any code path where the default matters? Same applies to FrameLoader. We always set the flags later in initialization, so maybe it&apos;s OK to fully sandbox during initialization. Not an important issue, but this does seem backwards from usual security designs to assume everything is allowed. It would be good to notice if we attempted anything so early that we did not yet have sandbox flags set, so you could even imagine a special value &quot;not yet set&quot; and you would assert if ever asked to make a sandboxing decision based on that value.

Is there any problem with the fact that documents that never go into a frame, such as ones made with XMLHttpRequest, have no sandbox flags set? Maybe we should set their sandbox flags to prohibit everything or set them to the &quot;don&apos;t you dare use this&quot; value?

I did not carefully review the tests.

You don&apos;t need to do everything I mentioned on comments -- I don&apos;t want to make this take forever. But please do fix the things that are definitely broken like the bad updateSandboxFlags algorithm I suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165030</commentid>
    <comment_count>52</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-19 11:21:35 -0800</bug_when>
    <thetext>(In reply to comment #48)
&gt; (In reply to comment #43)
&gt; &gt; (In reply to comment #42)
&gt; &gt; &gt; W.r.t. the equal() issue: The way a sandboxed origin is modeled in HTML5 is as
&gt; &gt; &gt; a &quot;unique value,&quot; which you can think of as a random string for each instance
&gt; &gt; &gt; that&apos;s not equal to anything except itself.  We might improve our
&gt; &gt; &gt; implementation of sandboxed SecurityOrigins by representing them this way.  If
&gt; &gt; &gt; we do that, it&apos;s clear that two sandboxed origins are equal if, and only if,
&gt; &gt; &gt; they are the same physical object.
&gt; &gt; 
&gt; &gt; That sounds like a good design. When sandboxed, a SecurityOrigin would not
&gt; &gt; check anything except object identity to determine equality and to do hashing.
&gt; 
&gt; I&apos;m a bit confused. That was what we were trying to do, an equal()
&gt; implementation that always returns false if one or both of the
&gt; SecurityOrigins is sandboxed (unless we compare an object to itself).

Yes, it was my misunderstanding from the start, not something wrong with the patch.

The code you added only kicked in after comparing all the other aspects of the security origin, so I think it obscured the fact that you were implementing this rule and in fact all other aspects of the origin were irrelevant. Similarly, you updated the equal function but not the hash function originally, which further confused me. I think a comment might have made the difference, explaining the model.

It&apos;s possible this could be the right direction in the future, but to make it more clear why things work this way I think the sandboxing check could be earlier in the function. Or there could be a comment about why not.

I worry about the security origin having other data that&apos;s misleading. Data you should never look at in a sandboxed origin. Who cares what the host name is if it really has no effect on the security policy. Perhaps it should be illegal to even get it from the security origin for a sandboxed origin. Maybe it&apos;s useful, but only for debugging?

&gt; I think sessionStorage would make sense, as long as sandboxes are
&gt; respected. I think localStorage would end up equivalent to
&gt; sessionStorage in a sandboxed frame, making it somewhat less useful. I
&gt; don&apos;t think a sandboxed database would be very useful: it wouldn&apos;t
&gt; survive beyond a session.
&gt; 
&gt; Our idea with previous patch was to sandbox localStorage and
&gt; sessionStorage with respect to origin, and to disable databases in
&gt; sandboxes entirely. I should have been clearer about this assumption
&gt; from the start.

We should communicate our plans to the others implementing HTML5. Maybe we *should* have non-useful sandboxed databases that are deleted when the frames are. And have local and session storage that only lives the life of the sandbox.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165031</commentid>
    <comment_count>53</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-19 11:22:22 -0800</bug_when>
    <thetext>(In reply to comment #50)
&gt; I haven&apos;t reviewed the current patch, but the discussion seems to be getting to
&gt; the point where it might make sense to land the current iteration and then make
&gt; improvements in followup patches.

Yes, I think we have consensus on that. There are just a few small showstoppers. We&apos;re close to landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165072</commentid>
    <comment_count>54</comment_count>
    <who name="Patrik Persson">patrik.j.persson</who>
    <bug_when>2009-11-19 13:20:55 -0800</bug_when>
    <thetext>(In reply to comment #51)
&gt; (From update of attachment 43508 [details])
&gt; Looking good. Nearly done. A few small mistakes, and one bigger mistake based
&gt; on bad advice from me.
&gt; 
&gt; I miss the canAccessDatabase function from your earlier patch; didn&apos;t see why
&gt; you rolled that back. Maybe because you didn&apos;t want a separate
&gt; canAccessStorage?

I moved the check to DOMWindow and used an explicit check for SandboxOrigin, for symmetry with the storage checks. Somehow I managed to drop this from the patch changelog. My mistake.

Do you want us to use named functions for these DOMWindow checks (canAccessStorage/canAccessDatabase)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165073</commentid>
    <comment_count>55</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-19 13:23:27 -0800</bug_when>
    <thetext>(In reply to comment #54)
&gt; Do you want us to use named functions for these DOMWindow checks
&gt; (canAccessStorage/canAccessDatabase)?

I like the clarity of the named functions and centralizing the security policy in the SecurityOrigin object. But I don&apos;t feel strongly about it. This seems an unimportant issue to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165284</commentid>
    <comment_count>56</comment_count>
    <who name="Patrik Persson">patrik.j.persson</who>
    <bug_when>2009-11-20 05:18:21 -0800</bug_when>
    <thetext>(In reply to comment #51)
&gt; (From update of attachment 43508 [details])
&gt; &gt;  bool ScriptController::isEnabled()
&gt; &gt;  {
&gt; &gt;      Settings* settings = m_frame-&gt;settings();
&gt; &gt; -    return m_frame-&gt;loader()-&gt;client()-&gt;allowJavaScript(settings &amp;&amp; settings-&gt;isJavaScriptEnabled());
&gt; &gt; +    return m_frame-&gt;loader()-&gt;client()-&gt;allowJavaScript(settings &amp;&amp; settings-&gt;isJavaScriptEnabled() &amp;&amp; !m_frame-&gt;loader()-&gt;isSandboxed(SandboxScripts));
&gt; &gt;  }
&gt; 
&gt; Loose end for after this lands: ScriptController::isEnabled needs to be
&gt; renamed. It already checked more than just whether JavaScript was enabled.
&gt; Maybe canExecuteScripts is the right name.
&gt; 
&gt; &gt; +    // FIXME: The HTML5 DOM spec states that this attribute can raise an
&gt; &gt; +    // INVALID_STATE_ERR exception on getting if the Document has no
&gt; &gt; +    // browsing context.
&gt; 
&gt; Loose end for after this lands: Test case showing the problem? Bug report for
&gt; the problem?

I can file (at least) bug reports for these. However, if it&apos;s fine with you, I&apos;d prefer to do it after the patch lands. Otherwise, I&apos;d have to refer to either code we&apos;re about to change, or code in an uncommitted patch.

&gt; &gt;                   attribute [ConvertNullToNullString] DOMString cookie
&gt; &gt; -                     /*setter raises (DOMException)*/;
&gt; &gt; +                     setter raises (DOMException),
&gt; &gt; +                     getter raises (DOMException);
&gt; 
&gt; Loose end for after this lands: Bug report for the problem that just plain
&gt; &quot;raises&quot; does not work. Should be easy to fix.

https://bugs.webkit.org/show_bug.cgi?id=31720</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165321</commentid>
    <comment_count>57</comment_count>
      <attachid>43585</attachid>
    <who name="Patrik Persson">patrik.j.persson</who>
    <bug_when>2009-11-20 09:08:51 -0800</bug_when>
    <thetext>Created attachment 43585
Revised patch in response to comment #51.

* Renamed helper JavaEnabled() in HTMLAppletElement to canEmbedJava().

* Added early return in HTMLIFrameElement, for the case when there is
  no sandbox attribute.

* Inlined FrameLoader::ownerElementSandboxFlagsChanged().

* Reverted FrameLoader::updateSandboxFlags() to recursive
  implementation.

* Added method Document::updateSandboxFlags(). Although this is a
  one-liner, I didn&apos;t inline it to avoid #including SecurityOrigin.h.

* Changed Document::initSecurityContext() and
  FrameLoader::updateSandboxFlags() to invoke
  Document::updateSandboxFlags().

* Added named policy checks for storage and database access in
  SecurityOrigin, and modified DOMWindow to use these new checks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166049</commentid>
    <comment_count>58</comment_count>
    <who name="Patrik Persson">patrik.j.persson</who>
    <bug_when>2009-11-24 06:24:04 -0800</bug_when>
    <thetext>(In reply to comment #51)
&gt; I wonder if maybe the default should instead be entirely sandboxed. Is there
&gt; any code path where the default matters? Same applies to FrameLoader. We always
&gt; set the flags later in initialization, so maybe it&apos;s OK to fully sandbox during
&gt; initialization. Not an important issue, but this does seem backwards from usual
&gt; security designs to assume everything is allowed.

Defensive programming is definitely a good idea here.  We have
experimented with assigning defensive default values for sandbox flags
in this way.  There are three locations where such a defensive
initialization can be made: HTMLFrameOwnerElement, FrameLoader and
SecurityOrigin.

The FrameLoader modification is straight-forward to make (changing to
&apos;SandboxAll&apos; in the constructor m_sandboxFlags initializer).  The
tests run fine with this change.  We excluded it from the current
patch, but we&apos;ll be happy to include it if you want us to.

I&apos;m not sure about the other two modifications, though.  Here&apos;s why.


Default SecurityOrigin::m_sandboxFlags = SandboxAll
---------------------------------------------------

This modification fails for documents created without a frame.  The
test case http/tests/security/cookies/create-document.html is a
typical example of something that breaks.

&gt; Is there any problem with the fact that documents that never go into a frame,
&gt; such as ones made with XMLHttpRequest, have no sandbox flags set?

Yes, many (quite possibly all) XMLHttpRequest-based tests seem to fail
with this modification.

My interpretation of the spec (and comment #14) is that sandbox flags
can only end up in a document (specifically, its SecurityOrigin) by
being propagated from the document&apos;s frame.  No frame, no sandbox
flags.  I can&apos;t see how to assign a default SecurityOrigin flag value
other than SandboxNone based on this.


Default HTMLFrameOwnerElement::m_sandboxFlags = SandboxAll
----------------------------------------------------------

This modification fails for iframes without a sandbox attribute, which
now become sandboxed (of course).

If there is a better place than the constructor to assign a default
value, this modification could make more sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167404</commentid>
    <comment_count>59</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-30 13:32:59 -0800</bug_when>
    <thetext>(In reply to comment #58)
&gt; Default SecurityOrigin::m_sandboxFlags = SandboxAll
&gt; ---------------------------------------------------
&gt; 
&gt; This modification fails for documents created without a frame.  The
&gt; test case http/tests/security/cookies/create-document.html is a
&gt; typical example of something that breaks.

So the correct sandbox flags is &quot;all&quot; in a case like this? Can that really be right? Or should the sandbox flags somehow be inherited from the frame that&apos;s doing the creating?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167572</commentid>
    <comment_count>60</comment_count>
      <attachid>44069</attachid>
    <who name="Patrik Persson">patrik.j.persson</who>
    <bug_when>2009-12-01 05:09:27 -0800</bug_when>
    <thetext>Created attachment 44069
Slightly revised patch (added defensive FrameLoader initialization)

(In reply to comment #59)
&gt; So the correct sandbox flags is &quot;all&quot; in a case like this? Can that really be
&gt; right? Or should the sandbox flags somehow be inherited from the frame that&apos;s
&gt; doing the creating?

Copying the flags from the creating frame would probably be safe.
However, there are quite many locations where SecurityOrigins are
instantiated (about 20 sites, 10 classes in different parts of
WebCore).  Each of these locations would need modification to locate
the creating frame, and I don&apos;t currently know of a common way to do
that.

I&apos;m not sure there is any added safety in this anyway.  Sandbox flags
have no meaning without a frame context (in my interpretation of HTML5
at least).

I propose we leave this out of the patch, to avoid against adding this
complexity for (limited) defensive purposes.  Defensive initial values
could help us catch bugs, but this complexity could help create them
too.

I still think your proposal for defensive initialization in the
FrameLoader makes good sense.  I&apos;m attaching a slightly revised patch
with that included.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167685</commentid>
    <comment_count>61</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-12-01 11:32:13 -0800</bug_when>
    <thetext>(In reply to comment #60)
&gt; Copying the flags from the creating frame would probably be safe.
&gt; However, there are quite many locations where SecurityOrigins are
&gt; instantiated (about 20 sites, 10 classes in different parts of
&gt; WebCore).  Each of these locations would need modification to locate
&gt; the creating frame, and I don&apos;t currently know of a common way to do
&gt; that.
&gt; 
&gt; I&apos;m not sure there is any added safety in this anyway.  Sandbox flags
&gt; have no meaning without a frame context (in my interpretation of HTML5
&gt; at least).

I do not want this issue to block the patch. But separate from this patch, I think we should not drop this.

I suggest that we set the sandbox flags on such documents to a value that means &quot;this document has no sandboxing context&quot; by default. And put assertions into sandbox-flag-checking accessors to make sure such flags are never checked. If they are checked, then I want to understand why it&apos;s OK to have the values initialized to the liberal &quot;allow anything&quot; value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167748</commentid>
    <comment_count>62</comment_count>
      <attachid>44069</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-01 14:50:21 -0800</bug_when>
    <thetext>Comment on attachment 44069
Slightly revised patch (added defensive FrameLoader initialization)

I&apos;d like to land this so we can start iterating.  Let&apos;s file bugs for the outstanding issues.  It might also be useful to create a meta bug to track all the feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167749</commentid>
    <comment_count>63</comment_count>
      <attachid>44069</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-12-01 14:53:13 -0800</bug_when>
    <thetext>Comment on attachment 44069
Slightly revised patch (added defensive FrameLoader initialization)

Rejecting patch 44069 from commit-queue.

Failed to run &quot;[&apos;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/svn-apply&apos;, &apos;--reviewer&apos;, &apos;Darin Adler&apos;, &apos;--force&apos;]&quot; exit_code: 1
Last 500 characters of output:
ol-sandboxed-iframe-allow.cgi
patching file LayoutTests/http/tests/xmlhttprequest/resources/access-control-sandboxed-iframe-denied-iframe.html
patching file LayoutTests/http/tests/xmlhttprequest/resources/access-control-sandboxed-iframe-denied-without-wildcard-iframe.html
patching file LayoutTests/http/tests/xmlhttprequest/resources/access-control-sandboxed-iframe-denied-without-wildcard.cgi
patching file LayoutTests/http/tests/xmlhttprequest/resources/access-control-sandboxed-iframe-denied.cgi</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167761</commentid>
    <comment_count>64</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-01 15:09:25 -0800</bug_when>
    <thetext>I&apos;ll check whether these conflicts are trivial.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167763</commentid>
    <comment_count>65</comment_count>
      <attachid>44108</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-01 15:28:57 -0800</bug_when>
    <thetext>Created attachment 44108
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167765</commentid>
    <comment_count>66</comment_count>
      <attachid>44108</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-01 15:30:30 -0800</bug_when>
    <thetext>Comment on attachment 44108
Patch

The merge was in fact trivial.  Let&apos;s try commit-queue again, but I suspect we&apos;ll have trouble with the *.cgi files not being marked as executable.  If that&apos;s the case, I&apos;ll land when I get home tonight.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167770</commentid>
    <comment_count>67</comment_count>
      <attachid>44108</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-12-01 15:37:16 -0800</bug_when>
    <thetext>Comment on attachment 44108
Patch

Rejecting patch 44108 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/build-webkit&apos;]&quot; exit_code: 1
Last 500 characters of output:
HostCustom.cpp -o /Users/eseidel/Projects/CommitQueue/WebKitBuild/WebCore.build/Release/WebCore.build/Objects-normal/i386/JSInjectedScriptHostCustom.o
** BUILD FAILED **

The following build commands failed:
WebCore:
	Distributed-CompileC /Users/eseidel/Projects/CommitQueue/WebKitBuild/WebCore.build/Release/WebCore.build/Objects-normal/i386/InspectorController.o /Users/eseidel/Projects/CommitQueue/WebCore/inspector/InspectorController.cpp normal i386 c++ com.apple.compilers.gcc.4_2
(1 failure)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167812</commentid>
    <comment_count>68</comment_count>
      <attachid>44108</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-01 17:47:41 -0800</bug_when>
    <thetext>Comment on attachment 44108
Patch

Actually, I suck at merging.  Landing by hand now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167836</commentid>
    <comment_count>69</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-01 18:43:13 -0800</bug_when>
    <thetext>Mostly landed in 51577.  I still need to do some SVN propset magic to land one of the tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167847</commentid>
    <comment_count>70</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-01 19:44:23 -0800</bug_when>
    <thetext>Committed r51580: &lt;http://trac.webkit.org/changeset/51580&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170313</commentid>
    <comment_count>71</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-09 21:58:05 -0800</bug_when>
    <thetext>Have all the followup bugs been filed?  I can mine the comments and file the followups if that would be helpful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170425</commentid>
    <comment_count>72</comment_count>
      <attachid>44618</attachid>
    <who name="Patrik Persson">patrik.j.persson</who>
    <bug_when>2009-12-10 08:21:23 -0800</bug_when>
    <thetext>Created attachment 44618
Test case for &quot;about:blank&quot; potential issue

(In reply to comment #28)
&gt; There&apos;s also a subtle bug for the case of
&gt; 
&gt; &lt;iframe src=&quot;about:blank&quot; sandbox&gt;&lt;/iframe&gt;
&gt; 
&gt; I think that will end up sandboxing the containing frame because the
&gt; SecurityOrigin object is shared by the two frames.

I have not been able to reproduce this bug.  I&apos;m attaching a test case
that does what you describe, but it passes, indicating that the
containing frame is not sandboxed.

I know that your comment is based on knowledge of the code.  Perhaps
this test case works by accident, or because I misunderstood you.  Can
I ask you to file a bug report with more hints on how to reproduce it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170429</commentid>
    <comment_count>73</comment_count>
    <who name="Patrik Persson">patrik.j.persson</who>
    <bug_when>2009-12-10 08:25:34 -0800</bug_when>
    <thetext>(In reply to comment #71)
&gt; Have all the followup bugs been filed?  I can mine the comments and file the
&gt; followups if that would be helpful.

I have filed some followups, listed below.  If you find more, your
help is much appreciated.  Notably, the potential bug for
&quot;about:blank&quot; has not been addressed (see previous comment 72).


Incorrect code generated from IDL for document.cookie unless
declaration syntax is carefully adjusted:
  https://bugs.webkit.org/show_bug.cgi?id=31720

ScriptController::isEnabled needs to be renamed:
  https://bugs.webkit.org/show_bug.cgi?id=32063

document.cookie accessors should raise INVALID_STATE_ERR if there is
no browsing context:
  https://bugs.webkit.org/show_bug.cgi?id=32115

Add defensive initialization of iframe sandbox flags:
  https://bugs.webkit.org/show_bug.cgi?id=32368

Support for storage and databases in sandboxed iframes:
  https://bugs.webkit.org/show_bug.cgi?id=32369

Unify origin sandbox flag with m_noAccess in SecurityOrigin:
  https://bugs.webkit.org/show_bug.cgi?id=32372</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170440</commentid>
    <comment_count>74</comment_count>
      <attachid>44618</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-10 08:58:16 -0800</bug_when>
    <thetext>Comment on attachment 44618
Test case for &quot;about:blank&quot; potential issue

Interesting.  Ok, well, we should land the test.  Thanks!

Also, thanks for filing the followups.  I can help with fixing some of them.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42473</attachid>
            <date>2009-11-04 03:44:43 -0800</date>
            <delta_ts>2009-11-11 08:16:53 -0800</delta_ts>
            <desc>HTML5 IFrame sandboxing</desc>
            <filename>sandbox-r50452.patch</filename>
            <type>text/plain</type>
            <size>98988</size>
            <attacher name="Yuan Song">song.yuan</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDUxMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzYgQEAKKzIwMDktMTEtMDQgIFl1YW4gU29uZyAgPHNvbmcueXVhbkBlcmljc3Nv
bi5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkZWQgSFRNTDUgSUZyYW1lIHNhbmRib3hpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI4OAorCisgICAgICAgIFRlc3RzOiBmYXN0L2ZyYW1l
cy9pZnJhbWUtc2FuZGJveC1hdHRyaWJ1dGUtcHJlc2VydmVkLmh0bWwKKyAgICAgICAgICAgICAg
IGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtZG9jdW1lbnQtY29va2llLmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtZm9ybXMuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1tb2RpZnktc2VsZi5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tY2hp
bGQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZp
Z2F0aW9uLXBhcmVudC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQt
aWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zy
YW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtYXBwbGV0Lmh0bWwK
KyAgICAgICAgICAgICAgIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1lbWJl
ZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdp
bnMtb2JqZWN0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJh
bWUtcHJvcGFnYXRlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1p
ZnJhbWUtc2NyaXB0aW5nLWR5bmFtaWMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9mcmFtZXMv
c2FuZGJveGVkLWlmcmFtZS1zY3JpcHRpbmcuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0
cy9zZWN1cml0eS94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUuaHRtbAorICAgICAgICAgICAg
ICAgaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZy
YW1lLWFsbG93Lmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
YWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtd2l0aG91dC13aWxkY2FyZC5o
dG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250
cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLmh0bWwKKyAgICAgICAgICAgICAgIHN0b3JhZ2Uv
ZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2Uvc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQuaHRtbAorICAg
ICAgICAgICAgICAgc3RvcmFnZS9kb21zdG9yYWdlL3Nlc3Npb25zdG9yYWdlL3NhbmRib3hlZC1p
ZnJhbWUtZGVuaWVkLmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRD
b250cm9sbGVyOjppc0VuYWJsZWQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y29va2llKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTEFwcGxldEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQ6OmNyZWF0ZVJlbmRl
cmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50OjpyZW5kZXJXaWRnZXRG
b3JKU0JpbmRpbmdzKToKKyAgICAgICAgKiBodG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbjoKKyAg
ICAgICAgKiBodG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MRnJhbWVPd25lckVsZW1lbnQ6OkhUTUxGcmFtZU93bmVyRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQ6OnVwZGF0ZVNhbmRib3hGbGFncyk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQ6OnByb3BhZ2F0ZVNhbmRib3hG
bGFncyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQ6Omluc2VydGVk
SW50b0RvY3VtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50Ojppc1NhbmRib3hlZCk6Cisg
ICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MSUZyYW1lRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwv
SFRNTElGcmFtZUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OmlzSUZyYW1lU2FuZGJveFN0
cmluZ1doaXRlc3BhY2UpOgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmdldENvb2tpZXMpOgorICAgICAgICAqIGxvYWRl
ci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFzc2Vz
QWNjZXNzQ29udHJvbENoZWNrKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnN1Ym1pdEZvcm0pOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OnJlcXVlc3RPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXI6OnNob3VsZEFsbG93TmF2aWdhdGlvbik6CisgICAgICAgICogcGFnZS9TZWN1cml0
eU9yaWdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlP
cmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNhbkFjY2Vzcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuUmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6dG9TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW46OmVxdWFsKToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6c2V0T3JpZ2luU2FuZGJveGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpvcmlnaW5TYW5kYm94ZWQpOgorICAgICAg
ICAqIHN0b3JhZ2UvRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFi
YXNlVHJhY2tlcjo6Y2FuRXN0YWJsaXNoRGF0YWJhc2UpOgorCiAyMDA5LTExLTA0ICBDc2FiYSBP
c3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCByb2xs
b3V0LgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHJl
dmlzaW9uIDUwNDUyKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJGcmFtZVZpZXcu
aCIKICNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5o
IgorI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhpc3Rvcnku
aCIKICNpbmNsdWRlICJKU0F1ZGlvQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRv
d1NoZWxsLmgiCkBAIC03NDQsNiArNzQ1LDEyIEBAIHN0YXRpYyBGcmFtZSogY3JlYXRlV2luZG93
KEV4ZWNTdGF0ZSogZXgKICAgICBBU1NFUlQobGV4aWNhbEZyYW1lKTsKICAgICBBU1NFUlQoZHlu
YW1pY0ZyYW1lKTsKIAorICAgIC8vIFNhbmRib3hlZCBJRnJhbWVzIGNhbm5vdCBvcGVuIG5ldyBh
dXhpbGlhcnkgYnJvd3NpbmcgY29udGV4dHMKKyAgICBpZiAob3BlbmVyRnJhbWUKKyAgICAgICAg
JiYgb3BlbmVyRnJhbWUtPm93bmVyRWxlbWVudCgpCisgICAgICAgICYmIG9wZW5lckZyYW1lLT5v
d25lckVsZW1lbnQoKS0+aXNTYW5kYm94ZWQoSFRNTEZyYW1lT3duZXJFbGVtZW50OjpTYW5kYm94
RmxhZ3NOYXZpZ2F0aW9uKSkKKyAgICAgICAgcmV0dXJuIDA7CisKICAgICBSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdDsKIAogICAgIC8vIEZvciB3aGF0ZXZlciByZWFzb24sIEZpcmVmb3ggdXNlcyB0
aGUgZHluYW1pY0dsb2JhbE9iamVjdCB0byBkZXRlcm1pbmUKSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gNTA0NTIpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjQsNiAr
MzI0LDExIEBAIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6YW55UGFnZUlzUHJvY2Vzc2kKIGJvb2wg
U2NyaXB0Q29udHJvbGxlcjo6aXNFbmFibGVkKCkKIHsKICAgICBTZXR0aW5ncyogc2V0dGluZ3Mg
PSBtX2ZyYW1lLT5zZXR0aW5ncygpOworICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJF
bGVtZW50ID0gbV9mcmFtZS0+b3duZXJFbGVtZW50KCk7CisKKyAgICBpZiAob3duZXJFbGVtZW50
ICYmIG93bmVyRWxlbWVudC0+aXNTYW5kYm94ZWQoSFRNTEZyYW1lT3duZXJFbGVtZW50OjpTYW5k
Ym94RmxhZ3NTY3JpcHRzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgcmV0dXJuIG1f
ZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+YWxsb3dKYXZhU2NyaXB0KHNldHRpbmdzICYmIHNl
dHRpbmdzLT5pc0phdmFTY3JpcHRFbmFibGVkKCkpOwogfQogCkluZGV4OiBXZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZp
c2lvbiA1MDQ1MikKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjk5MSwxMSArMjk5MSwxOSBAQCBFbGVtZW50KiBEb2N1bWVudDo6b3duZXJFbGVtZW50KCkg
Y29uc3QKICAgICByZXR1cm4gZnJhbWUoKS0+b3duZXJFbGVtZW50KCk7CiB9CiAKLVN0cmluZyBE
b2N1bWVudDo6Y29va2llKCkgY29uc3QKK1N0cmluZyBEb2N1bWVudDo6Y29va2llKEV4Y2VwdGlv
bkNvZGUgJmVjKSBjb25zdAogewogICAgIGlmIChwYWdlKCkgJiYgIXBhZ2UoKS0+Y29va2llRW5h
YmxlZCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKKyAgICBIVE1MRnJhbWVPd25lckVs
ZW1lbnQqIGVsZW1lbnQ7CisgICAgaWYgKGZyYW1lKCkKKyAgICAgICAgJiYgKGVsZW1lbnQgPSBm
cmFtZSgpLT5vd25lckVsZW1lbnQoKSkKKyAgICAgICAgJiYgZWxlbWVudC0+aXNTYW5kYm94ZWQo
SFRNTEZyYW1lT3duZXJFbGVtZW50OjpTYW5kYm94RmxhZ3NPcmlnaW4pKSB7CisgICAgICAgIGVj
ID0gU0VDVVJJVFlfRVJSOworICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgfQorCiAgICAg
S1VSTCBjb29raWVVUkwgPSB0aGlzLT5jb29raWVVUkwoKTsKICAgICBpZiAoY29va2llVVJMLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAtNDI1Niw2ICs0MjY0LDEyIEBA
IHZvaWQgRG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRleHQoKQogICAgIG1fY29va2llVVJMID0g
dXJsOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnNldFNlY3VyaXR5T3JpZ2luKFNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGUodXJsKSk7CiAKKyAgICAvLyBTZXQgdGhlIGlmcmFtZSBzYW5kYm94
IG9yaWdpbiBmbGFnIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgcHJvcGVydHkgCisgICAgLy8gb2Yg
aXRzIGZyYW1lIG93bmVyIGVsZW1lbnQgKGlmcmFtZSkKKyAgICBIVE1MRnJhbWVPd25lckVsZW1l
bnQqIG93bmVyRWxlbWVudCA9IG1fZnJhbWUtPm93bmVyRWxlbWVudCgpOworICAgIGlmIChvd25l
ckVsZW1lbnQpCisgICAgICAgIHNlY3VyaXR5T3JpZ2luKCktPnNldE9yaWdpblNhbmRib3hlZChv
d25lckVsZW1lbnQtPmlzU2FuZGJveGVkKEhUTUxGcmFtZU93bmVyRWxlbWVudDo6U2FuZGJveEZs
YWdzT3JpZ2luKSk7CisgCiAgICAgaWYgKFNlY3VyaXR5T3JpZ2luOjphbGxvd1N1YnN0aXR1dGVE
YXRhQWNjZXNzVG9Mb2NhbCgpKSB7CiAgICAgICAgIC8vIElmIHRoaXMgZG9jdW1lbnQgd2FzIGxv
YWRlZCB3aXRoIHN1YnN0aXR1dGVEYXRhLCB0aGVuIHRoZSBkb2N1bWVudCBjYW4KICAgICAgICAg
Ly8gbG9hZCBsb2NhbCByZXNvdXJjZXMuICBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2NzU2CkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDUwNDUyKQorKysgV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjc1LDcgKzY3NSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYsIEVsZW1lbnQqIHRpdGxlRWxlbWVu
dCA9IDApOwogICAgIHZvaWQgcmVtb3ZlVGl0bGUoRWxlbWVudCogdGl0bGVFbGVtZW50KTsKIAot
ICAgIFN0cmluZyBjb29raWUoKSBjb25zdDsKKyAgICBTdHJpbmcgY29va2llKEV4Y2VwdGlvbkNv
ZGUmKSBjb25zdDsKICAgICB2b2lkIHNldENvb2tpZShjb25zdCBTdHJpbmcmKTsKIAogICAgIFN0
cmluZyByZWZlcnJlcigpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkocmV2aXNpb24gNTA0NTIpCisr
KyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTE2NSw3ICsxNjUs
OCBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIC8vIEZJWE1FOiB0aGUgRE9NIHNwZWMgc3RhdGVz
IHRoYXQgdGhpcyBhdHRyaWJ1dGUgY2FuIAogICAgICAgICAvLyByYWlzZSBhbiBleGNlcHRpb24g
b24gc2V0dGluZy4KICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVs
bFN0cmluZ10gRE9NU3RyaW5nIGNvb2tpZQotICAgICAgICAgICAgICAgICAgICAgLypzZXR0ZXIg
cmFpc2VzIChET01FeGNlcHRpb24pKi87CisgICAgICAgICAgICAgICAgICAgICBnZXR0ZXIgcmFp
c2VzIChET01FeGNlcHRpb24pLAorICAgICAgICAgICAgICAgICAgICAgc2V0dGVyIHJhaXNlcyAo
LypET01FeGNlcHRpb24qLyk7CiAKICAgICAgICAgLy8gRklYTUU6IHRoZSBET00gc3BlYyBkb2Vz
IE5PVCBoYXZlIHRoaXMgYXR0cmlidXRlCiAgICAgICAgIC8vIHJhaXNpbmcgYW4gZXhjZXB0aW9u
LgpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCShyZXZpc2lvbiA1MDQ1MikKKysr
IFdlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0
LDYgKzI0LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJIVE1MQXBwbGV0RWxl
bWVudC5oIgogCisjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJNYXBwZWRBdHRyaWJ1dGUuaCIKQEAg
LTEwOSw4ICsxMTAsMTAgQEAgYm9vbCBIVE1MQXBwbGV0RWxlbWVudDo6cmVuZGVyZXJJc05lZWRl
ZAogUmVuZGVyT2JqZWN0KiBIVE1MQXBwbGV0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVy
QXJlbmEqLCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0g
ZG9jdW1lbnQoKS0+c2V0dGluZ3MoKTsKKyAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVy
RWxlbWVudCA9IGRvY3VtZW50KCktPmZyYW1lKCktPm93bmVyRWxlbWVudCgpOwogCi0gICAgaWYg
KHNldHRpbmdzICYmIHNldHRpbmdzLT5pc0phdmFFbmFibGVkKCkpIHsKKyAgICBpZiAoc2V0dGlu
Z3MgJiYgc2V0dGluZ3MtPmlzSmF2YUVuYWJsZWQoKQorICAgICAgICAmJiAoIW93bmVyRWxlbWVu
dCB8fCAhb3duZXJFbGVtZW50LT5pc1NhbmRib3hlZChIVE1MRnJhbWVPd25lckVsZW1lbnQ6OlNh
bmRib3hGbGFnc1BsdWdpbnMpKSkgewogICAgICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBh
cmdzOwogCiAgICAgICAgIGFyZ3Muc2V0KCJjb2RlIiwgZ2V0QXR0cmlidXRlKGNvZGVBdHRyKSk7
CkBAIC0xNDMsNiArMTQ2LDEwIEBAIFJlbmRlck9iamVjdCogSFRNTEFwcGxldEVsZW1lbnQ6OmNy
ZWF0ZVIKIFJlbmRlcldpZGdldCogSFRNTEFwcGxldEVsZW1lbnQ6OnJlbmRlcldpZGdldEZvckpT
QmluZGluZ3MoKSBjb25zdAogewogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50KCkt
PnNldHRpbmdzKCk7CisgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQgPSBk
b2N1bWVudCgpLT5mcmFtZSgpLT5vd25lckVsZW1lbnQoKTsKKyAgICBpZiAob3duZXJFbGVtZW50
ICYmIG93bmVyRWxlbWVudC0+aXNTYW5kYm94ZWQoSFRNTEZyYW1lT3duZXJFbGVtZW50OjpTYW5k
Ym94RmxhZ3NQbHVnaW5zKSkKKyAgICAgICAgcmV0dXJuIDA7CisKICAgICBpZiAoIXNldHRpbmdz
IHx8ICFzZXR0aW5ncy0+aXNKYXZhRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gMDsKIApJbmRl
eDogV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCShyZXZpc2lvbiA1MDQ1MikKKysrIFdlYkNv
cmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIxNiw2ICsy
MTYsNyBAQCByb2xlCiByb3dzCiByb3dzcGFuCiBydWxlcworc2FuZGJveAogc2NoZW1lCiBzY29w
ZQogc2Nyb2xsYW1vdW50CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNw
cAkocmV2aXNpb24gNTA0NTIpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6SFRNTEZyYW1lT3duZXJFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IEhUTUxFbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50LCBDcmVhdGVFbGVtZW50KQorICAgICwgbV9zYW5kYm94Rmxh
Z3NEZWNsKDApCisgICAgLCBtX3NhbmRib3hGbGFncygwKQogICAgICwgbV9jb250ZW50RnJhbWUo
MCkKIHsKIH0KQEAgLTY0LDYgKzY2LDM4IEBAIERPTVdpbmRvdyogSFRNTEZyYW1lT3duZXJFbGVt
ZW50Ojpjb250ZW4KICAgICByZXR1cm4gbV9jb250ZW50RnJhbWUgPyBtX2NvbnRlbnRGcmFtZS0+
ZG9tV2luZG93KCkgOiAwOwogfQogCit2b2lkIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6dXBkYXRl
U2FuZGJveEZsYWdzKCkKK3sKKyAgICBTYW5kYm94RmxhZ3MgbmV3U2FuZGJveEZsYWdzID0gU2Fu
ZGJveEZsYWdzTm9uZTsKKworICAgIC8vIEluaGVyaXQgc2FuZGJveCBmbGFncyBmcm9tIHRoZSBw
YXJlbnQgaWYgdGhlcmUgaXMgYW55CisgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVs
ZW1lbnQ7CisgICAgaWYgKGluRG9jdW1lbnQoKSAmJiAob3duZXJFbGVtZW50ID0gZG9jdW1lbnQo
KS0+ZnJhbWUoKS0+b3duZXJFbGVtZW50KCkpKQorICAgICAgICBuZXdTYW5kYm94RmxhZ3MgPSBv
d25lckVsZW1lbnQtPm1fc2FuZGJveEZsYWdzOworCisgICAgcHJvcGFnYXRlU2FuZGJveEZsYWdz
KG5ld1NhbmRib3hGbGFncyk7Cit9CisKK3ZvaWQgSFRNTEZyYW1lT3duZXJFbGVtZW50Ojpwcm9w
YWdhdGVTYW5kYm94RmxhZ3MoU2FuZGJveEZsYWdzIG5ld1NhbmRib3hGbGFncykKK3sKKyAgICBu
ZXdTYW5kYm94RmxhZ3MgfD0gbV9zYW5kYm94RmxhZ3NEZWNsOworICAgIGlmIChuZXdTYW5kYm94
RmxhZ3MgPT0gbV9zYW5kYm94RmxhZ3MpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc2FuZGJv
eEZsYWdzID0gbmV3U2FuZGJveEZsYWdzOworICAgIGlmIChGcmFtZSogZnJhbWUgPSBjb250ZW50
RnJhbWUoKSkgeworICAgICAgICBmb3IgKGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+Zmlyc3RDaGls
ZCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT5uZXh0U2libGluZygpKQorICAgICAg
ICAgICAgZnJhbWUtPm93bmVyRWxlbWVudCgpLT5wcm9wYWdhdGVTYW5kYm94RmxhZ3MobV9zYW5k
Ym94RmxhZ3MpOworICAgIH0KK30KKwordm9pZCBIVE1MRnJhbWVPd25lckVsZW1lbnQ6Omluc2Vy
dGVkSW50b0RvY3VtZW50KCkKK3sKKyAgICBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1l
bnQoKTsKKworICAgIHVwZGF0ZVNhbmRib3hGbGFncygpOworfQorCiAjaWYgRU5BQkxFKFNWRykK
IFNWR0RvY3VtZW50KiBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmdldFNWR0RvY3VtZW50KEV4Y2Vw
dGlvbkNvZGUmIGVjKSBjb25zdAogewpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVy
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1l
bnQuaAkocmV2aXNpb24gNTA0NTIpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDggQEAgY2xhc3MgRnJhbWU7CiBjbGFz
cyBTVkdEb2N1bWVudDsKICNlbmRpZgogCit0eXBlZGVmIHVpbnQ4X3QgU2FuZGJveEZsYWdzOwor
CiBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVi
bGljOgogICAgIHZpcnR1YWwgfkhUTUxGcmFtZU93bmVyRWxlbWVudCgpOwpAQCAtNDYsMTcgKzQ4
LDM2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgU2Nyb2xsYmFyTW9kZSBzY3JvbGxpbmdNb2Rl
KCkgY29uc3QgeyByZXR1cm4gU2Nyb2xsYmFyQXV0bzsgfQogCisgICAgc3RhdGljIGNvbnN0IFNh
bmRib3hGbGFncyBTYW5kYm94RmxhZ3NOb25lID0gMDsKKyAgICBzdGF0aWMgY29uc3QgU2FuZGJv
eEZsYWdzIFNhbmRib3hGbGFnc0FsbCA9IDB4MWY7CisgICAgc3RhdGljIGNvbnN0IFNhbmRib3hG
bGFncyBTYW5kYm94RmxhZ3NOYXZpZ2F0aW9uID0gMHgxMDsKKyAgICBzdGF0aWMgY29uc3QgU2Fu
ZGJveEZsYWdzIFNhbmRib3hGbGFnc1BsdWdpbnMgPSAweDA4OworICAgIHN0YXRpYyBjb25zdCBT
YW5kYm94RmxhZ3MgU2FuZGJveEZsYWdzT3JpZ2luID0gMHgwNDsKKyAgICBzdGF0aWMgY29uc3Qg
U2FuZGJveEZsYWdzIFNhbmRib3hGbGFnc0Zvcm1zID0gMHgwMjsKKyAgICBzdGF0aWMgY29uc3Qg
U2FuZGJveEZsYWdzIFNhbmRib3hGbGFnc1NjcmlwdHMgPSAweDAxOworCisgICAgYm9vbCBpc1Nh
bmRib3hlZChTYW5kYm94RmxhZ3Mgc2FuZGJveEZsYWdNYXNrKSBjb25zdCB7IHJldHVybiBtX3Nh
bmRib3hGbGFncyAmIHNhbmRib3hGbGFnTWFzazsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTEZy
YW1lT3duZXJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Kik7
CiAKKyAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKKyAgICB2b2lkIHVw
ZGF0ZVNhbmRib3hGbGFncygpOworCisgICAgU2FuZGJveEZsYWdzIG1fc2FuZGJveEZsYWdzRGVj
bDsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRnJhbWU7CiAKKyAgICB2b2lkIHByb3Bh
Z2F0ZVNhbmRib3hGbGFncyhTYW5kYm94RmxhZ3MpOworCiAgICAgdmlydHVhbCBib29sIGlzRnJh
bWVPd25lckVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29s
IGlzS2V5Ym9hcmRGb2N1c2FibGUoS2V5Ym9hcmRFdmVudCopIGNvbnN0IHsgcmV0dXJuIG1fY29u
dGVudEZyYW1lOyB9CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIHdpbGxSZW1vdmUoKTsKIAorICAg
IFNhbmRib3hGbGFncyBtX3NhbmRib3hGbGFnczsKKwogICAgIEZyYW1lKiBtX2NvbnRlbnRGcmFt
ZTsKIH07CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAkocmV2aXNpb24gNTA0
NTIpCisrKyBXZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04OCw2ICs4OCw0MiBAQCB2b2lkIEhUTUxJRnJhbWVFbGVtZW50OjpwYXJzZU1hcHBlZEF0
dHJpCiAgICAgICAgIGlmICghYXR0ci0+aXNOdWxsKCkgJiYgIWF0dHItPnZhbHVlKCkudG9JbnQo
KSkKICAgICAgICAgICAgIC8vIEFkZCBhIHJ1bGUgdGhhdCBudWxscyBvdXQgb3VyIGJvcmRlciB3
aWR0aC4KICAgICAgICAgICAgIGFkZENTU0xlbmd0aChhdHRyLCBDU1NQcm9wZXJ0eUJvcmRlcldp
ZHRoLCAiMCIpOworICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHNhbmRib3hBdHRyKSB7
CisgICAgICAgIFNhbmRib3hGbGFncyBuZXdTYW5kYm94RmxhZ3NEZWNsOworICAgICAgICAvLyBQ
YXJzZSB0aGUgdW5vcmRlcmVkIHNldCBvZiB1bmlxdWUgc3BhY2Utc2VwYXJhdGVkIHRva2Vucy4K
KyAgICAgICAgaWYgKGF0dHItPmlzTnVsbCgpKQorICAgICAgICAgICAgbmV3U2FuZGJveEZsYWdz
RGVjbCA9IFNhbmRib3hGbGFnc05vbmU7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbmV3
U2FuZGJveEZsYWdzRGVjbCA9IFNhbmRib3hGbGFnc0FsbDsKKyAgICAgICAgICAgIGNvbnN0IFVD
aGFyKiBjaGFyYWN0ZXJzID0gYXR0ci0+dmFsdWUoKS5jaGFyYWN0ZXJzKCk7CisgICAgICAgICAg
ICB1bnNpZ25lZCBsZW5ndGggPSBhdHRyLT52YWx1ZSgpLmxlbmd0aCgpOworICAgICAgICAgICAg
dW5zaWduZWQgc3RhcnQgPSAwOworICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAg
ICAgICAgICB3aGlsZSAoc3RhcnQgPCBsZW5ndGggJiYgaXNJRnJhbWVTYW5kYm94U3RyaW5nV2hp
dGVzcGFjZShjaGFyYWN0ZXJzW3N0YXJ0XSkpCisgICAgICAgICAgICAgICAgICAgICsrc3RhcnQ7
CisgICAgICAgICAgICAgICAgaWYgKHN0YXJ0ID49IGxlbmd0aCkKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgZW5kID0gc3RhcnQgKyAxOworICAg
ICAgICAgICAgICAgIHdoaWxlIChlbmQgPCBsZW5ndGggJiYgIWlzSUZyYW1lU2FuZGJveFN0cmlu
Z1doaXRlc3BhY2UoY2hhcmFjdGVyc1tlbmRdKSkKKyAgICAgICAgICAgICAgICAgICAgKytlbmQ7
CisKKyAgICAgICAgICAgICAgICAvLyBUdXJuIG9mZiB0aGUgY29ycmVzcG9uZGluZyBzYW5kYm94
IGZsYWcgaWYgaXQncyBzZXQgYXMgImFsbG93ZWQiLgorICAgICAgICAgICAgICAgIEF0b21pY1N0
cmluZyBzYW5kYm94VG9rZW4gPSBBdG9taWNTdHJpbmcoY2hhcmFjdGVycyArIHN0YXJ0LCBlbmQg
LSBzdGFydCk7CisgICAgICAgICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHNhbmRib3hU
b2tlbiwgImFsbG93LXNhbWUtb3JpZ2luIikpCisgICAgICAgICAgICAgICAgICAgIG5ld1NhbmRi
b3hGbGFnc0RlY2wgJj0gflNhbmRib3hGbGFnc09yaWdpbjsKKyAgICAgICAgICAgICAgICBlbHNl
IGlmIChlcXVhbElnbm9yaW5nQ2FzZShzYW5kYm94VG9rZW4sICJhbGxvdy1mb3JtcyIpKQorICAg
ICAgICAgICAgICAgICAgICBuZXdTYW5kYm94RmxhZ3NEZWNsICY9IH5TYW5kYm94RmxhZ3NGb3Jt
czsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShzYW5kYm94VG9r
ZW4sICJhbGxvdy1zY3JpcHRzIikpCisgICAgICAgICAgICAgICAgICAgIG5ld1NhbmRib3hGbGFn
c0RlY2wgJj0gflNhbmRib3hGbGFnc1NjcmlwdHM7CisKKyAgICAgICAgICAgICAgICBzdGFydCA9
IGVuZCArIDE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAobmV3U2Fu
ZGJveEZsYWdzRGVjbCAhPSBtX3NhbmRib3hGbGFnc0RlY2wpIHsKKyAgICAgICAgICAgIG1fc2Fu
ZGJveEZsYWdzRGVjbCA9IG5ld1NhbmRib3hGbGFnc0RlY2w7CisgICAgICAgICAgICB1cGRhdGVT
YW5kYm94RmxhZ3MoKTsKKyAgICAgICAgfQogICAgIH0gZWxzZQogICAgICAgICBIVE1MRnJhbWVF
bGVtZW50QmFzZTo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CkluZGV4OiBXZWJDb3Jl
L2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRN
TElGcmFtZUVsZW1lbnQuaAkocmV2aXNpb24gNTA0NTIpCisrKyBXZWJDb3JlL2h0bWwvSFRNTElG
cmFtZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsMTEgQEAgcHJpdmF0ZToK
ICAgICBBdG9taWNTdHJpbmcgbV9uYW1lOwogfTsKIAoraW5saW5lIGJvb2wgaXNJRnJhbWVTYW5k
Ym94U3RyaW5nV2hpdGVzcGFjZShVQ2hhciBjKQoreworICAgIHJldHVybiBjID09ICcgJyB8fCBj
ID09ICdccicgfHwgYyA9PSAnXG4nIHx8IGMgPT0gJ1x0JyB8fCBjID09ICdcZic7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEhUTUxJRnJhbWVFbGVtZW50X2gKSW5k
ZXg6IFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbAkocmV2aXNpb24gNTA0NTIpCisrKyBXZWJD
b3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICsz
Myw3IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0
TnVsbFRvTnVsbFN0cmluZywgUmVmbGVjdD1tYXJnaW5oZWlnaHRdIERPTVN0cmluZyAgICAgICBt
YXJnaW5IZWlnaHQ7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051
bGxTdHJpbmcsIFJlZmxlY3Q9bWFyZ2lud2lkdGhdIERPTVN0cmluZyAgICAgICBtYXJnaW5XaWR0
aDsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZywg
UmVmbGVjdF0gRE9NU3RyaW5nICAgICAgIG5hbWU7CisgICAgICAgICAgICAgICAgIGF0dHJpYnV0
ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmcsIFJlZmxlY3RdIERPTVN0cmluZyAgICAgICBzYW5k
Ym94OwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5n
LCBSZWZsZWN0XSBET01TdHJpbmcgICAgICAgc2Nyb2xsaW5nOwogICAgICAgICAgICAgICAgICBh
dHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nLCBDdXN0b21TZXR0ZXIsIFJlZmxlY3Rd
IERPTVN0cmluZyAgICAgICBzcmM7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVy
dE51bGxUb051bGxTdHJpbmcsIFJlZmxlY3RdIERPTVN0cmluZyAgICAgICB3aWR0aDsKSW5kZXg6
IFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA1MDQ1
MikKKysrIFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTgxLDEwICsxMTgxLDE1IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
Z2V0Q29va2llcyhsb24KICAgICAgICAgICAgIFZlY3RvcjxDb29raWU+IGRvY0Nvb2tpZXNMaXN0
OwogICAgICAgICAgICAgcmF3Q29va2llc0ltcGxlbWVudGVkID0gZ2V0UmF3Q29va2llcyhkb2N1
bWVudCwgZG9jdW1lbnQtPmNvb2tpZVVSTCgpLCBkb2NDb29raWVzTGlzdCk7CiAgICAgICAgICAg
ICAKLSAgICAgICAgICAgIGlmICghcmF3Q29va2llc0ltcGxlbWVudGVkKQorICAgICAgICAgICAg
aWYgKCFyYXdDb29raWVzSW1wbGVtZW50ZWQpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTog
V2UgbmVlZCBkdXBsaWNhdGlvbiBjaGVja2luZyBmb3IgdGhlIFN0cmluZyByZXByZXNlbnRhdGlv
biBvZiBjb29raWVzLgotICAgICAgICAgICAgICAgIHN0cmluZ0Nvb2tpZXNMaXN0ICs9IGRvY3Vt
ZW50LT5jb29raWUoKTsKLSAgICAgICAgICAgIGVsc2UgeworCisgICAgICAgICAgICAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgICAgICAgICAgICAgLy8gSWdub3JlIGV4Y2VwdGlvbiB0
aHJvd24gYnkgY29va2llKCkgYmVsb3cgLS0gdGhlIG9ubHkgY2FzZSBhbiBleGNlcHRpb24gaXMK
KyAgICAgICAgICAgICAgICAvLyB0aHJvd24gaGVyZSBpcyB3aGVuIHRoZSBpZnJhbWUgaXMgc2Fu
ZGJveGVkLCB3aGljaCB3aWxsIG5ldmVyIGhhcHBlbiBoZXJlCisgICAgICAgICAgICAgICAgLy8g
YmVjYXVzZSAiZG9jIiBpcyB0aGUgZG9jdW1lbnQgb2YgdGhlIG1haW4gZnJhbWUgb2YgdGhlIHBh
Z2UuCisgICAgICAgICAgICAgICAgc3RyaW5nQ29va2llc0xpc3QgKz0gZG9jdW1lbnQtPmNvb2tp
ZShlYyk7CisgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGludCBjb29raWVz
U2l6ZSA9IGRvY0Nvb2tpZXNMaXN0LnNpemUoKTsKICAgICAgICAgICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IGNvb2tpZXNTaXplOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFy
YXdDb29raWVzTGlzdC5jb250YWlucyhkb2NDb29raWVzTGlzdFtpXSkpCkluZGV4OiBXZWJDb3Jl
L2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAJKHJldmlzaW9uIDUwNDUyKQor
KysgV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTAwLDYgKzEwMCw5IEBAIGJvb2wgcGFzc2VzQWNjZXNzQ29udHJvbENoZWNrKGNv
bnN0IFJlc28KICAgICBpZiAoYWNjZXNzQ29udHJvbE9yaWdpblN0cmluZyA9PSAiKiIgJiYgIWlu
Y2x1ZGVDcmVkZW50aWFscykKICAgICAgICAgcmV0dXJuIHRydWU7CiAKKyAgICBpZiAoYWNjZXNz
Q29udHJvbE9yaWdpblN0cmluZyAhPSAiKiIgJiYgc2VjdXJpdHlPcmlnaW4tPm9yaWdpblNhbmRi
b3hlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IGFjY2Vzc0NvbnRyb2xPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmlu
ZyhhY2Nlc3NDb250cm9sT3JpZ2luU3RyaW5nKTsKICAgICBpZiAoIWFjY2Vzc0NvbnRyb2xPcmln
aW4tPmlzU2FtZVNjaGVtZUhvc3RQb3J0KHNlY3VyaXR5T3JpZ2luKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gNTA0NTIpCisrKyBX
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzOCw2ICs0
MzgsMTAgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c3VibWl0Rm9ybShjb25zdCBjaGFyKgogICAgIGlm
ICh1LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgSFRNTEZyYW1lT3duZXJFbGVt
ZW50KiBvd25lckVsZW1lbnQgPSBtX2ZyYW1lLT5vd25lckVsZW1lbnQoKTsKKyAgICBpZiAob3du
ZXJFbGVtZW50ICYmIG93bmVyRWxlbWVudC0+aXNTYW5kYm94ZWQoSFRNTEZyYW1lT3duZXJFbGVt
ZW50OjpTYW5kYm94RmxhZ3NGb3JtcykpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChwcm90
b2NvbElzSmF2YVNjcmlwdCh1KSkgewogICAgICAgICBtX2lzRXhlY3V0aW5nSmF2YVNjcmlwdEZv
cm1BY3Rpb24gPSB0cnVlOwogICAgICAgICBtX2ZyYW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZUlmSmF2
YVNjcmlwdFVSTCh1LCBmYWxzZSwgZmFsc2UpOwpAQCAtMTI1Miw2ICsxMjU2LDkgQEAgYm9vbCBG
cmFtZUxvYWRlcjo6cmVxdWVzdE9iamVjdChSZW5kZXJQYQogICAgIGJvb2wgdXNlRmFsbGJhY2s7
CiAgICAgaWYgKHNob3VsZFVzZVBsdWdpbihjb21wbGV0ZWRVUkwsIG1pbWVUeXBlLCByZW5kZXJl
ci0+aGFzRmFsbGJhY2tDb250ZW50KCksIHVzZUZhbGxiYWNrKSkgewogICAgICAgICBTZXR0aW5n
cyogc2V0dGluZ3MgPSBtX2ZyYW1lLT5zZXR0aW5ncygpOworICAgICAgICBIVE1MRnJhbWVPd25l
ckVsZW1lbnQqIG93bmVyRWxlbWVudCA9IG1fZnJhbWUtPm93bmVyRWxlbWVudCgpOworICAgICAg
ICBpZiAob3duZXJFbGVtZW50ICYmIG93bmVyRWxlbWVudC0+aXNTYW5kYm94ZWQoSFRNTEZyYW1l
T3duZXJFbGVtZW50OjpTYW5kYm94RmxhZ3NQbHVnaW5zKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgaWYgKCFzZXR0aW5ncyB8fCAhc2V0dGluZ3MtPmFyZVBsdWdpbnNFbmFi
bGVkKCkgfHwgCiAgICAgICAgICAgICAoIXNldHRpbmdzLT5pc0phdmFFbmFibGVkKCkgJiYgTUlN
RVR5cGVSZWdpc3RyeTo6aXNKYXZhQXBwbGV0TUlNRVR5cGUobWltZVR5cGUpKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTIxOTUsNiArMjIwMiwxMyBAQCBib29sIEZyYW1lTG9hZGVy
OjpzaG91bGRBbGxvd05hdmlnYXRpb24oCiAgICAgaWYgKG1fZnJhbWUgPT0gdGFyZ2V0RnJhbWUp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCisgICAgLy8gU2FuZGJveGVkIGZyYW1lcyBjYW4gb25s
eSBuYXZpZ2F0ZSB0aGVpciBkZXNjZW5kYW50cy4KKyAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQq
IG93bmVyRWxlbWVudCA9IG1fZnJhbWUtPm93bmVyRWxlbWVudCgpOworICAgIGlmIChvd25lckVs
ZW1lbnQKKyAgICAgICAgJiYgb3duZXJFbGVtZW50LT5pc1NhbmRib3hlZChIVE1MRnJhbWVPd25l
ckVsZW1lbnQ6OlNhbmRib3hGbGFnc05hdmlnYXRpb24pCisgICAgICAgICYmICF0YXJnZXRGcmFt
ZS0+dHJlZSgpLT5pc0Rlc2NlbmRhbnRPZihtX2ZyYW1lKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCiAgICAgLy8gTGV0IGEgZnJhbWUgbmF2aWdhdGUgdGhlIHRvcC1sZXZlbCB3aW5kb3cgdGhh
dCBjb250YWlucyBpdC4gIFRoaXMgaXMKICAgICAvLyBpbXBvcnRhbnQgdG8gYWxsb3cgYmVjYXVz
ZSBpdCBsZXRzIGEgc2l0ZSAiZnJhbWUtYnVzdCIgKGVzY2FwZSBmcm9tIGEKICAgICAvLyBmcmFt
ZSBjcmVhdGVkIGJ5IGFub3RoZXIgd2ViIHNpdGUpLgpJbmRleDogV2ViQ29yZS9wYWdlL1NlY3Vy
aXR5T3JpZ2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4u
Y3BwCShyZXZpc2lvbiA1MDQ1MikKKysrIFdlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTk1LDYgKzk1LDcgQEAgU2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5
T3JpZ2luKGNvbnN0IEtVUgogICAgIDogbV9wcm90b2NvbCh1cmwucHJvdG9jb2woKS5pc051bGwo
KSA/ICIiIDogdXJsLnByb3RvY29sKCkubG93ZXIoKSkKICAgICAsIG1faG9zdCh1cmwuaG9zdCgp
LmlzTnVsbCgpID8gIiIgOiB1cmwuaG9zdCgpLmxvd2VyKCkpCiAgICAgLCBtX3BvcnQodXJsLnBv
cnQoKSkKKyAgICAsIG1fb3JpZ2luU2FuZGJveGVkKGZhbHNlKQogICAgICwgbV9ub0FjY2Vzcyhm
YWxzZSkKICAgICAsIG1fdW5pdmVyc2FsQWNjZXNzKGZhbHNlKQogICAgICwgbV9kb21haW5XYXNT
ZXRJbkRPTShmYWxzZSkKQEAgLTEyMiw2ICsxMjMsNyBAQCBTZWN1cml0eU9yaWdpbjo6U2VjdXJp
dHlPcmlnaW4oY29uc3QgU2VjCiAgICAgLCBtX2hvc3Qob3RoZXItPm1faG9zdC50aHJlYWRzYWZl
Q29weSgpKQogICAgICwgbV9kb21haW4ob3RoZXItPm1fZG9tYWluLnRocmVhZHNhZmVDb3B5KCkp
CiAgICAgLCBtX3BvcnQob3RoZXItPm1fcG9ydCkKKyAgICAsIG1fb3JpZ2luU2FuZGJveGVkKG90
aGVyLT5tX29yaWdpblNhbmRib3hlZCkKICAgICAsIG1fbm9BY2Nlc3Mob3RoZXItPm1fbm9BY2Nl
c3MpCiAgICAgLCBtX3VuaXZlcnNhbEFjY2VzcyhvdGhlci0+bV91bml2ZXJzYWxBY2Nlc3MpCiAg
ICAgLCBtX2RvbWFpbldhc1NldEluRE9NKG90aGVyLT5tX2RvbWFpbldhc1NldEluRE9NKQpAQCAt
MTYyLDcgKzE2NCw3IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhbkFjY2Vzcyhjb25zdCBTZWMK
ICAgICBpZiAobV91bml2ZXJzYWxBY2Nlc3MpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAg
aWYgKG1fbm9BY2Nlc3MgfHwgb3RoZXItPm1fbm9BY2Nlc3MpCisgICAgaWYgKG1fbm9BY2Nlc3Mg
fHwgbV9vcmlnaW5TYW5kYm94ZWQgfHwgb3RoZXItPm1fbm9BY2Nlc3MgfHwgb3RoZXItPm1fb3Jp
Z2luU2FuZGJveGVkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBIZXJlIGFyZSB0
d28gY2FzZXMgd2hlcmUgd2Ugc2hvdWxkIHBlcm1pdCBhY2Nlc3M6CkBAIC0yMDMsNyArMjA1LDcg
QEAgYm9vbCBTZWN1cml0eU9yaWdpbjo6Y2FuUmVxdWVzdChjb25zdCBLVQogICAgIGlmIChtX3Vu
aXZlcnNhbEFjY2VzcykKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAobV9ub0FjY2Vz
cykKKyAgICBpZiAobV9ub0FjY2VzcyB8fCBtX29yaWdpblNhbmRib3hlZCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0YXJnZXRPcmlnaW4gPSBT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCk7CkBAIC0yODksNyArMjkxLDcgQEAgU3RyaW5nIFNl
Y3VyaXR5T3JpZ2luOjp0b1N0cmluZygpIGNvbnN0CiAgICAgaWYgKGlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuICJudWxsIjsKIAotICAgIGlmIChtX25vQWNjZXNzKQorICAgIGlmIChtX25vQWNj
ZXNzIHx8IG1fb3JpZ2luU2FuZGJveGVkKQogICAgICAgICByZXR1cm4gIm51bGwiOwogCiAgICAg
aWYgKG1fcHJvdG9jb2wgPT0gImZpbGUiKQpAQCAtMzY5LDYgKzM3MSw5IEBAIGJvb2wgU2VjdXJp
dHlPcmlnaW46OmVxdWFsKGNvbnN0IFNlY3VyaXQKICAgICBpZiAobV9kb21haW5XYXNTZXRJbkRP
TSAmJiBtX2RvbWFpbiAhPSBvdGhlci0+bV9kb21haW4pCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAorICAgIGlmIChtX29yaWdpblNhbmRib3hlZCB8fCBvdGhlci0+bV9vcmlnaW5TYW5kYm94ZWQp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBX
ZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlPcmlnaW4uaAkocmV2aXNpb24gNTA0NTIpCisrKyBXZWJDb3JlL3BhZ2UvU2VjdXJp
dHlPcmlnaW4uaAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDYgKzExMCw5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgLy8gV0FSTklORzogVGhpcyBpcyBhbiBleHRyZW1lbHkgcG93ZXJm
dWwgYWJpbGl0eS4gIFVzZSB3aXRoIGNhdXRpb24hCiAgICAgICAgIHZvaWQgZ3JhbnRVbml2ZXJz
YWxBY2Nlc3MoKTsKIAorICAgICAgICB2b2lkIHNldE9yaWdpblNhbmRib3hlZChib29sIG9yaWdp
blNhbmRib3hlZCkgeyBtX29yaWdpblNhbmRib3hlZCA9IG9yaWdpblNhbmRib3hlZDsgfQorICAg
ICAgICBib29sIG9yaWdpblNhbmRib3hlZCgpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luU2FuZGJv
eGVkOyB9CisKICAgICAgICAgYm9vbCBpc1NlY3VyZVRyYW5zaXRpb25Ubyhjb25zdCBLVVJMJikg
Y29uc3Q7CiAKICAgICAgICAgLy8gVGhlIGxvY2FsIFNlY3VyaXR5T3JpZ2luIGlzIHRoZSBtb3N0
IHByaXZpbGVnZWQgU2VjdXJpdHlPcmlnaW4uCkBAIC0xNzUsNiArMTc4LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBTdHJpbmcgbV9ob3N0OwogICAgICAgICBTdHJpbmcgbV9kb21h
aW47CiAgICAgICAgIHVuc2lnbmVkIHNob3J0IG1fcG9ydDsKKyAgICAgICAgYm9vbCBtX29yaWdp
blNhbmRib3hlZDsKICAgICAgICAgYm9vbCBtX25vQWNjZXNzOwogICAgICAgICBib29sIG1fdW5p
dmVyc2FsQWNjZXNzOwogICAgICAgICBib29sIG1fZG9tYWluV2FzU2V0SW5ET007CkluZGV4OiBX
ZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUcmFja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N0b3JhZ2UvRGF0YWJhc2VUcmFja2VyLmNwcAkocmV2aXNpb24gNTA0NTIpCisrKyBXZWJDb3Jl
L3N0b3JhZ2UvRGF0YWJhc2VUcmFja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDYgKzEy
OSwxMCBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6Y2FuRXN0YWJsaXNoRGF0YWJhCiAKICAgICBT
ZWN1cml0eU9yaWdpbiogb3JpZ2luID0gZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCk7CiAKKyAg
ICAvLyBEaXNhYmxlIHRoZSB1c2FnZSBvZiB0aGUgZGF0YWJhc2UgaWYgdGhlIHNhbmRib3hlZCBv
cmlnaW4gYnJvd3NpbmcgY29udGV4dCBmbGFncyB0YWtlcyBlZmZlY3QKKyAgICBpZiAob3JpZ2lu
LT5vcmlnaW5TYW5kYm94ZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgLy8gU2lu
Y2Ugd2UncmUgaW1taW5lbnRseSBvcGVuaW5nIGEgZGF0YWJhc2Ugd2l0aGluIHRoaXMgRG9jdW1l
bnQncyBvcmlnaW4sIG1ha2Ugc3VyZSB0aGlzIG9yaWdpbiBpcyBiZWluZyB0cmFja2VkIGJ5IHRo
ZSBRdW90YVRyYWNrZXIKICAgICAvLyBieSBmZXRjaGluZyBpdCdzIGN1cnJlbnQgdXNhZ2Ugbm93
CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIHVzYWdlID0gdXNhZ2VGb3JPcmlnaW4ob3JpZ2luKTsK
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDUwNTEwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNzYgQEAKKzIwMDktMTEtMDQgIFl1YW4gU29uZyAgPHNvbmcu
eXVhbkBlcmljc3Nvbi5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkZWQgdGVzdHMgZm9yIEhUTUw1IElGcmFtZSBzYW5kYm94aW5nLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyODgKKworICAg
ICAgICAqIGZhc3QvZnJhbWVzL2lmcmFtZS1zYW5kYm94LWF0dHJpYnV0ZS1wcmVzZXJ2ZWQtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9pZnJhbWUtc2FuZGJveC1h
dHRyaWJ1dGUtcHJlc2VydmVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jl
c291cmNlcy9ub24tc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWRvY3VtZW50LWNv
b2tpZS1yZWFkLWRlbmllZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNv
dXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWFsbG93ZWQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1kaXNhbGxvd2Vk
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQt
aWZyYW1lLW5hdmlnYXRlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNv
dXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLWNoaWxkLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24t
bmF2aWdhdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNlcy9z
YW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tc291cmNl
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQt
aWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4u
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1p
ZnJhbWUtcGx1Z2lucy1mcmFtZS1hcHBsZXQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9m
cmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1lbWJlZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFt
ZS1wbHVnaW5zLWZyYW1lLW9iamVjdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1l
cy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1wcm9wYWdhdGUuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtc2NyaXB0LWR5bmFt
aWMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1k
b2N1bWVudC1jb29raWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1l
cy9zYW5kYm94ZWQtaWZyYW1lLWRvY3VtZW50LWNvb2tpZS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm1zLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1mb3Jtcy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW1vZGlmeS1zZWxmLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFt
ZS1tb2RpZnktc2VsZi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94
ZWQtaWZyYW1lLW5hdmlnYXRpb24tY2hpbGQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tY2hpbGQuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXBh
cmVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NhbmRib3hl
ZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9m
cmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmstZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRp
b24tdGFyZ2V0bGluay5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94
ZWQtaWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVu
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtcGx1
Z2lucy1hcHBsZXQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9z
YW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtYXBwbGV0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1lbWJlZC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1lbWJl
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXBs
dWdpbnMtb2JqZWN0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMv
c2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLW9iamVjdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXByb3BhZ2F0ZS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtcHJvcGFnYXRlLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtc2NyaXB0aW5n
LWR5bmFtaWMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5k
Ym94ZWQtaWZyYW1lLXNjcmlwdGluZy1keW5hbWljLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtc2NyaXB0aW5nLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1zY3JpcHRpbmcuaHRtbDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMveHNzLURFTklF
RC1zYW5kYm94ZWQtaWZyYW1lLWF0dGFja2VyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC1zYW5kYm94ZWQtaWZyYW1lLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXNhbmRib3hl
ZC1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVz
dC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVk
LWlmcmFtZS1kZW5pZWQtd2l0aG91dC13aWxkY2FyZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUt
ZGVuaWVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
cmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtYWxsb3ctaWZyYW1lLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2Vz
L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtYWxsb3cuY2dpOiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1z
YW5kYm94ZWQtaWZyYW1lLWRlbmllZC1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVk
LWlmcmFtZS1kZW5pZWQtd2l0aG91dC13aWxkY2FyZC1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wt
c2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtd2l0aG91dC13aWxkY2FyZC5jZ2k6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9s
LXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLmNnaTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
bWFjL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlm
cmFtZS1hbGxvdy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9o
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUt
ZGVuaWVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2h0dHAv
dGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5p
ZWQtd2l0aG91dC13aWxkY2FyZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3Jh
Z2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2UvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZGVu
aWVkLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2RvbXN0b3JhZ2UvbG9j
YWxzdG9yYWdlL3NhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9zYW5kYm94ZWQtaWZyYW1l
LWRlbmllZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2RvbXN0b3JhZ2Uvc2Vzc2lv
bnN0b3JhZ2UvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWlmcmFtZS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2RvbXN0b3JhZ2Uvc2Vzc2lvbnN0b3JhZ2Uvc2FuZGJv
eGVkLWlmcmFtZS1kZW5pZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdl
L2RvbXN0b3JhZ2Uvc2Vzc2lvbnN0b3JhZ2Uvc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQuaHRtbDog
QWRkZWQuCisKIDIwMDktMTEtMDQgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBVbnJldmlld2VkIHJvbGxvdXQuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9pZnJhbWUtc2FuZGJveC1hdHRyaWJ1dGUtcHJlc2VydmVkLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUtc2FuZGJveC1hdHRy
aWJ1dGUtcHJlc2VydmVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL2lmcmFtZS1zYW5kYm94LWF0dHJpYnV0ZS1wcmVzZXJ2ZWQtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExIEBACitUaGlzIHRlc3QgdmVyaWZpZXMgdGhl
IGlmcmFtZSBzYW5kYm94IGF0dHJpYnV0ZSBpcyBwcmVzZXJ2ZWQgYWNyb3NzIG5hdmlnYXRpb24g
b2YgdGhlIGlmcmFtZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RoZUZyYW1lJykuc2FuZGJveCBpcyAnYWxsb3ctc2FtZS1v
cmlnaW4gYWxsb3ctZm9ybXMgYWxsb3ctc2NyaXB0cycKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3RoZUZyYW1lJykuc2FuZGJveCBpcyAnYWxsb3ctc2FtZS1vcmlnaW4gYWxsb3ctZm9y
bXMgYWxsb3ctc2NyaXB0cycKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUtc2FuZGJv
eC1hdHRyaWJ1dGUtcHJlc2VydmVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvaWZyYW1lLXNhbmRib3gtYXR0cmlidXRlLXByZXNlcnZlZC5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXNhbmRib3gtYXR0cmlidXRl
LXByZXNlcnZlZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQwIEBACis8aHRtbD4KKzxo
ZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1m
dW5jdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK3ZhciBpZnJhbWVIYXNM
b2FkZWRGaXJzdFBhZ2UgPSBmYWxzZTsKKworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgaWYg
KCFpZnJhbWVIYXNMb2FkZWRGaXJzdFBhZ2UpIHsKKyAgICAgICAgaWZyYW1lSGFzTG9hZGVkRmly
c3RQYWdlID0gdHJ1ZTsKKyAgICAgICAgc2hvdWxkQmUoImRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCd0aGVGcmFtZScpLnNhbmRib3giLCAiJ2FsbG93LXNhbWUtb3JpZ2luIGFsbG93LWZvcm1zIGFs
bG93LXNjcmlwdHMnIik7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aGVGcmFt
ZScpLnNyYyA9ICJqYXZhc2NyaXB0OmRvY3VtZW50LmxvY2F0aW9uLnJlcGxhY2UoJy4vcmVzb3Vy
Y2VzL2VtcHR5LWJvZHkuaHRtbCcpIjsKKyAgICB9IGVsc2UgeworICAgICAgICBzaG91bGRCZSgi
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RoZUZyYW1lJykuc2FuZGJveCIsICInYWxsb3ctc2Ft
ZS1vcmlnaW4gYWxsb3ctZm9ybXMgYWxsb3ctc2NyaXB0cyciKTsKKyAgICAgICAgaXNTdWNjZXNz
ZnVsbHlQYXJzZWQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
eworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAg
ICB9CisgICAgfQorfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2Ny
aXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlw
dGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIHRoZSBpZnJhbWUgc2FuZGJveCBhdHRyaWJ1dGUgaXMg
cHJlc2VydmVkIGFjcm9zcyBuYXZpZ2F0aW9uIG9mIHRoZSBpZnJhbWUuIik7Cit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPGlmcmFtZSBpZD0idGhlRnJhbWUiIHNh
bmRib3g9ImFsbG93LXNhbWUtb3JpZ2luIGFsbG93LWZvcm1zIGFsbG93LXNjcmlwdHMiIG9ubG9h
ZD0icnVuVGVzdCgpIj48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtZG9jdW1lbnQtY29va2llLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZy
YW1lLWRvY3VtZW50LWNvb2tpZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWRvY3VtZW50LWNvb2tpZS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorVGhpcyB0ZXN0IGNoZWNrcyB0aGF0
IGEgU0VDVVJJVFlfRVJSIGV4Y2VwdGlvbiBpcyByYWlzZWQgd2hpbGUgYWNjZXNzaW5nIGRvY3Vt
ZW50LmRvbWFpbiBpbiBhIHNhbmRib3hlZCBpZnJhbWUgKHdpdGhvdXQgImFsbG93LW9yaWdpbiIg
c2V0KQorCisKK1BBU1MKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1p
ZnJhbWUtZG9jdW1lbnQtY29va2llLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1kb2N1bWVudC1jb29raWUuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtZG9jdW1lbnQt
Y29va2llLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzUgQEAKKzxodG1sPgorPGhlYWQ+
CisKKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCitmdW5jdGlvbiBjaGVja1Jlc3VsdHMo
KQoreworICAgIHRlc3RfcmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RfcmVz
dWx0Iik7CisgICAgaWYgKHNlbGYuZnJhbWVzWzBdLmVyci5pbmRleE9mKCJTRUNVUklUWV9FUlIi
KSAhPSAtMSkgeworICAgICAgICB0ZXN0X3Jlc3VsdC5pbm5lckhUTUwgPSAiUEFTUyI7CisgICAg
fQorICAgIGVsc2UgeworICAgICAgICB0ZXN0X3Jlc3VsdC5pbm5lckhUTUwgPSAiRkFJTDogZXhj
ZXB0aW9uIG5vdCB0aHJvd24iOworICAgIH0KK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxi
b2R5IG9ubG9hZD0iY2hlY2tSZXN1bHRzKCk7Ij4KKworICAgIDxwPlRoaXMgdGVzdCBjaGVja3Mg
dGhhdCBhIFNFQ1VSSVRZX0VSUiBleGNlcHRpb24gaXMgcmFpc2VkIHdoaWxlIGFjY2Vzc2luZyBk
b2N1bWVudC5kb21haW4KKyAgICBpbiBhIHNhbmRib3hlZCBpZnJhbWUgKHdpdGhvdXQgJnF1b3Q7
YWxsb3ctb3JpZ2luJnF1b3Q7IHNldCk8L3A+CisKKyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93
LXNjcmlwdHMiCisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWRv
Y3VtZW50LWNvb2tpZS1yZWFkLWRlbmllZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKworICAgIDxw
IGlkPSJ0ZXN0X3Jlc3VsdCI+Li4uPC9wPgorPC9ib2R5PgorCis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm1zLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWZv
cm1zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3NhbmRib3hlZC1pZnJhbWUtZm9ybXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDQgQEAKK1RoaXMgdGVzdCBydW5zIGZpdmUgSUZyYW1lcyB3aXRoIGZvcm1zIGFsbG93ZWQs
IG9uZSBJRnJhbWUgd2l0aCBmb3JtcyBkaXNhbGxvd2VkLCB0aGVuIGZpdmUgbW9yZSBJRnJhbWVz
IHdpdGggZm9ybXMgYWxsb3dlZC4gSWYgdGVuIGZvcm0gc3VibWlzc2lvbnMgYXJlIG1hZGUsIGFu
ZCB0aGUgZGlzYWxsb3dlZCBzdWJtaXNzaW9uIGlzIG5vdCBvbmUgb2YgdGhlbSwgd2UgY29uc2lk
ZXIgdGhlIHRlc3QgdG8gaGF2ZSBwYXNzZWQuCisKKyAgICAgICAgICAgICAgICAgICAgCitQQVNT
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm1zLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFt
ZS1mb3Jtcy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2Fu
ZGJveGVkLWlmcmFtZS1mb3Jtcy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkyIEBACis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgeworICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKwordmFyIHN1
Ym1pc3Npb25fY291bnQgICAgICA9IDA7Cit2YXIgZGlzYWxsb3dlZF9zdWJtaXNzaW9uID0gZmFs
c2U7CisKK2Z1bmN0aW9uIGFsbG93ZWRfZm9ybV9zdWJtaXR0ZWQoKSB7CisgICAgc3VibWlzc2lv
bl9jb3VudCArKzsKKworICAgIGlmIChzdWJtaXNzaW9uX2NvdW50ID09IDEwKSB7CisgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0X3N0YXR1cyIpLmlubmVySFRNTCA9IChkaXNh
bGxvd2VkX3N1Ym1pc3Npb24gPyAiRkFJTCIgOiAiUEFTUyIpOworICAgICAgCisgICAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICB3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIH0KK30KKworZnVuY3Rpb24gZGlzYWxs
b3dlZF9mb3JtX3N1Ym1pdHRlZCgpIHsKKyAgICBkaXNhbGxvd2VkX3N1Ym1pc3Npb24gPSB0cnVl
OworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+CisKKyAgICA8cD5UaGlzIHRlc3Qg
cnVucyBmaXZlIElGcmFtZXMgd2l0aCBmb3JtcyBhbGxvd2VkLCBvbmUgSUZyYW1lIHdpdGggZm9y
bXMKKyAgICBkaXNhbGxvd2VkLCB0aGVuIGZpdmUgbW9yZSBJRnJhbWVzIHdpdGggZm9ybXMgYWxs
b3dlZC4gSWYgdGVuIGZvcm0KKyAgICBzdWJtaXNzaW9ucyBhcmUgbWFkZSwgYW5kIHRoZSBkaXNh
bGxvd2VkIHN1Ym1pc3Npb24gaXMgbm90IG9uZSBvZiB0aGVtLAorICAgIHdlIGNvbnNpZGVyIHRo
ZSB0ZXN0IHRvIGhhdmUgcGFzc2VkLjwvcD4KKworICAgIDwhLS0gZml2ZSBJRnJhbWVzIHdpdGgg
Zm9ybXMgYWxsb3dlZCAtLT4KKworICAgIDxpZnJhbWUgc3R5bGU9IndpZHRoOiA2MHB4OyBoZWln
aHQ6IDYwcHg7IgorICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1zIgor
ICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tYWxsb3dlZC5odG1s
Ij4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIHN0eWxlPSJ3aWR0aDogNjBweDsgaGVpZ2h0
OiA2MHB4OyIKKyAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyIKKyAg
ICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWFsbG93ZWQuaHRtbCI+
CisgICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDog
NjBweDsiCisgICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMiCisgICAg
ICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1hbGxvd2VkLmh0bWwiPgor
ICAgIDwvaWZyYW1lPgorICAgIDxpZnJhbWUgc3R5bGU9IndpZHRoOiA2MHB4OyBoZWlnaHQ6IDYw
cHg7IgorICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1zIgorICAgICAg
ICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tYWxsb3dlZC5odG1sIj4KKyAg
ICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIHN0eWxlPSJ3aWR0aDogNjBweDsgaGVpZ2h0OiA2MHB4
OyIKKyAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyIKKyAgICAgICAg
c3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWFsbG93ZWQuaHRtbCI+CisgICAg
PC9pZnJhbWU+CisKKyAgICA8IS0tIG9uZSBJRnJhbWUgd2l0aCBmb3JtcyBkaXNhbGxvd2VkIC0t
PgorCisgICAgPGlmcmFtZSBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsiCisgICAg
ICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMiCisgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRi
b3hlZC1pZnJhbWUtZm9ybS1kaXNhbGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorCisgICAg
PCEtLSBmaXZlIG1vcmUgSUZyYW1lcyB3aXRoIGZvcm1zIGFsbG93ZWQgLS0+CisKKyAgICA8aWZy
YW1lIHN0eWxlPSJ3aWR0aDogNjBweDsgaGVpZ2h0OiA2MHB4OyIKKyAgICAgICAgc2FuZGJveD0i
YWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyIKKyAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJv
eGVkLWlmcmFtZS1mb3JtLWFsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisgICAgPGlmcmFt
ZSBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsiCisgICAgICAgIHNhbmRib3g9ImFs
bG93LXNjcmlwdHMgYWxsb3ctZm9ybXMiCisgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hl
ZC1pZnJhbWUtZm9ybS1hbGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorICAgIDxpZnJhbWUg
c3R5bGU9IndpZHRoOiA2MHB4OyBoZWlnaHQ6IDYwcHg7IgorICAgICAgICBzYW5kYm94PSJhbGxv
dy1zY3JpcHRzIGFsbG93LWZvcm1zIgorICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQt
aWZyYW1lLWZvcm0tYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIHN0
eWxlPSJ3aWR0aDogNjBweDsgaGVpZ2h0OiA2MHB4OyIKKyAgICAgICAgc2FuZGJveD0iYWxsb3ct
c2NyaXB0cyBhbGxvdy1mb3JtcyIKKyAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlm
cmFtZS1mb3JtLWFsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBzdHls
ZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsiCisgICAgICAgIHNhbmRib3g9ImFsbG93LXNj
cmlwdHMgYWxsb3ctZm9ybXMiCisgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJh
bWUtZm9ybS1hbGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorICAgIDxwIGlkPSd0ZXN0X3N0
YXR1cyc+Li4uPC9wPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9m
cmFtZXMvc2FuZGJveGVkLWlmcmFtZS1tb2RpZnktc2VsZi1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1tb2RpZnktc2Vs
Zi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9z
YW5kYm94ZWQtaWZyYW1lLW1vZGlmeS1zZWxmLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw3IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogVW5zYWZlIEphdmFTY3JpcHQg
YXR0ZW1wdCB0byBhY2Nlc3MgZnJhbWUgd2l0aCBVUkwgaGVhZCUzRS4gRG9tYWlucywgcHJvdG9j
b2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgorCitUaGlzIHRlc3QgY2FzZSB2ZXJpZmllcyB0aGF0
IGEgc2FuZGJveGVkIGZyYW1lIGNhbm5vdCBicmVhayBvdXQgb2YgaXRzIHNhbmRib3ggYnkgbW9k
aWZ5aW5nIGl0cyBvd24gc2FuZGJveCBhdHRyaWJ1dGUuIEEgd2FybmluZyBtZXNzYWdlIChhYm91
dCBjcm9zcy1zaXRlIHNjcmlwdGluZykgaXMgZXhwZWN0ZWQuCisKK1BBU1MKKworCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW1vZGlmeS1zZWxmLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1t
b2RpZnktc2VsZi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMv
c2FuZGJveGVkLWlmcmFtZS1tb2RpZnktc2VsZi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDQ1IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgeworICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7Cit9CisKK2Z1bmN0aW9uIGNoZWNrKCkgeworICAgIHZhciByZXN1bHRfZmllbGQgID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOworCisgICAgaWYgKGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJmIikuc2FuZGJveCAhPSAiYWxsb3ctc2NyaXB0cyIpIHsKKyAgICAgICAgcmVz
dWx0X2ZpZWxkLmlubmVySFRNTCA9ICJGQUlMOiBzYW5kYm94IGF0dHJpYnV0ZSBtb2RpZmllZCI7
CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXN1bHRfZmllbGQuaW5uZXJIVE1MID0gIlBB
U1MiOworICAgIH0KK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0iY2hl
Y2soKTsiPgorICAgIDxwPlRoaXMgdGVzdCBjYXNlIHZlcmlmaWVzIHRoYXQgYSBzYW5kYm94ZWQg
ZnJhbWUgY2Fubm90IGJyZWFrIG91dAorICAgICAgICBvZiBpdHMgc2FuZGJveCBieSBtb2RpZnlp
bmcgaXRzIG93biBzYW5kYm94IGF0dHJpYnV0ZS4gQSB3YXJuaW5nCisgICAgICAgIG1lc3NhZ2Ug
KGFib3V0IGNyb3NzLXNpdGUgc2NyaXB0aW5nKSBpcyBleHBlY3RlZC48L3A+CisKKyAgICA8cCBp
ZD0icmVzdWx0Ij5GQUlMPC9wPgorCisgICAgPGlmcmFtZSBpZD0iZiIKKyAgICAgICAgICAgIHNh
bmRib3g9ImFsbG93LXNjcmlwdHMiCisgICAgICAgICAgICBzcmM9ImRhdGE6dGV4dC9odG1sLAor
ICAgICAgICAgICAgICAgIDxoZWFkPgorICAgICAgICAgICAgICAgICAgICA8c2NyaXB0PgorICAg
ICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zYW5k
Ym94ID0gJ2FsbG93LXNjcmlwdHMgYWxsb3ctc2FtZS1vcmlnaW4gaGFja2VkLXZpYS13aW5kb3ct
b2JqZWN0JzsKKyAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgeyAvKiBpZ25vcmUgZXhj
ZXB0aW9uICovIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHRvcC5kb2N1bWVudCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgdG9wLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmJykuc2Fu
ZGJveCA9ICdhbGxvdy1zY3JpcHRzIGFsbG93LXNhbWUtb3JpZ2luIGhhY2tlZC12aWEtZG9tJzsK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICA8L3NjcmlwdD4KKyAg
ICAgICAgICAgICAgICA8L2hlYWQ+Ij4KKyAgICA8L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlv
bi1jaGlsZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFt
ZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLWNoaWxkLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdh
dGlvbi1jaGlsZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorVGhp
cyB0ZXN0IHZlcmlmaWVzIHRoYXQgYSBzYW5kYm94ZWQgSUZyYW1lIENBTiBuYXZpZ2F0ZSBhIGNo
aWxkIGluIHRoZSBmcmFtZSB0cmVlLgorCisKK1BBU1MKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1jaGlsZC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1j
aGlsZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJv
eGVkLWlmcmFtZS1uYXZpZ2F0aW9uLWNoaWxkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MzIgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorCit2YXIgbmF2aWdhdGVkID0gZmFsc2U7
CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGZyYW1lX3dhc19uYXZpZ2F0ZWQo
KSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3Rfc3RhdHVzJykuaW5uZXJIVE1M
ID0gIlBBU1MiOyAgICAKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Cisg
ICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgfQor
fQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+CisgICAgPHA+VGhpcyB0ZXN0IHZlcmlm
aWVzIHRoYXQgYSBzYW5kYm94ZWQgSUZyYW1lIENBTiBuYXZpZ2F0ZSBhIGNoaWxkCisgICAgICAg
IGluIHRoZSBmcmFtZSB0cmVlLjwvcD4KKworICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc2Ny
aXB0cyBhbGxvdy1zYW1lLW9yaWdpbiIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRi
b3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1jaGlsZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKworICAg
IDxwIGlkPSd0ZXN0X3N0YXR1cyc+RkFJTDwvcD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRi
b3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXBh
cmVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNiBAQAorVGhpcyB0ZXN0
IHZlcmlmaWVzIHRoYXQgYSBzYW5kYm94ZWQgSUZyYW1lIGNhbm5vdCBuYXZpZ2F0ZSBhbiBhbmNl
c3RvciBpbiB0aGUgZnJhbWUgdHJlZSBieSBhc3NpZ25pbmcgdGhlIGxvY2F0aW9uIGF0dHJpYnV0
ZS4KKworVGhpcyBpcyBkb25lIGJ5IGxvYWRpbmcgdGVuIG5vbi1zYW5kYm94ZWQgSUZyYW1lcywg
YW5kIGEgc2luZ2xlIHNhbmRib3hlZCBvbmUuIEV4cGVjdCB0ZW4gZnJhbWVzIHRvIGJlIG5hdmln
YXRlZCwgYnV0IHRoZSBzYW5kYm94ZWQgb25lIHRvIG5vdCBiZSBvbmUgb2YgdGhlbS4KKworICAg
ICAgICAgICAgICAgCitQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94
ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXBhcmVudC5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1u
YXZpZ2F0aW9uLXBhcmVudC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY0IEBACis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
eworICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgd2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworbmF2aWdhdGVk
X2ZyYW1lcyA9IDA7CisKK2Z1bmN0aW9uIGNoZWNrX3Jlc3VsdHMoKSB7CisgICAgdGVzdF9zdGF0
dXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdF9zdGF0dXMnKTsKKworICAgIGlmIChz
ZWxmLm5hdmlnYXRlZC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoJ3BhcmVudC5odG1sJykgPT0gLTEp
CisgICAgICAgIHRlc3Rfc3RhdHVzLmlubmVySFRNTCA9ICdGQUlMOiBkaXNhbGxvd2VkIGZyYW1l
IG5hdmlnYXRlZCc7CisgICAgZWxzZSBpZiAobmF2aWdhdGVkX2ZyYW1lcyA9PSAxMCkKKyAgICAg
ICAgdGVzdF9zdGF0dXMuaW5uZXJIVE1MID0gJ1BBU1MnOworICAgIGVsc2UKKyAgICAgICAgdGVz
dF9zdGF0dXMuaW5uZXJIVE1MID0gJ0ZBSUw6IGZyYW1lcyBub3QgbmF2aWdhdGVkIHByb3Blcmx5
JzsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGNvdW50
X2ZyYW1lKCkgeworICAgIG5hdmlnYXRlZF9mcmFtZXMgKys7CisKKyAgICBpZiAobmF2aWdhdGVk
X2ZyYW1lcyA9PSAxMCkKKyAgICAgICAgY2hlY2tfcmVzdWx0cygpOworfQorCis8L3NjcmlwdD4K
KzwvaGVhZD4KKworPGJvZHk+CisKKyAgICA8cD5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhIHNh
bmRib3hlZCBJRnJhbWUgY2Fubm90IG5hdmlnYXRlIGFuIGFuY2VzdG9yCisgICAgaW4gdGhlIGZy
YW1lIHRyZWUgYnkgYXNzaWduaW5nIHRoZSBsb2NhdGlvbiBhdHRyaWJ1dGUuPC9wPgorCisgICAg
PHA+VGhpcyBpcyBkb25lIGJ5IGxvYWRpbmcgdGVuIG5vbi1zYW5kYm94ZWQgSUZyYW1lcywgYW5k
IGEgc2luZ2xlCisgICAgc2FuZGJveGVkIG9uZS4gRXhwZWN0IHRlbiBmcmFtZXMgdG8gYmUgbmF2
aWdhdGVkLCBidXQgdGhlIHNhbmRib3hlZAorICAgIG9uZSB0byA8Yj5ub3Q8L2I+IGJlIG9uZSBv
ZiB0aGVtLjwvcD4KKworICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvbm9uLXNhbmRib3hlZC1p
ZnJhbWUtbmF2aWdhdGlvbi5odG1sIj48L2lmcmFtZT4KKyAgICA8aWZyYW1lIHNyYz0icmVzb3Vy
Y2VzL25vbi1zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24uaHRtbCI+PC9pZnJhbWU+CisgICAg
PGlmcmFtZSBzcmM9InJlc291cmNlcy9ub24tc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLmh0
bWwiPjwvaWZyYW1lPgorICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvbm9uLXNhbmRib3hlZC1p
ZnJhbWUtbmF2aWdhdGlvbi5odG1sIj48L2lmcmFtZT4KKyAgICA8aWZyYW1lIHNyYz0icmVzb3Vy
Y2VzL25vbi1zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24uaHRtbCI+PC9pZnJhbWU+CisKKyAg
ICA8aWZyYW1lIG5hbWU9J25hdmlnYXRlZCcKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3Nh
bmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQuaHRtbCIKKyAgICA8L2lmcmFtZT4KKwor
ICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvbm9uLXNhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlv
bi5odG1sIj48L2lmcmFtZT4KKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL25vbi1zYW5kYm94
ZWQtaWZyYW1lLW5hdmlnYXRpb24uaHRtbCI+PC9pZnJhbWU+CisgICAgPGlmcmFtZSBzcmM9InJl
c291cmNlcy9ub24tc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLmh0bWwiPjwvaWZyYW1lPgor
ICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvbm9uLXNhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlv
bi5odG1sIj48L2lmcmFtZT4KKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL25vbi1zYW5kYm94
ZWQtaWZyYW1lLW5hdmlnYXRpb24uaHRtbCI+PC9pZnJhbWU+CisKKyAgICA8cCBpZD0ndGVzdF9z
dGF0dXMnPi4uLjwvcD4KKyAgICAKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRsaW5rLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQt
aWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFy
Z2V0bGluay1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNiBAQAorVGhpcyB0
ZXN0IHZlcmlmaWVzIHRoYXQgYSBzYW5kYm94ZWQgSUZyYW1lIGNhbm5vdCBvcGVuIGEgbGluayBp
biBhbm90aGVyIGZyYW1lIHVzaW5nIHRoZSB0YXJnZXQgYXR0cmlidXRlIG9mIGEgbGluay4KKwor
VGhpcyBpcyBkb25lIGJ5IGxvYWRpbmcgdGVuIG5vbi1zYW5kYm94ZWQgSUZyYW1lcywgYW5kIGEg
c2luZ2xlIHNhbmRib3hlZCBvbmUuIEluIGFkZGl0aW9uIGVhY2ggb2YgdGhlc2UgZnJhbWVzIGhh
dmUgYSB0YXJnZXQgZnJhbWUgKHNvLCAyMiBmcmFtZXMgaW4gdG90YWwpLiBFeHBlY3QgdGVuIGZy
YW1lcyB0byBiZSBhYmxlIHRvIG9wZW4gYSBsaW5rIGluIHRoZWlyIGNvcnJlc3BvbmRpbmcgdGFy
Z2V0IGZyYW1lLCBidXQgdGhlIHNhbmRib3hlZCBvbmUgdG8gbm90IGJlIG9uZSBvZiB0aGVtLgor
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorUEFTUwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1l
LW5hdmlnYXRpb24tdGFyZ2V0bGluay5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDUgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0Pgor
CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgd2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworfQorCituYXZpZ2F0ZWRfZnJhbWVzID0gMDsKKworZnVuY3Rp
b24gY2hlY2tfcmVzdWx0cygpIHsKKyAgICB0ZXN0X3N0YXR1cyA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCd0ZXN0X3N0YXR1cycpOworCisgICAgaWYgKHNlbGYuc2FuZGJveGVkX3RhcmdldC5s
b2NhdGlvbi5ocmVmLmluZGV4T2YoJy5odG1sJykgIT0gLTEpCisgICAgICAgIHRlc3Rfc3RhdHVz
LmlubmVySFRNTCA9ICdGQUlMOiBkaXNhbGxvd2VkIGZyYW1lIG5hdmlnYXRlZCc7CisgICAgZWxz
ZSBpZiAobmF2aWdhdGVkX2ZyYW1lcyA9PSAxMCkKKyAgICAgICAgdGVzdF9zdGF0dXMuaW5uZXJI
VE1MID0gJ1BBU1MnOworICAgIGVsc2UKKyAgICAgICAgdGVzdF9zdGF0dXMuaW5uZXJIVE1MID0g
J0ZBSUw6IGZyYW1lcyBub3QgbmF2aWdhdGVkIHByb3Blcmx5JzsKKworICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGNvdW50X2ZyYW1lKCkgeworICAgIG5hdmln
YXRlZF9mcmFtZXMgKys7CisKKyAgICBpZiAobmF2aWdhdGVkX2ZyYW1lcyA9PSAxMCkKKyAgICAg
ICAgY2hlY2tfcmVzdWx0cygpOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+CisK
KyAgICA8cD5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhIHNhbmRib3hlZCBJRnJhbWUgY2Fubm90
IG9wZW4gYSBsaW5rIGluCisgICAgYW5vdGhlciBmcmFtZSB1c2luZyB0aGUgPGNvZGU+dGFyZ2V0
PC9jb2RlPiBhdHRyaWJ1dGUgb2YgYSBsaW5rLjwvcD4KKworICAgIDxwPlRoaXMgaXMgZG9uZSBi
eSBsb2FkaW5nIHRlbiBub24tc2FuZGJveGVkIElGcmFtZXMsIGFuZCBhIHNpbmdsZQorICAgIHNh
bmRib3hlZCBvbmUuIEluIGFkZGl0aW9uIGVhY2ggb2YgdGhlc2UgZnJhbWVzIGhhdmUgYSB0YXJn
ZXQgZnJhbWUKKyAgICAoc28sIDIyIGZyYW1lcyBpbiB0b3RhbCkuIEV4cGVjdCB0ZW4gZnJhbWVz
IHRvIGJlIGFibGUgdG8gb3BlbiBhIGxpbmsKKyAgICBpbiB0aGVpciBjb3JyZXNwb25kaW5nIHRh
cmdldCBmcmFtZSwgYnV0IHRoZSBzYW5kYm94ZWQgb25lCisgICAgdG8gPGI+bm90PC9iPiBiZSBv
bmUgb2YgdGhlbS48L3A+CisKKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1p
ZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRsaW5rLmh0bWwiCisgICAgICAgICAgICBuYW1lPSJmMSI+
CisgICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBuYW1lPSJmMV90YXJnZXQiIHNyYz0iYWJvdXQ6
YmxhbmsiPjwvaWZyYW1lPgorCisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQt
aWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay5odG1sIgorICAgICAgICAgICAgbmFtZT0iZjIi
PgorICAgIDwvaWZyYW1lPgorICAgIDxpZnJhbWUgbmFtZT0iZjJfdGFyZ2V0IiBzcmM9ImFib3V0
OmJsYW5rIj48L2lmcmFtZT4KKworICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVk
LWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbCIKKyAgICAgICAgICAgIG5hbWU9ImYz
Ij4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIG5hbWU9ImYzX3RhcmdldCIgc3JjPSJhYm91
dDpibGFuayI+PC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hl
ZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRsaW5rLmh0bWwiCisgICAgICAgICAgICBuYW1lPSJm
NCI+CisgICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBuYW1lPSJmNF90YXJnZXQiIHNyYz0iYWJv
dXQ6YmxhbmsiPjwvaWZyYW1lPgorCisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94
ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay5odG1sIgorICAgICAgICAgICAgbmFtZT0i
ZjUiPgorICAgIDwvaWZyYW1lPgorICAgIDxpZnJhbWUgbmFtZT0iZjVfdGFyZ2V0IiBzcmM9ImFi
b3V0OmJsYW5rIj48L2lmcmFtZT4KKworICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJv
eGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbCIKKyAgICAgICAgICAgIG5hbWU9
InNhbmRib3hlZCIKKyAgICAgICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctc2Ft
ZS1vcmlnaW4iPgorICAgIDwvaWZyYW1lPgorICAgIDxpZnJhbWUgbmFtZT0ic2FuZGJveGVkX3Rh
cmdldCIgc3JjPSJhYm91dDpibGFuayI+PC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNyYz0icmVz
b3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRsaW5rLmh0bWwiCisgICAg
ICAgICAgICBuYW1lPSJmNiI+CisgICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBuYW1lPSJmNl90
YXJnZXQiIHNyYz0iYWJvdXQ6YmxhbmsiPjwvaWZyYW1lPgorCisgICAgPGlmcmFtZSBzcmM9InJl
c291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay5odG1sIgorICAg
ICAgICAgICAgbmFtZT0iZjciPgorICAgIDwvaWZyYW1lPgorICAgIDxpZnJhbWUgbmFtZT0iZjdf
dGFyZ2V0IiBzcmM9ImFib3V0OmJsYW5rIj48L2lmcmFtZT4KKworICAgIDxpZnJhbWUgc3JjPSJy
ZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbCIKKyAg
ICAgICAgICAgIG5hbWU9ImY4Ij4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIG5hbWU9ImY4
X3RhcmdldCIgc3JjPSJhYm91dDpibGFuayI+PC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNyYz0i
cmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRsaW5rLmh0bWwiCisg
ICAgICAgICAgICBuYW1lPSJmOSI+CisgICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBuYW1lPSJm
OV90YXJnZXQiIHNyYz0iYWJvdXQ6YmxhbmsiPjwvaWZyYW1lPgorCisgICAgPGlmcmFtZSBzcmM9
InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay5odG1sIgor
ICAgICAgICAgICAgbmFtZT0iZjEwIj4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIG5hbWU9
ImYxMF90YXJnZXQiIHNyYz0iYWJvdXQ6YmxhbmsiPjwvaWZyYW1lPgorCisgICAgPHAgaWQ9J3Rl
c3Rfc3RhdHVzJz4uLi48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlm
cmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRv
d29wZW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKK1ZlcmlmaWVz
IHRoYXQgYSBzYW5kYm94ZWQgSUZyYW1lIGNhbm5vdCBvcGVuIG5ldyB3aW5kb3dzIHVzaW5nIHdp
bmRvdy5vcGVuKCkuIEV4cGVjdCB0ZW4gd2luZG93cyB0byBiZSBvcGVuZWQsIGJ1dCB0aGUgc2Fu
ZGJveGVkIElGcmFtZSBub3QgdG8gYmUgdGhlIG9wZW5lciBvZiBhbnkgb2YgdGhlbS4KKworICAg
ICAgICAgICAgICAgCitQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94
ZWQtaWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVu
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQt
aWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDY4IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuc2V0Q2FuT3BlbldpbmRvd3ModHJ1ZSk7Cit9CisKK3ZhciB0ZXN0X3N0YXR1cyAg
ICAgICAgPSAiRkFJTDogbm90IGNvbXBsZXRlZCI7Cit2YXIgd2luZG93c19vcGVuZWQgICAgID0g
MDsKK3ZhciBtYWluX3dpbmRvd19sb2FkZWQgPSBmYWxzZTsKK3ZhciB0ZXN0X2NvbXBsZXRlZCAg
ICAgPSBmYWxzZTsKKworZnVuY3Rpb24gdXBkYXRlX3N0YXR1cyhsb2FkZWQsIGRvbmUpIHsKKyAg
ICBtYWluX3dpbmRvd19sb2FkZWQgfD0gbG9hZGVkOworICAgIHRlc3RfY29tcGxldGVkIHw9IGRv
bmU7CisKKyAgICBpZiAobWFpbl93aW5kb3dfbG9hZGVkICYmIHRlc3RfY29tcGxldGVkKSB7Cisg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0X3N0YXR1cyIpLmlubmVySFRNTCA9
IHRlc3Rfc3RhdHVzOworICAgICAgICBpZiAodGVzdF9jb21wbGV0ZWQgJiYgd2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOworICAgIH0KK30KKworZnVuY3Rpb24gd2luZG93X29wZW5lZCh3aW5kb3dfb3BlbmVy
KSB7CisgICAgaWYgKHdpbmRvd19vcGVuZXIgPT0gc2VsZi5zYW5kYm94ZWQpIHsKKyAgICAgICAg
dGVzdF9zdGF0dXMgPSAiRkFJTDogc2FuZGJveGVkIGZyYW1lIG9wZW5lZCB3aW5kb3ciOworICAg
ICAgICB1cGRhdGVfc3RhdHVzKGZhbHNlLCB0cnVlKTsKKyAgICB9IGVsc2UgeworICAgICAgICB3
aW5kb3dzX29wZW5lZCArKzsKKyAgICAgICAgaWYgKHdpbmRvd3Nfb3BlbmVkID09IDEwICYmICF0
ZXN0X2NvbXBsZXRlZCkgeworICAgICAgICAgICAgdGVzdF9zdGF0dXMgPSAiUEFTUyI7CisgICAg
ICAgICAgICB1cGRhdGVfc3RhdHVzKGZhbHNlLCB0cnVlKTsKKyAgICAgICAgfQorICAgIH0KK30K
KworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0idXBkYXRlX3N0YXR1cyh0cnVl
LCBmYWxzZSk7Ij4KKworICAgIDxwPlZlcmlmaWVzIHRoYXQgYSBzYW5kYm94ZWQgSUZyYW1lIGNh
bm5vdCBvcGVuIG5ldyB3aW5kb3dzCisgICAgdXNpbmcgPGNvZGU+d2luZG93Lm9wZW4oKTwvY29k
ZT4uIEV4cGVjdCB0ZW4gd2luZG93cyB0byBiZSBvcGVuZWQsCisgICAgYnV0IHRoZSBzYW5kYm94
ZWQgSUZyYW1lIG5vdCB0byBiZSB0aGUgb3BlbmVyIG9mIGFueSBvZiB0aGVtLjwvcD4KKworICAg
IDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRv
d29wZW4uaHRtbCI+PC9pZnJhbWU+CisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94
ZWQtaWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi5odG1sIj48L2lmcmFtZT4KKyAgICA8aWZy
YW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVu
Lmh0bWwiPjwvaWZyYW1lPgorICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlm
cmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4uaHRtbCI+PC9pZnJhbWU+CisgICAgPGlmcmFtZSBz
cmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi5odG1s
Ij48L2lmcmFtZT4KKworICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFt
ZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4uaHRtbCIKKyAgICAgICAgICAgIHNhbmRib3g9ImFsbG93
LXNjcmlwdHMiCisgICAgICAgICAgICBuYW1lPSJzYW5kYm94ZWQiPgorICAgIDwvaWZyYW1lPgor
CisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24t
d2luZG93b3Blbi5odG1sIj48L2lmcmFtZT4KKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3Nh
bmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0bWwiPjwvaWZyYW1lPgorICAg
IDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRv
d29wZW4uaHRtbCI+PC9pZnJhbWU+CisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94
ZWQtaWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi5odG1sIj48L2lmcmFtZT4KKyAgICA8aWZy
YW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVu
Lmh0bWwiPjwvaWZyYW1lPgorCisgICAgPHAgaWQ9J3Rlc3Rfc3RhdHVzJz4uLi48L3A+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZy
YW1lLXBsdWdpbnMtYXBwbGV0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtYXBwbGV0LWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJh
bWUtcGx1Z2lucy1hcHBsZXQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgg
QEAKKyAgCitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBJRnJhbWUgc2FuZGJveGluZyBkaXNhYmxl
cyBhcHBsZXRzOgorCitOb24tc2FuZGJveGVkIElGcmFtZSBsb2FkcyBhcHBsZXQgYXMgdXN1YWwg
KGZyYW1lMSkKK1NhbmRib3hlZCBJRnJhbWUgZGlzYWJsZXMgYXBwbGV0IChmcmFtZTIpCitOT1RF
OiBEdW1wUmVuZGVyVHJlZSBkb2VzIG5vdCBjdXJyZW50bHkgc3VwcG9ydCBhcHBsZXRzLCBzbyB0
aGlzIHRlc3QgbmVlZHMgdG8gYmUgcnVuIGluIFNhZmFyaS4KKworRkFJTDogbm9uLXNhbmRib3hl
ZCBJRnJhbWUgZmFpbGVkIHRvIGluc3RhbnRpYXRlIGFwcGxldApJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLWFwcGxldC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1h
cHBsZXQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRi
b3hlZC1pZnJhbWUtcGx1Z2lucy1hcHBsZXQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0
NiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKword2luZG93
Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgIHRlc3Rfc3RhdHVzID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3Rlc3Rfc3RhdHVzJyk7CisJCisgICAgaW5pdDEgPSB3aW5kb3cuZnJhbWVzWydm
cmFtZTEnXS5kb2N1bWVudFsnYXBwJ10uaW5pdDsKKyAgICBpbml0MiA9IHdpbmRvdy5mcmFtZXNb
J2ZyYW1lMiddLmRvY3VtZW50WydhcHAnXS5pbml0OworCQorICAgIGlmIChpbml0MikKKyAgICAg
ICAgdGVzdF9zdGF0dXMuaW5uZXJIVE1MID0gJ0ZBSUw6IHNhbmRib3hlZCBJRnJhbWUgaW5zdGFu
dGlhdGVkIGFwcGxldCc7CisgICAgZWxzZSBpZiAoISBpbml0MSkKKyAgICAgICAgdGVzdF9zdGF0
dXMuaW5uZXJIVE1MID0gJ0ZBSUw6IG5vbi1zYW5kYm94ZWQgSUZyYW1lIGZhaWxlZCB0byBpbnN0
YW50aWF0ZSBhcHBsZXQnOworICAgIGVsc2UKKyAgICAgICAgdGVzdF9zdGF0dXMuaW5uZXJIVE1M
ID0gJ1BBU1MnOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorICAgIDxpZnJhbWUg
aWQ9ImZyYW1lMSIKKwkgICAgc3R5bGU9IndpZHRoOiAyMDBweDsgaGVpZ2h0OiAxMDBweDsiCisJ
ICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1hcHBsZXQu
aHRtbCI+CisgICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBpZD0iZnJhbWUyIgorCSAgICBzdHls
ZT0id2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDEwMHB4OyIKKwkgICAgc2FuZGJveD0iYWxsb3ctc2Ft
ZS1vcmlnaW4gYWxsb3ctc2NyaXB0cyIKKwkgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlm
cmFtZS1wbHVnaW5zLWZyYW1lLWFwcGxldC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKyAgICA8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICA8cD5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBJRnJh
bWUgc2FuZGJveGluZyBkaXNhYmxlcyBhcHBsZXRzOjwvcD4KKworICAgIDx1bD4KKyAgICAgICAg
PGxpPk5vbi1zYW5kYm94ZWQgSUZyYW1lIGxvYWRzIGFwcGxldCBhcyB1c3VhbCAoZnJhbWUxKTwv
bGk+CisgICAgICAgIDxsaT5TYW5kYm94ZWQgSUZyYW1lIGRpc2FibGVzIGFwcGxldCAoZnJhbWUy
KTwvbGk+CisgICAgPC91bD4KKworICAgIDxwPk5PVEU6IER1bXBSZW5kZXJUcmVlIGRvZXMgbm90
IGN1cnJlbnRseSBzdXBwb3J0IGFwcGxldHMsIHNvIHRoaXMgdGVzdAorICAgIG5lZWRzIHRvIGJl
IHJ1biBpbiBTYWZhcmkuPC9wPgorCisgICAgPHAgaWQ9J3Rlc3Rfc3RhdHVzJz4uLi48L3A+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQt
aWZyYW1lLXBsdWdpbnMtZW1iZWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1lbWJlZC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZy
YW1lLXBsdWdpbnMtZW1iZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYg
QEAKKyAgCitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBJRnJhbWUgc2FuZGJveGluZyBkaXNhYmxl
cyAiZW1iZWQiIHBsdWdpbnM6CisKK05vbi1zYW5kYm94ZWQgSUZyYW1lIGxvYWRzIHBsdWdpbnMg
YXMgdXN1YWwgKGZyYW1lMSkKK1NhbmRib3hlZCBJRnJhbWUgZGlzYWJsZXMgcGx1Z2lucyAoZnJh
bWUyKQorUEFTUwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFt
ZS1wbHVnaW5zLWVtYmVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFt
ZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLWVtYmVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZW1iZWQuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+
CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgIGVt
YmVkMSA9IHdpbmRvdy5mcmFtZXNbJ2ZyYW1lMSddLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdw
bHVnaW4nKTsKKyAgICBlbWJlZDIgPSB3aW5kb3cuZnJhbWVzWydmcmFtZTInXS5kb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgncGx1Z2luJyk7CisgICAgdGVzdF9zdGF0dXMgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgndGVzdF9zdGF0dXMnKTsKKworICAgIGlmIChlbWJlZDIuZGVzdHJveVN0cmVh
bSkKKyAgICAgICAgdGVzdF9zdGF0dXMuaW5uZXJIVE1MID0gJ0ZBSUw6IHNhbmRib3hlZCBJRnJh
bWUgaW5zdGFudGlhdGVkIHBsdWdpbic7CisgICAgZWxzZSBpZiAoISBlbWJlZDEuZGVzdHJveVN0
cmVhbSkKKyAgICAgICAgdGVzdF9zdGF0dXMuaW5uZXJIVE1MID0gJ0ZBSUw6IG5vbi1zYW5kYm94
ZWQgSUZyYW1lIGZhaWxlZCB0byBpbnN0YW50aWF0ZSBwbHVnaW4nOworICAgIGVsc2UKKyAgICAg
ICAgdGVzdF9zdGF0dXMuaW5uZXJIVE1MID0gJ1BBU1MnOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+
CisKKzxib2R5PgorICAgIDxpZnJhbWUgaWQ9ImZyYW1lMSIKKyAgICAgICAgICAgIHN0eWxlPSJ3
aWR0aDogMjAwcHg7IGhlaWdodDogMTAwcHg7IgorICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMv
c2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLWZyYW1lLWVtYmVkLmh0bWwiPgorICAgIDwvaWZyYW1l
PgorICAgIDxpZnJhbWUgaWQ9ImZyYW1lMiIKKyAgICAgICAgICAgIHN0eWxlPSJ3aWR0aDogMjAw
cHg7IGhlaWdodDogMTAwcHg7IgorICAgICAgICAgICAgc2FuZGJveD0iYWxsb3ctc2FtZS1vcmln
aW4iCisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMt
ZnJhbWUtZW1iZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisgICAgPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+CisgICAgPHA+VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgSUZyYW1lIHNhbmRib3hpbmcg
ZGlzYWJsZXMgJnF1b3Q7ZW1iZWQmcXVvdDsgcGx1Z2luczo8L3A+CisKKyAgICA8dWw+CisgICAg
ICAgIDxsaT5Ob24tc2FuZGJveGVkIElGcmFtZSBsb2FkcyBwbHVnaW5zIGFzIHVzdWFsIChmcmFt
ZTEpPC9saT4KKyAgICAgICAgPGxpPlNhbmRib3hlZCBJRnJhbWUgZGlzYWJsZXMgcGx1Z2lucyAo
ZnJhbWUyKTwvbGk+CisgICAgPC91bD4KKworICAgIDxwIGlkPSd0ZXN0X3N0YXR1cyc+Li4uPC9w
PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJv
eGVkLWlmcmFtZS1wbHVnaW5zLW9iamVjdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLW9iamVjdC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94
ZWQtaWZyYW1lLXBsdWdpbnMtb2JqZWN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw2IEBACisgIAorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgSUZyYW1lIHNhbmRib3hpbmcg
ZGlzYWJsZXMgIm9iamVjdCIgcGx1Z2luczoKKworTm9uLXNhbmRib3hlZCBJRnJhbWUgbG9hZHMg
cGx1Z2lucyBhcyB1c3VhbCAoZnJhbWUxKQorU2FuZGJveGVkIElGcmFtZSBkaXNhYmxlcyBwbHVn
aW5zIChmcmFtZTIpCitQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94
ZWQtaWZyYW1lLXBsdWdpbnMtb2JqZWN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLW9iamVjdC5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5z
LW9iamVjdC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQzIEBACis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCit3aW5kb3cub25sb2FkID0gZnVuY3Rpb24o
KSB7CisgICAgZW1iZWQxID0gd2luZG93LmZyYW1lc1snZnJhbWUxJ10uZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3BsdWdpbicpOworICAgIGVtYmVkMiA9IHdpbmRvdy5mcmFtZXNbJ2ZyYW1lMidd
LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbHVnaW4nKTsKKyAgICB0ZXN0X3N0YXR1cyA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0X3N0YXR1cycpOworCisgICAgaWYgKGVtYmVkMi5k
ZXN0cm95U3RyZWFtKQorICAgICAgICB0ZXN0X3N0YXR1cy5pbm5lckhUTUwgPSAnRkFJTDogc2Fu
ZGJveGVkIElGcmFtZSBpbnN0YW50aWF0ZWQgcGx1Z2luJzsKKyAgICBlbHNlIGlmICghIGVtYmVk
MS5kZXN0cm95U3RyZWFtKQorICAgICAgICB0ZXN0X3N0YXR1cy5pbm5lckhUTUwgPSAnRkFJTDog
bm9uLXNhbmRib3hlZCBJRnJhbWUgZmFpbGVkIHRvIGluc3RhbnRpYXRlIHBsdWdpbic7CisgICAg
ZWxzZQorICAgICAgICB0ZXN0X3N0YXR1cy5pbm5lckhUTUwgPSAnUEFTUyc7Cit9Cis8L3Njcmlw
dD4KKzwvaGVhZD4KKworPGJvZHk+CisgICAgPGlmcmFtZSBpZD0iZnJhbWUxIgorICAgICAgICAg
ICAgc3R5bGU9IndpZHRoOiAyMDBweDsgaGVpZ2h0OiAxMDBweDsiCisgICAgICAgICAgICBzcmM9
InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtb2JqZWN0Lmh0bWwiPgor
ICAgIDwvaWZyYW1lPgorICAgIDxpZnJhbWUgaWQ9ImZyYW1lMiIKKyAgICAgICAgICAgIHN0eWxl
PSJ3aWR0aDogMjAwcHg7IGhlaWdodDogMTAwcHg7IgorICAgICAgICAgICAgc2FuZGJveD0iYWxs
b3ctc2FtZS1vcmlnaW4iCisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZy
YW1lLXBsdWdpbnMtZnJhbWUtb2JqZWN0Lmh0bWwiPgorICAgIDwvaWZyYW1lPgorICAgIDxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IElGcmFt
ZSBzYW5kYm94aW5nIGRpc2FibGVzICZxdW90O29iamVjdCZxdW90OyBwbHVnaW5zOjwvcD4KKwor
ICAgIDx1bD4KKyAgICAgICAgPGxpPk5vbi1zYW5kYm94ZWQgSUZyYW1lIGxvYWRzIHBsdWdpbnMg
YXMgdXN1YWwgKGZyYW1lMSk8L2xpPgorICAgICAgICA8bGk+U2FuZGJveGVkIElGcmFtZSBkaXNh
YmxlcyBwbHVnaW5zIChmcmFtZTIpPC9saT4KKyAgICA8L3VsPgorCisgICAgPHAgaWQ9J3Rlc3Rf
c3RhdHVzJz4uLi48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtcHJvcGFnYXRlLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXByb3BhZ2F0
ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9z
YW5kYm94ZWQtaWZyYW1lLXByb3BhZ2F0ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNCBAQAorCitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBuZXN0ZWQgSUZyYW1lIHNhbmRi
b3hpbmcgcHJvcGFnYXRlIHRoZSBwbHVnaW4gZmxhZy4gVGhlIHBhcmVudCBJRnJhbWUgaXMgZXhw
bGljaXRseSBzYW5kYm94ZWQsIHRoZSBuZXN0ZWQgSUZyYW1lIGlzIG5vdCBleHBsaWNpdGx5IHNh
bmRib3hlZC4KKworUEFTUzogbmVzdGVkIG5vbi1zYW5kYm94ZWQgSUZyYW1lIGNhbm5vdCBpbnN0
YW50aWF0ZSBwbHVnaW4gaW4gc2FuZGJveGVkIElGcmFtZQpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1wcm9wYWdhdGUuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXByb3BhZ2F0ZS5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1w
cm9wYWdhdGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNSBAQAorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKK3NlbGYuY2hpbGRfc3RhdHVz
ID0gJ0ZBSUwnOworCitmdW5jdGlvbiB1cGRhdGVfc3RhdHVzKCkgeworICAgIHRlc3Rfc3RhdHVz
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3Rfc3RhdHVzJyk7CisgICAgdGVzdF9zdGF0
dXMuaW5uZXJIVE1MID0gc2VsZi5jaGlsZF9zdGF0dXM7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4K
KworPGJvZHkgb25sb2FkPSd1cGRhdGVfc3RhdHVzKCk7Jz4KKyAgICA8aWZyYW1lIG5hbWU9ImZy
YW1lMSIKKyAgICAgICAgICAgIHNhbmRib3g9ImFsbG93LXNhbWUtb3JpZ2luIGFsbG93LXNjcmlw
dHMiCisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXByb3BhZ2F0
ZS5odG1sIj4KKyAgICA8L2lmcmFtZT4KKyAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAg
ICA8cD5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBuZXN0ZWQgSUZyYW1lIHNhbmRib3hpbmcgcHJv
cGFnYXRlIHRoZSBwbHVnaW4gZmxhZy4gVGhlIHBhcmVudCBJRnJhbWUgaXMgZXhwbGljaXRseSBz
YW5kYm94ZWQsIHRoZSBuZXN0ZWQgSUZyYW1lIGlzIG5vdCBleHBsaWNpdGx5IHNhbmRib3hlZC48
L3A+CisgICAgPHAgaWQ9J3Rlc3Rfc3RhdHVzJz4uLi48L3A+Cis8L2JvZHk+Cis8L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXNjcmlwdGluZy1k
eW5hbWljLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1l
cy9zYW5kYm94ZWQtaWZyYW1lLXNjcmlwdGluZy1keW5hbWljLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtc2NyaXB0
aW5nLWR5bmFtaWMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKK1Ro
aXMgdGVzdCB2ZXJpZmllcyB0aGF0IHJ1bi10aW1lIGFzc2lnbm1lbnRzIHRvIHRoZSBzYW5kYm94
IGF0dHJpYnV0ZSBwcmV2ZW50cyBuZXcgc2NyaXB0cyBmcm9tIGxvYWRpbmcsIGJ1dCBleGlzdGlu
ZyBvbmVzIGtlZXAgcnVubmluZy4KKworCitQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9zYW5kYm94ZWQtaWZyYW1lLXNjcmlwdGluZy1keW5hbWljLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1zY3JpcHRpbmctZHlu
YW1pYy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJv
eGVkLWlmcmFtZS1zY3JpcHRpbmctZHluYW1pYy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDMzIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KwordmFyIGFsbG93ZWRfZXhlY3V0ZWQgICAgPSBmYWxzZTsKK3ZhciBkaXNhbGxvd2VkX2V4ZWN1
dGVkID0gZmFsc2U7CisKK2Z1bmN0aW9uIHVwZGF0ZV9zdGF0dXMoKSB7CisgICAgZWxlbSA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0X3N0YXR1cycpOworCisgICAgaWYgKGRpc2FsbG93
ZWRfZXhlY3V0ZWQpCisgICAgICAgIGVsZW0uaW5uZXJIVE1MID0gJ0ZBSUwgIChkaXNhbGxvd2Vk
IHNjcmlwdCBleGVjdXRlZCknOworICAgIGVsc2UgaWYgKGFsbG93ZWRfZXhlY3V0ZWQpCisgICAg
ICAgIGVsZW0uaW5uZXJIVE1MID0gJ1BBU1MnOworICAgIGVsc2UKKyAgICAgICAgZWxlbS5pbm5l
ckhUTUwgPSAnRkFJTCAgKGFsbG93ZWQgc2NyaXB0IG5vdCBleGVjdXRlZCknOworfQorPC9zY3Jp
cHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0ndXBkYXRlX3N0YXR1cygpOyc+CisgICAgPHA+
VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgcnVuLXRpbWUgYXNzaWdubWVudHMgdG8gdGhlIHNhbmRi
b3gKKyAgICAgICAgYXR0cmlidXRlIHByZXZlbnRzIG5ldyBzY3JpcHRzIGZyb20gbG9hZGluZywg
YnV0IGV4aXN0aW5nCisgICAgICAgIG9uZXMga2VlcCBydW5uaW5nLjwvcD4KKworICAgIDxpZnJh
bWUgaWQ9ImZyYW1lIiBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXNjcmlwdC1keW5h
bWljLmh0bWwiPgorICAgIDwvaWZyYW1lPgorCisgICAgPHAgaWQ9J3Rlc3Rfc3RhdHVzJz4uLi48
L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5k
Ym94ZWQtaWZyYW1lLXNjcmlwdGluZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1zY3JpcHRpbmctZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFt
ZS1zY3JpcHRpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKK1Zl
cmlmeSB0aGF0IHNhbmRib3hlZCBmcmFtZXMgd2l0aCBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIiBj
YW4gZXhlY3V0ZSBzY3JpcHRzLCBidXQgb3RoZXIgc2FuZGJveGVkIGZyYW1lcyBjYW5ub3QuCisK
KyAgCitQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1l
LXNjcmlwdGluZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Nh
bmRib3hlZC1pZnJhbWUtc2NyaXB0aW5nLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXNjcmlwdGluZy5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDM1IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKword2luZG93LmRpc2FsbG93ZWRfZXhlY3V0ZWQgPSB3aW5kb3cuYWxsb3dl
ZF9leGVjdXRlZCA9IGZhbHNlOworCitmdW5jdGlvbiB1cGRhdGVfc3RhdHVzKCkgeworICAgIGVs
ZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdF9zdGF0dXMnKTsKKworICAgIGlmICh3
aW5kb3cuZGlzYWxsb3dlZF9leGVjdXRlZCkKKyAgICAgICAgZWxlbS5pbm5lckhUTUwgPSAnRkFJ
TCAgKGRpc2FsbG93ZWQgc2NyaXB0IGV4ZWN1dGVkKSc7CisgICAgZWxzZSBpZiAod2luZG93LmFs
bG93ZWRfZXhlY3V0ZWQpCisgICAgICAgIGVsZW0uaW5uZXJIVE1MID0gJ1BBU1MnOworICAgIGVs
c2UKKyAgICAgICAgZWxlbS5pbm5lckhUTUwgPSAnRkFJTCAgKGFsbG93ZWQgc2NyaXB0IG5vdCBl
eGVjdXRlZCknOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0ndXBkYXRl
X3N0YXR1cygpOyc+CisgICAgPHA+VmVyaWZ5IHRoYXQgc2FuZGJveGVkIGZyYW1lcyB3aXRoIHNh
bmRib3g9JnF1b3Q7YWxsb3ctc2NyaXB0cyZxdW90OyBjYW4gZXhlY3V0ZSBzY3JpcHRzLCBidXQK
KyAgICBvdGhlciBzYW5kYm94ZWQgZnJhbWVzIGNhbm5vdC48L3A+CisKKyAgICA8aWZyYW1lIHNh
bmRib3g9ImFsbG93LXNhbWUtb3JpZ2luIGFsbG93LXNjcmlwdHMiCisgICAgICAgICAgICBzcmM9
ImphdmFzY3JpcHQ6IHdpbmRvdy50b3AuYWxsb3dlZF9leGVjdXRlZCAgICA9IHRydWU7Ij4KKyAg
ICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93LXNhbWUtb3JpZ2luIgorICAg
ICAgICAgICAgc3JjPSJqYXZhc2NyaXB0OiB3aW5kb3cudG9wLmRpc2FsbG93ZWRfZXhlY3V0ZWQg
PSB0cnVlOyI+CisgICAgPC9pZnJhbWU+CisgICAgCisgICAgPHAgaWQ9J3Rlc3Rfc3RhdHVzJz4u
Li48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9y
ZXNvdXJjZXMvbm9uLXNhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9ub24tc2FuZGJveGVkLWlmcmFt
ZS1uYXZpZ2F0aW9uLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1l
cy9yZXNvdXJjZXMvbm9uLXNhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDUgQEAKKzxodG1sPgorPGJvZHk+CisgIDxpZnJhbWUgc3JjPSJzYW5k
Ym94ZWQtaWZyYW1lLW5hdmlnYXRpb24tc291cmNlLmh0bWwiPjwvaWZyYW1lPgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hl
ZC1pZnJhbWUtZG9jdW1lbnQtY29va2llLXJlYWQtZGVuaWVkLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZG9jdW1l
bnQtY29va2llLXJlYWQtZGVuaWVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1kb2N1bWVudC1jb29raWUtcmVh
ZC1kZW5pZWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMSBAQAorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQ+CisKK3ZhciBlcnIgPSAiLS0iOworCitmdW5jdGlvbiBydW5UZXN0KCkKK3sK
KyAgICB0cnkgeworICAgICAgICB2YXIgY29va2llID0gZG9jdW1lbnQuY29va2llOworICAgIH0K
KyAgICBjYXRjaCAoZXJyKSB7ICAgICAgICAgICAvLyBTRUNVUklUWV9FUlI6IERPTSBFeGNlcHRp
b24gMTgKKyAgICAgICAgc2VsZi5lcnIgPSBlcnIubmFtZTsKKyAgICB9Cit9CisKKzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCk7Ij4KKzwvYm9keT4KKzwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1l
LWZvcm0tYWxsb3dlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tYWxsb3dlZC5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUt
Zm9ybS1hbGxvd2VkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNSBAQAorPGJvZHkgb25s
b2FkPSJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZm9ybScpLnN1Ym1pdCgpOyI+Cis8Zm9ybSBp
ZD0iZm9ybSIgYWN0aW9uPSJqYXZhc2NyaXB0OndpbmRvdy50b3AuYWxsb3dlZF9mb3JtX3N1Ym1p
dHRlZCgpOyI+CisgICAgPGlucHV0IG5hbWU9eCB2YWx1ZT15IHR5cGU9ImNoZWNrYm94IiBjaGVj
a2VkPSJ5ZXMiLz4KKzwvZm9ybT4KKzwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tZGlzYWxsb3dlZC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZy
YW1lLWZvcm0tZGlzYWxsb3dlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1kaXNhbGxvd2VkLmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNiBAQAorPGJvZHkgb25sb2FkPSJkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnZm9ybScpLnN1Ym1pdCgpOyIKKyAgICAgIGJnY29sb3I9J3llbGxvdyc+Cis8
Zm9ybSBpZD0iZm9ybSIgYWN0aW9uPSJqYXZhc2NyaXB0OndpbmRvdy50b3AuZGlzYWxsb3dlZF9m
b3JtX3N1Ym1pdHRlZCgpOyI+CisgICAgPGlucHV0IG5hbWU9eCB2YWx1ZT15IHR5cGU9ImNoZWNr
Ym94IiBjaGVja2VkPSJ5ZXMiLz4KKzwvZm9ybT4KKzwvYm9keT4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRlZC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQt
aWZyYW1lLW5hdmlnYXRlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9m
cmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGVkLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNSBAQAorPGh0bWw+Cis8Ym9keSBvbmxvYWQ9J3NlbGYudG9wLmNvdW50
X2ZyYW1lKCk7Jz4KK25hdmlnYXRlZAorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1jaGls
ZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9z
YW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tY2hpbGQuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRp
b24tY2hpbGQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBtb2RpZnkoKSB7CisgICAgc2VsZi5uYXZpZ2F0ZWQubG9j
YXRpb24uYXNzaWduKCJqYXZhc2NyaXB0OiB0b3AuZnJhbWVfd2FzX25hdmlnYXRlZCgpOyIpOwor
fQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9Im1vZGlmeSgpOyI+CisgICAgPGlm
cmFtZSBpZD0ibmF2aWdhdGVkIgorICAgICAgICAgICAgc3JjPSJzYW5kYm94ZWQtaWZyYW1lLW5h
dmlnYXRpb24tbmF2aWdhdGVkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJh
bWUtbmF2aWdhdGlvbi1uYXZpZ2F0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLW5hdmlnYXRl
ZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2Vz
L3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1uYXZpZ2F0ZWQuaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw5IEBACis8aHRtbD4KKzxoZWFkPgorPC9oZWFkPgorPGJvZHk+Cis8IS0tIFRo
aXMgZmlsZSBpcyBpbiBhIHNlcGFyYXRlIGRvY3VtZW50IGluIG9yZGVyIHRvIHNoYXJlIG9yaWdp
biB3aXRoIHRoZQorcGFyZW50IGRvY3VtZW50LiAtLT4KK2lubm9jZW50IGNvbnRlbnQKKzwvYm9k
eT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5k
Ym94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1w
YXJlbnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291
cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50Lmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsOCBAQAorPGh0bWw+Cis8Ym9keT4KKyAgICA8aWZyYW1lIHNhbmRib3g9ImFs
bG93LXNjcmlwdHMgYWxsb3ctc2FtZS1vcmlnaW4iCisgICAgICAgICAgICBzcmM9InNhbmRib3hl
ZC1pZnJhbWUtbmF2aWdhdGlvbi1zb3VyY2UuaHRtbCI+CisgICAgPC9pZnJhbWU+CisgICAgPHAg
aWQ9J2lubm9jZW50X2NvbnRlbnQnPmlubm9jZW50IGNvbnRlbnQ8L3A+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlm
cmFtZS1uYXZpZ2F0aW9uLXNvdXJjZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tc291cmNlLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2Fu
ZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXNvdXJjZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDExIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2Z1bmN0aW9uIG1vZGlmeSgpIHsK
KyAgICBzZWxmLnBhcmVudC5sb2NhdGlvbi5hc3NpZ24oJ3NhbmRib3hlZC1pZnJhbWUtbmF2aWdh
dGVkLmh0bWwnKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSdtb2RpZnko
KTsnPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVz
b3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRsaW5rLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJh
bWUtbmF2aWdhdGlvbi10YXJnZXRsaW5rLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdl
dGxpbmsuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMCBAQAorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQ+CisKKy8qCisgKiBTZXQgdGhlIHRhcmdldCBvZiB0aGUgbGluayB0byAnWF90YXJn
ZXQnLCB3aGVyZSBYIGlzIHRoZSBuYW1lIG9mCisgKiB0aGlzIGZyYW1lLgorICoKKyAqIFRoZW4g
Y2xpY2sgdGhlIGxpbmsuCisgKi8KKworZnVuY3Rpb24gY2xpY2tfbGluaygpIHsKKyAgICB2YXIg
ZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnTW91c2VFdmVudCcpOworICAgIGV2ZW50Lmlu
aXRFdmVudCgnY2xpY2snLCB0cnVlLCB0cnVlKTsKKyAgICB2YXIgbGluayA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdsaW5rJyk7CisgICAgbGluay50YXJnZXQgPSBzZWxmLm5hbWUgKyAnX3Rh
cmdldCc7CisgICAgbGluay5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKK30KKworPC9zY3JpcHQ+Cis8
L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0nY2xpY2tfbGluaygpOyc+CisKKyAgICA8YSBocmVmPSJz
YW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRlZC5odG1sIiBpZD0ibGluayI+CisgICAgICAgIChsaW5r
IHRyaWdnZXJlZCBieSBzY3JpcHQpCisgICAgPC9hPgorCis8L2JvZHk+Cis8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZp
Z2F0aW9uLXdpbmRvd29wZW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4uaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5k
Ym94ZWQtaWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDMgQEAKKzxzY3JpcHQ+CisgICAgd2luZG93Lm9wZW4oImphdmFzY3JpcHQ6IG9wZW5l
ci5wYXJlbnQud2luZG93X29wZW5lZChvcGVuZXIpOyIpOworPC9zY3JpcHQ+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLWZy
YW1lLWFwcGxldC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jl
c291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtYXBwbGV0Lmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlm
cmFtZS1wbHVnaW5zLWZyYW1lLWFwcGxldC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEx
IEBACis8aHRtbD4KKzxoZWFkPgorPC9oZWFkPgorCis8Ym9keT4KKyAgICA8YXBwbGV0IG5hbWU9
ImFwcCIKKyAgICAgICAgICAgIGNvZGViYXNlPSIuLi8uLi9kb20vcmVzb3VyY2VzIgorICAgICAg
ICAgICAgY29kZT0iVGVzdEFwcGxldCIKKyAgICA8L2FwcGxldD4KKzwvYm9keT4KKzwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1l
LXBsdWdpbnMtZnJhbWUtZW1iZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLWZyYW1lLWVtYmVkLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2Fu
ZGJveGVkLWlmcmFtZS1wbHVnaW5zLWZyYW1lLWVtYmVkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTIgQEAKKzxodG1sPgorPGhlYWQ+Cis8L2hlYWQ+CisKKzxib2R5PgorICAgIDxlbWJl
ZCBpZD0icGx1Z2luIiAKKyAgICAgICAgICAgdHlwZT0iYXBwbGljYXRpb24veC13ZWJraXQtdGVz
dC1uZXRzY2FwZSIKKyAgICAgICAgICAgc3JjPSJkYXRhOnRleHQvcGxhaW4sIgorICAgICAgICAg
ICBzdHlsZT0id2lkdGg6MDsgaGVpZ2h0OjAiPgorICAgIDwvZW1iZWQ+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlm
cmFtZS1wbHVnaW5zLWZyYW1lLW9iamVjdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtb2Jq
ZWN0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJj
ZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLWZyYW1lLW9iamVjdC5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDExIEBACis8aHRtbD4KKzxoZWFkPgorPC9oZWFkPgorCis8Ym9keT4KKyAg
ICA8b2JqZWN0IGlkPSJwbHVnaW4iIAorICAgICAgICAgICAgdHlwZT0iYXBwbGljYXRpb24veC13
ZWJraXQtdGVzdC1uZXRzY2FwZSIKKyAgICAgICAgICAgIHN0eWxlPSJ3aWR0aDowOyBoZWlnaHQ6
MCI+CisgICAgPC9vYmplY3Q+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1wcm9wYWdhdGUuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlm
cmFtZS1wcm9wYWdhdGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXByb3BhZ2F0ZS5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDI0IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKworZnVuY3Rpb24g
dGVzdF9zdGF0dXMoKSB7CisgICAgZW1iZWQxID0gd2luZG93LmZyYW1lc1snZnJhbWUxJ10uZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BsdWdpbicpOworCQorICAgIGlmIChlbWJlZDEuZGVzdHJv
eVN0cmVhbSkKKyAgICAgICAgc2VsZi5wYXJlbnQuY2hpbGRfc3RhdHVzID0gJ0ZBSUw6IG5lc3Rl
ZCBub24tc2FuZGJveGVkIElGcmFtZSBpbnN0YW50aWF0ZWQgcGx1Z2luIGluIHNhbmRib3hlZCBJ
RnJhbWUnOworICAgIGVsc2UKKyAgICAgICAgc2VsZi5wYXJlbnQuY2hpbGRfc3RhdHVzID0gJ1BB
U1M6IG5lc3RlZCBub24tc2FuZGJveGVkIElGcmFtZSBjYW5ub3QgaW5zdGFudGlhdGUgcGx1Z2lu
IGluIHNhbmRib3hlZCBJRnJhbWUnOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkg
b25sb2FkPSd0ZXN0X3N0YXR1cygpJzs+CisgICAgPGlmcmFtZSBpZD0iZnJhbWUxIgorICAgICAg
ICAgICAgc3R5bGU9IndpZHRoOiAyMDBweDsgaGVpZ2h0OiAxMDBweDsiCisgICAgICAgICAgICBz
cmM9InNhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1lbWJlZC5odG1sIj4KKyAgICA8L2lm
cmFtZT4KKyAgIAorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFt
ZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtc2NyaXB0LWR5bmFtaWMuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFt
ZS1zY3JpcHQtZHluYW1pYy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9m
cmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtc2NyaXB0LWR5bmFtaWMuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwyNSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisKKyAg
ICBmcmFtZSA9IHdpbmRvdy50b3AuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZyYW1lJyk7CisK
KyAgICAvLyBzZXR0aW5nIHRoZSBzYW5kYm94IGZsYWcgYXQgcnVudGltZSBzaG91bGQgbm90IHRl
cm1pbmF0ZSBhbHJlYWR5CisgICAgLy8gcnVubmluZyBzY3JpcHRzIChlLmcuLCB0aGlzIG9uZSkK
KworICAgIGZyYW1lLnNhbmRib3ggPSAnYWxsb3ctc2FtZS1vcmlnaW4nOyAgIC8vIE5PIGFsbG93
LXNjcmlwdHMKKworICAgIHdpbmRvdy50b3AuYWxsb3dlZF9leGVjdXRlZCA9IHRydWU7CisKKyAg
ICAvLyBob3dldmVyLCBuZXcgc2NyaXB0cyAoc3VjaCBhcyB0aGUgb25sb2FkIG9uZSBiZWxvdykg
c2hvdWxkCisgICAgLy8gbm90IHJ1bgorCisgICAgZnVuY3Rpb24gb25sb2FkX2hvb2soKSB7Cisg
ICAgICAgIHdpbmRvdy50b3AuZGlzYWxsb3dlZF9leGVjdXRlZCA9IHRydWU7CisgICAgfTsKKwor
PC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0nb25sb2FkX2hvb2soKTsnPjwvYm9k
eT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURF
TklFRC1zYW5kYm94ZWQtaWZyYW1lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQtc2FuZGJveGVkLWlmcmFtZS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3hzcy1ERU5JRUQtc2FuZGJveGVkLWlmcmFtZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsOCBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFVuc2FmZSBKYXZhU2NyaXB0
IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9z
ZWN1cml0eS94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUuaHRtbCBmcm9tIGZyYW1lIHdpdGgg
VVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMveHNzLURFTklFRC1z
YW5kYm94ZWQtaWZyYW1lLWF0dGFja2VyLmh0bWwuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9y
dHMgbXVzdCBtYXRjaC4KKworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFVuc2FmZSBKYXZhU2Ny
aXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9zZWN1cml0eS94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUuaHRtbCBmcm9tIGZyYW1lIHdp
dGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMveHNzLURFTklF
RC1zYW5kYm94ZWQtaWZyYW1lLWF0dGFja2VyLmh0bWwuIERvbWFpbnMsIHByb3RvY29scyBhbmQg
cG9ydHMgbXVzdCBtYXRjaC4KKworVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgc2FuZGJveGVkIGlm
cmFtZSBwcmV2ZW50cyBjcm9zcy1kb21haW4gc2NyaXB0IGFjY2Vzcy4KKworCitQQVNTOiBjcm9z
cy1kb21haW4gc2NyaXB0IGFjY2VzcyBkaXNhbGxvd2VkIGZyb20gc2FuZGJveGVkIGlmcmFtZQpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXNhbmRib3hl
ZC1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3hzcy1ERU5JRUQtc2FuZGJveGVkLWlmcmFtZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNyBAQAorPGh0bWw+Cis8c2NyaXB0PgorCit2
YXIgZG9jX3JlZiA9IHVuZGVmaW5lZDsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKK3dpbmRvdy5vbmxv
YWQgPSBmdW5jdGlvbigpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIp
LmlubmVySFRNTCA9CisgICAgICAgIChkb2NfcmVmID8gIkZBSUw6IGNyb3NzLWRvbWFpbiBzY3Jp
cHQgYWNjZXNzIGFsbG93ZWQgZnJvbSBzYW5kYm94ZWQgaWZyYW1lIgorICAgICAgICAgICAgICAg
IDogIlBBU1M6IGNyb3NzLWRvbWFpbiBzY3JpcHQgYWNjZXNzIGRpc2FsbG93ZWQgZnJvbSBzYW5k
Ym94ZWQgaWZyYW1lIik7Cit9CisKKzwvc2NyaXB0PgorPGJvZHk+CisKKyAgICA8cD5UaGlzIHRl
c3QgdmVyaWZpZXMgdGhhdCBzYW5kYm94ZWQgaWZyYW1lIHByZXZlbnRzIGNyb3NzLWRvbWFpbiBz
Y3JpcHQgYWNjZXNzLjwvcD4KKyAgICAKKyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93LXNjcmlw
dHMiCisgICAgICAgICAgICBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNv
dXJjZXMveHNzLURFTklFRC1zYW5kYm94ZWQtaWZyYW1lLWF0dGFja2VyLmh0bWwiPgorICAgIDwv
aWZyYW1lPgorICAgIAorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPi4uLjwvZGl2PgorICAgIAorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNv
dXJjZXMveHNzLURFTklFRC1zYW5kYm94ZWQtaWZyYW1lLWF0dGFja2VyLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMveHNzLURFTklF
RC1zYW5kYm94ZWQtaWZyYW1lLWF0dGFja2VyLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy94c3MtREVOSUVELXNhbmRib3hlZC1p
ZnJhbWUtYXR0YWNrZXIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3IEBACis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdD4KKyAgICB0b3AuZG9jX3JlZiA9IHBhcmVudC5kb2N1bWVudDsgIC8v
IGFjY2VzcyBwYXJlbnQncyBET00gdHJlZTogc2hvdWxkIG5vdCBiZSBhbGxvd2VkCis8L3Njcmlw
dD4KKzwvaGVhZD4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1hbGxvdy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNv
bnRyb2wtc2FuZGJveGVkLWlmcmFtZS1hbGxvdy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQt
aWZyYW1lLWFsbG93Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKKzxodG1sPiAK
Kzxib2R5PgorICAgIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHNhbmRib3hlZCBpZnJhbWUg
aGFzIFhtbEh0dHBSZXF1ZXN0IGFjY2VzcworICAgIHRvIHRoZSBzZXJ2ZXIgdGhhdCBhY2NlcHRz
IGFsbCBkb21haW5zLiAoVGhlIHRlc3QgaXMgcHJlc2VudGVkIGFzIGEKKyAgICBmdWxsIHJlbmRl
ciB0cmVlIHRvIGluY2x1ZGUgSWZyYW1lIGNvbnRlbnRzLik8L3A+IAorICAgIAorICAgIDxpZnJh
bWUgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyIgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAveG1s
aHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtYWxs
b3ctaWZyYW1lLmh0bWwiIHN0eWxlPSJ3aWR0aDogNTAwcHg7Ij4KKyAgICA8L2lmcmFtZT4gCisg
ICAgCis8L2JvZHk+IAorPC9odG1sPiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtd2l0aG91
dC13aWxkY2FyZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtd2l0aG91
dC13aWxkY2FyZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC13aXRo
b3V0LXdpbGRjYXJkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzxodG1sPgor
PGJvZHk+CisKKyAgICA8cD5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBzYW5kYm94ZWQgaWZyYW1l
IGRvZXMgbm90IGhhdmUgWG1sSHR0cFJlcXVlc3QgYWNjZXNzIHRvCisgICAgaXRzIHNlcnZlciB3
aXRoICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4iIHNldCB0byBpdHMgb3duIG9yaWdpbiAo
MTI3LjAuMC4xKS4KKyAgICAoVGhlIHRlc3QgaXMgcHJlc2VudGVkIGFzIGEgZnVsbCByZW5kZXIg
dHJlZSB0byBpbmNsdWRlIElmcmFtZSBjb250ZW50cy4pPC9wPgorICAgIAorICAgIDxpZnJhbWUg
c2FuZGJveD0iYWxsb3ctc2NyaXB0cyIKKyAgICAgICAgICAgIHNyYz0iaHR0cDovLzEyNy4wLjAu
MTo4MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQt
aWZyYW1lLWRlbmllZC13aXRob3V0LXdpbGRjYXJkLWlmcmFtZS5odG1sIiBzdHlsZT0id2lkdGg6
IDUwMHB4OyI+CisgICAgPC9pZnJhbWU+CisgICAgCis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRi
b3hlZC1pZnJhbWUtZGVuaWVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmll
ZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVx
dWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDEwIEBACis8aHRtbD4gCis8Ym9keT4gCisgICAgPHA+VGhpcyB0ZXN0
IHZlcmlmaWVzIHRoYXQgc2FuZGJveGVkIGlmcmFtZSBkb2VzIG5vdCBoYXZlIFhtbEh0dHBSZXF1
ZXN0IGFjY2VzcyB0byBpdHMgc2VydmVyLgorICAgIChUaGUgdGVzdCBpcyBwcmVzZW50ZWQgYXMg
YSBmdWxsIHJlbmRlciB0cmVlIHRvIGluY2x1ZGUgSWZyYW1lIGNvbnRlbnRzLik8L3A+IAorICAg
IAorICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyIKKyAgICAgICAgICAgIHNyYz0i
aHR0cDovLzEyNy4wLjAuMTo4MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29u
dHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC1pZnJhbWUuaHRtbCIgc3R5bGU9IndpZHRoOiA1
MDBweDsiPgorICAgIDwvaWZyYW1lPiAKKzwvYm9keT4gCis8L2h0bWw+IApJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wt
c2FuZGJveGVkLWlmcmFtZS1hbGxvdy1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1z
YW5kYm94ZWQtaWZyYW1lLWFsbG93LWlmcmFtZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wt
c2FuZGJveGVkLWlmcmFtZS1hbGxvdy1pZnJhbWUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwyNSBAQAorPGh0bWw+IAorPGJvZHk+IAorPHByZSBpZD0nY29uc29sZSc+PC9wcmU+IAorPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiAKKworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2NvbnNvbGUnKS5pbm5lckhUTUwgPSAoZnVuY3Rpb24oKSB7IAorICAgIHZhciB4aHIgPSBuZXcg
WE1MSHR0cFJlcXVlc3Q7IAorIAorICAgIHRyeSB7IAorICAgICAgICB4aHIub3BlbigiR0VUIiwg
Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNv
bnRyb2wtc2FuZGJveGVkLWlmcmFtZS1hbGxvdy5jZ2kiLCBmYWxzZSk7IAorICAgIH0gY2F0Y2go
ZSkgeyAKKyAgICAgICAgcmV0dXJuICJGQUlMOiBFeGNlcHRpb24gdGhyb3duLiBTYW5kYm94ZWQg
aWZyYW1lIFhIUiBhY2Nlc3MgaXMgbm90IGFsbG93ZWQgaW4gJ29wZW4nLiBbIiArIGUubWVzc2Fn
ZSArICJdLiI7IAorICAgIH0gCisgCisgICAgdHJ5IHsgCisgICAgICAgIHhoci5zZW5kKCk7IAor
ICAgIH0gY2F0Y2goZSkgeyAKKyAgICAgICAgcmV0dXJuICJGQUlMOiBFeGNlcHRpb24gdGhyb3du
LiBTYW5kYm94ZWQgaWZyYW1lIFhIUiBhY2Nlc3MgaXMgbm90IGFsbG93ZWQgaW4gJ3NlbmQnLiBb
IiArIGUubWVzc2FnZSArICJdLiI7IAorICAgIH0gCisgCisgICAgcmV0dXJuIHhoci5yZXNwb25z
ZVRleHQ7IAorfSkoKTsgCis8L3NjcmlwdD4gCis8L2JvZHk+IAorPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRy
b2wtc2FuZGJveGVkLWlmcmFtZS1hbGxvdy5jZ2kKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJv
eGVkLWlmcmFtZS1hbGxvdy5jZ2kJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZy
YW1lLWFsbG93LmNnaQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACisjIS91c3IvYmluL3Bl
cmwgLXdUCit1c2Ugc3RyaWN0OworCitwcmludCAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluXG4i
OworcHJpbnQgIkFjY2Vzcy1Db250cm9sLUFsbG93LUNyZWRlbnRpYWxzOiB0cnVlXG4iOworcHJp
bnQgIkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbjogKlxuXG4iOworCitwcmludCAiUEFTUzog
U2FuZGJveGVkIGlmcmFtZSBYSFIgYWNjZXNzIGFsbG93ZWQuXG4iOwoKUHJvcGVydHkgY2hhbmdl
cyBvbjogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNj
ZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1hbGxvdy5jZ2kKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBz
dm46ZXhlY3V0YWJsZQogICArICoKCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmll
ZC1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmll
ZC1pZnJhbWUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVu
aWVkLWlmcmFtZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI3IEBACis8aHRtbD4gCis8
Ym9keT4gCis8cHJlIGlkPSdjb25zb2xlJz48L3ByZT4gCis8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCI+IAorCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRN
TCA9IChmdW5jdGlvbigpIHsKKyAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0OyAKKyAK
KyAKKyAgICB0cnkgeyAKKyAgICAgICAgeGhyLm9wZW4oIkdFVCIsICJodHRwOi8vMTI3LjAuMC4x
OjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1p
ZnJhbWUtZGVuaWVkLmNnaSIsIGZhbHNlKTsgCisgICAgfSBjYXRjaChlKSB7IAorICAgICAgICBy
ZXR1cm4gIkZBSUw6IEV4Y2VwdGlvbiB0aHJvd24uIFNhbmRib3hlZCBpZnJhbWUgWEhSIGFjY2Vz
cyBpcyBub3QgYWxsb3dlZCBpbiAnb3BlbicuIFsiICsgZS5tZXNzYWdlICsgIl0uIjsgCisgICAg
fSAKKyAKKyAgICB0cnkgeyAKKyAgICAgICAgeGhyLnNlbmQoKTsgCisgICAgfSBjYXRjaChlKSB7
IAorICAgICAgICByZXR1cm4gIlBBU1M6IEV4Y2VwdGlvbiB0aHJvd24uIFNhbmRib3hlZCBpZnJh
bWUgWEhSIGFjY2VzcyB3YXMgZGVuaWVkIGluICdzZW5kJy4gWyIgKyBlLm1lc3NhZ2UgKyAiXS4i
OyAKKyAgICB9CisgCisgICAgcmV0dXJuIHhoci5yZXNwb25zZVRleHQ7IAorfSkoKTsKKyAgCis8
L3NjcmlwdD4gCis8L2JvZHk+IAorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFt
ZS1kZW5pZWQtd2l0aG91dC13aWxkY2FyZC1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJv
bC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC13aXRob3V0LXdpbGRjYXJkLWlmcmFtZS5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNv
dXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtd2l0aG91dC13aWxk
Y2FyZC1pZnJhbWUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNiBAQAorPGh0bWw+Cis8
Ym9keT4KKzxwcmUgaWQ9J2NvbnNvbGUnPjwvcHJlPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiPgorCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9
IChmdW5jdGlvbigpIHsKKyAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0OworCisgICAg
dHJ5IHsKKyAgICAgICAgeGhyLm9wZW4oIkdFVCIsICJodHRwOi8vMTI3LjAuMC4xOjgwMDAveG1s
aHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVu
aWVkLXdpdGhvdXQtd2lsZGNhcmQuY2dpIiwgZmFsc2UpOworICAgIH0gY2F0Y2goZSkgeworICAg
ICAgICByZXR1cm4gIkZBSUw6IEV4Y2VwdGlvbiB0aHJvd24uIFNhbmRib3hlZCBpZnJhbWUgWEhS
IGFjY2VzcyBpcyBub3QgYWxsb3dlZCBpbiAnb3BlbicuIFsiICsgZS5tZXNzYWdlICsgIl0uIjsK
KyAgICB9CisKKyAgICB0cnkgeworICAgICAgICB4aHIuc2VuZCgpOworICAgIH0gY2F0Y2goZSkg
eworICAgICAgICByZXR1cm4gIlBBU1M6IEV4Y2VwdGlvbiB0aHJvd24uIFNhbmRib3hlZCBpZnJh
bWUgWEhSIGFjY2VzcyB3YXMgZGVuaWVkIGluICdzZW5kJy4gWyIgKyBlLm1lc3NhZ2UgKyAiXS4i
OworICAgIH0KKworICAgIHJldHVybiB4aHIucmVzcG9uc2VUZXh0OworfSkoKTsKKworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmll
ZC13aXRob3V0LXdpbGRjYXJkLmNnaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZy
YW1lLWRlbmllZC13aXRob3V0LXdpbGRjYXJkLmNnaQkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNh
bmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQuY2dpCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDggQEAKKyMhL3Vzci9iaW4vcGVybCAtd1QKK3VzZSBzdHJpY3Q7CisKK3ByaW50
ICJDb250ZW50LVR5cGU6IHRleHQvcGxhaW5cbiI7CitwcmludCAiQWNjZXNzLUNvbnRyb2wtQWxs
b3ctQ3JlZGVudGlhbHM6IHRydWVcbiI7CitwcmludCAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3Jp
Z2luOiBodHRwOi8vMTI3LjAuMC4xOjgwMDBcblxuIjsKKworcHJpbnQgIkZBSUw6IFNhbmRib3hl
ZCBpZnJhbWUgWEhSIGFjY2VzcyBhbGxvd2VkLlxuIjsKClByb3BlcnR5IGNoYW5nZXMgb246IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250
cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQuY2dpCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KTmFtZTogc3ZuOmV4ZWN1dGFibGUKICAgKyAqCgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlm
cmFtZS1kZW5pZWQuY2dpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVu
aWVkLmNnaQkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLmNn
aQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2IEBACisjIS91c3IvYmluL3BlcmwgLXdUCit1c2Ug
c3RyaWN0OworCitwcmludCAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluXG5cbiI7CisKK3ByaW50
ICJGQUlMOiBTYW5kYm94ZWQgaWZyYW1lIFhIUiBhY2Nlc3MgYWxsb3dlZC5cbiI7CgpQcm9wZXJ0
eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291
cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC5jZ2kKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpOYW1lOiBzdm46ZXhlY3V0YWJsZQogICArICoKCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQt
aWZyYW1lLWFsbG93LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94
ZWQtaWZyYW1lLWFsbG93LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNh
bmRib3hlZC1pZnJhbWUtYWxsb3ctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDI1IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCww
KSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9j
ayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQg
KDgsOCkgc2l6ZSA3ODR4NTg0CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3
ODR4MzYKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzM3eDM2Cisg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNDMwOiAiVGhpcyB0ZXN0IHZlcmlmaWVz
IHRoYXQgc2FuZGJveGVkIGlmcmFtZSBoYXMgWG1sSHR0cFJlcXVlc3QgYWNjZXNzICIKKyAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoNDMwLDApIHdpZHRoIDMwNzogInRvIHRoZSBzZXJ2ZXIgdGhhdCBh
Y2NlcHRzIGFsbCBkb21haW5zLiAoVGhlIHRlc3QgaXMiCisgICAgICAgICAgdGV4dCBydW4gYXQg
KDAsMTgpIHdpZHRoIDkyOiAicHJlc2VudGVkIGFzIGEgIgorICAgICAgICAgIHRleHQgcnVuIGF0
ICg5MiwxOCkgd2lkdGggMjY4OiAiZnVsbCByZW5kZXIgdHJlZSB0byBpbmNsdWRlIElmcmFtZSBj
b250ZW50cy4pIgorICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsNTIpIHNpemUg
Nzg0eDE1NAorICAgICAgICBSZW5kZXJQYXJ0T2JqZWN0IHtJRlJBTUV9IGF0ICgwLDApIHNpemUg
NTA0eDE1NCBbYm9yZGVyOiAoMnB4IGluc2V0ICMwMDAwMDApXQorICAgICAgICAgIGxheWVyIGF0
ICgwLDApIHNpemUgNTAweDE1MAorICAgICAgICAgICAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXpl
IDUwMHgxNTAKKyAgICAgICAgICBsYXllciBhdCAoMCwwKSBzaXplIDUwMHgxNTAKKyAgICAgICAg
ICAgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDUwMHgxNTAKKyAgICAgICAgICAg
ICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA0ODR4MTI5CisgICAgICAgICAgICAg
ICAgUmVuZGVyQmxvY2sge1BSRX0gYXQgKDAsMCkgc2l6ZSA0ODR4MTUKKyAgICAgICAgICAgICAg
ICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDMzNngxNQorICAgICAgICAgICAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzMzY6ICJQQVNTOiBTYW5kYm94ZWQgaWZy
YW1lIFhIUiBhY2Nlc3MgYWxsb3dlZC4iCisgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0
ICgzMzYsMCkgd2lkdGggMDogIiAiCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCww
KSBzaXplIDB4MAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAK
KyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCkluZGV4OiBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29u
dHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNz
LWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
YWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDIzIEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAg
UmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAw
eDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVu
ZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTg0CisgICAgICBSZW5kZXJCbG9jayB7
UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MzYKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgw
LDApIHNpemUgNzYyeDM2CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNTc2OiAi
VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgc2FuZGJveGVkIGlmcmFtZSBkb2VzIG5vdCBoYXZlIFht
bEh0dHBSZXF1ZXN0IGFjY2VzcyB0byBpdHMgc2VydmVyLiAiCisgICAgICAgICAgdGV4dCBydW4g
YXQgKDU3NiwwKSB3aWR0aCAxODY6ICIoVGhlIHRlc3QgaXMgcHJlc2VudGVkIGFzIGEgZnVsbCIK
KyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxOCkgd2lkdGggMjQzOiAicmVuZGVyIHRyZWUgdG8g
aW5jbHVkZSBJZnJhbWUgY29udGVudHMuKSIKKyAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMp
IGF0ICgwLDUyKSBzaXplIDc4NHgxNTQKKyAgICAgICAgUmVuZGVyUGFydE9iamVjdCB7SUZSQU1F
fSBhdCAoMCwwKSBzaXplIDUwNHgxNTQgW2JvcmRlcjogKDJweCBpbnNldCAjMDAwMDAwKV0KKyAg
ICAgICAgICBsYXllciBhdCAoMCwwKSBzaXplIDk1MngxMzUKKyAgICAgICAgICAgIFJlbmRlclZp
ZXcgYXQgKDAsMCkgc2l6ZSA1MDB4MTM1CisgICAgICAgICAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA5
NTJ4MTM1CisgICAgICAgICAgICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA1MDB4
MTM1CisgICAgICAgICAgICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNDg0eDEx
NAorICAgICAgICAgICAgICAgIFJlbmRlckJsb2NrIHtQUkV9IGF0ICgwLDApIHNpemUgNDg0eDE1
CisgICAgICAgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA5NDR4
MTUKKyAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggOTQ0OiAiUEFT
UzogRXhjZXB0aW9uIHRocm93bi4gU2FuZGJveGVkIGlmcmFtZSBYSFIgYWNjZXNzIHdhcyBkZW5p
ZWQgaW4gJ3NlbmQnLiBbTkVUV09SS19FUlI6IFhNTEh0dHBSZXF1ZXN0IEV4Y2VwdGlvbiAxMDFd
LiIKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAorICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJh
bWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1j
b250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2h0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtd2l0
aG91dC13aWxkY2FyZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjQgQEAK
K2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUg
ODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1M
fSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBz
aXplIDc4NHg1ODQKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgzNgor
ICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3NTl4MzYKKyAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA1MTI6ICJUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBz
YW5kYm94ZWQgaWZyYW1lIGRvZXMgbm90IGhhdmUgWG1sSHR0cFJlcXVlc3QgYWNjZXNzIHRvICIK
KyAgICAgICAgICB0ZXh0IHJ1biBhdCAoNTEyLDApIHdpZHRoIDI0NzogIml0cyBzZXJ2ZXIgd2l0
aCBcIkFjY2Vzcy1Db250cm9sLUFsbG93LSIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxOCkg
d2lkdGggMjU4OiAiT3JpZ2luXCIgc2V0IHRvIGl0cyBvd24gb3JpZ2luICgxMjcuMC4wLjEpLiAi
CisgICAgICAgICAgdGV4dCBydW4gYXQgKDI1OCwxOCkgd2lkdGggNDMzOiAiKFRoZSB0ZXN0IGlz
IHByZXNlbnRlZCBhcyBhIGZ1bGwgcmVuZGVyIHRyZWUgdG8gaW5jbHVkZSBJZnJhbWUgY29udGVu
dHMuKSIKKyAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDUyKSBzaXplIDc4NHgx
NTQKKyAgICAgICAgUmVuZGVyUGFydE9iamVjdCB7SUZSQU1FfSBhdCAoMCwwKSBzaXplIDUwNHgx
NTQgW2JvcmRlcjogKDJweCBpbnNldCAjMDAwMDAwKV0KKyAgICAgICAgICBsYXllciBhdCAoMCww
KSBzaXplIDk1MngxMzUKKyAgICAgICAgICAgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA1MDB4
MTM1CisgICAgICAgICAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA5NTJ4MTM1CisgICAgICAgICAgICBS
ZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA1MDB4MTM1CisgICAgICAgICAgICAgIFJl
bmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNDg0eDExNAorICAgICAgICAgICAgICAgIFJl
bmRlckJsb2NrIHtQUkV9IGF0ICgwLDApIHNpemUgNDg0eDE1CisgICAgICAgICAgICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA5NDR4MTUKKyAgICAgICAgICAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggOTQ0OiAiUEFTUzogRXhjZXB0aW9uIHRocm93bi4g
U2FuZGJveGVkIGlmcmFtZSBYSFIgYWNjZXNzIHdhcyBkZW5pZWQgaW4gJ3NlbmQnLiBbTkVUV09S
S19FUlI6IFhNTEh0dHBSZXF1ZXN0IEV4Y2VwdGlvbiAxMDFdLiIKKyAgICAgICAgUmVuZGVyVGV4
dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBh
dCAoMCwwKSBzaXplIDB4MAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6
ZSAweDAKSW5kZXg6IExheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2Uv
c2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2Uvc2FuZGJveGVkLWlmcmFtZS1k
ZW5pZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3RvcmFnZS9k
b21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjIgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAw
eDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkg
c2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAK
KyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1ODQKKyAgICAgIFJlbmRl
ckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgzNgorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDAsMCkgc2l6ZSA3NDF4MzYKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0
aCA3NDE6ICJUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBzYW5kYm94ZWQgaWZyYW1lIGRvZXMgbm90
IGhhdmUgYWNjZXNzIHRvIHRoZSBsb2NhbCBzdG9yYWdlIG9mIGl0cyBjb250YWluaW5nIGZyYW1l
IGZyb20gdGhlIHNhbWUiCisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTgpIHdpZHRoIDQ3ODog
Im9yaWdpbi4gKFRoZSB0ZXN0IGlzIHByZXNlbnRlZCBhcyBhIGZ1bGwgcmVuZGVyIHRyZWUgdG8g
aW5jbHVkZSBJZnJhbWUgY29udGVudHMuKSIKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgw
LDUyKSBzaXplIDc4NHgwCisgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCw1Mikg
c2l6ZSA3ODR4MTU0CisgICAgICAgIFJlbmRlclBhcnRPYmplY3Qge0lGUkFNRX0gYXQgKDAsMCkg
c2l6ZSAzMDR4MTU0IFtib3JkZXI6ICgycHggaW5zZXQgIzAwMDAwMCldCisgICAgICAgICAgbGF5
ZXIgYXQgKDAsMCkgc2l6ZSAzMDB4MTUwCisgICAgICAgICAgICBSZW5kZXJWaWV3IGF0ICgwLDAp
IHNpemUgMzAweDE1MAorICAgICAgICAgIGxheWVyIGF0ICgwLDApIHNpemUgMzAweDE1MAorICAg
ICAgICAgICAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgMzAweDE1MAorICAgICAg
ICAgICAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDI4NHgxMzQKKyAgICAgICAg
ICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDI4NHgzNgorICAgICAgICAg
ICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMjgyeDM2CisgICAgICAg
ICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDI4MjogIlBBU1M6IFNhbmRib3gg
aWZyYW1lIGRvZXMgbm90IGhhdmUgYWNjZXNzIgorICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwxOCkgd2lkdGggMjU2OiAidG8gdGhlIGxvY2FsIHN0b3JhZ2UgZnJvbSB0aGUgc2Ft
ZSBvcmlnaW4uIgorICAgICAgICAgICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMjU2LDMyKSBz
aXplIDB4MApJbmRleDogTGF5b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFn
ZS9zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3N0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2Uvc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9sb2Nh
bHN0b3JhZ2Uvc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwzOCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OworCitmdW5jdGlvbiBsb2coYSkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9n
Z2VyIikuaW5uZXJIVE1MICs9IGEgKyAiPGJyPiI7Cit9CisKK3dpbmRvdy5vbmxvYWQgPSBmdW5j
dGlvbigpCit7CisgICAgaWYgKCF3aW5kb3cubG9jYWxTdG9yYWdlKSB7CisgICAgICAgIGxvZygi
d2luZG93LmxvY2FsU3RvcmFnZSBET0VTIE5PVCBleGlzdCIpOworICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbG9jYWxTdG9yYWdl
LmNsZWFyKCk7CisgICAgbG9jYWxTdG9yYWdlLmZvbyA9ICJiYXIiOworCisgICAgdmFyIGlmcmFt
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgIGlmcmFtZS5zYW5kYm94
ID0gImFsbG93LXNjcmlwdHMiOworICAgIGlmcmFtZS5zcmMgPSAicmVzb3VyY2VzL3NhbmRib3hl
ZC1pZnJhbWUtZGVuaWVkLWlmcmFtZS5odG1sIjsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGlmcmFtZSk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRl
c3QgdmVyaWZpZXMgdGhhdCBzYW5kYm94ZWQgaWZyYW1lIGRvZXMgbm90IGhhdmUgYWNjZXNzIHRv
IHRoZSBsb2NhbCBzdG9yYWdlIG9mIGl0cyBjb250YWluaW5nIGZyYW1lIGZyb20gdGhlIHNhbWUg
b3JpZ2luLgorKFRoZSB0ZXN0IGlzIHByZXNlbnRlZCBhcyBhIGZ1bGwgcmVuZGVyIHRyZWUgdG8g
aW5jbHVkZSBJZnJhbWUgY29udGVudHMuKTwvcD4KKzxkaXYgaWQ9ImxvZ2dlciI+PC9kaXY+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2UvbG9j
YWxzdG9yYWdlL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC1pZnJhbWUuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdl
L3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC1pZnJhbWUuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2UvcmVzb3Vy
Y2VzL3NhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWlmcmFtZS5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDI2IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKworZnVuY3Rpb24gbG9nKGEp
Cit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZ2dlciIpLmlubmVySFRNTCArPSBh
ICsgIjxicj4iOworfQorCit3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKQoreworICAgIGlmIChs
b2NhbFN0b3JhZ2UuZ2V0SXRlbSgiZm9vIikgPT0gImJhciIpCisgICAgICAgIGxvZygiRkFJTDog
U2FuZGJveCBpZnJhbWUgaGFzIGFjY2VzcyB0byB0aGUgbG9jYWwgc3RvcmFnZSBmcm9tIHRoZSBz
YW1lIG9yaWdpbi4iKTsKKyAgICBlbHNlCisgICAgICAgIGxvZygiUEFTUzogU2FuZGJveCBpZnJh
bWUgZG9lcyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIGxvY2FsIHN0b3JhZ2UgZnJvbSB0aGUgc2Ft
ZSBvcmlnaW4uIik7CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJsb2dnZXIiPjwvZGl2PgorPC9ib2R5PgorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL3Nlc3Npb25zdG9yYWdlL3Nh
bmRib3hlZC1pZnJhbWUtZGVuaWVkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2Uvc2Vzc2lvbnN0b3JhZ2Uvc2FuZGJveGVkLWlmcmFtZS1k
ZW5pZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3RvcmFnZS9k
b21zdG9yYWdlL3Nlc3Npb25zdG9yYWdlL3NhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMiBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4
MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCww
KSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYw
MAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU4NAorICAgICAgUmVu
ZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDM2CisgICAgICAgIFJlbmRlclRleHQgeyN0
ZXh0fSBhdCAoMCwwKSBzaXplIDc1NngzNgorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdp
ZHRoIDc1NjogIlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHNhbmRib3hlZCBpZnJhbWUgZG9lcyBu
b3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIHNlc3Npb24gc3RvcmFnZSBvZiBpdHMgY29udGFpbmluZyBm
cmFtZSBmcm9tIHRoZSBzYW1lIgorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE4KSB3aWR0aCA0
Nzg6ICJvcmlnaW4uIChUaGUgdGVzdCBpcyBwcmVzZW50ZWQgYXMgYSBmdWxsIHJlbmRlciB0cmVl
IHRvIGluY2x1ZGUgSWZyYW1lIGNvbnRlbnRzLikiCisgICAgICBSZW5kZXJCbG9jayB7RElWfSBh
dCAoMCw1Mikgc2l6ZSA3ODR4MAorICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAs
NTIpIHNpemUgNzg0eDE1NAorICAgICAgICBSZW5kZXJQYXJ0T2JqZWN0IHtJRlJBTUV9IGF0ICgw
LDApIHNpemUgMzA0eDE1NCBbYm9yZGVyOiAoMnB4IGluc2V0ICMwMDAwMDApXQorICAgICAgICAg
IGxheWVyIGF0ICgwLDApIHNpemUgMzAweDE1MAorICAgICAgICAgICAgUmVuZGVyVmlldyBhdCAo
MCwwKSBzaXplIDMwMHgxNTAKKyAgICAgICAgICBsYXllciBhdCAoMCwwKSBzaXplIDMwMHgxNTAK
KyAgICAgICAgICAgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDMwMHgxNTAKKyAg
ICAgICAgICAgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSAyODR4MTM0CisgICAg
ICAgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSAyODR4MzYKKyAgICAg
ICAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDI4MngzNgorICAg
ICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAyODI6ICJQQVNTOiBTYW5k
Ym94IGlmcmFtZSBkb2VzIG5vdCBoYXZlIGFjY2VzcyIKKyAgICAgICAgICAgICAgICAgICAgdGV4
dCBydW4gYXQgKDAsMTgpIHdpZHRoIDI3MTogInRvIHRoZSBzZXNzaW9uIHN0b3JhZ2UgZnJvbSB0
aGUgc2FtZSBvcmlnaW4uIgorICAgICAgICAgICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMjcx
LDMyKSBzaXplIDB4MApJbmRleDogTGF5b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL3Nlc3Np
b25zdG9yYWdlL3NhbmRib3hlZC1pZnJhbWUtZGVuaWVkLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL3Nlc3Npb25zdG9yYWdlL3NhbmRib3hlZC1pZnJh
bWUtZGVuaWVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0
b3JhZ2Uvc2Vzc2lvbnN0b3JhZ2Uvc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwzOCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisKK2lmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOworCitmdW5jdGlvbiBsb2coYSkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgibG9nZ2VyIikuaW5uZXJIVE1MICs9IGEgKyAiPGJyPiI7Cit9CisKK3dpbmRvdy5v
bmxvYWQgPSBmdW5jdGlvbigpCit7CisgICAgaWYgKCF3aW5kb3cuc2Vzc2lvblN0b3JhZ2UpIHsK
KyAgICAgICAgbG9nKCJ3aW5kb3cuc2Vzc2lvblN0b3JhZ2UgRE9FUyBOT1QgZXhpc3QiKTsKKyAg
ICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIHNlc3Npb25TdG9yYWdlLmNsZWFyKCk7CisgICAgc2Vzc2lvblN0b3JhZ2UuZm9vID0gImJh
ciI7CisKKyAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7
CisgICAgaWZyYW1lLnNhbmRib3ggPSAiYWxsb3ctc2NyaXB0cyI7CisgICAgaWZyYW1lLnNyYyA9
ICJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtaWZyYW1lLmh0bWwiOworICAgIGRv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHNhbmRib3hlZCBpZnJhbWUgZG9l
cyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIHNlc3Npb24gc3RvcmFnZSBvZiBpdHMgY29udGFpbmlu
ZyBmcmFtZSBmcm9tIHRoZSBzYW1lIG9yaWdpbi4KKyhUaGUgdGVzdCBpcyBwcmVzZW50ZWQgYXMg
YSBmdWxsIHJlbmRlciB0cmVlIHRvIGluY2x1ZGUgSWZyYW1lIGNvbnRlbnRzLik8L3A+Cis8ZGl2
IGlkPSJsb2dnZXIiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
c3RvcmFnZS9kb21zdG9yYWdlL3Nlc3Npb25zdG9yYWdlL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZy
YW1lLWRlbmllZC1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdG9yYWdl
L2RvbXN0b3JhZ2Uvc2Vzc2lvbnN0b3JhZ2UvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZGVu
aWVkLWlmcmFtZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3RvcmFnZS9kb21z
dG9yYWdlL3Nlc3Npb25zdG9yYWdlL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC1p
ZnJhbWUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNiBAQAorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGxvZyhhKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJsb2dnZXIiKS5pbm5lckhUTUwgKz0gYSArICI8YnI+IjsKK30KKword2luZG93Lm9ubG9h
ZCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBpZiAoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgiZm9vIikg
PT0gImJhciIpCisgICAgICAgIGxvZygiRkFJTDogU2FuZGJveCBpZnJhbWUgaGFzIGFjY2VzcyB0
byB0aGUgc2Vzc2lvbiBzdG9yYWdlIGZyb20gdGhlIHNhbWUgb3JpZ2luLiIpOworICAgIGVsc2UK
KyAgICAgICAgbG9nKCJQQVNTOiBTYW5kYm94IGlmcmFtZSBkb2VzIG5vdCBoYXZlIGFjY2VzcyB0
byB0aGUgc2Vzc2lvbiBzdG9yYWdlIGZyb20gdGhlIHNhbWUgb3JpZ2luLiIpOworCisgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0ibG9nZ2VyIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="24007"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42859</attachid>
            <date>2009-11-10 06:11:18 -0800</date>
            <delta_ts>2009-11-11 06:14:13 -0800</delta_ts>
            <desc>Revised patch for HTML5 sandboxing.</desc>
            <filename>sandbox-r50737.patch</filename>
            <type>text/plain</type>
            <size>101241</size>
            <attacher name="Patrik Persson">patrik.j.persson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDczNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODAgQEAKKzIwMDktMTEtMTAgIFBhdHJpayBQZXJzc29uICA8cGF0cmlrLmoucGVy
c3NvbkBlcmljc3Nvbi5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wbGVtZW50IEhUTUw1J3Mgc2FuZGJveCBhdHRyaWJ1dGUgZm9yIGlmcmFt
ZXMKKyAgICAgICAgaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvdGV4dC1sZXZlbC1zZW1hbnRp
Y3MuaHRtbCNhdHRyLWlmcmFtZS1zYW5kYm94CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI4OAorCisgICAgICAgIFRlc3RzOiBmYXN0L2ZyYW1lcy9z
YW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLmh0bWwKKyAgICAgICAgICAgICAgIGZh
c3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtZm9ybXMuaHRtbAorICAgICAgICAgICAgICAgZmFz
dC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLWFsbG93ZWQuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXBhcmVudC5o
dG1sCisgICAgICAgICAgICAgICBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRp
b24tdGFyZ2V0bGluay5odG1sCisgICAgICAgICAgICAgICBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQt
aWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zy
YW1lcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9m
cmFtZXMvc2FuZGJveGVkLWlmcmFtZS1zY3JpcHRpbmcuaHRtbAorICAgICAgICAgICAgICAgaHR0
cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLWRvY3VtZW50LWNvb2tpZS5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtbW9kaWZ5
LXNlbGYuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVE
LXNhbmRib3hlZC1pZnJhbWUuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy94bWxodHRw
cmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93Lmh0bWwKKyAgICAg
ICAgICAgICAgIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJv
eGVkLWlmcmFtZS1kZW5pZWQtd2l0aG91dC13aWxkY2FyZC5odG1sCisgICAgICAgICAgICAgICBo
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUt
ZGVuaWVkLmh0bWwKKyAgICAgICAgICAgICAgIHN0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3Jh
Z2Uvc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQuaHRtbAorICAgICAgICAgICAgICAgc3RvcmFnZS9k
b21zdG9yYWdlL3Nlc3Npb25zdG9yYWdlL3NhbmRib3hlZC1pZnJhbWUtZGVuaWVkLmh0bWwKKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZVdpbmRvdyk6IHByZXZlbnRpbmcgY3JlYXRpbmcgbmV3IGF1eGlsaWFyeSBi
cm93c2luZyBjb250ZXh0cyBmcm9tIHNhbmRib3gKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3Jp
cHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6Omlz
RW5hYmxlZCk6IHNhbmRib3hpbmcgc2NyaXB0cworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cHJvY2Vzc0h0dHBFcXVpdik6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6Y29va2llKTogcmFpc2luZyBleGNlcHRpb25zIHdoZW4gYWNj
ZXNzZWQgZnJvbSBzYW5kYm94CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0Q29va2ll
KTogcmFpc2luZyBleGNlcHRpb25zIHdoZW4gYWNjZXNzZWQgZnJvbSBzYW5kYm94CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCk6IGNvcHkgc2FuZGJveCBz
dGF0dXMgZnJvbSBmcmFtZSB0byBTZWN1cml0eU9yaWdpbgorICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5oOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MQXBw
bGV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudDo6Y3Jl
YXRlUmVuZGVyZXIpOiBzYW5kYm94aW5nIGFwcGxldHMKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxB
cHBsZXRFbGVtZW50OjpyZW5kZXJXaWRnZXRGb3JKU0JpbmRpbmdzKTogc2FuZGJveGluZyBhcHBs
ZXRzCisgICAgICAgICogaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW46CisgICAgICAgICogaHRt
bC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwOiBhZGRlZCBzYW5kYm94IGZsYWcgbWFuYWdlbWVu
dCwgYW5kIHByb3BhZ2F0aW9uCisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1l
bnQ6OkhUTUxGcmFtZU93bmVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVP
d25lckVsZW1lbnQ6OnNldFNhbmRib3hGbGFnc0Zyb21BdHRyaWJ1dGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50Ojp1cGRhdGVTYW5kYm94RmxhZ3MpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50Ojppbmhlcml0U2FuZGJveEZsYWdzKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9j
dW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmlzU2FuZGJveGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudDo6c2FuZGJveEZsYWdzKToKKyAgICAgICAg
KiBodG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcDogYWRkZWQgc2FuZGJveCBhdHRyaWJ1dGUgcGFy
c2luZworICAgICAgICAoV2ViQ29yZTo6SFRNTElGcmFtZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0
cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJRnJhbWVFbGVtZW50OjphZGRTYW5kYm94
U3RhdHVzKToKKyAgICAgICAgKiBodG1sL0hUTUxJRnJhbWVFbGVtZW50Lmg6CisgICAgICAgICog
aHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGw6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6
Z2V0Q29va2llcyk6CisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5j
cHA6IHNhbmRib3hpbmcgb3JpZ2luCisgICAgICAgIChXZWJDb3JlOjpwYXNzZXNBY2Nlc3NDb250
cm9sQ2hlY2spOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6c3VibWl0Rm9ybSk6IHNhbmRib3hpbmcgZm9ybXMKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpyZXF1ZXN0T2JqZWN0KTogc2FuZGJveGluZyBwbHVn
aW5zCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c2hvdWxkQWxsb3dOYXZpZ2F0aW9u
KTogc2FuZGJveGluZyBuYXZpZ2F0aW9uCisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5j
cHA6IGFkZGVkIHVuaXF1ZSBvcmlnaW4gZm9yIHNhbmRib3hlZCBmcmFtZXMKKyAgICAgICAgKFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbik6CisgICAgICAgIChXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luOjpjYW5SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjp0
b1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6ZXF1YWwpOgorICAg
ICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uaDogYWRkZWQgc2FuZGJveCBmbGFnIHR5cGUKKyAg
ICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6c2V0
U2FuZGJveEZsYWdzKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjppc1NhbmRi
b3hlZCk6CisgICAgICAgICogc3RvcmFnZS9EYXRhYmFzZVRyYWNrZXIuY3BwOiBzYW5kYm94aW5n
IG9yaWdpbiAoZm9yIGxvY2FsIHN0b3JhZ2UpCisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRy
YWNrZXI6OmNhbkVzdGFibGlzaERhdGFiYXNlKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNv
Y2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlk
UmVjZWl2ZURhdGEpOgorCiAyMDA5LTExLTEwICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRA
aWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiA1MDczNykK
KysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAi
SFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJI
VE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJIaXN0b3J5LmgiCiAjaW5jbHVkZSAi
SlNBdWRpb0NvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3dTaGVsbC5oIgpAQCAt
NzQ0LDYgKzc0NSwxMSBAQCBzdGF0aWMgRnJhbWUqIGNyZWF0ZVdpbmRvdyhFeGVjU3RhdGUqIGV4
CiAgICAgQVNTRVJUKGxleGljYWxGcmFtZSk7CiAgICAgQVNTRVJUKGR5bmFtaWNGcmFtZSk7CiAK
KyAgICAvLyBTYW5kYm94ZWQgaWZyYW1lcyBjYW5ub3Qgb3BlbiBuZXcgYXV4aWxpYXJ5IGJyb3dz
aW5nIGNvbnRleHRzCisgICAgaWYgKG9wZW5lckZyYW1lICYmIG9wZW5lckZyYW1lLT5vd25lckVs
ZW1lbnQoKQorICAgICAgICAmJiBvcGVuZXJGcmFtZS0+b3duZXJFbGVtZW50KCktPmlzU2FuZGJv
eGVkKFNhbmRib3hOYXZpZ2F0aW9uKSkKKyAgICAgICAgcmV0dXJuIDA7CisKICAgICBSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdDsKIAogICAgIC8vIEZvciB3aGF0ZXZlciByZWFzb24sIEZpcmVmb3gg
dXNlcyB0aGUgZHluYW1pY0dsb2JhbE9iamVjdCB0byBkZXRlcm1pbmUKSW5kZXg6IFdlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gNTA3MzcpCisrKyBXZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MjIsNiArMzIyLDEwIEBAIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6YW55UGFnZUlzUHJvY2Vzc2kK
IAogYm9vbCBTY3JpcHRDb250cm9sbGVyOjppc0VuYWJsZWQoKQogeworICAgIEhUTUxGcmFtZU93
bmVyRWxlbWVudCogb3duZXJFbGVtZW50ID0gbV9mcmFtZS0+b3duZXJFbGVtZW50KCk7CisgICAg
aWYgKG93bmVyRWxlbWVudCAmJiBvd25lckVsZW1lbnQtPmlzU2FuZGJveGVkKFNhbmRib3hTY3Jp
cHRzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKICAgICBTZXR0aW5ncyogc2V0
dGluZ3MgPSBtX2ZyYW1lLT5zZXR0aW5ncygpOwogICAgIHJldHVybiBtX2ZyYW1lLT5sb2FkZXIo
KS0+Y2xpZW50KCktPmFsbG93SmF2YVNjcmlwdChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+aXNKYXZh
U2NyaXB0RW5hYmxlZCgpKTsKIH0KSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDUwNzM3KQorKysg
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTczLDggKzIxNzMs
MTAgQEAgdm9pZCBEb2N1bWVudDo6cHJvY2Vzc0h0dHBFcXVpdihjb25zdCBTdAogICAgICAgICB9
CiAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShlcXVpdiwgInNldC1jb29raWUiKSkg
ewogICAgICAgICAvLyBGSVhNRTogbWFrZSBzZXRDb29raWUgd29yayBvbiBYTUwgZG9jdW1lbnRz
IHRvbzsgZS5nLiBpbiBjYXNlIG9mIDxodG1sOm1ldGEgLi4uLi4+Ci0gICAgICAgIGlmIChpc0hU
TUxEb2N1bWVudCgpKQotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4odGhp
cyktPnNldENvb2tpZShjb250ZW50KTsKKyAgICAgICAgaWYgKGlzSFRNTERvY3VtZW50KCkpIHsK
KyAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOyAgIC8vIEV4Y2VwdGlvbiAoZm9yIHNh
bmRib3hlZCBkb2N1bWVudHMpIGlnbm9yZWQKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEhUTUxE
b2N1bWVudCo+KHRoaXMpLT5zZXRDb29raWUoY29udGVudCwgZWMpOworICAgICAgICB9CiAgICAg
fSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShlcXVpdiwgImNvbnRlbnQtbGFuZ3VhZ2UiKSkK
ICAgICAgICAgc2V0Q29udGVudExhbmd1YWdlKGNvbnRlbnQpOwogICAgIGVsc2UgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKGVxdWl2LCAieC1kbnMtcHJlZmV0Y2gtY29udHJvbCIpKQpAQCAtMjk5Miwx
MSArMjk5NCwyMCBAQCBFbGVtZW50KiBEb2N1bWVudDo6b3duZXJFbGVtZW50KCkgY29uc3QKICAg
ICByZXR1cm4gZnJhbWUoKS0+b3duZXJFbGVtZW50KCk7CiB9CiAKLVN0cmluZyBEb2N1bWVudDo6
Y29va2llKCkgY29uc3QKK1N0cmluZyBEb2N1bWVudDo6Y29va2llKEV4Y2VwdGlvbkNvZGUmIGVj
KSBjb25zdAogewogICAgIGlmIChwYWdlKCkgJiYgIXBhZ2UoKS0+Y29va2llRW5hYmxlZCgpKQog
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKKyAgICAvLyBGSVhNRTogdGhlIEhUTUw1IERPTSBz
cGVjIHN0YXRlcyB0aGF0IHRoaXMgYXR0cmlidXRlIGNhbiByYWlzZSBhbgorICAgIC8vIElOVkFM
SURfU1RBVEVfRVJSIGV4Y2VwdGlvbiBvbiBnZXR0aW5nIGlmIHRoZSBEb2N1bWVudCBoYXMgbm8K
KyAgICAvLyBicm93c2luZyBjb250ZXh0LgorCisgICAgaWYgKHNlY3VyaXR5T3JpZ2luKCktPmlz
U2FuZGJveGVkKFNhbmRib3hPcmlnaW4pKSB7CisgICAgICAgIGVjID0gU0VDVVJJVFlfRVJSOwor
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgfQorCiAgICAgS1VSTCBjb29raWVVUkwgPSB0
aGlzLT5jb29raWVVUkwoKTsKICAgICBpZiAoY29va2llVVJMLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIFN0cmluZygpOwpAQCAtMzAwNCwxMSArMzAxNSwyMCBAQCBTdHJpbmcgRG9jdW1lbnQ6
OmNvb2tpZSgpIGNvbnN0CiAgICAgcmV0dXJuIGNvb2tpZXModGhpcywgY29va2llVVJMKTsKIH0K
IAotdm9pZCBEb2N1bWVudDo6c2V0Q29va2llKGNvbnN0IFN0cmluZyYgdmFsdWUpCit2b2lkIERv
Y3VtZW50OjpzZXRDb29raWUoY29uc3QgU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CiAgICAgaWYgKHBhZ2UoKSAmJiAhcGFnZSgpLT5jb29raWVFbmFibGVkKCkpCiAgICAgICAg
IHJldHVybjsKIAorICAgIC8vIEZJWE1FOiB0aGUgSFRNTDUgRE9NIHNwZWMgc3RhdGVzIHRoYXQg
dGhpcyBhdHRyaWJ1dGUgY2FuIHJhaXNlIGFuCisgICAgLy8gSU5WQUxJRF9TVEFURV9FUlIgZXhj
ZXB0aW9uIG9uIHNldHRpbmcgaWYgdGhlIERvY3VtZW50IGhhcyBubworICAgIC8vIGJyb3dzaW5n
IGNvbnRleHQuCisKKyAgICBpZiAoc2VjdXJpdHlPcmlnaW4oKS0+aXNTYW5kYm94ZWQoU2FuZGJv
eE9yaWdpbikpIHsKKyAgICAgICAgZWMgPSBTRUNVUklUWV9FUlI7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKICAgICBLVVJMIGNvb2tpZVVSTCA9IHRoaXMtPmNvb2tpZVVSTCgpOwogICAgIGlm
IChjb29raWVVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC00MjU3LDYgKzQyNzcs
MTEgQEAgdm9pZCBEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCgpCiAgICAgbV9jb29raWVV
UkwgPSB1cmw7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c2V0U2VjdXJpdHlPcmlnaW4o
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpKTsKIAorICAgIC8vIFNldCB0aGUgaWZyYW1lIHNh
bmRib3ggb3JpZ2luIGZsYWcgZnJvbSB0aGUgY29ycmVzcG9uZGluZyBwcm9wZXJ0eSAKKyAgICAv
LyBvZiBpdHMgZnJhbWUgb3duZXIgZWxlbWVudCAoaWZyYW1lKQorICAgIGlmIChIVE1MRnJhbWVP
d25lckVsZW1lbnQqIG93bmVyRWxlbWVudCA9IG1fZnJhbWUtPm93bmVyRWxlbWVudCgpKQorICAg
ICAgICBzZWN1cml0eU9yaWdpbigpLT5zZXRTYW5kYm94RmxhZ3Mob3duZXJFbGVtZW50LT5zYW5k
Ym94RmxhZ3MoKSk7CisgCiAgICAgaWYgKFNlY3VyaXR5T3JpZ2luOjphbGxvd1N1YnN0aXR1dGVE
YXRhQWNjZXNzVG9Mb2NhbCgpKSB7CiAgICAgICAgIC8vIElmIHRoaXMgZG9jdW1lbnQgd2FzIGxv
YWRlZCB3aXRoIHN1YnN0aXR1dGVEYXRhLCB0aGVuIHRoZSBkb2N1bWVudCBjYW4KICAgICAgICAg
Ly8gbG9hZCBsb2NhbCByZXNvdXJjZXMuICBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2NzU2CkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDUwNzM3KQorKysgV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjc1LDggKzY3NSw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYsIEVsZW1lbnQqIHRpdGxlRWxlbWVu
dCA9IDApOwogICAgIHZvaWQgcmVtb3ZlVGl0bGUoRWxlbWVudCogdGl0bGVFbGVtZW50KTsKIAot
ICAgIFN0cmluZyBjb29raWUoKSBjb25zdDsKLSAgICB2b2lkIHNldENvb2tpZShjb25zdCBTdHJp
bmcmKTsKKyAgICBTdHJpbmcgY29va2llKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAgICB2b2lk
IHNldENvb2tpZShjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBTdHJpbmcg
cmVmZXJyZXIoKSBjb25zdDsKIApJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkocmV2aXNpb24gNTA3MzcpCisrKyBX
ZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTE2MiwxMCArMTYyLDkg
QEAgbW9kdWxlIGNvcmUgewogI2VuZGlmCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01T
dHJpbmcgVVJMOwogCi0gICAgICAgIC8vIEZJWE1FOiB0aGUgRE9NIHNwZWMgc3RhdGVzIHRoYXQg
dGhpcyBhdHRyaWJ1dGUgY2FuIAotICAgICAgICAvLyByYWlzZSBhbiBleGNlcHRpb24gb24gc2V0
dGluZy4KICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmlu
Z10gRE9NU3RyaW5nIGNvb2tpZQotICAgICAgICAgICAgICAgICAgICAgLypzZXR0ZXIgcmFpc2Vz
IChET01FeGNlcHRpb24pKi87CisgICAgICAgICAgICAgICAgICAgICBnZXR0ZXIgcmFpc2VzIChE
T01FeGNlcHRpb24pLAorICAgICAgICAgICAgICAgICAgICAgc2V0dGVyIHJhaXNlcyAoRE9NRXhj
ZXB0aW9uKTsKIAogICAgICAgICAvLyBGSVhNRTogdGhlIERPTSBzcGVjIGRvZXMgTk9UIGhhdmUg
dGhpcyBhdHRyaWJ1dGUKICAgICAgICAgLy8gcmFpc2luZyBhbiBleGNlcHRpb24uCkluZGV4OiBX
ZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAJKHJldmlzaW9uIDUwNzM3KQorKysgV2ViQ29yZS9o
dG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhUTUxBcHBsZXRFbGVtZW50LmgiCiAK
KyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIk1hcHBlZEF0dHJpYnV0ZS5oIgpAQCAtMTEwLDcgKzEx
MSw4IEBAIFJlbmRlck9iamVjdCogSFRNTEFwcGxldEVsZW1lbnQ6OmNyZWF0ZVIKIHsKICAgICBT
ZXR0aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudCgpLT5zZXR0aW5ncygpOwogCi0gICAgaWYgKHNl
dHRpbmdzICYmIHNldHRpbmdzLT5pc0phdmFFbmFibGVkKCkpIHsKKyAgICBpZiAoc2V0dGluZ3Mg
JiYgc2V0dGluZ3MtPmlzSmF2YUVuYWJsZWQoKQorICAgICAgICAmJiAhZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKS0+aXNTYW5kYm94ZWQoU2FuZGJveFBsdWdpbnMpKSB7CiAgICAgICAgIEhh
c2hNYXA8U3RyaW5nLCBTdHJpbmc+IGFyZ3M7CiAKICAgICAgICAgYXJncy5zZXQoImNvZGUiLCBn
ZXRBdHRyaWJ1dGUoY29kZUF0dHIpKTsKQEAgLTE0Niw2ICsxNDgsOSBAQCBSZW5kZXJXaWRnZXQq
IEhUTUxBcHBsZXRFbGVtZW50OjpyZW5kZXJXCiAgICAgaWYgKCFzZXR0aW5ncyB8fCAhc2V0dGlu
Z3MtPmlzSmF2YUVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICBpZiAoaW5Eb2N1
bWVudCgpICYmIGRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmlzU2FuZGJveGVkKFNhbmRi
b3hQbHVnaW5zKSkKKyAgICAgICAgcmV0dXJuIDA7CisKICAgICBSZW5kZXJBcHBsZXQqIGFwcGxl
dCA9IHRvUmVuZGVyQXBwbGV0KHJlbmRlcmVyKCkpOwogICAgIGlmIChhcHBsZXQpCiAgICAgICAg
IGFwcGxldC0+Y3JlYXRlV2lkZ2V0SWZOZWNlc3NhcnkoKTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9I
VE1MQXR0cmlidXRlTmFtZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxBdHRy
aWJ1dGVOYW1lcy5pbgkocmV2aXNpb24gNTA3MzcpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEF0dHJp
YnV0ZU5hbWVzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMTcsNiArMjE3LDcgQEAgcm9sZQogcm93
cwogcm93c3BhbgogcnVsZXMKK3NhbmRib3gKIHNjaGVtZQogc2NvcGUKIHNjcm9sbGFtb3VudApJ
bmRleDogV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDUwNzM3
KQorKysgV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBF
cmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAt
MzQsNiArMzUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEhUTUxGcmFtZU93bmVyRWxlbWVu
dDo6SFRNTEZyYW1lT3duZXJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50KiBkb2N1bWVudCkKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBD
cmVhdGVFbGVtZW50KQorICAgICwgbV9zYW5kYm94RmxhZ3MoU2FuZGJveE5vbmUpCisgICAgLCBt
X3NhbmRib3hGbGFnc0Zyb21BdHRyaWJ1dGUoU2FuZGJveE5vbmUpCiAgICAgLCBtX2NvbnRlbnRG
cmFtZSgwKQogewogfQpAQCAtNjQsNiArNjcsNDYgQEAgRE9NV2luZG93KiBIVE1MRnJhbWVPd25l
ckVsZW1lbnQ6OmNvbnRlbgogICAgIHJldHVybiBtX2NvbnRlbnRGcmFtZSA/IG1fY29udGVudEZy
YW1lLT5kb21XaW5kb3coKSA6IDA7CiB9CiAKK3ZvaWQgSFRNTEZyYW1lT3duZXJFbGVtZW50Ojpz
ZXRTYW5kYm94RmxhZ3NGcm9tQXR0cmlidXRlKFNhbmRib3hGbGFncyBmbGFnc0Zyb21BdHRyaWJ1
dGUpCit7CisgICAgaWYgKGZsYWdzRnJvbUF0dHJpYnV0ZSAhPSBtX3NhbmRib3hGbGFnc0Zyb21B
dHRyaWJ1dGUpIHsKKyAgICAgICAgbV9zYW5kYm94RmxhZ3NGcm9tQXR0cmlidXRlID0gZmxhZ3NG
cm9tQXR0cmlidXRlOworICAgICAgICB1cGRhdGVTYW5kYm94RmxhZ3MoKTsKKyAgICB9Cit9CisK
K3ZvaWQgSFRNTEZyYW1lT3duZXJFbGVtZW50Ojp1cGRhdGVTYW5kYm94RmxhZ3MoKQoreworICAg
IFNhbmRib3hGbGFncyBmbGFnc0Zyb21QYXJlbnQgPSBTYW5kYm94Tm9uZTsKKyAgICAKKyAgICAv
LyBJbmhlcml0IHNhbmRib3ggZmxhZ3MgZnJvbSB0aGUgcGFyZW50LCBpZiB0aGVyZSBpcyBhbnkK
KyAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudDsKKyAgICBpZiAoaW5Eb2N1
bWVudCgpICYmIChvd25lckVsZW1lbnQgPSBkb2N1bWVudCgpLT5mcmFtZSgpLT5vd25lckVsZW1l
bnQoKSkpCisgICAgICAgIGZsYWdzRnJvbVBhcmVudCA9IG93bmVyRWxlbWVudC0+bV9zYW5kYm94
RmxhZ3M7CisKKyAgICBpbmhlcml0U2FuZGJveEZsYWdzKGZsYWdzRnJvbVBhcmVudCk7Cit9CisK
K3ZvaWQgSFRNTEZyYW1lT3duZXJFbGVtZW50Ojppbmhlcml0U2FuZGJveEZsYWdzKFNhbmRib3hG
bGFncyBmbGFnc0Zyb21QYXJlbnQpCit7CisgICAgU2FuZGJveEZsYWdzIG5ld1NhbmRib3hGbGFn
cyA9IG1fc2FuZGJveEZsYWdzRnJvbUF0dHJpYnV0ZSB8IGZsYWdzRnJvbVBhcmVudDsKKyAgICAK
KyAgICBpZiAobmV3U2FuZGJveEZsYWdzICE9IG1fc2FuZGJveEZsYWdzKSB7CisgICAgICAgIG1f
c2FuZGJveEZsYWdzID0gbmV3U2FuZGJveEZsYWdzOworICAgICAgICBpZiAoRnJhbWUqIGZyYW1l
ID0gY29udGVudEZyYW1lKCkpIHsKKyAgICAgICAgICAgIGZvciAoZnJhbWUgPSBmcmFtZS0+dHJl
ZSgpLT5maXJzdENoaWxkKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPm5leHRTaWJs
aW5nKCkpCisgICAgICAgICAgICAgICAgZnJhbWUtPm93bmVyRWxlbWVudCgpLT5pbmhlcml0U2Fu
ZGJveEZsYWdzKG1fc2FuZGJveEZsYWdzKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBI
VE1MRnJhbWVPd25lckVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKK3sKKyAgICBIVE1M
RWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKKworICAgIHVwZGF0ZVNhbmRib3hGbGFn
cygpOworfQorCiAjaWYgRU5BQkxFKFNWRykKIFNWR0RvY3VtZW50KiBIVE1MRnJhbWVPd25lckVs
ZW1lbnQ6OmdldFNWR0RvY3VtZW50KEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewpJbmRleDog
V2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaAkocmV2aXNpb24gNTA3MzcpCisrKyBXZWJD
b3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDEx
ICsyMiwxMSBAQAogI2RlZmluZSBIVE1MRnJhbWVPd25lckVsZW1lbnRfaAogCiAjaW5jbHVkZSAi
SFRNTEVsZW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIERPTVdpbmRvdzsKLWNsYXNzIEZyYW1lOwogCiAjaWYgRU5BQkxFKFNWRykKIGNs
YXNzIFNWR0RvY3VtZW50OwpAQCAtNDUsMTggKzQ1LDMxIEBAIHB1YmxpYzoKICNlbmRpZgogCiAg
ICAgdmlydHVhbCBTY3JvbGxiYXJNb2RlIHNjcm9sbGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBT
Y3JvbGxiYXJBdXRvOyB9CisgICAgCisgICAgYm9vbCBpc1NhbmRib3hlZChTYW5kYm94RmxhZ3Mg
bWFzaykgY29uc3QgeyByZXR1cm4gbV9zYW5kYm94RmxhZ3MgJiBtYXNrOyB9CisgICAgU2FuZGJv
eEZsYWdzIHNhbmRib3hGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fc2FuZGJveEZsYWdzOyB9CiAK
IHByb3RlY3RlZDoKICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqKTsKIAorICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9E
b2N1bWVudCgpOworCisgICAgdm9pZCBzZXRTYW5kYm94RmxhZ3NGcm9tQXR0cmlidXRlKFNhbmRi
b3hGbGFncyk7CisgICAgCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBGcmFtZTsKIAorICAg
IHZvaWQgdXBkYXRlU2FuZGJveEZsYWdzKCk7CisgICAgdm9pZCBpbmhlcml0U2FuZGJveEZsYWdz
KFNhbmRib3hGbGFncyBmbGFnc0Zyb21QYXJlbnQpOworICAgIAogICAgIHZpcnR1YWwgYm9vbCBp
c0ZyYW1lT3duZXJFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwg
Ym9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJkRXZlbnQqKSBjb25zdCB7IHJldHVybiBt
X2NvbnRlbnRGcmFtZTsgfQogICAgIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVtb3ZlKCk7CiAK
KyAgICBTYW5kYm94RmxhZ3MgbV9zYW5kYm94RmxhZ3M7CisgICAgU2FuZGJveEZsYWdzIG1fc2Fu
ZGJveEZsYWdzRnJvbUF0dHJpYnV0ZTsKKwogICAgIEZyYW1lKiBtX2NvbnRlbnRGcmFtZTsKIH07
CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAkocmV2aXNpb24gNTA3MzcpCisr
KyBXZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
LDYgKzQsNyBAQAogICogICAgICAgICAgIChDKSAyMDAwIFNpbW9uIEhhdXNtYW5uIChoYXVzbWFu
bkBrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBr
ZGUub3JnKQogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2LCAyMDA4LCAyMDA5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBFcmljc3NvbiBB
Qi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtODgsMTAgKzg5
LDUyIEBAIHZvaWQgSFRNTElGcmFtZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmkKICAgICAgICAg
aWYgKCFhdHRyLT5pc051bGwoKSAmJiAhYXR0ci0+dmFsdWUoKS50b0ludCgpKQogICAgICAgICAg
ICAgLy8gQWRkIGEgcnVsZSB0aGF0IG51bGxzIG91dCBvdXIgYm9yZGVyIHdpZHRoLgogICAgICAg
ICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgsICIwIik7Cisg
ICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gc2FuZGJveEF0dHIpIHsKKyAgICAgICAgYWRk
U2FuZGJveFN0YXR1cyhhdHRyKTsKICAgICB9IGVsc2UKICAgICAgICAgSFRNTEZyYW1lRWxlbWVu
dEJhc2U6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQogCit2b2lkIEhUTUxJRnJhbWVF
bGVtZW50OjphZGRTYW5kYm94U3RhdHVzKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKK3sKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgYWxsb3dGb3JtcywgKCJhbGxv
dy1mb3JtcyIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywg
YWxsb3dTYW1lT3JpZ2luLCAoImFsbG93LXNhbWUtb3JpZ2luIikpOworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBhbGxvd1NjcmlwdHMsICgiYWxsb3ctc2NyaXB0
cyIpKTsKKyAgICAKKyAgICBTYW5kYm94RmxhZ3MgbmV3U2FuZGJveEZsYWdzOworICAgIC8vIFBh
cnNlIHRoZSB1bm9yZGVyZWQgc2V0IG9mIHVuaXF1ZSBzcGFjZS1zZXBhcmF0ZWQgdG9rZW5zLgor
ICAgIGlmIChhdHRyLT5pc051bGwoKSkKKyAgICAgICAgbmV3U2FuZGJveEZsYWdzID0gU2FuZGJv
eE5vbmU7CisgICAgZWxzZSB7CisgICAgICAgIG5ld1NhbmRib3hGbGFncyA9IFNhbmRib3hBbGw7
CisgICAgICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gYXR0ci0+dmFsdWUoKS5jaGFyYWN0
ZXJzKCk7CisgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGF0dHItPnZhbHVlKCkubGVuZ3RoKCk7
CisgICAgICAgIHVuc2lnbmVkIHN0YXJ0ID0gMDsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAg
ICAgICAgICAgIHdoaWxlIChzdGFydCA8IGxlbmd0aCAmJiBpc0FTQ0lJU3BhY2UoY2hhcmFjdGVy
c1tzdGFydF0pKQorICAgICAgICAgICAgICAgICsrc3RhcnQ7CisgICAgICAgICAgICBpZiAoc3Rh
cnQgPj0gbGVuZ3RoKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgdW5zaWdu
ZWQgZW5kID0gc3RhcnQgKyAxOworICAgICAgICAgICAgd2hpbGUgKGVuZCA8IGxlbmd0aCAmJiAh
aXNBU0NJSVNwYWNlKGNoYXJhY3RlcnNbZW5kXSkpCisgICAgICAgICAgICAgICAgKytlbmQ7CisK
KyAgICAgICAgICAgIC8vIFR1cm4gb2ZmIHRoZSBjb3JyZXNwb25kaW5nIHNhbmRib3ggZmxhZyBp
ZiBpdCdzIHNldCBhcyAiYWxsb3dlZCIuCisgICAgICAgICAgICBBdG9taWNTdHJpbmcgc2FuZGJv
eFRva2VuID0gQXRvbWljU3RyaW5nKGNoYXJhY3RlcnMgKyBzdGFydCwgZW5kIC0gc3RhcnQpOwor
ICAgICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHNhbmRib3hUb2tlbiwgYWxsb3dTYW1l
T3JpZ2luKSkKKyAgICAgICAgICAgICAgICBuZXdTYW5kYm94RmxhZ3MgJj0gflNhbmRib3hPcmln
aW47CisgICAgICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShzYW5kYm94VG9rZW4s
IGFsbG93Rm9ybXMpKQorICAgICAgICAgICAgICAgIG5ld1NhbmRib3hGbGFncyAmPSB+U2FuZGJv
eEZvcm1zOworICAgICAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uoc2FuZGJveFRv
a2VuLCBhbGxvd1NjcmlwdHMpKQorICAgICAgICAgICAgICAgIG5ld1NhbmRib3hGbGFncyAmPSB+
U2FuZGJveFNjcmlwdHM7CisKKyAgICAgICAgICAgIHN0YXJ0ID0gZW5kICsgMTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHNldFNhbmRib3hGbGFnc0Zyb21BdHRyaWJ1dGUobmV3U2FuZGJveEZs
YWdzKTsKK30KKwogYm9vbCBIVE1MSUZyYW1lRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChSZW5k
ZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgcmV0dXJuIGlzVVJMQWxsb3dlZCgpICYmIHN0eWxlLT5k
aXNwbGF5KCkgIT0gTk9ORTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oCShyZXZpc2lv
biA1MDczNykKKysrIFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MCw2ICs0MCw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgbWFwVG9F
bnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiwgTWFwcGVkQXR0cmlidXRlRW50cnkmKSBjb25zdDsK
ICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7
CisgICAgdm9pZCBhZGRTYW5kYm94U3RhdHVzKE1hcHBlZEF0dHJpYnV0ZSogYXR0cik7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlZEZyb21Eb2N1bWVudCgpOwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVt
ZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRs
CShyZXZpc2lvbiA1MDczNykKKysrIFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICAg
ICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nLCBSZWZsZWN0PW1hcmdp
bmhlaWdodF0gRE9NU3RyaW5nICAgICAgIG1hcmdpbkhlaWdodDsKICAgICAgICAgICAgICAgICAg
YXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZywgUmVmbGVjdD1tYXJnaW53aWR0aF0g
RE9NU3RyaW5nICAgICAgIG1hcmdpbldpZHRoOwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUg
W0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nLCBSZWZsZWN0XSBET01TdHJpbmcgICAgICAgbmFtZTsK
KyAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZywgUmVm
bGVjdF0gRE9NU3RyaW5nICAgICAgIHNhbmRib3g7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0
ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmcsIFJlZmxlY3RdIERPTVN0cmluZyAgICAgICBzY3Jv
bGxpbmc7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJp
bmcsIEN1c3RvbVNldHRlciwgUmVmbGVjdF0gRE9NU3RyaW5nICAgICAgIHNyYzsKICAgICAgICAg
ICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZywgUmVmbGVjdF0gRE9N
U3RyaW5nICAgICAgIHdpZHRoOwpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAJKHJldmlzaW9uIDUwNzM3KQorKysgV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMDIsMTAgKzEyMDIsMTYgQEAg
dm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpnZXRDb29raWVzKGxvbgogICAgICAgICAgICAgVmVj
dG9yPENvb2tpZT4gZG9jQ29va2llc0xpc3Q7CiAgICAgICAgICAgICByYXdDb29raWVzSW1wbGVt
ZW50ZWQgPSBnZXRSYXdDb29raWVzKGRvY3VtZW50LCBkb2N1bWVudC0+Y29va2llVVJMKCksIGRv
Y0Nvb2tpZXNMaXN0KTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKCFyYXdDb29raWVz
SW1wbGVtZW50ZWQpCisgICAgICAgICAgICBpZiAoIXJhd0Nvb2tpZXNJbXBsZW1lbnRlZCkgewog
ICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIGR1cGxpY2F0aW9uIGNoZWNraW5nIGZv
ciB0aGUgU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGNvb2tpZXMuCi0gICAgICAgICAgICAgICAg
c3RyaW5nQ29va2llc0xpc3QgKz0gZG9jdW1lbnQtPmNvb2tpZSgpOwotICAgICAgICAgICAgZWxz
ZSB7CisKKyAgICAgICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAgICAgICAg
ICAgICAvLyBJZ25vcmUgZXhjZXB0aW9uIHRocm93biBieSBjb29raWUoKSBiZWxvdyAtLSB0aGUg
b25seSBjYXNlIGFuIGV4Y2VwdGlvbiBpcworICAgICAgICAgICAgICAgIC8vIHRocm93biBoZXJl
IGlzIHdoZW4gdGhlIGlmcmFtZSBpcyBzYW5kYm94ZWQsIHdoaWNoIHdpbGwgbmV2ZXIgaGFwcGVu
IGhlcmUKKyAgICAgICAgICAgICAgICAvLyBiZWNhdXNlICJkb2MiIGlzIHRoZSBkb2N1bWVudCBv
ZiB0aGUgbWFpbiBmcmFtZSBvZiB0aGUgcGFnZS4KKyAgICAgICAgICAgICAgICBzdHJpbmdDb29r
aWVzTGlzdCArPSBkb2N1bWVudC0+Y29va2llKGVjKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQo
ZWMgPT0gMCk7CisgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGludCBjb29r
aWVzU2l6ZSA9IGRvY0Nvb2tpZXNMaXN0LnNpemUoKTsKICAgICAgICAgICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IGNvb2tpZXNTaXplOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgaWYg
KCFyYXdDb29raWVzTGlzdC5jb250YWlucyhkb2NDb29raWVzTGlzdFtpXSkpCkluZGV4OiBXZWJD
b3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAJKHJldmlzaW9uIDUwNzM3
KQorKysgV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTAwLDYgKzEwMCwxMiBAQCBib29sIHBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVj
ayhjb25zdCBSZXNvCiAgICAgaWYgKGFjY2Vzc0NvbnRyb2xPcmlnaW5TdHJpbmcgPT0gIioiICYm
ICFpbmNsdWRlQ3JlZGVudGlhbHMpCiAgICAgICAgIHJldHVybiB0cnVlOwogCisgICAgLy8gQSBm
cmFtZSB0aGF0IGlzIHNhbmRib3hlZCAod2l0aCByZXNwZWN0IHRvIG9yaWdpbikgbmV2ZXIgc2hh
cmVzIG9yaWdpbiB3aXRoIGFueXRoaW5nCisgICAgLy8gZWxzZS4gSG93ZXZlciwgYSBzZXJ2ZXIg
dGhhdCBzZXRzIGEgd2lsZGNhcmQgQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIGFsbG93cyBh
bnkgCisgICAgLy8gb3JpZ2luLCBpbmNsdWRpbmcgdGhlIHVuaXF1ZSBvcmlnaW4gb2YgYSBzYW5k
Ym94ZWQgZnJhbWUuCisgICAgaWYgKGFjY2Vzc0NvbnRyb2xPcmlnaW5TdHJpbmcgIT0gIioiICYm
IHNlY3VyaXR5T3JpZ2luLT5pc1NhbmRib3hlZChTYW5kYm94T3JpZ2luKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBhY2Nlc3NDb250cm9sT3Jp
Z2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoYWNjZXNzQ29udHJvbE9yaWdp
blN0cmluZyk7CiAgICAgaWYgKCFhY2Nlc3NDb250cm9sT3JpZ2luLT5pc1NhbWVTY2hlbWVIb3N0
UG9ydChzZWN1cml0eU9yaWdpbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFdlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDUwNzM3KQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzgsNiArNDM4LDEwIEBAIHZvaWQgRnJhbWVM
b2FkZXI6OnN1Ym1pdEZvcm0oY29uc3QgY2hhcioKICAgICBpZiAodS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKIAorICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50ID0g
bV9mcmFtZS0+b3duZXJFbGVtZW50KCk7CisgICAgaWYgKG93bmVyRWxlbWVudCAmJiBvd25lckVs
ZW1lbnQtPmlzU2FuZGJveGVkKFNhbmRib3hGb3JtcykpCisgICAgICAgIHJldHVybjsKKwogICAg
IGlmIChwcm90b2NvbElzSmF2YVNjcmlwdCh1KSkgewogICAgICAgICBtX2lzRXhlY3V0aW5nSmF2
YVNjcmlwdEZvcm1BY3Rpb24gPSB0cnVlOwogICAgICAgICBtX2ZyYW1lLT5zY3JpcHQoKS0+ZXhl
Y3V0ZUlmSmF2YVNjcmlwdFVSTCh1LCBmYWxzZSwgZmFsc2UpOwpAQCAtMTI1Miw2ICsxMjU2LDkg
QEAgYm9vbCBGcmFtZUxvYWRlcjo6cmVxdWVzdE9iamVjdChSZW5kZXJQYQogICAgIGJvb2wgdXNl
RmFsbGJhY2s7CiAgICAgaWYgKHNob3VsZFVzZVBsdWdpbihjb21wbGV0ZWRVUkwsIG1pbWVUeXBl
LCByZW5kZXJlci0+aGFzRmFsbGJhY2tDb250ZW50KCksIHVzZUZhbGxiYWNrKSkgewogICAgICAg
ICBTZXR0aW5ncyogc2V0dGluZ3MgPSBtX2ZyYW1lLT5zZXR0aW5ncygpOworICAgICAgICBIVE1M
RnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCA9IG1fZnJhbWUtPm93bmVyRWxlbWVudCgp
OworICAgICAgICBpZiAob3duZXJFbGVtZW50ICYmIG93bmVyRWxlbWVudC0+aXNTYW5kYm94ZWQo
U2FuZGJveFBsdWdpbnMpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAo
IXNldHRpbmdzIHx8ICFzZXR0aW5ncy0+YXJlUGx1Z2luc0VuYWJsZWQoKSB8fCAKICAgICAgICAg
ICAgICghc2V0dGluZ3MtPmlzSmF2YUVuYWJsZWQoKSAmJiBNSU1FVHlwZVJlZ2lzdHJ5Ojppc0ph
dmFBcHBsZXRNSU1FVHlwZShtaW1lVHlwZSkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMjE5Nyw2ICsyMjA0LDEyIEBAIGJvb2wgRnJhbWVMb2FkZXI6OnNob3VsZEFsbG93TmF2aWdh
dGlvbigKICAgICBpZiAobV9mcmFtZSA9PSB0YXJnZXRGcmFtZSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKKyAgICAvLyBTYW5kYm94ZWQgZnJhbWVzIGNhbiBvbmx5IG5hdmlnYXRlIHRoZWlyIGRl
c2NlbmRhbnRzLgorICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50ID0gbV9m
cmFtZS0+b3duZXJFbGVtZW50KCk7CisgICAgaWYgKG93bmVyRWxlbWVudCAmJiBvd25lckVsZW1l
bnQtPmlzU2FuZGJveGVkKFNhbmRib3hOYXZpZ2F0aW9uKQorICAgICAgICAmJiAhdGFyZ2V0RnJh
bWUtPnRyZWUoKS0+aXNEZXNjZW5kYW50T2YobV9mcmFtZSkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKwogICAgIC8vIExldCBhIGZyYW1lIG5hdmlnYXRlIHRoZSB0b3AtbGV2ZWwgd2luZG93IHRo
YXQgY29udGFpbnMgaXQuICBUaGlzIGlzCiAgICAgLy8gaW1wb3J0YW50IHRvIGFsbG93IGJlY2F1
c2UgaXQgbGV0cyBhIHNpdGUgImZyYW1lLWJ1c3QiIChlc2NhcGUgZnJvbSBhCiAgICAgLy8gZnJh
bWUgY3JlYXRlZCBieSBhbm90aGVyIHdlYiBzaXRlKS4KSW5kZXg6IFdlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
LmNwcAkocmV2aXNpb24gNTA3MzcpCisrKyBXZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05NSw2ICs5NSw3IEBAIFNlY3VyaXR5T3JpZ2luOjpTZWN1cml0
eU9yaWdpbihjb25zdCBLVVIKICAgICA6IG1fcHJvdG9jb2wodXJsLnByb3RvY29sKCkuaXNOdWxs
KCkgPyAiIiA6IHVybC5wcm90b2NvbCgpLmxvd2VyKCkpCiAgICAgLCBtX2hvc3QodXJsLmhvc3Qo
KS5pc051bGwoKSA/ICIiIDogdXJsLmhvc3QoKS5sb3dlcigpKQogICAgICwgbV9wb3J0KHVybC5w
b3J0KCkpCisgICAgLCBtX3NhbmRib3hGbGFncyhTYW5kYm94Tm9uZSkKICAgICAsIG1fbm9BY2Nl
c3MoZmFsc2UpCiAgICAgLCBtX3VuaXZlcnNhbEFjY2VzcyhmYWxzZSkKICAgICAsIG1fZG9tYWlu
V2FzU2V0SW5ET00oZmFsc2UpCkBAIC0xMjIsNiArMTIzLDcgQEAgU2VjdXJpdHlPcmlnaW46OlNl
Y3VyaXR5T3JpZ2luKGNvbnN0IFNlYwogICAgICwgbV9ob3N0KG90aGVyLT5tX2hvc3QudGhyZWFk
c2FmZUNvcHkoKSkKICAgICAsIG1fZG9tYWluKG90aGVyLT5tX2RvbWFpbi50aHJlYWRzYWZlQ29w
eSgpKQogICAgICwgbV9wb3J0KG90aGVyLT5tX3BvcnQpCisgICAgLCBtX3NhbmRib3hGbGFncyhv
dGhlci0+bV9zYW5kYm94RmxhZ3MpCiAgICAgLCBtX25vQWNjZXNzKG90aGVyLT5tX25vQWNjZXNz
KQogICAgICwgbV91bml2ZXJzYWxBY2Nlc3Mob3RoZXItPm1fdW5pdmVyc2FsQWNjZXNzKQogICAg
ICwgbV9kb21haW5XYXNTZXRJbkRPTShvdGhlci0+bV9kb21haW5XYXNTZXRJbkRPTSkKQEAgLTE2
Miw3ICsxNjQsNyBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nlc3MoY29uc3QgU2VjCiAg
ICAgaWYgKG1fdW5pdmVyc2FsQWNjZXNzKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlm
IChtX25vQWNjZXNzIHx8IG90aGVyLT5tX25vQWNjZXNzKQorICAgIGlmIChtX25vQWNjZXNzIHx8
IG90aGVyLT5tX25vQWNjZXNzIHx8IGlzU2FuZGJveGVkKFNhbmRib3hPcmlnaW4pIHx8IG90aGVy
LT5pc1NhbmRib3hlZChTYW5kYm94T3JpZ2luKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgLy8gSGVyZSBhcmUgdHdvIGNhc2VzIHdoZXJlIHdlIHNob3VsZCBwZXJtaXQgYWNjZXNzOgpA
QCAtMjAzLDcgKzIwNSw3IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhblJlcXVlc3QoY29uc3Qg
S1UKICAgICBpZiAobV91bml2ZXJzYWxBY2Nlc3MpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0g
ICAgaWYgKG1fbm9BY2Nlc3MpCisgICAgaWYgKG1fbm9BY2Nlc3MgfHwgaXNTYW5kYm94ZWQoU2Fu
ZGJveE9yaWdpbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFJlZlB0cjxTZWN1cml0
eU9yaWdpbj4gdGFyZ2V0T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpOwpAQCAt
Mjg5LDcgKzI5MSw3IEBAIFN0cmluZyBTZWN1cml0eU9yaWdpbjo6dG9TdHJpbmcoKSBjb25zdAog
ICAgIGlmIChpc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAibnVsbCI7CiAKLSAgICBpZiAobV9u
b0FjY2VzcykKKyAgICBpZiAobV9ub0FjY2VzcyB8fCBpc1NhbmRib3hlZChTYW5kYm94T3JpZ2lu
KSkKICAgICAgICAgcmV0dXJuICJudWxsIjsKIAogICAgIGlmIChtX3Byb3RvY29sID09ICJmaWxl
IikKQEAgLTM2OSw2ICszNzEsOSBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjplcXVhbChjb25zdCBT
ZWN1cml0CiAgICAgaWYgKG1fZG9tYWluV2FzU2V0SW5ET00gJiYgbV9kb21haW4gIT0gb3RoZXIt
Pm1fZG9tYWluKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBpZiAoaXNTYW5kYm94ZWQo
U2FuZGJveE9yaWdpbikgfHwgb3RoZXItPmlzU2FuZGJveGVkKFNhbmRib3hPcmlnaW4pKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1NlY3Vy
aXR5T3JpZ2luLmgJKHJldmlzaW9uIDUwNzM3KQorKysgV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3Jp
Z2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDE4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICBjbGFzcyBEb2N1bWVudDsKICAgICBjbGFzcyBLVVJMOwogICAgIAorICAgIGVudW0g
U2FuZGJveEZsYWcgeworICAgICAgICBTYW5kYm94Tm9uZSA9IDAsCisgICAgICAgIFNhbmRib3hO
YXZpZ2F0aW9uID0gMSwKKyAgICAgICAgU2FuZGJveFBsdWdpbnMgPSAxIDw8IDEsCisgICAgICAg
IFNhbmRib3hPcmlnaW4gPSAxIDw8IDIsCisgICAgICAgIFNhbmRib3hGb3JtcyA9IDEgPDwgMywK
KyAgICAgICAgU2FuZGJveFNjcmlwdHMgPSAxIDw8IDQsCisgICAgICAgIFNhbmRib3hBbGwgPSAt
MSAgICAgLy8gYWxsIG9uZXMKKyAgICB9OworCisgICAgdHlwZWRlZiB1bnNpZ25lZCBTYW5kYm94
RmxhZ3M7CisKICAgICBjbGFzcyBTZWN1cml0eU9yaWdpbiA6IHB1YmxpYyBUaHJlYWRTYWZlU2hh
cmVkPFNlY3VyaXR5T3JpZ2luPiB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihjb25zdCBT
dHJpbmcmKTsKQEAgLTExMCw2ICsxMjIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICAvLyBXQVJOSU5HOiBUaGlzIGlzIGFuIGV4dHJlbWVseSBwb3dlcmZ1bCBhYmlsaXR5LiAgVXNl
IHdpdGggY2F1dGlvbiEKICAgICAgICAgdm9pZCBncmFudFVuaXZlcnNhbEFjY2VzcygpOwogCisg
ICAgICAgIC8vIFNhbmRib3hpbmcgc3RhdHVzLCBjb3BpZWQgZnJvbSB0aGUgZG9jdW1lbnQncyBv
d25lckVsZW1lbnQKKyAgICAgICAgdm9pZCBzZXRTYW5kYm94RmxhZ3MoU2FuZGJveEZsYWdzIGZs
YWdzKSB7IG1fc2FuZGJveEZsYWdzID0gZmxhZ3M7IH0KKyAgICAgICAgYm9vbCBpc1NhbmRib3hl
ZChTYW5kYm94RmxhZ3MgbWFzaykgY29uc3QgeyByZXR1cm4gbV9zYW5kYm94RmxhZ3MgJiBtYXNr
OyB9CisKICAgICAgICAgYm9vbCBpc1NlY3VyZVRyYW5zaXRpb25Ubyhjb25zdCBLVVJMJikgY29u
c3Q7CiAKICAgICAgICAgLy8gVGhlIGxvY2FsIFNlY3VyaXR5T3JpZ2luIGlzIHRoZSBtb3N0IHBy
aXZpbGVnZWQgU2VjdXJpdHlPcmlnaW4uCkBAIC0xNzUsNiArMTkxLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICBTdHJpbmcgbV9ob3N0OwogICAgICAgICBTdHJpbmcgbV9kb21haW47
CiAgICAgICAgIHVuc2lnbmVkIHNob3J0IG1fcG9ydDsKKyAgICAgICAgU2FuZGJveEZsYWdzIG1f
c2FuZGJveEZsYWdzOwogICAgICAgICBib29sIG1fbm9BY2Nlc3M7CiAgICAgICAgIGJvb2wgbV91
bml2ZXJzYWxBY2Nlc3M7CiAgICAgICAgIGJvb2wgbV9kb21haW5XYXNTZXRJbkRPTTsKSW5kZXg6
IFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRyYWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3RvcmFnZS9EYXRhYmFzZVRyYWNrZXIuY3BwCShyZXZpc2lvbiA1MDczNykKKysrIFdlYkNv
cmUvc3RvcmFnZS9EYXRhYmFzZVRyYWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjksNiAr
MTI5LDEwIEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpjYW5Fc3RhYmxpc2hEYXRhYmEKIAogICAg
IFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSBkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKTsKIAor
ICAgIC8vIERpc2FibGUgdGhlIHVzYWdlIG9mIHRoZSBkYXRhYmFzZSBpZiB0aGUgc2FuZGJveGVk
IG9yaWdpbiBicm93c2luZyBjb250ZXh0IGZsYWdzIHRha2VzIGVmZmVjdAorICAgIGlmIChvcmln
aW4tPmlzU2FuZGJveGVkKFNhbmRib3hPcmlnaW4pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
ICAgICAvLyBTaW5jZSB3ZSdyZSBpbW1pbmVudGx5IG9wZW5pbmcgYSBkYXRhYmFzZSB3aXRoaW4g
dGhpcyBEb2N1bWVudCdzIG9yaWdpbiwgbWFrZSBzdXJlIHRoaXMgb3JpZ2luIGlzIGJlaW5nIHRy
YWNrZWQgYnkgdGhlIFF1b3RhVHJhY2tlcgogICAgIC8vIGJ5IGZldGNoaW5nIGl0J3MgY3VycmVu
dCB1c2FnZSBub3cKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgdXNhZ2UgPSB1c2FnZUZvck9yaWdp
bihvcmlnaW4pOwpJbmRleDogV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAko
cmV2aXNpb24gNTA3MzcpCisrKyBXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Nyw4ICsxNjcsMTAgQEAgdm9pZCBXZWJTb2NrZXRDaGFu
bmVsOjpkaWRSZWNlaXZlRGF0YShTbwogICAgICAgICAgICAgaWYgKCFtX2hhbmRzaGFrZS5zZXJ2
ZXJTZXRDb29raWUoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBpZiAobV9jb250ZXh0
LT5pc0RvY3VtZW50KCkpIHsKICAgICAgICAgICAgICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50
ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihtX2NvbnRleHQpOwotICAgICAgICAgICAgICAgICAg
ICBpZiAoY29va2llc0VuYWJsZWQoZG9jdW1lbnQpKQotICAgICAgICAgICAgICAgICAgICAgICAg
ZG9jdW1lbnQtPnNldENvb2tpZShtX2hhbmRzaGFrZS5zZXJ2ZXJTZXRDb29raWUoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChjb29raWVzRW5hYmxlZChkb2N1bWVudCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOyAgIC8vIEV4Y2VwdGlvbiAoZm9y
IHNhbmRib3hlZCBkb2N1bWVudHMpIGlnbm9yZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGRv
Y3VtZW50LT5zZXRDb29raWUobV9oYW5kc2hha2Uuc2VydmVyU2V0Q29va2llKCksIGVjKTsKKyAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIC8vIEZJWE1FOiBoYW5kbGUgc2V0LWNvb2tpZTIuCkluZGV4OiBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lv
biA1MDczNykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDcxIEBACisyMDA5LTExLTEwICBQYXRyaWsgUGVyc3NvbiAgPHBhdHJpay5qLnBlcnNzb25A
ZXJpY3Nzb24uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEltcGxlbWVudCBIVE1MNSdzIHNhbmRib3ggYXR0cmlidXRlIGZvciBpZnJhbWVzCisg
ICAgICAgIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L3RleHQtbGV2ZWwtc2VtYW50aWNzLmh0
bWwjYXR0ci1pZnJhbWUtc2FuZGJveAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjEyODgKKworICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNlcy9u
b24tc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWFs
bG93ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRi
b3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmctZGlzYWxsb3dlZC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWFsbG93
ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hl
ZC1pZnJhbWUtZm9ybS1kaXNhbGxvd2VkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJh
bWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRlZC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9u
LWNoaWxkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5k
Ym94ZWQtaWZyYW1lLW5hdmlnYXRpb24tbmF2aWdhdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQt
aWZyYW1lLW5hdmlnYXRpb24tc291cmNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJh
bWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFt
ZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4uaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFt
ZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1hcHBsZXQuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUt
cGx1Z2lucy1mcmFtZS1lbWJlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9y
ZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLWZyYW1lLW9iamVjdC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1zY3Jp
cHQtZHluYW1pYy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQt
aWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm1zLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1mb3Jt
cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5h
dmlnYXRpb24tYWxsb3dlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJh
bWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1hbGxvd2VkLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1l
LW5hdmlnYXRpb24tcGFyZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Nh
bmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRsaW5rLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdl
dGxpbmsuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFt
ZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1l
LXBsdWdpbnMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlm
cmFtZS1zY3JpcHRpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1l
cy9zYW5kYm94ZWQtaWZyYW1lLXNjcmlwdGluZy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWRvY3VtZW50LWNvb2tp
ZS1yZWFkLWRlbmllZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5
L3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW1vZGlmeS1zZWxmLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL3hzcy1ERU5JRUQtc2FuZGJveGVk
LWlmcmFtZS1hdHRhY2tlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3Vy
aXR5L3NhbmRib3hlZC1pZnJhbWUtZG9jdW1lbnQtY29va2llLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLWRvY3VtZW50
LWNvb2tpZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3NhbmRi
b3hlZC1pZnJhbWUtbW9kaWZ5LXNlbGYtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtbW9kaWZ5LXNlbGYuaHRtbDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXNhbmRib3hlZC1p
ZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5
L3hzcy1ERU5JRUQtc2FuZGJveGVkLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtYWxs
b3ctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtYWxsb3cuaHRtbDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94
ZWQtaWZyYW1lLWRlbmllZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQt
d2l0aG91dC13aWxkY2FyZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQt
d2l0aG91dC13aWxkY2FyZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vz
cy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtYWxsb3ctaWZyYW1lLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9s
LXNhbmRib3hlZC1pZnJhbWUtYWxsb3cuY2dpOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1l
LWRlbmllZC1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRw
cmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQt
d2l0aG91dC13aWxkY2FyZC1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFt
ZS1kZW5pZWQtd2l0aG91dC13aWxkY2FyZC5jZ2k6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJh
bWUtZGVuaWVkLmNnaTogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fs
c3RvcmFnZS9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtaWZyYW1lLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHN0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2Uvc2FuZGJveGVk
LWlmcmFtZS1kZW5pZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2Rv
bXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3NhbmRib3hlZC1pZnJhbWUtZGVuaWVkLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHN0b3JhZ2UvZG9tc3RvcmFnZS9zZXNzaW9uc3RvcmFnZS9yZXNvdXJjZXMv
c2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0
b3JhZ2UvZG9tc3RvcmFnZS9zZXNzaW9uc3RvcmFnZS9zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvZG9tc3RvcmFnZS9zZXNzaW9u
c3RvcmFnZS9zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC5odG1sOiBBZGRlZC4KKwogMjAwOS0xMS0x
MCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5k
Ym94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJz
aW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDQgQEAKK1RoaXMgdGVzdCBjYXNlIHZlcmlmaWVzIHRoZSBwYXJzaW5n
IG9mIHRoZSBpZnJhbWUgc2FuZGJveCBhdHRyaWJ1dGUuIFR3byBzZXRzIG9mIGlmcmFtZXMgYXJl
IHVzZWQ6IG9uZSB3aGVyZSBzY3JpcHRpbmcgaXMgYWxsb3dlZCwgYW5kIGFub3RoZXIgb25lIHdo
ZXJlIGl0IGlzIGRpc2FsbG93ZWQuIFRoZSB0ZXN0IHZlcmlmaWVzIHRoYXQgdGhlIGFsbG93ZWQg
ZnJhbWVzIGV4ZWN1dGUgc2NyaXB0cyAoYnV0IG90aGVyIHNhbmRib3hlZCBwcm9wZXJ0aWVzIHN0
aWxsIGFwcGx5IC0tIHNwZWNpZmljYWxseSwgZm9ybXMgYXJlIGRpc2FibGVkKSwgYW5kIHRoZSBk
aXNhbGxvd2VkIG9uZXMgZG8gbm90LiBJZiBzdWNjZXNzZnVsIHRoZSB0ZXN0IHByaW50cyAiUEFT
UyIuCisKKyAgICAgICAgICAgICAgICAgIAorUEFTUwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9m
cmFtZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBh
cnNpbmcuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRi
b3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmcuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxNjUgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisKK3ZhciBmYWlsZWQgPSBmYWxzZTsKK3ZhciBmcmFtZXMgPSAwOyAgICAgICAgIC8qIG51
bWJlciBvZiBhbGxvd2VkIGZyYW1lcyB0aGF0IGNhbGxlZCBiYWNrICovCisKK2Z1bmN0aW9uIGZh
aWwobWVzc2FnZSkKK3sKKyAgICBzZXRTdGF0dXMoIkZBSUw6ICIgKyBtZXNzYWdlKTsKKyAgICBm
YWlsZWQgPSB0cnVlOworfQorCitmdW5jdGlvbiBzZXRTdGF0dXMoc3RhdHVzKQoreworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0U3RhdHVzIikuaW5uZXJIVE1MID0gc3RhdHVzOwor
fQorCitmdW5jdGlvbiBhbGxvd2VkQ2FsbEZyb21TYW5kYm94KCkKK3sKKyAgICArK2ZyYW1lczsK
K30KKworZnVuY3Rpb24gZGlzYWxsb3dlZENhbGxGcm9tU2FuZGJveCgpCit7CisgICAgZmFpbCgi
ZGlzYWxsb3dlZCBzY3JpcHQgZXhlY3V0ZWQiKTsKK30KKworZnVuY3Rpb24gZGlzYWxsb3dlZEZv
cm1TdWJtaXR0ZWQoKQoreworICAgIGZhaWwoInNhbmRib3hpbmcgZmFpbGVkOiBmb3JtIHN1Ym1p
dHRlZCBpbiBzYW5kYm94ZWQgZnJhbWUiKTsKK30KKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9u
KCkKK3sKKyAgICBpZiAoZnJhbWVzID09IDUgJiYgIWZhaWxlZCkKKyAgICAgICAgc2V0U3RhdHVz
KCJQQVNTIik7CisgICAgZWxzZSBpZiAoIWZhaWxlZCkKKyAgICAgICAgZmFpbCgic2NyaXB0aW5n
IGRpc2FibGVkIGluIG9uZSBvciBtb3JlIGZyYW1lcyB3aGVyZSBpdCBzaG91bGQgYmUgZW5hYmxl
ZCIpOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+CisKKyAgICA8cD5UaGlzIHRl
c3QgY2FzZSB2ZXJpZmllcyB0aGUgcGFyc2luZyBvZiB0aGUgaWZyYW1lIHNhbmRib3ggYXR0cmli
dXRlLiBUd28gc2V0cyBvZiBpZnJhbWVzCisgICAgYXJlIHVzZWQ6IG9uZSB3aGVyZSBzY3JpcHRp
bmcgaXMgYWxsb3dlZCwgYW5kIGFub3RoZXIgb25lIHdoZXJlIGl0IGlzIGRpc2FsbG93ZWQuIFRo
ZSB0ZXN0CisgICAgdmVyaWZpZXMgdGhhdCB0aGUgYWxsb3dlZCBmcmFtZXMgZXhlY3V0ZSBzY3Jp
cHRzIChidXQgb3RoZXIgc2FuZGJveGVkIHByb3BlcnRpZXMgc3RpbGwKKyAgICBhcHBseSAtLSBz
cGVjaWZpY2FsbHksIGZvcm1zIGFyZSBkaXNhYmxlZCksIGFuZCB0aGUgZGlzYWxsb3dlZCBvbmVz
IGRvIG5vdC4gSWYgc3VjY2Vzc2Z1bAorICAgIHRoZSB0ZXN0IHByaW50cyAmcXVvdDtQQVNTJnF1
b3Q7LjwvcD4KKyAgICAKKyAgICA8IS0tIGlmcmFtZXMgd2hlcmUgc2NyaXB0IGV4ZWN1dGlvbiBp
cyBhbGxvd2VkLCBidXQgb3JpZ2luIGlzIG5vdCBzaGFyZWQgLS0+CisKKyAgICA8IS0tIHBsYWlu
LCBwcm9wZXIgYXR0cmlidXRlIHZhbHVlIC0tPgorICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3ct
c2NyaXB0cyIKKyAgICAgICAgICAgIG5hbWU9ImYxIgorICAgICAgICAgICAgc3JjPSJyZXNvdXJj
ZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1hbGxvd2VkLmh0bWwiPgorICAg
IDwvaWZyYW1lPgorICAgIAorICAgIDwhLS0gbGluZSBmZWVkIGNoYXJhY3RlcnMgYmVmb3JlIGFu
ZCBhZnRlciBhdHRyaWJ1dGUgdmFsdWUgLS0+CisgICAgPGlmcmFtZSBzYW5kYm94PSIKKworYWxs
b3ctc2NyaXB0cworCisiCisgICAgICAgICAgICBuYW1lPSJmMiIKKyAgICAgICAgICAgIHNyYz0i
cmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmctYWxsb3dlZC5odG1s
Ij4KKyAgICA8L2lmcmFtZT4KKworICAgIDwhLS0gcmlkaWN1bG91c2x5IGxvbmcsIGludmFsaWQg
dGV4dCAod2VsbCwgZm9yIHRoZXNlIHB1cnBvc2VzIGF0IGxlYXN0KQorICAgICAgICAgd2l0aCBu
b24tQVNDSUkgY2hhcmFjdGVycyBzdXJyb3VuZGluZyBhdHRyaWJ1dGUgdmFsdWUgLS0+CisgICAg
PGlmcmFtZSBzYW5kYm94PSIKKyAgICAgICAgRsO2ciB2YXIgdmVycywgamFnIGfDtnIsCisgICAg
ICAgIExvdmFyIGR1IGVuIGt5c3MgbWlnIGdpdmE7CisgICAgICAgIEFya2V0IGZ1bGx0IGphZyBi
b3JkZSBza3JpdmEsCisgICAgICAgIE1pbmRyZSBoYXIgamFnIHNrcml2aXQgZsO2ci4KKyAgICAg
ICAgTWVuIG1hbiBtw6VzdGUgaMOlbGxhIG3DpXR0YSwKKyAgICAgICAgSmFnIG1lZCB2ZXJzLCBt
ZWQga3lzc2FyIGR1LgorICAgICAgICBMw6V0IG1pZyByw6RrbmE6IETDpHIgw6RyIHNqdSEKKyAg
ICAgICAgRW4gZMOkcnRpbGwgZGV0IGfDtnIgbWlnIMOldHRhLgorCisgICAgICAgIE51bXJvIMOl
dHRhIMOkciBmYXRhbCwKKyAgICAgICAgR3Jla2xhbmRzIHPDpW5nbcO2ciB2b3JvIG5pbywKKyAg
ICAgICAgT2NoIGVuIHN2ZW5zayBkw6RydGlsbCBnw7ZyIHRpby4g4oCUCisgICAgICAgIEVsdmEg
dmFyIGFwb3N0ZWxucyB0YWwsCisgICAgICAgIFR5IGphZyByw6RrbmFyIGlja2UgSnVkYXMsCisg
ICAgICAgIEhvbm9tLCBzb20gaSB2w6RubmVycyBsYWcKKyAgICAgICAgS3lzc3RlIGZhbHNrdDsg
ZGV0IGfDtnIgZWogamFnLAorICAgICAgICBIZWxzdCBuw6RyIHZhY2tyYSBsw6RwcGFyIGJqdWRh
cy4KKworICAgICAgICBIdXJ1IHN0w6VyIG1pbiByw6RrbmluZyBow6RyPworICAgICAgICBBZGVy
dG9uOyBkZXQgw6RyIGRvY2sgbsOlZ290LgorICAgICAgICBOaXR0b24g4oCUIHJpbW1ldCBnw7Zy
IGJlc3bDpHIsCisgICAgICAgIETDpHJmw7ZyZSBqYWcgZnlsbGVyIHRqb2dldC4KKyAgICAgICAg
U3Ryb2ZlbiDDpHIgZWogZnVsbCBzb20gamFnLAorICAgICAgICBJbiBpIGhhbW5lbiB2aWxsIGph
ZyBzdHlyYSwKKyAgICAgICAgRMOkcmbDtnJlIHRpbGwgZ29kbyB0YWcKKyAgICAgICAgRGVubmEg
Z8OlbmcgbWVkIHRqdWdvZnlyYS4KKyAgICAgICAgCisgICAgICAgICdLeXNzYXJuYScgKCdUaGUg
a2lzc2VzJyksIEVzYWlhcyBUZWduw6lyLCAxNzgyLTE4NDYKKworICAgIGFsbG93LXNjcmlwdHMK
KyAgICAKKyAgICAgICAgaW50IG1haW4odm9pZCkKKyAgICAgICAgeworICAgICAgICAgIHJldHVy
biAwOworICAgICAgICB9IgorICAgICAgICAgICAgbmFtZT0iZjMiCisgICAgICAgICAgICBzcmM9
InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWFsbG93ZWQuaHRt
bCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8IS0tIHRhYiBjaGFyYWN0ZXJzIGJlZm9yZSBhbmQg
YWZ0ZXIgYXR0cmlidXRlIHZhbHVlIC0tPgorICAgIDxpZnJhbWUgc2FuZGJveD0iCQlhbGxvdy1z
Y3JpcHRzCQkiCisgICAgICAgICAgICBuYW1lPSJmNCIKKyAgICAgICAgICAgIHNyYz0icmVzb3Vy
Y2VzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmctYWxsb3dlZC5odG1sIj4KKyAg
ICA8L2lmcmFtZT4KKworICAgIDwhLS0gbWl4ZWQgY2FzZSAtLT4KKyAgICA8aWZyYW1lIHNhbmRi
b3g9IkFsTG9XLXNDcklwVHMiCisgICAgICAgICAgICBuYW1lPSJmNSIKKyAgICAgICAgICAgIHNy
Yz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmctYWxsb3dlZC5o
dG1sIj4KKyAgICA8L2lmcmFtZT4KKworICAgIDwhLS0gaWZyYW1lcyB3aGVyZSBzY3JpcHQgZXhl
Y3V0aW9uIGlzIGRpc2FsbG93ZWQgLS0+CisKKyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93c2Ny
aXB0cyIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmli
dXRlLXBhcnNpbmctZGlzYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKworICAgIDxpZnJh
bWUgc2FuZGJveD0iYWxsb3dzLWNyaXB0cyIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3Nh
bmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmctZGlzYWxsb3dlZC5odG1sIj4KKyAgICA8
L2lmcmFtZT4KKworICAgIDxpZnJhbWUgc2FuZGJveD0iLWFsbG93LXNjcmlwdHMiCisgICAgICAg
ICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWRp
c2FsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNhbmRib3g9ImFs
bG93X3NjcmlwdHMiCisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1l
LWF0dHJpYnV0ZS1wYXJzaW5nLWRpc2FsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAg
ICA8aWZyYW1lIHNhbmRib3g9ImFsbG93U2NyaXB0cyIKKyAgICAgICAgICAgIHNyYz0icmVzb3Vy
Y2VzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmctZGlzYWxsb3dlZC5odG1sIj4K
KyAgICA8L2lmcmFtZT4KKworICAgIDxpZnJhbWUgc2FuZGJveD0iYWFsbG93LXNjcmlwdHMiCisg
ICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJz
aW5nLWRpc2FsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNhbmRi
b3g9ImFsbG93LXNjcmlwdHNzIgorICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVk
LWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1kaXNhbGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1l
PgorCisgICAgPGlmcmFtZSBzYW5kYm94CisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5k
Ym94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWRpc2FsbG93ZWQuaHRtbCI+CisgICAgPC9p
ZnJhbWU+CisKKyAgICA8cCBpZD0ndGVzdFN0YXR1cyc+RkFJTDogU2NyaXB0IGRpZG4ndCBydW48
L3A+CisKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Nh
bmRib3hlZC1pZnJhbWUtZm9ybXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtZm9ybXMtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1mb3Jt
cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorVGhpcyB0ZXN0IHJ1
bnMgZml2ZSBJRnJhbWVzIHdpdGggZm9ybXMgYWxsb3dlZCwgb25lIElGcmFtZSB3aXRoIGZvcm1z
IGRpc2FsbG93ZWQsIHRoZW4gZml2ZSBtb3JlIElGcmFtZXMgd2l0aCBmb3JtcyBhbGxvd2VkLiBJ
ZiB0ZW4gZm9ybSBzdWJtaXNzaW9ucyBhcmUgbWFkZSwgYW5kIHRoZSBkaXNhbGxvd2VkIHN1Ym1p
c3Npb24gaXMgbm90IG9uZSBvZiB0aGVtLCB3ZSBjb25zaWRlciB0aGUgdGVzdCB0byBoYXZlIHBh
c3NlZC4gVGhpcyB0ZXN0IHdpbGwgcHJpbnQgIlBBU1MiIG9uIHN1Y2Nlc3MuCisKKyAgICAgICAg
ICAgICAgICAgICAgCitQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94
ZWQtaWZyYW1lLWZvcm1zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFt
ZXMvc2FuZGJveGVkLWlmcmFtZS1mb3Jtcy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1mb3Jtcy5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDk2IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKK30KKwordmFyIHN1Ym1pc3Npb25Db3VudCAgICAgID0gMDsKK3ZhciBkaXNhbGxvd2Vk
U3VibWlzc2lvbiA9IGZhbHNlOworCitmdW5jdGlvbiBhbGxvd2VkRm9ybVN1Ym1pdHRlZCgpCit7
CisgICAgKytzdWJtaXNzaW9uQ291bnQ7CisKKyAgICBpZiAoc3VibWlzc2lvbkNvdW50ID09IDEw
KSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0X3N0YXR1cyIpLmlubmVy
SFRNTCA9IChkaXNhbGxvd2VkU3VibWlzc2lvbiA/ICJGQUlMIiA6ICJQQVNTIik7CisgICAgICAK
KyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgfQorfQorCitmdW5j
dGlvbiBkaXNhbGxvd2VkRm9ybVN1Ym1pdHRlZCgpCit7CisgICAgZGlzYWxsb3dlZFN1Ym1pc3Np
b24gPSB0cnVlOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+CisKKyAgICA8cD5U
aGlzIHRlc3QgcnVucyBmaXZlIElGcmFtZXMgd2l0aCBmb3JtcyBhbGxvd2VkLCBvbmUgSUZyYW1l
IHdpdGggZm9ybXMKKyAgICBkaXNhbGxvd2VkLCB0aGVuIGZpdmUgbW9yZSBJRnJhbWVzIHdpdGgg
Zm9ybXMgYWxsb3dlZC4gSWYgdGVuIGZvcm0KKyAgICBzdWJtaXNzaW9ucyBhcmUgbWFkZSwgYW5k
IHRoZSBkaXNhbGxvd2VkIHN1Ym1pc3Npb24gaXMgbm90IG9uZSBvZiB0aGVtLAorICAgIHdlIGNv
bnNpZGVyIHRoZSB0ZXN0IHRvIGhhdmUgcGFzc2VkLiBUaGlzIHRlc3Qgd2lsbCBwcmludAorICAg
ICZxdW90O1BBU1MmcXVvdDsgb24gc3VjY2Vzcy48L3A+CisKKyAgICA8IS0tIGZpdmUgSUZyYW1l
cyB3aXRoIGZvcm1zIGFsbG93ZWQgLS0+CisKKyAgICA8aWZyYW1lIHN0eWxlPSJ3aWR0aDogNjBw
eDsgaGVpZ2h0OiA2MHB4OyIKKyAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1m
b3JtcyIKKyAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWFsbG93
ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBzdHlsZT0id2lkdGg6IDYwcHg7
IGhlaWdodDogNjBweDsiCisgICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9y
bXMiCisgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1hbGxvd2Vk
Lmh0bWwiPgorICAgIDwvaWZyYW1lPgorICAgIDxpZnJhbWUgc3R5bGU9IndpZHRoOiA2MHB4OyBo
ZWlnaHQ6IDYwcHg7IgorICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1z
IgorICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tYWxsb3dlZC5o
dG1sIj4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIHN0eWxlPSJ3aWR0aDogNjBweDsgaGVp
Z2h0OiA2MHB4OyIKKyAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyIK
KyAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWFsbG93ZWQuaHRt
bCI+CisgICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdo
dDogNjBweDsiCisgICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMiCisg
ICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1hbGxvd2VkLmh0bWwi
PgorICAgIDwvaWZyYW1lPgorCisgICAgPCEtLSBvbmUgSUZyYW1lIHdpdGggZm9ybXMgZGlzYWxs
b3dlZCAtLT4KKworICAgIDxpZnJhbWUgc3R5bGU9IndpZHRoOiA2MHB4OyBoZWlnaHQ6IDYwcHg7
IgorICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIgorICAgICAgICBzcmM9InJlc291cmNl
cy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tZGlzYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4K
KworICAgIDwhLS0gZml2ZSBtb3JlIElGcmFtZXMgd2l0aCBmb3JtcyBhbGxvd2VkIC0tPgorCisg
ICAgPGlmcmFtZSBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsiCisgICAgICAgIHNh
bmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMiCisgICAgICAgIHNyYz0icmVzb3VyY2Vz
L3NhbmRib3hlZC1pZnJhbWUtZm9ybS1hbGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorICAg
IDxpZnJhbWUgc3R5bGU9IndpZHRoOiA2MHB4OyBoZWlnaHQ6IDYwcHg7IgorICAgICAgICBzYW5k
Ym94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1zIgorICAgICAgICBzcmM9InJlc291cmNlcy9z
YW5kYm94ZWQtaWZyYW1lLWZvcm0tYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKyAgICA8
aWZyYW1lIHN0eWxlPSJ3aWR0aDogNjBweDsgaGVpZ2h0OiA2MHB4OyIKKyAgICAgICAgc2FuZGJv
eD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyIKKyAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2Fu
ZGJveGVkLWlmcmFtZS1mb3JtLWFsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisgICAgPGlm
cmFtZSBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsiCisgICAgICAgIHNhbmRib3g9
ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMiCisgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRi
b3hlZC1pZnJhbWUtZm9ybS1hbGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorICAgIDxpZnJh
bWUgc3R5bGU9IndpZHRoOiA2MHB4OyBoZWlnaHQ6IDYwcHg7IgorICAgICAgICBzYW5kYm94PSJh
bGxvdy1zY3JpcHRzIGFsbG93LWZvcm1zIgorICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94
ZWQtaWZyYW1lLWZvcm0tYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKyAgICAKKyAgICA8
cCBpZD0ndGVzdF9zdGF0dXMnPkZBSUw6IFNjcmlwdCBkaWRuJ3QgcnVuPC9wPgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1u
YXZpZ2F0aW9uLWFsbG93ZWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1hbGxvd2VkLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1p
ZnJhbWUtbmF2aWdhdGlvbi1hbGxvd2VkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxMiBAQAorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYSBzYW5kYm94ZWQgaWZyYW1lIENB
TiBuYXZpZ2F0ZSBib3RoIGl0c2VsZiBhbmQgYSBjaGlsZCBpbiB0aGUgZnJhbWUgdHJlZS4gSXQg
YWxzbyB2ZXJpZmllcyB0aGF0IHRoZSBzYW5kYm94IGF0dHJpYnV0ZSByZW1haW5zIGludGFjdCBh
ZnRlciBhIGZyYW1lIGhhcyBiZWVuIG5hdmlnYXRlZCwgYW5kIHRoYXQgc2FuZGJveCBhdHRyaWJ1
dGVzIGFyZSBwcm9wYWdhdGVkIHRocm91Z2ggdGhlIGZyYW1lIGhpZXJhcmNoeS4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgKHNlbGYuc2FuZGJveGVkRnJhbWUuZnJhbWVX
aXRoUGx1Z2luLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbHVnaW4nKS5kZXN0cm95U3RyZWFt
KSA9PSB1bmRlZmluZWQgaXMgdHJ1ZQorUEFTUyAoc2VsZi5mcmFtZVdpdGhQbHVnaW4uZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3BsdWdpbicpLmRlc3Ryb3lTdHJlYW0pICE9IHVuZGVmaW5lZCBp
cyB0cnVlCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94ZWRGcmFtZUlkJyku
c2FuZGJveCBpcyAnYWxsb3ctc2NyaXB0cyBhbGxvdy1zYW1lLW9yaWdpbicKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorICAKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1hbGxvd2VkLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1u
YXZpZ2F0aW9uLWFsbG93ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1hbGxvd2VkLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNjAgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNy
Yz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGNoaWxkRnJhbWVXYXNO
YXZpZ2F0ZWQoKQoreworICAgIC8vIENoZWNrIHRoYXQgdGhlIGNoaWxkIGZyYW1lIHdhcyB1bmFi
bGUgdG8gbG9hZCBhIHBsdWdpbiwgc2luY2UgaXRzIHBhcmVudCBpcyBzYW5kYm94ZWQuCisgICAg
c2hvdWxkQmVUcnVlKCIoc2VsZi5zYW5kYm94ZWRGcmFtZS5mcmFtZVdpdGhQbHVnaW4uZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3BsdWdpbicpLmRlc3Ryb3lTdHJlYW0pID09IHVuZGVmaW5lZCIp
OworICAgIAorICAgIC8vIENoZWNrIGEgbm9uLXNhbmRib3hlZCBmcmFtZSBhcyB3ZWxsLCB0byBl
bnN1cmUgdGhhdCB0aGUgcGx1Z2luIGlzIGRpc2FibGVkIGJ5IHNhbmRib3hpbmcKKyAgICAvLyBh
bmQgbm90IHNvbWUgb3RoZXIgZmFpbHVyZQorICAgIHNob3VsZEJlVHJ1ZSgiKHNlbGYuZnJhbWVX
aXRoUGx1Z2luLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbHVnaW4nKS5kZXN0cm95U3RyZWFt
KSAhPSB1bmRlZmluZWQiKTsKKworICAgIC8vIFdoZW4gdGhlIGNoaWxkIGZyYW1lIChncmFuZGNo
aWxkIG9mIHRoZSBtYWluIHdpbmRvdykgaGFzIGJlZW4gbmF2aWdhdGVkLAorICAgIC8vIG1ha2Ug
dGhlIHNhbmRib3hlZCBmcmFtZSBuYXZpZ2F0ZSBpdHNlbGYKKyAgICBzZWxmLnNhbmRib3hlZEZy
YW1lLmxvY2F0aW9uLmFzc2lnbigiamF2YXNjcmlwdDogdG9wLnNhbmRib3hXYXNOYXZpZ2F0ZWQo
KTsiKTsKK30KKworZnVuY3Rpb24gc2FuZGJveFdhc05hdmlnYXRlZCgpCit7CisgICAgc2hvdWxk
QmUoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94ZWRGcmFtZUlkJykuc2FuZGJveCIs
ICInYWxsb3ctc2NyaXB0cyBhbGxvdy1zYW1lLW9yaWdpbiciKTsKKyAgICBpc1N1Y2Nlc3NmdWxs
eVBhcnNlZCgpOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAg
ICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworPC9zY3Jp
cHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorICAgIDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorICAg
IDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCisgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1z
Y3JpcHRzIGFsbG93LXNhbWUtb3JpZ2luIgorICAgICAgICAgICAgbmFtZT0ic2FuZGJveGVkRnJh
bWUiCisgICAgICAgICAgICBpZD0ic2FuZGJveGVkRnJhbWVJZCIKKyAgICAgICAgICAgIHNyYz0i
cmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1jaGlsZC5odG1sIj4KKyAgICA8
L2lmcmFtZT4KKworICAgIDxpZnJhbWUgbmFtZT0iZnJhbWVXaXRoUGx1Z2luIgorICAgICAgICAg
ICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLWZyYW1lLW9iamVjdC5o
dG1sIj4KKyAgICA8L2lmcmFtZT4KKworICAgIDxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRo
aXMgdGVzdCB2ZXJpZmllcyB0aGF0IGEgc2FuZGJveGVkIGlmcmFtZSBDQU4gbmF2aWdhdGUgYm90
aCBpdHNlbGYgYW5kIGEgY2hpbGQgaW4gdGhlIGZyYW1lIHRyZWUuICIKKyAgICAgICAgICAgICAg
ICArICJJdCBhbHNvIHZlcmlmaWVzIHRoYXQgdGhlIHNhbmRib3ggYXR0cmlidXRlIHJlbWFpbnMg
aW50YWN0IGFmdGVyIGEgZnJhbWUgaGFzIGJlZW4gbmF2aWdhdGVkLCAiCisgICAgICAgICAgICAg
ICAgKyAiYW5kIHRoYXQgc2FuZGJveCBhdHRyaWJ1dGVzIGFyZSBwcm9wYWdhdGVkIHRocm91Z2gg
dGhlIGZyYW1lIGhpZXJhcmNoeS4iKTsKKyAgICB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUt
bmF2aWdhdGlvbi1wYXJlbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXBhcmVudC1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOCBAQAorVGhpcyB0ZXN0IHZlcmlmaWVzIHRo
YXQgYSBzYW5kYm94ZWQgSUZyYW1lIGNhbm5vdCBuYXZpZ2F0ZSBhbiBhbmNlc3RvciBpbiB0aGUg
ZnJhbWUgdHJlZSBieSBhc3NpZ25pbmcgdGhlIGxvY2F0aW9uIGF0dHJpYnV0ZS4KKworVGhpcyBp
cyBkb25lIGJ5IGxvYWRpbmcgdGVuIG5vbi1zYW5kYm94ZWQgSUZyYW1lcywgYW5kIGEgc2luZ2xl
IHNhbmRib3hlZCBvbmUuIEV4cGVjdCB0ZW4gZnJhbWVzIHRvIGJlIG5hdmlnYXRlZCwgYnV0IHRo
ZSBzYW5kYm94ZWQgb25lIHRvIG5vdCBiZSBvbmUgb2YgdGhlbS4KKworVGhpcyB0ZXN0IHdpbGwg
cHJpbnQgIlBBU1MiIG9uIHN1Y2Nlc3MuCisKKyAgICAgICAgICAgICAgIAorUEFTUwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXBhcmVu
dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1p
ZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw2OCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisKK2lm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7Cit9CisKK3ZhciBuYXZpZ2F0ZWRGcmFtZXMgPSAwOworCitmdW5jdGlv
biBjaGVja1Jlc3VsdHMoKQoreworICAgIHZhciB0ZXN0U3RhdHVzID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3Rlc3RTdGF0dXMnKTsKKworICAgIGlmIChzZWxmLm5hdmlnYXRlZC5sb2NhdGlv
bi5ocmVmLmluZGV4T2YoJ3BhcmVudC5odG1sJykgPT0gLTEpCisgICAgICAgIHRlc3RTdGF0dXMu
aW5uZXJIVE1MID0gJ0ZBSUw6IGRpc2FsbG93ZWQgZnJhbWUgbmF2aWdhdGVkJzsKKyAgICBlbHNl
IGlmIChuYXZpZ2F0ZWRGcmFtZXMgPT0gMTApCisgICAgICAgIHRlc3RTdGF0dXMuaW5uZXJIVE1M
ID0gJ1BBU1MnOworICAgIGVsc2UKKyAgICAgICAgdGVzdFN0YXR1cy5pbm5lckhUTUwgPSAnRkFJ
TDogZnJhbWVzIG5vdCBuYXZpZ2F0ZWQgcHJvcGVybHknOworCisgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gY291bnRGcmFtZSgpCit7CisgICAgKytuYXZpZ2F0
ZWRGcmFtZXM7CisKKyAgICBpZiAobmF2aWdhdGVkRnJhbWVzID09IDEwKQorICAgICAgICBjaGVj
a1Jlc3VsdHMoKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorCisgICAgPHA+
VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYSBzYW5kYm94ZWQgSUZyYW1lIGNhbm5vdCBuYXZpZ2F0
ZSBhbiBhbmNlc3RvcgorICAgIGluIHRoZSBmcmFtZSB0cmVlIGJ5IGFzc2lnbmluZyB0aGUgbG9j
YXRpb24gYXR0cmlidXRlLjwvcD4KKworICAgIDxwPlRoaXMgaXMgZG9uZSBieSBsb2FkaW5nIHRl
biBub24tc2FuZGJveGVkIElGcmFtZXMsIGFuZCBhIHNpbmdsZQorICAgIHNhbmRib3hlZCBvbmUu
IEV4cGVjdCB0ZW4gZnJhbWVzIHRvIGJlIG5hdmlnYXRlZCwgYnV0IHRoZSBzYW5kYm94ZWQKKyAg
ICBvbmUgdG8gPGI+bm90PC9iPiBiZSBvbmUgb2YgdGhlbS48L3A+CisgICAgCisgICAgPHA+VGhp
cyB0ZXN0IHdpbGwgcHJpbnQgJnF1b3Q7UEFTUyZxdW90OyBvbiBzdWNjZXNzLjwvcD4KKworICAg
IDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvbm9uLXNhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi5o
dG1sIj48L2lmcmFtZT4KKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL25vbi1zYW5kYm94ZWQt
aWZyYW1lLW5hdmlnYXRpb24uaHRtbCI+PC9pZnJhbWU+CisgICAgPGlmcmFtZSBzcmM9InJlc291
cmNlcy9ub24tc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLmh0bWwiPjwvaWZyYW1lPgorICAg
IDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvbm9uLXNhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi5o
dG1sIj48L2lmcmFtZT4KKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL25vbi1zYW5kYm94ZWQt
aWZyYW1lLW5hdmlnYXRpb24uaHRtbCI+PC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIG5hbWU9J25h
dmlnYXRlZCcKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2
aWdhdGlvbi1wYXJlbnQuaHRtbCIKKyAgICA8L2lmcmFtZT4KKworICAgIDxpZnJhbWUgc3JjPSJy
ZXNvdXJjZXMvbm9uLXNhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi5odG1sIj48L2lmcmFtZT4K
KyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL25vbi1zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRp
b24uaHRtbCI+PC9pZnJhbWU+CisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9ub24tc2FuZGJv
eGVkLWlmcmFtZS1uYXZpZ2F0aW9uLmh0bWwiPjwvaWZyYW1lPgorICAgIDxpZnJhbWUgc3JjPSJy
ZXNvdXJjZXMvbm9uLXNhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi5odG1sIj48L2lmcmFtZT4K
KyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL25vbi1zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRp
b24uaHRtbCI+PC9pZnJhbWU+CisKKyAgICA8cCBpZD0ndGVzdFN0YXR1cyc+RkFJTDogU2NyaXB0
IGRpZG4ndCBydW48L3A+CisgICAgCis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVk
LWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmstZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRh
cmdldGxpbmstZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAKK1RoaXMg
dGVzdCB2ZXJpZmllcyB0aGF0IGEgc2FuZGJveGVkIElGcmFtZSBjYW5ub3Qgb3BlbiBhIGxpbmsg
aW4gYW5vdGhlciBmcmFtZSB1c2luZyB0aGUgdGFyZ2V0IGF0dHJpYnV0ZSBvZiBhIGxpbmsuCisK
K1RoaXMgaXMgZG9uZSBieSBsb2FkaW5nIHRlbiBub24tc2FuZGJveGVkIElGcmFtZXMsIGFuZCBh
IHNpbmdsZSBzYW5kYm94ZWQgb25lLiBJbiBhZGRpdGlvbiBlYWNoIG9mIHRoZXNlIGZyYW1lcyBo
YXZlIGEgdGFyZ2V0IGZyYW1lIChzbywgMjIgZnJhbWVzIGluIHRvdGFsKS4gRXhwZWN0IHRlbiBm
cmFtZXMgdG8gYmUgYWJsZSB0byBvcGVuIGEgbGluayBpbiB0aGVpciBjb3JyZXNwb25kaW5nIHRh
cmdldCBmcmFtZSwgYnV0IHRoZSBzYW5kYm94ZWQgb25lIHRvIG5vdCBiZSBvbmUgb2YgdGhlbS4K
KworVGhpcyB0ZXN0IHdpbGwgcHJpbnQgIlBBU1MiIG9uIHN1Y2Nlc3MuCisKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgCitQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1l
cy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10
YXJnZXRsaW5rLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9z
YW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDEwOSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7Cit9CisKK3ZhciBuYXZpZ2F0ZWRGcmFtZXMgPSAwOworCitmdW5jdGlvbiBjaGVja1Jl
c3VsdHMoKQoreworICAgIHZhciB0ZXN0U3RhdHVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3Rlc3RTdGF0dXMnKTsKKworICAgIGlmIChzZWxmLnNhbmRib3hlZF90YXJnZXQubG9jYXRpb24u
aHJlZi5pbmRleE9mKCcuaHRtbCcpICE9IC0xKQorICAgICAgICB0ZXN0U3RhdHVzLmlubmVySFRN
TCA9ICdGQUlMOiBkaXNhbGxvd2VkIGZyYW1lIG5hdmlnYXRlZCc7CisgICAgZWxzZSBpZiAobmF2
aWdhdGVkRnJhbWVzID09IDEwKQorICAgICAgICB0ZXN0U3RhdHVzLmlubmVySFRNTCA9ICdQQVNT
JzsKKyAgICBlbHNlCisgICAgICAgIHRlc3RTdGF0dXMuaW5uZXJIVE1MID0gJ0ZBSUw6IGZyYW1l
cyBub3QgbmF2aWdhdGVkIHByb3Blcmx5JzsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7Cit9CisKK2Z1bmN0aW9uIGNvdW50RnJhbWUoKQoreworICAgICsrbmF2aWdhdGVkRnJhbWVz
OworCisgICAgaWYgKG5hdmlnYXRlZEZyYW1lcyA9PSAxMCkKKyAgICAgICAgY2hlY2tSZXN1bHRz
KCk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKworICAgIDxwPlRoaXMgdGVz
dCB2ZXJpZmllcyB0aGF0IGEgc2FuZGJveGVkIElGcmFtZSBjYW5ub3Qgb3BlbiBhIGxpbmsgaW4K
KyAgICBhbm90aGVyIGZyYW1lIHVzaW5nIHRoZSA8Y29kZT50YXJnZXQ8L2NvZGU+IGF0dHJpYnV0
ZSBvZiBhIGxpbmsuPC9wPgorCisgICAgPHA+VGhpcyBpcyBkb25lIGJ5IGxvYWRpbmcgdGVuIG5v
bi1zYW5kYm94ZWQgSUZyYW1lcywgYW5kIGEgc2luZ2xlCisgICAgc2FuZGJveGVkIG9uZS4gSW4g
YWRkaXRpb24gZWFjaCBvZiB0aGVzZSBmcmFtZXMgaGF2ZSBhIHRhcmdldCBmcmFtZQorICAgIChz
bywgMjIgZnJhbWVzIGluIHRvdGFsKS4gRXhwZWN0IHRlbiBmcmFtZXMgdG8gYmUgYWJsZSB0byBv
cGVuIGEgbGluaworICAgIGluIHRoZWlyIGNvcnJlc3BvbmRpbmcgdGFyZ2V0IGZyYW1lLCBidXQg
dGhlIHNhbmRib3hlZCBvbmUKKyAgICB0byA8Yj5ub3Q8L2I+IGJlIG9uZSBvZiB0aGVtLjwvcD4K
KyAgICAKKyAgICA8cD5UaGlzIHRlc3Qgd2lsbCBwcmludCAmcXVvdDtQQVNTJnF1b3Q7IG9uIHN1
Y2Nlc3MuPC9wPgorCisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1l
LW5hdmlnYXRpb24tdGFyZ2V0bGluay5odG1sIgorICAgICAgICAgICAgbmFtZT0iZjEiPgorICAg
IDwvaWZyYW1lPgorICAgIDxpZnJhbWUgbmFtZT0iZjFfdGFyZ2V0IiBzcmM9ImFib3V0OmJsYW5r
Ij48L2lmcmFtZT4KKworICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFt
ZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbCIKKyAgICAgICAgICAgIG5hbWU9ImYyIj4KKyAg
ICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIG5hbWU9ImYyX3RhcmdldCIgc3JjPSJhYm91dDpibGFu
ayI+PC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJh
bWUtbmF2aWdhdGlvbi10YXJnZXRsaW5rLmh0bWwiCisgICAgICAgICAgICBuYW1lPSJmMyI+Cisg
ICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBuYW1lPSJmM190YXJnZXQiIHNyYz0iYWJvdXQ6Ymxh
bmsiPjwvaWZyYW1lPgorCisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZy
YW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay5odG1sIgorICAgICAgICAgICAgbmFtZT0iZjQiPgor
ICAgIDwvaWZyYW1lPgorICAgIDxpZnJhbWUgbmFtZT0iZjRfdGFyZ2V0IiBzcmM9ImFib3V0OmJs
YW5rIj48L2lmcmFtZT4KKworICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlm
cmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbCIKKyAgICAgICAgICAgIG5hbWU9ImY1Ij4K
KyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIG5hbWU9ImY1X3RhcmdldCIgc3JjPSJhYm91dDpi
bGFuayI+PC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1p
ZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRsaW5rLmh0bWwiCisgICAgICAgICAgICBuYW1lPSJzYW5k
Ym94ZWQiCisgICAgICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LXNhbWUtb3Jp
Z2luIj4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIG5hbWU9InNhbmRib3hlZF90YXJnZXQi
IHNyYz0iYWJvdXQ6YmxhbmsiPjwvaWZyYW1lPgorCisgICAgPGlmcmFtZSBzcmM9InJlc291cmNl
cy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay5odG1sIgorICAgICAgICAg
ICAgbmFtZT0iZjYiPgorICAgIDwvaWZyYW1lPgorICAgIDxpZnJhbWUgbmFtZT0iZjZfdGFyZ2V0
IiBzcmM9ImFib3V0OmJsYW5rIj48L2lmcmFtZT4KKworICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJj
ZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbCIKKyAgICAgICAg
ICAgIG5hbWU9ImY3Ij4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIG5hbWU9ImY3X3Rhcmdl
dCIgc3JjPSJhYm91dDpibGFuayI+PC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNyYz0icmVzb3Vy
Y2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRsaW5rLmh0bWwiCisgICAgICAg
ICAgICBuYW1lPSJmOCI+CisgICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBuYW1lPSJmOF90YXJn
ZXQiIHNyYz0iYWJvdXQ6YmxhbmsiPjwvaWZyYW1lPgorCisgICAgPGlmcmFtZSBzcmM9InJlc291
cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay5odG1sIgorICAgICAg
ICAgICAgbmFtZT0iZjkiPgorICAgIDwvaWZyYW1lPgorICAgIDxpZnJhbWUgbmFtZT0iZjlfdGFy
Z2V0IiBzcmM9ImFib3V0OmJsYW5rIj48L2lmcmFtZT4KKworICAgIDxpZnJhbWUgc3JjPSJyZXNv
dXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbCIKKyAgICAg
ICAgICAgIG5hbWU9ImYxMCI+CisgICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBuYW1lPSJmMTBf
dGFyZ2V0IiBzcmM9ImFib3V0OmJsYW5rIj48L2lmcmFtZT4KKworICAgIDxwIGlkPSd0ZXN0U3Rh
dHVzJz5GQUlMOiBTY3JpcHQgZGlkbid0IHJ1bjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5k
b3dvcGVuLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1l
cy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5h
dmlnYXRpb24td2luZG93b3Blbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NiBAQAorVmVyaWZpZXMgdGhhdCBhIHNhbmRib3hlZCBJRnJhbWUgY2Fubm90IG9wZW4gbmV3IHdp
bmRvd3MgdXNpbmcgd2luZG93Lm9wZW4oKS4gRXhwZWN0IHRlbiB3aW5kb3dzIHRvIGJlIG9wZW5l
ZCwgYnV0IHRoZSBzYW5kYm94ZWQgSUZyYW1lIG5vdCB0byBiZSB0aGUgb3BlbmVyIG9mIGFueSBv
ZiB0aGVtLgorCitUaGlzIHRlc3Qgd2lsbCBwcmludCAiUEFTUyIgb24gc3VjY2Vzcy4KKworICAg
ICAgICAgICAgICAgCitQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94
ZWQtaWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVu
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQt
aWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDcyIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuc2V0Q2FuT3BlbldpbmRvd3ModHJ1ZSk7Cit9CisKK3ZhciB0ZXN0U3RhdHVzICAg
ICAgID0gIkZBSUw6IG5vdCBjb21wbGV0ZWQiOwordmFyIHdpbmRvd3NPcGVuZWQgICAgPSAwOwor
dmFyIG1haW5XaW5kb3dMb2FkZWQgPSBmYWxzZTsKK3ZhciB0ZXN0Q29tcGxldGVkICAgID0gZmFs
c2U7CisKK2Z1bmN0aW9uIHVwZGF0ZVN0YXR1cyhsb2FkZWQsIGRvbmUpCit7CisgICAgbWFpbldp
bmRvd0xvYWRlZCB8PSBsb2FkZWQ7CisgICAgdGVzdENvbXBsZXRlZCB8PSBkb25lOworCisgICAg
aWYgKG1haW5XaW5kb3dMb2FkZWQgJiYgdGVzdENvbXBsZXRlZCkgeworICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGVzdFN0YXR1cyIpLmlubmVySFRNTCA9IHRlc3RTdGF0dXM7Cisg
ICAgICAgIGlmICh0ZXN0Q29tcGxldGVkICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
KyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9Cit9
CisKK2Z1bmN0aW9uIHdpbmRvd09wZW5lZCh3aW5kb3dPcGVuZXIpCit7CisgICAgaWYgKHdpbmRv
d09wZW5lciA9PSBzZWxmLnNhbmRib3hlZCkgeworICAgICAgICB0ZXN0U3RhdHVzID0gIkZBSUw6
IHNhbmRib3hlZCBmcmFtZSBvcGVuZWQgd2luZG93IjsKKyAgICAgICAgdXBkYXRlU3RhdHVzKGZh
bHNlLCB0cnVlKTsKKyAgICB9IGVsc2UgeworICAgICAgICArK3dpbmRvd3NPcGVuZWQ7CisgICAg
ICAgIGlmICh3aW5kb3dzT3BlbmVkID09IDEwICYmICF0ZXN0Q29tcGxldGVkKSB7CisgICAgICAg
ICAgICB0ZXN0U3RhdHVzID0gIlBBU1MiOworICAgICAgICAgICAgdXBkYXRlU3RhdHVzKGZhbHNl
LCB0cnVlKTsKKyAgICAgICAgfQorICAgIH0KK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxi
b2R5IG9ubG9hZD0idXBkYXRlU3RhdHVzKHRydWUsIGZhbHNlKTsiPgorCisgICAgPHA+VmVyaWZp
ZXMgdGhhdCBhIHNhbmRib3hlZCBJRnJhbWUgY2Fubm90IG9wZW4gbmV3IHdpbmRvd3MKKyAgICB1
c2luZyA8Y29kZT53aW5kb3cub3BlbigpPC9jb2RlPi4gRXhwZWN0IHRlbiB3aW5kb3dzIHRvIGJl
IG9wZW5lZCwKKyAgICBidXQgdGhlIHNhbmRib3hlZCBJRnJhbWUgbm90IHRvIGJlIHRoZSBvcGVu
ZXIgb2YgYW55IG9mIHRoZW0uPC9wPgorICAgIAorICAgIDxwPlRoaXMgdGVzdCB3aWxsIHByaW50
ICZxdW90O1BBU1MmcXVvdDsgb24gc3VjY2Vzcy48L3A+CisKKyAgICA8aWZyYW1lIHNyYz0icmVz
b3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0bWwiPjwvaWZy
YW1lPgorICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0
aW9uLXdpbmRvd29wZW4uaHRtbCI+PC9pZnJhbWU+CisgICAgPGlmcmFtZSBzcmM9InJlc291cmNl
cy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi5odG1sIj48L2lmcmFtZT4K
KyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13
aW5kb3dvcGVuLmh0bWwiPjwvaWZyYW1lPgorICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2Fu
ZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4uaHRtbCI+PC9pZnJhbWU+CisKKyAg
ICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5k
b3dvcGVuLmh0bWwiCisgICAgICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIgorICAgICAg
ICAgICAgbmFtZT0ic2FuZGJveGVkIj4KKyAgICA8L2lmcmFtZT4KKworICAgIDxpZnJhbWUgc3Jj
PSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4uaHRtbCI+
PC9pZnJhbWU+CisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5h
dmlnYXRpb24td2luZG93b3Blbi5odG1sIj48L2lmcmFtZT4KKyAgICA8aWZyYW1lIHNyYz0icmVz
b3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0bWwiPjwvaWZy
YW1lPgorICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0
aW9uLXdpbmRvd29wZW4uaHRtbCI+PC9pZnJhbWU+CisgICAgPGlmcmFtZSBzcmM9InJlc291cmNl
cy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi5odG1sIj48L2lmcmFtZT4K
KworICAgIDxwIGlkPSd0ZXN0U3RhdHVzJz5GQUlMOiBTY3JpcHQgZGlkbid0IHJ1bjwvcD4KKzwv
Ym9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1p
ZnJhbWUtcGx1Z2lucy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTcgQEAKK1RoaXMgdGVzdCB2ZXJp
ZmllcyB0aGF0IHNhbmRib3hpbmcgb2YgcGx1Z2lucyB3b3JrcyBhcyBpbnRlbmRlZC4gVGhyZWUg
dGVzdHMgYXJlIG1hZGUsIGVhY2ggaW4gb25lIHNhbmRib3hlZCBhbmQgb25lIG5vbi1zYW5kYm94
ZWQgSUZyYW1lOiBhcHBsZXRzLCBlbWJlZHMsIGFuZCBvYmplY3RzLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworTk9URTogVGhlIGZpcnN0IHN1Yi10ZXN0IHdpbGwgZmFpbCBpbiBE
dW1wUmVuZGVyVHJlZSwgc2luY2UgRHVtcFJlbmRlclRyZWUgZG9lcyBub3Qgc3VwcG9ydCBhcHBs
ZXRzLiBUaGF0IHN1Yi10ZXN0IG11c3QgYmUgcnVuIGluIFNhZmFyaSBpbnN0ZWFkLgorCitGQUlM
IChzZWxmLmFwcGxldEZyYW1lMS5kb2N1bWVudFsnYXBwJ10uaW5pdCkgIT0gdW5kZWZpbmVkIHNo
b3VsZCBiZSB0cnVlLiBXYXMgZmFsc2UuCitQQVNTIChzZWxmLmFwcGxldEZyYW1lMi5kb2N1bWVu
dFsnYXBwJ10uaW5pdCkgPT0gdW5kZWZpbmVkIGlzIHRydWUKK1BBU1MgKHNlbGYuZW1iZWRGcmFt
ZTEuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BsdWdpbicpLmRlc3Ryb3lTdHJlYW0pICE9IHVu
ZGVmaW5lZCBpcyB0cnVlCitQQVNTIChzZWxmLmVtYmVkRnJhbWUyLmRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdwbHVnaW4nKS5kZXN0cm95U3RyZWFtKSA9PSB1bmRlZmluZWQgaXMgdHJ1ZQorUEFT
UyAoc2VsZi5vYmplY3RGcmFtZTEuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BsdWdpbicpLmRl
c3Ryb3lTdHJlYW0pICE9IHVuZGVmaW5lZCBpcyB0cnVlCitQQVNTIChzZWxmLm9iamVjdEZyYW1l
Mi5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGx1Z2luJykuZGVzdHJveVN0cmVhbSkgPT0gdW5k
ZWZpbmVkIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorICAgICAgICAgCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94
ZWQtaWZyYW1lLXBsdWdpbnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDc0IEBACis8aHRtbD4gCis8aGVhZD4gCis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0
IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+IAoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgCisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOyAKKyAKK3dpbmRvdy5vbmxvYWQgPSBmdW5jdGlv
bigpIHsgCisgICAgc2hvdWxkQmVUcnVlKCIoc2VsZi5hcHBsZXRGcmFtZTEuZG9jdW1lbnRbJ2Fw
cCddLmluaXQpICE9IHVuZGVmaW5lZCIpOworICAgIHNob3VsZEJlVHJ1ZSgiKHNlbGYuYXBwbGV0
RnJhbWUyLmRvY3VtZW50WydhcHAnXS5pbml0KSA9PSB1bmRlZmluZWQiKTsKKworICAgIHNob3Vs
ZEJlVHJ1ZSgiKHNlbGYuZW1iZWRGcmFtZTEuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BsdWdp
bicpLmRlc3Ryb3lTdHJlYW0pICE9IHVuZGVmaW5lZCIpOworICAgIHNob3VsZEJlVHJ1ZSgiKHNl
bGYuZW1iZWRGcmFtZTIuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BsdWdpbicpLmRlc3Ryb3lT
dHJlYW0pID09IHVuZGVmaW5lZCIpOworCisgICAgc2hvdWxkQmVUcnVlKCIoc2VsZi5vYmplY3RG
cmFtZTEuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BsdWdpbicpLmRlc3Ryb3lTdHJlYW0pICE9
IHVuZGVmaW5lZCIpOworICAgIHNob3VsZEJlVHJ1ZSgiKHNlbGYub2JqZWN0RnJhbWUyLmRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdwbHVnaW4nKS5kZXN0cm95U3RyZWFtKSA9PSB1bmRlZmluZWQi
KTsKKworICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7Cit9IAorPC9zY3JpcHQ+IAorPC9oZWFk
PiAKKyAKKzxib2R5PiAKKyAgICA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKyAKKyAgICA8cD5O
T1RFOiBUaGUgZmlyc3Qgc3ViLXRlc3Qgd2lsbCBmYWlsIGluIER1bXBSZW5kZXJUcmVlLCBzaW5j
ZSBEdW1wUmVuZGVyVHJlZQorICAgIGRvZXMgbm90IHN1cHBvcnQgYXBwbGV0cy4gVGhhdCBzdWIt
dGVzdCBtdXN0IGJlIHJ1biBpbiBTYWZhcmkgaW5zdGVhZC48L3A+IAorCisgICAgPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+CisKKyAgICA8IS0tIEFwcGxldHMgLS0+CisgICAgCisgICAgPGlmcmFt
ZSBpZD0iYXBwbGV0RnJhbWUxIiAKKyAgICAgICAgICAgIHN0eWxlPSJ3aWR0aDogMjAwcHg7IGhl
aWdodDogMTAwcHg7IiAKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJh
bWUtcGx1Z2lucy1mcmFtZS1hcHBsZXQuaHRtbCI+IAorICAgIDwvaWZyYW1lPiAKKyAgICA8aWZy
YW1lIGlkPSJhcHBsZXRGcmFtZTIiIAorICAgICAgICAgICAgc3R5bGU9IndpZHRoOiAyMDBweDsg
aGVpZ2h0OiAxMDBweDsiIAorICAgICAgICAgICAgc2FuZGJveD0iYWxsb3ctc2FtZS1vcmlnaW4g
YWxsb3ctc2NyaXB0cyIgCisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZy
YW1lLXBsdWdpbnMtZnJhbWUtYXBwbGV0Lmh0bWwiPiAKKyAgICA8L2lmcmFtZT4gCisKKyAgICA8
IS0tIEVtYmVkcyAtLT4KKyAgICAKKyAgICA8aWZyYW1lIGlkPSJlbWJlZEZyYW1lMSIKKyAgICAg
ICAgICAgIHN0eWxlPSJ3aWR0aDogMjAwcHg7IGhlaWdodDogMTAwcHg7IgorICAgICAgICAgICAg
c3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLWZyYW1lLWVtYmVkLmh0bWwi
PgorICAgIDwvaWZyYW1lPgorICAgIDxpZnJhbWUgaWQ9ImVtYmVkRnJhbWUyIgorICAgICAgICAg
ICAgc3R5bGU9IndpZHRoOiAyMDBweDsgaGVpZ2h0OiAxMDBweDsiCisgICAgICAgICAgICBzYW5k
Ym94PSJhbGxvdy1zYW1lLW9yaWdpbiIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRi
b3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1lbWJlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKwor
ICAgIDwhLS0gT2JqZWN0cyAtLT4KKyAgICAKKyAgICA8aWZyYW1lIGlkPSJvYmplY3RGcmFtZTEi
CisgICAgICAgICAgICBzdHlsZT0id2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDEwMHB4OyIKKyAgICAg
ICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1vYmpl
Y3QuaHRtbCI+CisgICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBpZD0ib2JqZWN0RnJhbWUyIgor
ICAgICAgICAgICAgc3R5bGU9IndpZHRoOiAyMDBweDsgaGVpZ2h0OiAxMDBweDsiCisgICAgICAg
ICAgICBzYW5kYm94PSJhbGxvdy1zYW1lLW9yaWdpbiIKKyAgICAgICAgICAgIHNyYz0icmVzb3Vy
Y2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1vYmplY3QuaHRtbCI+CisgICAgPC9p
ZnJhbWU+CisKKyAgICA8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZp
ZXMgdGhhdCBzYW5kYm94aW5nIG9mIHBsdWdpbnMgd29ya3MgYXMgaW50ZW5kZWQuIFRocmVlIHRl
c3RzIGFyZSBtYWRlLCBlYWNoIGluIG9uZSBzYW5kYm94ZWQgYW5kIG9uZSBub24tc2FuZGJveGVk
IElGcmFtZTogYXBwbGV0cywgZW1iZWRzLCBhbmQgb2JqZWN0cy4iKTsKKyAgICB2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4gCis8L2h0bWw+IApJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1zY3JpcHRpbmct
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRi
b3hlZC1pZnJhbWUtc2NyaXB0aW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtc2NyaXB0aW5nLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAorVmVyaWZ5IHRoYXQgc2FuZGJveGVkIGZy
YW1lcyB3aXRoIHNhbmRib3g9ImFsbG93LXNjcmlwdHMiIGNhbiBleGVjdXRlIHNjcmlwdHMsIGJ1
dCBvdGhlciBzYW5kYm94ZWQgZnJhbWVzIGNhbm5vdC4gQWxzbyB2ZXJpZnkgdGhhdCByZW1vdmlu
ZyB0aGUgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyIgYXR0cmlidXRlIGF0IHJ1bnRpbWUgcHJldmVu
dHMgbmV3IHNjcmlwdHMgZnJvbSBsYXVuY2hpbmcsIGJ1dCBleGlzdGluZyBvbmVzIGtlZXAgcnVu
bmluZy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZGlzYWxsb3dlZEV4
ZWN1dGVkIGlzIDAKK1BBU1MgYWxsb3dlZEV4ZWN1dGVkIGlzIDIKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorICAgCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXNjcmlwdGluZy5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtc2NyaXB0aW5nLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1l
LXNjcmlwdGluZy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBACis8aHRtbD4KKzxo
ZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1m
dW5jdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
Cit2YXIgZGlzYWxsb3dlZEV4ZWN1dGVkID0gMDsKK3ZhciBhbGxvd2VkRXhlY3V0ZWQgPSAwOwor
Cit3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKQoreworICAgIHNob3VsZEJlKCJkaXNhbGxvd2Vk
RXhlY3V0ZWQiLCAiMCIpOworICAgIHNob3VsZEJlKCJhbGxvd2VkRXhlY3V0ZWQiLCAiMiIpOwor
CisgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorCis8
Ym9keT4KKyAgICA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKyAKKyAgICA8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKyAKKyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93LXNhbWUtb3JpZ2luIGFs
bG93LXNjcmlwdHMiCisgICAgICAgICAgICBzcmM9ImphdmFzY3JpcHQ6ICsrd2luZG93LnRvcC5h
bGxvd2VkRXhlY3V0ZWQ7Ij4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIHNhbmRib3g9ImFs
bG93LXNhbWUtb3JpZ2luIgorICAgICAgICAgICAgc3JjPSJqYXZhc2NyaXB0OiArK3dpbmRvdy50
b3AuZGlzYWxsb3dlZEV4ZWN1dGVkOyI+CisgICAgPC9pZnJhbWU+CisgICAgCisgICAgPGlmcmFt
ZSBpZD0iZnJhbWUiIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtc2NyaXB0LWR5bmFt
aWMuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9u
KCJWZXJpZnkgdGhhdCBzYW5kYm94ZWQgZnJhbWVzIHdpdGggc2FuZGJveD0mcXVvdDthbGxvdy1z
Y3JpcHRzJnF1b3Q7IGNhbiBleGVjdXRlIHNjcmlwdHMsICIKKyAgICAgICAgICAgICAgICAgKyAi
YnV0IG90aGVyIHNhbmRib3hlZCBmcmFtZXMgY2Fubm90LiBBbHNvIHZlcmlmeSB0aGF0IHJlbW92
aW5nIHRoZSAiCisgICAgICAgICAgICAgICAgICsgInNhbmRib3g9JnF1b3Q7YWxsb3ctc2NyaXB0
cyZxdW90OyBhdHRyaWJ1dGUgYXQgcnVudGltZSBwcmV2ZW50cyBuZXcgc2NyaXB0cyBmcm9tIGxh
dW5jaGluZywgIgorICAgICAgICAgICAgICAgICArICJidXQgZXhpc3Rpbmcgb25lcyBrZWVwIHJ1
bm5pbmcuIik7CisgICAgdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgICAgPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNv
dXJjZXMvbm9uLXNhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9ub24tc2FuZGJveGVkLWlmcmFtZS1u
YXZpZ2F0aW9uLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9y
ZXNvdXJjZXMvbm9uLXNhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDUgQEAKKzxodG1sPgorPGJvZHk+CisgIDxpZnJhbWUgc3JjPSJzYW5kYm94
ZWQtaWZyYW1lLW5hdmlnYXRpb24tc291cmNlLmh0bWwiPjwvaWZyYW1lPgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1p
ZnJhbWUtYXR0cmlidXRlLXBhcnNpbmctYWxsb3dlZC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1w
YXJzaW5nLWFsbG93ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWFsbG93ZWQu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMiBAQAorPGh0bWw+Cis8c2NyaXB0PgorCit0
b3AuYWxsb3dlZENhbGxGcm9tU2FuZGJveCgpOworCis8L3NjcmlwdD4KKzxib2R5IG9ubG9hZD0i
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2YnKS5zdWJtaXQoKTsiPgorICAgIDxmb3JtIGlkPSdm
JyBhY3Rpb249ImphdmFzY3JpcHQ6dG9wLmRpc2FsbG93ZWRGb3JtU3VibWl0dGVkKCk7Ij4KKyAg
ICAgICAgPGlucHV0IG5hbWU9IngiIHZhbHVlPSJ5IiB0eXBlPSJjaGVja2JveCIgY2hlY2tlZD0i
eWVzIiAvPgorICAgIDwvZm9ybT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5n
LWRpc2FsbG93ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9y
ZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1kaXNhbGxvd2VkLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2Fu
ZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1kaXNhbGxvd2VkLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNSBAQAorPGh0bWw+Cis8c2NyaXB0PgordG9wLmRpc2FsbG93ZWRDYWxs
RnJvbVNhbmRib3goKTsKKzwvc2NyaXB0PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1hbGxvd2VkLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1p
ZnJhbWUtZm9ybS1hbGxvd2VkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWFsbG93ZWQuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw1IEBACis8Ym9keSBvbmxvYWQ9ImRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdmb3JtJykuc3VibWl0KCk7Ij4KKzxmb3JtIGlkPSJmb3JtIiBhY3Rpb249ImphdmFz
Y3JpcHQ6d2luZG93LnRvcC5hbGxvd2VkRm9ybVN1Ym1pdHRlZCgpOyI+CisgICAgPGlucHV0IG5h
bWU9eCB2YWx1ZT15IHR5cGU9ImNoZWNrYm94IiBjaGVja2VkPSJ5ZXMiLz4KKzwvZm9ybT4KKzwv
Ym9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQt
aWZyYW1lLWZvcm0tZGlzYWxsb3dlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tZGlzYWxsb3dlZC5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRi
b3hlZC1pZnJhbWUtZm9ybS1kaXNhbGxvd2VkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NiBAQAorPGJvZHkgb25sb2FkPSJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZm9ybScpLnN1Ym1p
dCgpOyIKKyAgICAgIGJnY29sb3I9J3llbGxvdyc+Cis8Zm9ybSBpZD0iZm9ybSIgYWN0aW9uPSJq
YXZhc2NyaXB0OndpbmRvdy50b3AuZGlzYWxsb3dlZEZvcm1TdWJtaXR0ZWQoKTsiPgorICAgIDxp
bnB1dCBuYW1lPXggdmFsdWU9eSB0eXBlPSJjaGVja2JveCIgY2hlY2tlZD0ieWVzIi8+Cis8L2Zv
cm0+Cis8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2Fu
ZGJveGVkLWlmcmFtZS1uYXZpZ2F0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0ZWQuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQt
aWZyYW1lLW5hdmlnYXRlZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUgQEAKKzxodG1s
PgorPGJvZHkgb25sb2FkPSdzZWxmLnRvcC5jb3VudEZyYW1lKCk7Jz4KK25hdmlnYXRlZAorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3Nh
bmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1jaGlsZC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24t
Y2hpbGQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291
cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tY2hpbGQuaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxOCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBtb2Rp
ZnkoKQoreworICAgIHNlbGYubmF2aWdhdGVkLmxvY2F0aW9uLmFzc2lnbigiamF2YXNjcmlwdDog
dG9wLmNoaWxkRnJhbWVXYXNOYXZpZ2F0ZWQoKTsiKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHkgb25sb2FkPSJtb2RpZnkoKTsiPgorICAgIDxpZnJhbWUgbmFtZT0ibmF2aWdhdGVkIgor
ICAgICAgICAgICAgc3JjPSJzYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tbmF2aWdhdGVkLmh0
bWwiPgorICAgIDwvaWZyYW1lPgorICAgIDxpZnJhbWUgbmFtZT0iZnJhbWVXaXRoUGx1Z2luIgor
ICAgICAgICAgICAgc3JjPSJzYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtb2JqZWN0Lmh0
bWwiPgorICAgIDwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1uYXZpZ2F0
ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMv
c2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLW5hdmlnYXRlZC5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2
aWdhdGlvbi1uYXZpZ2F0ZWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5IEBACis8aHRt
bD4KKzxoZWFkPgorPC9oZWFkPgorPGJvZHk+Cis8IS0tIFRoaXMgZmlsZSBpcyBpbiBhIHNlcGFy
YXRlIGRvY3VtZW50IGluIG9yZGVyIHRvIHNoYXJlIG9yaWdpbiB3aXRoIHRoZQorcGFyZW50IGRv
Y3VtZW50LiAtLT4KK2lubm9jZW50IGNvbnRlbnQKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRp
b24tcGFyZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVz
b3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1l
LW5hdmlnYXRpb24tcGFyZW50Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOCBAQAorPGh0
bWw+Cis8Ym9keT4KKyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctc2Ft
ZS1vcmlnaW4iCisgICAgICAgICAgICBzcmM9InNhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1z
b3VyY2UuaHRtbCI+CisgICAgPC9pZnJhbWU+CisgICAgPHAgaWQ9J2lubm9jZW50X2NvbnRlbnQn
Pmlubm9jZW50IGNvbnRlbnQ8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXNvdXJj
ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9z
YW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tc291cmNlLmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0
aW9uLXNvdXJjZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyIEBACis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdD4KK2Z1bmN0aW9uIG1vZGlmeSgpCit7CisgICAgc2VsZi5wYXJlbnQubG9j
YXRpb24uYXNzaWduKCdzYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRlZC5odG1sJyk7Cit9Cis8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0nbW9kaWZ5KCk7Jz4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZy
YW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0
bGluay5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3Vy
Y2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRsaW5rLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMzEgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorCisvKgorICog
U2V0IHRoZSB0YXJnZXQgb2YgdGhlIGxpbmsgdG8gJ1hfdGFyZ2V0Jywgd2hlcmUgWCBpcyB0aGUg
bmFtZSBvZgorICogdGhpcyBmcmFtZS4KKyAqCisgKiBUaGVuIGNsaWNrIHRoZSBsaW5rLgorICov
CisKK2Z1bmN0aW9uIGNsaWNrX2xpbmsoKQoreworICAgIHZhciBldmVudCA9IGRvY3VtZW50LmNy
ZWF0ZUV2ZW50KCdNb3VzZUV2ZW50Jyk7CisgICAgZXZlbnQuaW5pdEV2ZW50KCdjbGljaycsIHRy
dWUsIHRydWUpOworICAgIHZhciBsaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xpbmsn
KTsKKyAgICBsaW5rLnRhcmdldCA9IHNlbGYubmFtZSArICdfdGFyZ2V0JzsKKyAgICBsaW5rLmRp
c3BhdGNoRXZlbnQoZXZlbnQpOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25s
b2FkPSdjbGlja19saW5rKCk7Jz4KKworICAgIDxhIGhyZWY9InNhbmRib3hlZC1pZnJhbWUtbmF2
aWdhdGVkLmh0bWwiIGlkPSJsaW5rIj4KKyAgICAgICAgKGxpbmsgdHJpZ2dlcmVkIGJ5IHNjcmlw
dCkKKyAgICA8L2E+CisKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5k
Ym94ZWQtaWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdh
dGlvbi13aW5kb3dvcGVuLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorPHNjcmlw
dD4KKyAgICB3aW5kb3cub3BlbigiamF2YXNjcmlwdDogb3BlbmVyLnBhcmVudC53aW5kb3dPcGVu
ZWQob3BlbmVyKTsiKTsKKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMv
cmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1hcHBsZXQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlm
cmFtZS1wbHVnaW5zLWZyYW1lLWFwcGxldC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1h
cHBsZXQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAorPGh0bWw+Cis8aGVhZD4K
KzwvaGVhZD4KKworPGJvZHk+CisgICAgPGFwcGxldCBuYW1lPSJhcHAiCisgICAgICAgICAgICBj
b2RlYmFzZT0iLi4vLi4vZG9tL3Jlc291cmNlcyIKKyAgICAgICAgICAgIGNvZGU9IlRlc3RBcHBs
ZXQiCisgICAgPC9hcHBsZXQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLWZyYW1lLWVtYmVk
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3Nh
bmRib3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1lbWJlZC5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lu
cy1mcmFtZS1lbWJlZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyIEBACis8aHRtbD4K
KzxoZWFkPgorPC9oZWFkPgorCis8Ym9keT4KKyAgICA8ZW1iZWQgaWQ9InBsdWdpbiIgCisgICAg
ICAgICAgIHR5cGU9ImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiCisgICAgICAg
ICAgIHNyYz0iZGF0YTp0ZXh0L3BsYWluLCIKKyAgICAgICAgICAgc3R5bGU9IndpZHRoOjA7IGhl
aWdodDowIj4KKyAgICA8L2VtYmVkPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1v
YmplY3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJj
ZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLWZyYW1lLW9iamVjdC5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUt
cGx1Z2lucy1mcmFtZS1vYmplY3QuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAor
PGh0bWw+Cis8aGVhZD4KKzwvaGVhZD4KKworPGJvZHk+CisgICAgPG9iamVjdCBpZD0icGx1Z2lu
IiAKKyAgICAgICAgICAgIHR5cGU9ImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUi
CisgICAgICAgICAgICBzdHlsZT0id2lkdGg6MDsgaGVpZ2h0OjAiPgorICAgIDwvb2JqZWN0Pgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2Vz
L3NhbmRib3hlZC1pZnJhbWUtc2NyaXB0LWR5bmFtaWMuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1zY3JpcHQtZHlu
YW1pYy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3Vy
Y2VzL3NhbmRib3hlZC1pZnJhbWUtc2NyaXB0LWR5bmFtaWMuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwyNiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisKKyAgICBmcmFtZSA9IHdp
bmRvdy50b3AuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZyYW1lJyk7CisKKyAgICAvLyBzZXR0
aW5nIHRoZSBzYW5kYm94IGZsYWcgYXQgcnVudGltZSBzaG91bGQgbm90IHRlcm1pbmF0ZSBhbHJl
YWR5CisgICAgLy8gcnVubmluZyBzY3JpcHRzIChlLmcuLCB0aGlzIG9uZSkKKworICAgIGZyYW1l
LnNhbmRib3ggPSAnYWxsb3ctc2FtZS1vcmlnaW4nOyAgIC8vIE5PIGFsbG93LXNjcmlwdHMKKwor
ICAgICsrd2luZG93LnRvcC5hbGxvd2VkRXhlY3V0ZWQ7CisKKyAgICAvLyBob3dldmVyLCBuZXcg
c2NyaXB0cyAoc3VjaCBhcyB0aGUgb25sb2FkIG9uZSBiZWxvdykgc2hvdWxkCisgICAgLy8gbm90
IHJ1bgorCisgICAgZnVuY3Rpb24gb25sb2FkX2hvb2soKQorICAgIHsKKyAgICAgICAgKyt3aW5k
b3cudG9wLmRpc2FsbG93ZWRFeGVjdXRlZDsKKyAgICB9OworCis8L3NjcmlwdD4KKzwvaGVhZD4K
KworPGJvZHkgb25sb2FkPSdvbmxvYWRfaG9vaygpOyc+PC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLWRvY3VtZW50
LWNvb2tpZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLWRvY3VtZW50LWNvb2tpZS1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3NhbmRib3hl
ZC1pZnJhbWUtZG9jdW1lbnQtY29va2llLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw4IEBACitUaGlzIHRlc3QgY2hlY2tzIHRoYXQgYSBTRUNVUklUWV9FUlIgZXhjZXB0aW9u
IGlzIHJhaXNlZCB3aGlsZSBhY2Nlc3NpbmcgZG9jdW1lbnQuZG9tYWluIGluIGEgc2FuZGJveGVk
IGlmcmFtZSAod2l0aG91dCAiYWxsb3ctb3JpZ2luIiBzZXQpLiBUaGlzIHRlc3Qgd2lsbCBwcmlu
dCAiUEFTUyIgb24gc3VjY2Vzcy4KKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBh
dGggLy88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK1BBU1MKSW5kZXg6IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvc2FuZGJveGVkLWlmcmFtZS1kb2N1bWVudC1jb29raWUuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3NhbmRib3hl
ZC1pZnJhbWUtZG9jdW1lbnQtY29va2llLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtZG9jdW1lbnQtY29va2llLmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjUgQEAKKzxodG1sPgorPGhlYWQ+CisKKzxzY3Jp
cHQ+CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENo
aWxkRnJhbWVzQXNUZXh0KCk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKwor
ICAgIDxwPlRoaXMgdGVzdCBjaGVja3MgdGhhdCBhIFNFQ1VSSVRZX0VSUiBleGNlcHRpb24gaXMg
cmFpc2VkIHdoaWxlIGFjY2Vzc2luZyBkb2N1bWVudC5kb21haW4KKyAgICBpbiBhIHNhbmRib3hl
ZCBpZnJhbWUgKHdpdGhvdXQgJnF1b3Q7YWxsb3ctb3JpZ2luJnF1b3Q7IHNldCkuIFRoaXMgdGVz
dCB3aWxsIHByaW50CisgICAgJnF1b3Q7UEFTUyZxdW90OyBvbiBzdWNjZXNzLjwvcD4KKworICAg
IDxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyIKKyAgICAgICAgICAgIHNyYz0icmVzb3Vy
Y2VzL3NhbmRib3hlZC1pZnJhbWUtZG9jdW1lbnQtY29va2llLXJlYWQtZGVuaWVkLmh0bWwiPgor
ICAgIDwvaWZyYW1lPgorPC9ib2R5PgorCis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtbW9kaWZ5LXNlbGYtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc2FuZGJveGVk
LWlmcmFtZS1tb2RpZnktc2VsZi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtbW9kaWZ5LXNlbGYtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExIEBACitDT05TT0xFIE1FU1NBR0U6
IGxpbmUgMTogVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nlc3MgZnJhbWUgd2l0aCBV
UkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtbW9kaWZ5
LXNlbGYuaHRtbCBmcm9tIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1
cml0eS9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1tb2RpZnktc2VsZi5odG1sLiBEb21haW5z
LCBwcm90b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0Y2guCisKK1RoaXMgaXMgYSAic2FuaXR5IiB0
ZXN0IGNhc2UgdG8gdmVyaWZ5IHRoYXQgYSBzYW5kYm94ZWQgZnJhbWUgY2Fubm90IGJyZWFrIG91
dCBvZiBpdHMgc2FuZGJveCBieSBtb2RpZnlpbmcgaXRzIG93biBzYW5kYm94IGF0dHJpYnV0ZS4g
VHdvIGF0dGVtcHRzIGFyZSBtYWRlOgorCitGaXJzdCwgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIG1v
ZGlmeSB0aGUgc2FuZGJveCBhdHRyaWJ1dGUgb2YgdGhlICJzZWxmIiBvYmplY3QsIHJlZmVycmlu
ZyB0byB0aGUgZnJhbWUncyB3aW5kb3cuIFRoaXMgc2hvdWxkIG5vdCBoYXZlIGFueSBlZmZlY3Qg
KHRoZSBhdHRyaWJ1dGUgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBpZnJhbWUgRE9NIG5vZGUsIG5v
dCB0aGUgd2luZG93KS4gTm8gd2FybmluZyBpcyBleHBlY3RlZC4KK1NlY29uZCwgYW4gYXR0ZW1w
dCBpcyBtYWRlIHRvIG1vZGlmeSB0aGUgaWZyYW1lIERPTSBvYmplY3QncyBzYW5kYm94IGF0dHJp
YnV0ZS4gQSB3YXJuaW5nIG1lc3NhZ2UgKGFib3V0IGNyb3NzLXNpdGUgc2NyaXB0aW5nKSBpcyBl
eHBlY3RlZCwgYW5kIHRoZSBzYW5kYm94IGF0dHJpYnV0ZSBzaG91bGQgcmVtYWluIGludGFjdC4K
K1RoaXMgdGVzdCB3aWxsIHByaW50ICJQQVNTIiBvbiBzdWNjZXNzLgorCitQQVNTCisKKwpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLW1vZGlm
eS1zZWxmLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9zYW5kYm94ZWQtaWZyYW1lLW1vZGlmeS1zZWxmLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtbW9kaWZ5LXNlbGYu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQ+CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgd2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9u
KCkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MID0g
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmIikuc2FuZGJveCAhPSAiYWxsb3ctc2NyaXB0cyIp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICJGQUlM
OiBzYW5kYm94IGF0dHJpYnV0ZSBtb2RpZmllZCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDogIlBBU1MiOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4K
KworPGJvZHk+CisgICAgPHA+VGhpcyBpcyBhICZxdW90O3Nhbml0eSZxdW90OyB0ZXN0IGNhc2Ug
dG8gdmVyaWZ5IHRoYXQgYSBzYW5kYm94ZWQgCisgICAgZnJhbWUgY2Fubm90IGJyZWFrIG91dCBv
ZiBpdHMgc2FuZGJveCBieSBtb2RpZnlpbmcgaXRzIG93biBzYW5kYm94CisgICAgYXR0cmlidXRl
LiBUd28gYXR0ZW1wdHMgYXJlIG1hZGU6PC9wPgorICAgIAorICAgIDxvbD4KKyAgICAgICAgPGxp
PkZpcnN0LCBhbiBhdHRlbXB0IGlzIG1hZGUgdG8gbW9kaWZ5IHRoZSBzYW5kYm94IGF0dHJpYnV0
ZSBvZiB0aGUKKyAgICAgICAgJnF1b3Q7c2VsZiZxdW90OyBvYmplY3QsIHJlZmVycmluZyB0byB0
aGUgZnJhbWUncyB3aW5kb3cuIFRoaXMgc2hvdWxkCisgICAgICAgIG5vdCBoYXZlIGFueSBlZmZl
Y3QgKHRoZSBhdHRyaWJ1dGUgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBpZnJhbWUgRE9NCisgICAg
ICAgIG5vZGUsIG5vdCB0aGUgd2luZG93KS4gTm8gd2FybmluZyBpcyBleHBlY3RlZC48L2xpPgor
ICAgICAgICA8bGk+U2Vjb25kLCBhbiBhdHRlbXB0IGlzIG1hZGUgdG8gbW9kaWZ5IHRoZSBpZnJh
bWUgRE9NIG9iamVjdCdzIHNhbmRib3gKKyAgICAgICAgYXR0cmlidXRlLiBBIHdhcm5pbmcgbWVz
c2FnZSAoYWJvdXQgY3Jvc3Mtc2l0ZSBzY3JpcHRpbmcpIGlzIGV4cGVjdGVkLAorICAgICAgICBh
bmQgdGhlIHNhbmRib3ggYXR0cmlidXRlIHNob3VsZCByZW1haW4gaW50YWN0LjwvbGk+CisgICAg
PC9vbD4KKyAgICAKKyAgICA8cD5UaGlzIHRlc3Qgd2lsbCBwcmludCAmcXVvdDtQQVNTJnF1b3Q7
IG9uIHN1Y2Nlc3MuPC9wPgorCisgICAgPHAgaWQ9InJlc3VsdCI+RkFJTDwvcD4KKworICAgIDxp
ZnJhbWUgaWQ9ImYiCisgICAgICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIgorICAgICAg
ICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1tb2RpZnktc2VsZi5odG1sIj4K
KyAgICA8L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC1zYW5kYm94ZWQtaWZyYW1lLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQt
c2FuZGJveGVkLWlmcmFtZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQtc2FuZGJveGVkLWlmcmFtZS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOCBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5l
IDE6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUu
aHRtbCBmcm9tIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9y
ZXNvdXJjZXMveHNzLURFTklFRC1zYW5kYm94ZWQtaWZyYW1lLWF0dGFja2VyLmh0bWwuIERvbWFp
bnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KKworQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDE6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJM
IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS94c3MtREVOSUVELXNhbmRib3hlZC1pZnJh
bWUuaHRtbCBmcm9tIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0
eS9yZXNvdXJjZXMveHNzLURFTklFRC1zYW5kYm94ZWQtaWZyYW1lLWF0dGFja2VyLmh0bWwuIERv
bWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KKworVGhpcyB0ZXN0IHZlcmlm
aWVzIHRoYXQgc2FuZGJveGVkIGlmcmFtZSBwcmV2ZW50cyBjcm9zcy1kb21haW4gc2NyaXB0IGFj
Y2Vzcy4gSXQgd2lsbCBwcmludCAiUEFTUyIgb24gc3VjY2Vzcy4KKworCitQQVNTOiBjcm9zcy1k
b21haW4gc2NyaXB0IGFjY2VzcyBkaXNhbGxvd2VkIGZyb20gc2FuZGJveGVkIGlmcmFtZQpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXNhbmRib3hlZC1p
ZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3hzcy1ERU5JRUQtc2FuZGJveGVkLWlmcmFtZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyOSBAQAorPGh0bWw+Cis8c2NyaXB0PgorCitpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKwordmFyIGRvY1JlZiA9IHVuZGVmaW5lZDsKKword2luZG93Lm9ubG9hZCA9
IGZ1bmN0aW9uKCkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlu
bmVySFRNTCA9CisgICAgICAgIChkb2NSZWYgPyAiRkFJTDogY3Jvc3MtZG9tYWluIHNjcmlwdCBh
Y2Nlc3MgYWxsb3dlZCBmcm9tIHNhbmRib3hlZCBpZnJhbWUiCisgICAgICAgICAgICAgICAgOiAi
UEFTUzogY3Jvc3MtZG9tYWluIHNjcmlwdCBhY2Nlc3MgZGlzYWxsb3dlZCBmcm9tIHNhbmRib3hl
ZCBpZnJhbWUiKTsKK30KKworPC9zY3JpcHQ+Cis8Ym9keT4KKworICAgIDxwPlRoaXMgdGVzdCB2
ZXJpZmllcyB0aGF0IHNhbmRib3hlZCBpZnJhbWUgcHJldmVudHMgY3Jvc3MtZG9tYWluCisgICAg
c2NyaXB0IGFjY2Vzcy4gSXQgd2lsbCBwcmludCAmcXVvdDtQQVNTJnF1b3Q7IG9uIHN1Y2Nlc3Mu
PC9wPgorCisgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIgorICAgICAgICAgICAg
c3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL3hzcy1ERU5JRUQt
c2FuZGJveGVkLWlmcmFtZS1hdHRhY2tlci5odG1sIj4KKyAgICA8L2lmcmFtZT4KKyAgICAKKyAg
ICA8ZGl2IGlkPSJjb25zb2xlIj5GQUlMOiBTY3JpcHQgZGlkbid0IHJ1bjwvZGl2PgorICAgIAor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9y
ZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1kb2N1bWVudC1jb29raWUtcmVhZC1kZW5pZWQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNl
cy9zYW5kYm94ZWQtaWZyYW1lLWRvY3VtZW50LWNvb2tpZS1yZWFkLWRlbmllZC5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvc2Fu
ZGJveGVkLWlmcmFtZS1kb2N1bWVudC1jb29raWUtcmVhZC1kZW5pZWQuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwyNSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9u
IHJ1blRlc3QoKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0UmVzdWx0Iiku
aW5uZXJIVE1MID0gKGZ1bmN0aW9uKCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgdmFy
IGNvb2tpZSA9IGRvY3VtZW50LmNvb2tpZTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoZXJy
KSB7CisgICAgICAgICAgICBpZiAoZXJyLm5hbWUuaW5kZXhPZigiU0VDVVJJVFlfRVJSIikgIT0g
LTEpCisgICAgICAgICAgICAgICAgcmV0dXJuICJQQVNTIjsKKyAgICAgICAgfQorCisgICAgICAg
IHJldHVybiAiRkFJTDogU0VDVVJJVFlfRVJSIG5vdCByYWlzZWQiOworICAgIH0pKCk7Cit9CisK
Kzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCk7Ij4KKyAgICA8cCBp
ZD0idGVzdFJlc3VsdCI+RkFJTDogU2NyaXB0IGRpZG4ndCBydW48L3A+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9zYW5k
Ym94ZWQtaWZyYW1lLW1vZGlmeS1zZWxmLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1tb2RpZnktc2Vs
Zi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9y
ZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1tb2RpZnktc2VsZi5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDE0IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKworLy8gdGhpcyBhc3Np
Z25tZW50IHNob3VsZCBoYXZlIG5vIGVmZmVjdCBvbiBzYW5kYm94IHN0YXR1cworc2VsZi5zYW5k
Ym94ID0gJ2FsbG93LXNjcmlwdHMgYWxsb3ctc2FtZS1vcmlnaW4gaGFja2VkLXZpYS13aW5kb3ct
b2JqZWN0JzsKKworLy8gdGhpcyBzaG91bGQgYmUgcHJldmVudGVkIGJ5IHRoZSBzYW5kYm94ICdv
cmlnaW4nIGZsYWcKK2lmICh0b3AuZG9jdW1lbnQpCisgICAgdG9wLmRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdmJykuc2FuZGJveCA9ICdhbGxvdy1zY3JpcHRzIGFsbG93LXNhbWUtb3JpZ2luIGhh
Y2tlZC12aWEtZG9tJzsKKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy94c3MtREVOSUVELXNhbmRib3hl
ZC1pZnJhbWUtYXR0YWNrZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3Jlc291cmNlcy94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUtYXR0YWNr
ZXIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
cmVzb3VyY2VzL3hzcy1ERU5JRUQtc2FuZGJveGVkLWlmcmFtZS1hdHRhY2tlci5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDcgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorICAgIHRv
cC5kb2NSZWYgPSBwYXJlbnQuZG9jdW1lbnQ7ICAvLyBhY2Nlc3MgcGFyZW50J3MgRE9NIHRyZWU6
IHNob3VsZCBub3QgYmUgYWxsb3dlZAorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNh
bmRib3hlZC1pZnJhbWUtYWxsb3ctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlm
cmFtZS1hbGxvdy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtYWxs
b3ctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkgQEAKK1RoaXMgdGVzdCB2
ZXJpZmllcyB0aGF0IHNhbmRib3hlZCBpZnJhbWUgaGFzIFhtbEh0dHBSZXF1ZXN0IGFjY2VzcyB0
byB0aGUgc2VydmVyIHRoYXQgYWNjZXB0cyBhbGwgZG9tYWlucy4gSXQgd2lsbCBwcmludCAiUEFT
UyIgb24gc3VjY2Vzcy4KKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88
IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK1BBU1M6IFNhbmRib3hlZCBpZnJhbWUgWEhSIGFj
Y2VzcyBhbGxvd2VkLgorCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtYWxsb3cuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9s
LXNhbmRib3hlZC1pZnJhbWUtYWxsb3cuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFt
ZS1hbGxvdy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4IEBACis8aHRtbD4KKzxzY3Jp
cHQ+CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENo
aWxkRnJhbWVzQXNUZXh0KCk7Cit9CisKKzwvc2NyaXB0PgorPGJvZHk+CisgICAgPHA+VGhpcyB0
ZXN0IHZlcmlmaWVzIHRoYXQgc2FuZGJveGVkIGlmcmFtZSBoYXMgWG1sSHR0cFJlcXVlc3QgYWNj
ZXNzCisgICAgdG8gdGhlIHNlcnZlciB0aGF0IGFjY2VwdHMgYWxsIGRvbWFpbnMuIEl0IHdpbGwg
cHJpbnQgJnF1b3Q7UEFTUyZxdW90OyBvbiBzdWNjZXNzLjwvcD4KKyAgICAKKyAgICA8aWZyYW1l
IHNhbmRib3g9ImFsbG93LXNjcmlwdHMiIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3htbGh0
dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93
LWlmcmFtZS5odG1sIiBzdHlsZT0id2lkdGg6IDUwMHB4OyI+CisgICAgPC9pZnJhbWU+IAorICAg
IAorPC9ib2R5PiAKKzwvaHRtbD4gCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNz
LWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDggQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHNhbmRib3hlZCBpZnJh
bWUgZG9lcyBub3QgaGF2ZSBYbWxIdHRwUmVxdWVzdCBhY2Nlc3MgdG8gaXRzIHNlcnZlci4gSXQg
d2lsbCBwcmludCAiUEFTUyIgb24gc3VjY2Vzcy4KKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwh
LS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK1BBU1M6IEV4Y2VwdGlv
biB0aHJvd24uIFNhbmRib3hlZCBpZnJhbWUgWEhSIGFjY2VzcyB3YXMgZGVuaWVkIGluICdzZW5k
Jy4gW05FVFdPUktfRVJSOiBYTUxIdHRwUmVxdWVzdCBFeGNlcHRpb24gMTAxXS4KSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJv
eGVkLWlmcmFtZS1kZW5pZWQtd2l0aG91dC13aWxkY2FyZC1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJv
bC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC13aXRob3V0LXdpbGRjYXJkLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNj
ZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtd2l0aG91dC13aWxkY2FyZC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMgdGVzdCB2ZXJpZmll
cyB0aGF0IHNhbmRib3hlZCBpZnJhbWUgZG9lcyBub3QgaGF2ZSBYbWxIdHRwUmVxdWVzdCBhY2Nl
c3MgdG8gaXRzIHNlcnZlciB3aXRoICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4iIHNldCB0
byBpdHMgb3duIG9yaWdpbiAoMTI3LjAuMC4xKS4KKworVGhpcyB0ZXN0IHdpbGwgcHJpbnQgIlBB
U1MiIG9uIHN1Y2Nlc3MuCisKKworCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8v
PCEtLWZyYW1lMC0tPi0tPicKKy0tLS0tLS0tCitQQVNTOiBFeGNlcHRpb24gdGhyb3duLiBTYW5k
Ym94ZWQgaWZyYW1lIFhIUiBhY2Nlc3Mgd2FzIGRlbmllZCBpbiAnc2VuZCcuIFtORVRXT1JLX0VS
UjogWE1MSHR0cFJlcXVlc3QgRXhjZXB0aW9uIDEwMV0uCkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVu
aWVkLXdpdGhvdXQtd2lsZGNhcmQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVu
aWVkLXdpdGhvdXQtd2lsZGNhcmQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1k
ZW5pZWQtd2l0aG91dC13aWxkY2FyZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIyIEBA
Cis8aHRtbD4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Cit9CisKKzwvc2NyaXB0PgorPGJvZHk+
CisKKyAgICA8cD5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBzYW5kYm94ZWQgaWZyYW1lIGRvZXMg
bm90IGhhdmUgWG1sSHR0cFJlcXVlc3QgYWNjZXNzIHRvCisgICAgaXRzIHNlcnZlciB3aXRoICJB
Y2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4iIHNldCB0byBpdHMgb3duIG9yaWdpbiAoMTI3LjAu
MC4xKS48L3A+CisgICAgCisgICAgPHA+VGhpcyB0ZXN0IHdpbGwgcHJpbnQgJnF1b3Q7UEFTUyZx
dW90OyBvbiBzdWNjZXNzLjwvcD4KKworICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc2NyaXB0
cyIKKyAgICAgICAgICAgIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3htbGh0dHByZXF1ZXN0
L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC13aXRob3V0
LXdpbGRjYXJkLWlmcmFtZS5odG1sIiBzdHlsZT0id2lkdGg6IDUwMHB4OyI+CisgICAgPC9pZnJh
bWU+CisgICAgCis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9h
Y2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1z
YW5kYm94ZWQtaWZyYW1lLWRlbmllZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5IEBA
Cis8aHRtbD4gCis8c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworfQorCis8L3NjcmlwdD4KKworPGJv
ZHk+IAorICAgIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHNhbmRib3hlZCBpZnJhbWUgZG9l
cyBub3QgaGF2ZSBYbWxIdHRwUmVxdWVzdCBhY2Nlc3MKKyAgICB0byBpdHMgc2VydmVyLiBJdCB3
aWxsIHByaW50ICZxdW90O1BBU1MmcXVvdDsgb24gc3VjY2Vzcy48L3A+CisgICAgCisgICAgPGlm
cmFtZSBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIgorICAgICAgICAgICAgc3JjPSJodHRwOi8vMTI3
LjAuMC4xOjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRi
b3hlZC1pZnJhbWUtZGVuaWVkLWlmcmFtZS5odG1sIiBzdHlsZT0id2lkdGg6IDUwMHB4OyI+Cisg
ICAgPC9pZnJhbWU+IAorPC9ib2R5PiAKKzwvaHRtbD4gCkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQt
aWZyYW1lLWFsbG93LWlmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1p
ZnJhbWUtYWxsb3ctaWZyYW1lLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQt
aWZyYW1lLWFsbG93LWlmcmFtZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI1IEBACis8
aHRtbD4gCis8Ym9keT4gCis8cHJlIGlkPSdjb25zb2xlJz48L3ByZT4gCis8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCI+IAorCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScp
LmlubmVySFRNTCA9IChmdW5jdGlvbigpIHsgCisgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVx
dWVzdDsgCisgCisgICAgdHJ5IHsgCisgICAgICAgIHhoci5vcGVuKCJHRVQiLCAiaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5k
Ym94ZWQtaWZyYW1lLWFsbG93LmNnaSIsIGZhbHNlKTsgCisgICAgfSBjYXRjaChlKSB7IAorICAg
ICAgICByZXR1cm4gIkZBSUw6IEV4Y2VwdGlvbiB0aHJvd24uIFNhbmRib3hlZCBpZnJhbWUgWEhS
IGFjY2VzcyBpcyBub3QgYWxsb3dlZCBpbiAnb3BlbicuIFsiICsgZS5tZXNzYWdlICsgIl0uIjsg
CisgICAgfSAKKyAKKyAgICB0cnkgeyAKKyAgICAgICAgeGhyLnNlbmQoKTsgCisgICAgfSBjYXRj
aChlKSB7IAorICAgICAgICByZXR1cm4gIkZBSUw6IEV4Y2VwdGlvbiB0aHJvd24uIFNhbmRib3hl
ZCBpZnJhbWUgWEhSIGFjY2VzcyBpcyBub3QgYWxsb3dlZCBpbiAnc2VuZCcuIFsiICsgZS5tZXNz
YWdlICsgIl0uIjsgCisgICAgfSAKKyAKKyAgICByZXR1cm4geGhyLnJlc3BvbnNlVGV4dDsgCit9
KSgpOyAKKzwvc2NyaXB0PiAKKzwvYm9keT4gCis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94
ZWQtaWZyYW1lLWFsbG93LmNnaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1l
LWFsbG93LmNnaQkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtYWxsb3cu
Y2dpCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAKKyMhL3Vzci9iaW4vcGVybCAtd1QKK3Vz
ZSBzdHJpY3Q7CisKK3ByaW50ICJDb250ZW50LVR5cGU6IHRleHQvcGxhaW5cbiI7CitwcmludCAi
QWNjZXNzLUNvbnRyb2wtQWxsb3ctQ3JlZGVudGlhbHM6IHRydWVcbiI7CitwcmludCAiQWNjZXNz
LUNvbnRyb2wtQWxsb3ctT3JpZ2luOiAqXG5cbiI7CisKK3ByaW50ICJQQVNTOiBTYW5kYm94ZWQg
aWZyYW1lIFhIUiBhY2Nlc3MgYWxsb3dlZC5cbiI7CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJv
bC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93LmNnaQpfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0
YWJsZQogICArICoKCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC1pZnJhbWUu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC1pZnJhbWUu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVl
c3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWlmcmFt
ZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI3IEBACis8aHRtbD4gCis8Ym9keT4gCis8
cHJlIGlkPSdjb25zb2xlJz48L3ByZT4gCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+
IAorCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IChmdW5j
dGlvbigpIHsKKyAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0OyAKKyAKKyAKKyAgICB0
cnkgeyAKKyAgICAgICAgeGhyLm9wZW4oIkdFVCIsICJodHRwOi8vMTI3LjAuMC4xOjgwMDAveG1s
aHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVu
aWVkLmNnaSIsIGZhbHNlKTsgCisgICAgfSBjYXRjaChlKSB7IAorICAgICAgICByZXR1cm4gIkZB
SUw6IEV4Y2VwdGlvbiB0aHJvd24uIFNhbmRib3hlZCBpZnJhbWUgWEhSIGFjY2VzcyBpcyBub3Qg
YWxsb3dlZCBpbiAnb3BlbicuIFsiICsgZS5tZXNzYWdlICsgIl0uIjsgCisgICAgfSAKKyAKKyAg
ICB0cnkgeyAKKyAgICAgICAgeGhyLnNlbmQoKTsgCisgICAgfSBjYXRjaChlKSB7IAorICAgICAg
ICByZXR1cm4gIlBBU1M6IEV4Y2VwdGlvbiB0aHJvd24uIFNhbmRib3hlZCBpZnJhbWUgWEhSIGFj
Y2VzcyB3YXMgZGVuaWVkIGluICdzZW5kJy4gWyIgKyBlLm1lc3NhZ2UgKyAiXS4iOyAKKyAgICB9
CisgCisgICAgcmV0dXJuIHhoci5yZXNwb25zZVRleHQ7IAorfSkoKTsKKyAgCis8L3NjcmlwdD4g
Cis8L2JvZHk+IAorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRw
cmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQt
d2l0aG91dC13aWxkY2FyZC1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94
ZWQtaWZyYW1lLWRlbmllZC13aXRob3V0LXdpbGRjYXJkLWlmcmFtZS5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNj
ZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtd2l0aG91dC13aWxkY2FyZC1pZnJh
bWUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNiBAQAorPGh0bWw+Cis8Ym9keT4KKzxw
cmUgaWQ9J2NvbnNvbGUnPjwvcHJlPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgor
Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IChmdW5jdGlv
bigpIHsKKyAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0OworCisgICAgdHJ5IHsKKyAg
ICAgICAgeGhyLm9wZW4oIkdFVCIsICJodHRwOi8vMTI3LjAuMC4xOjgwMDAveG1saHR0cHJlcXVl
c3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhv
dXQtd2lsZGNhcmQuY2dpIiwgZmFsc2UpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICByZXR1
cm4gIkZBSUw6IEV4Y2VwdGlvbiB0aHJvd24uIFNhbmRib3hlZCBpZnJhbWUgWEhSIGFjY2VzcyBp
cyBub3QgYWxsb3dlZCBpbiAnb3BlbicuIFsiICsgZS5tZXNzYWdlICsgIl0uIjsKKyAgICB9CisK
KyAgICB0cnkgeworICAgICAgICB4aHIuc2VuZCgpOworICAgIH0gY2F0Y2goZSkgeworICAgICAg
ICByZXR1cm4gIlBBU1M6IEV4Y2VwdGlvbiB0aHJvd24uIFNhbmRib3hlZCBpZnJhbWUgWEhSIGFj
Y2VzcyB3YXMgZGVuaWVkIGluICdzZW5kJy4gWyIgKyBlLm1lc3NhZ2UgKyAiXS4iOworICAgIH0K
KworICAgIHJldHVybiB4aHIucmVzcG9uc2VUZXh0OworfSkoKTsKKworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC13aXRob3V0
LXdpbGRjYXJkLmNnaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmll
ZC13aXRob3V0LXdpbGRjYXJkLmNnaQkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1p
ZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQuY2dpCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDggQEAKKyMhL3Vzci9iaW4vcGVybCAtd1QKK3VzZSBzdHJpY3Q7CisKK3ByaW50ICJDb250ZW50
LVR5cGU6IHRleHQvcGxhaW5cbiI7CitwcmludCAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctQ3JlZGVu
dGlhbHM6IHRydWVcbiI7CitwcmludCAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luOiBodHRw
Oi8vMTI3LjAuMC4xOjgwMDBcblxuIjsKKworcHJpbnQgIkZBSUw6IFNhbmRib3hlZCBpZnJhbWUg
WEhSIGFjY2VzcyBhbGxvd2VkLlxuIjsKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRi
b3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQuY2dpCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6
IHN2bjpleGVjdXRhYmxlCiAgICsgKgoKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVu
aWVkLmNnaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC5jZ2kJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jl
c291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC5jZ2kJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNiBAQAorIyEvdXNyL2Jpbi9wZXJsIC13VAordXNlIHN0cmljdDsK
KworcHJpbnQgIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpblxuXG4iOworCitwcmludCAiRkFJTDog
U2FuZGJveGVkIGlmcmFtZSBYSFIgYWNjZXNzIGFsbG93ZWQuXG4iOwoKUHJvcGVydHkgY2hhbmdl
cyBvbjogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNj
ZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQuY2dpCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6
IHN2bjpleGVjdXRhYmxlCiAgICsgKgoKSW5kZXg6IExheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3Rv
cmFnZS9sb2NhbHN0b3JhZ2Uvc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2Uv
c2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9zYW5kYm94ZWQtaWZyYW1l
LWRlbmllZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMg
dGVzdCB2ZXJpZmllcyB0aGF0IHNhbmRib3hlZCBpZnJhbWUgZG9lcyBub3QgaGF2ZSBhY2Nlc3Mg
dG8gdGhlIGxvY2FsIHN0b3JhZ2Ugb2YgaXRzIGNvbnRhaW5pbmcgZnJhbWUgZnJvbSB0aGUgc2Ft
ZSBvcmlnaW4uCisKK1RoaXMgdGVzdCB3aWxsIHByaW50ICJQQVNTIiBvbiBzdWNjZXNzLgorCisK
KworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4nCist
LS0tLS0tLQorUEFTUzogU2FuZGJveGVkIGlmcmFtZSBkb2VzIG5vdCBoYXZlIGFjY2VzcyB0byB0
aGUgbG9jYWwgc3RvcmFnZSBmcm9tIHRoZSBzYW1lIG9yaWdpbi4KSW5kZXg6IExheW91dFRlc3Rz
L3N0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2Uvc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxz
dG9yYWdlL3NhbmRib3hlZC1pZnJhbWUtZGVuaWVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3NhbmRib3hlZC1pZnJhbWUt
ZGVuaWVkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzkgQEAKKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKK30KKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBpZiAo
IXdpbmRvdy5sb2NhbFN0b3JhZ2UpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImxvZ2dlciIpLmlubmVySFRNTCA9ICJ3aW5kb3cubG9jYWxTdG9yYWdlIERPRVMgTk9UIGV4aXN0
IjsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGxvY2FsU3RvcmFnZS5jbGVhcigpOworICAgIGxvY2FsU3RvcmFnZS5mb28gPSAi
YmFyIjsKKworICAgIHZhciBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUi
KTsKKyAgICBpZnJhbWUuc2FuZGJveCA9ICJhbGxvdy1zY3JpcHRzIjsKKyAgICBpZnJhbWUuc3Jj
ID0gInJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC1pZnJhbWUuaHRtbCI7CisgICAg
ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWUpOworfQorCis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorICAgIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHNhbmRib3hlZCBpZnJh
bWUgZG9lcyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIGxvY2FsIHN0b3JhZ2UKKyAgICBvZiBpdHMg
Y29udGFpbmluZyBmcmFtZSBmcm9tIHRoZSBzYW1lIG9yaWdpbi48L3A+CisKKyAgICA8cD5UaGlz
IHRlc3Qgd2lsbCBwcmludCAmcXVvdDtQQVNTJnF1b3Q7IG9uIHN1Y2Nlc3MuPC9wPgorCisgICAg
PGRpdiBpZD0ibG9nZ2VyIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2UvcmVzb3VyY2VzL3NhbmRib3hlZC1p
ZnJhbWUtZGVuaWVkLWlmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N0b3Jh
Z2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2UvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZGVu
aWVkLWlmcmFtZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3RvcmFnZS9kb21z
dG9yYWdlL2xvY2Fsc3RvcmFnZS9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtaWZy
YW1lLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjAgQEAKKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0PgorCit3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKQoreworICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJsb2dnZXIiKS5pbm5lckhUTUwgPSAobG9jYWxTdG9yYWdlLmdldEl0ZW0o
ImZvbyIpID09ICJiYXIiKQorICAgICAgICA/ICJGQUlMOiBTYW5kYm94ZWQgaWZyYW1lIGhhcyBh
Y2Nlc3MgdG8gdGhlIGxvY2FsIHN0b3JhZ2UgZnJvbSB0aGUgc2FtZSBvcmlnaW4uIgorICAgICAg
ICA6ICJQQVNTOiBTYW5kYm94ZWQgaWZyYW1lIGRvZXMgbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBs
b2NhbCBzdG9yYWdlIGZyb20gdGhlIHNhbWUgb3JpZ2luLiI7CisKKyAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJsb2dnZXIi
PjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvc3RvcmFnZS9kb21z
dG9yYWdlL3Nlc3Npb25zdG9yYWdlL3NhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2Uvc2Vzc2lvbnN0
b3JhZ2Uvc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL3Nlc3Npb25zdG9yYWdlL3NhbmRib3hl
ZC1pZnJhbWUtZGVuaWVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMCBA
QAorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgc2FuZGJveGVkIGlmcmFtZSBkb2VzIG5vdCBoYXZl
IGFjY2VzcyB0byB0aGUgc2Vzc2lvbiBzdG9yYWdlIG9mIGl0cyBjb250YWluaW5nIGZyYW1lIGZy
b20gdGhlIHNhbWUgb3JpZ2luLgorCitUaGlzIHRlc3Qgd2lsbCBwcmludCAiUEFTUyIgb24gc3Vj
Y2Vzcy4KKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUw
LS0+LS0+JworLS0tLS0tLS0KK1BBU1M6IFNhbmRib3hlZCBpZnJhbWUgZG9lcyBub3QgaGF2ZSBh
Y2Nlc3MgdG8gdGhlIHNlc3Npb24gc3RvcmFnZSBmcm9tIHRoZSBzYW1lIG9yaWdpbi4KSW5kZXg6
IExheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9zZXNzaW9uc3RvcmFnZS9zYW5kYm94ZWQt
aWZyYW1lLWRlbmllZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N0b3JhZ2UvZG9t
c3RvcmFnZS9zZXNzaW9uc3RvcmFnZS9zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL3Nlc3Npb25zdG9yYWdl
L3NhbmRib3hlZC1pZnJhbWUtZGVuaWVkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzkg
QEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKword2luZG93Lm9ubG9hZCA9IGZ1bmN0
aW9uKCkKK3sKKyAgICBpZiAoIXdpbmRvdy5zZXNzaW9uU3RvcmFnZSkgeworICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgibG9nZ2VyIikuaW5uZXJIVE1MID0gIndpbmRvdy5zZXNzaW9u
U3RvcmFnZSBET0VTIE5PVCBleGlzdCI7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzZXNzaW9uU3RvcmFnZS5jbGVhcigpOwor
ICAgIHNlc3Npb25TdG9yYWdlLmZvbyA9ICJiYXIiOworCisgICAgdmFyIGlmcmFtZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgIGlmcmFtZS5zYW5kYm94ID0gImFsbG93
LXNjcmlwdHMiOworICAgIGlmcmFtZS5zcmMgPSAicmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUt
ZGVuaWVkLWlmcmFtZS5odG1sIjsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcmFt
ZSk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPHA+VGhpcyB0ZXN0IHZl
cmlmaWVzIHRoYXQgc2FuZGJveGVkIGlmcmFtZSBkb2VzIG5vdCBoYXZlIGFjY2VzcyB0byB0aGUg
c2Vzc2lvbiBzdG9yYWdlCisgICAgb2YgaXRzIGNvbnRhaW5pbmcgZnJhbWUgZnJvbSB0aGUgc2Ft
ZSBvcmlnaW4uPC9wPgorCisgICAgPHA+VGhpcyB0ZXN0IHdpbGwgcHJpbnQgJnF1b3Q7UEFTUyZx
dW90OyBvbiBzdWNjZXNzLjwvcD4KKworICAgIDxkaXYgaWQ9ImxvZ2dlciI+PC9kaXY+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2Uvc2Vzc2lv
bnN0b3JhZ2UvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWlmcmFtZS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9zZXNzaW9uc3RvcmFn
ZS9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtaWZyYW1lLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2Uvc2Vzc2lvbnN0b3JhZ2UvcmVz
b3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWlmcmFtZS5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDIwIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKword2luZG93Lm9ubG9h
ZCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nZ2VyIiku
aW5uZXJIVE1MID0gKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oImZvbyIpID09ICJiYXIiKQorICAg
ICAgICA/ICJGQUlMOiBTYW5kYm94ZWQgaWZyYW1lIGhhcyBhY2Nlc3MgdG8gdGhlIHNlc3Npb24g
c3RvcmFnZSBmcm9tIHRoZSBzYW1lIG9yaWdpbi4iCisgICAgICAgIDogIlBBU1M6IFNhbmRib3hl
ZCBpZnJhbWUgZG9lcyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIHNlc3Npb24gc3RvcmFnZSBmcm9t
IHRoZSBzYW1lIG9yaWdpbi4iOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCis8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ibG9nZ2VyIj48L2Rpdj4KKzwvYm9keT4K
KzwvaHRtbD4K
</data>
<flag name="review"
          id="24473"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42959</attachid>
            <date>2009-11-11 06:14:13 -0800</date>
            <delta_ts>2009-11-16 07:48:51 -0800</delta_ts>
            <desc>Revised patch.</desc>
            <filename>sandbox-r50793.patch</filename>
            <type>text/plain</type>
            <size>100105</size>
            <attacher name="Patrik Persson">patrik.j.persson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDc5NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzggQEAKKzIwMDktMTEtMTEgIFBhdHJpayBQZXJzc29uICA8cGF0cmlrLmoucGVy
c3NvbkBlcmljc3Nvbi5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wbGVtZW50IEhUTUw1J3Mgc2FuZGJveCBhdHRyaWJ1dGUgZm9yIGlmcmFt
ZXMKKyAgICAgICAgaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvdGV4dC1sZXZlbC1zZW1hbnRp
Y3MuaHRtbCNhdHRyLWlmcmFtZS1zYW5kYm94CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI4OAorCisgICAgICAgIFRlc3RzOiBmYXN0L2ZyYW1lcy9z
YW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLmh0bWwKKyAgICAgICAgICAgICAgIGZh
c3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtZm9ybXMuaHRtbAorICAgICAgICAgICAgICAgZmFz
dC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLWFsbG93ZWQuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXBhcmVudC5o
dG1sCisgICAgICAgICAgICAgICBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRp
b24tdGFyZ2V0bGluay5odG1sCisgICAgICAgICAgICAgICBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQt
aWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zy
YW1lcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9m
cmFtZXMvc2FuZGJveGVkLWlmcmFtZS1zY3JpcHRpbmcuaHRtbAorICAgICAgICAgICAgICAgaHR0
cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLWRvY3VtZW50LWNvb2tpZS5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtbW9kaWZ5
LXNlbGYuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVE
LXNhbmRib3hlZC1pZnJhbWUuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy94bWxodHRw
cmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93Lmh0bWwKKyAgICAg
ICAgICAgICAgIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJv
eGVkLWlmcmFtZS1kZW5pZWQtd2l0aG91dC13aWxkY2FyZC5odG1sCisgICAgICAgICAgICAgICBo
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUt
ZGVuaWVkLmh0bWwKKyAgICAgICAgICAgICAgIHN0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3Jh
Z2Uvc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQuaHRtbAorICAgICAgICAgICAgICAgc3RvcmFnZS9k
b21zdG9yYWdlL3Nlc3Npb25zdG9yYWdlL3NhbmRib3hlZC1pZnJhbWUtZGVuaWVkLmh0bWwKKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZVdpbmRvdyk6IHNhbmRib3hpbmcgbmF2aWdhdGlvbgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
Q29udHJvbGxlcjo6aXNFbmFibGVkKTogc2FuZGJveGluZyBzY3JpcHRzCisgICAgICAgICogZG9t
L0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpwcm9jZXNzSHR0cEVx
dWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpjb29raWUpOiByYWlzZSBleGNlcHRp
b24gd2hlbiBhY2Nlc3NlZCBmcm9tIHNhbmRib3gKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjpzZXRDb29raWUpOiByYWlzZSBleGNlcHRpb24gd2hlbiBhY2Nlc3NlZCBmcm9tIHNhbmRib3gK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KTogY29weSBz
YW5kYm94IHN0YXR1cyBmcm9tIGZyYW1lIHRvIFNlY3VyaXR5T3JpZ2luCisgICAgICAgICogZG9t
L0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL0RvY3VtZW50LmlkbDoKKyAgICAgICAgKiBodG1s
L0hUTUxBcHBsZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVt
ZW50OjpjcmVhdGVSZW5kZXJlcik6IHNhbmRib3hpbmcgYXBwbGV0cworICAgICAgICAoV2ViQ29y
ZTo6SFRNTEFwcGxldEVsZW1lbnQ6OnJlbmRlcldpZGdldEZvckpTQmluZGluZ3MpOiBzYW5kYm94
aW5nIGFwcGxldHMKKyAgICAgICAgKiBodG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbjoKKyAgICAg
ICAgKiBodG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHA6IGFkZGVkIHNhbmRib3ggZmxhZyBt
YW5hZ2VtZW50IGFuZCBwcm9wYWdhdGlvbgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lT3du
ZXJFbGVtZW50OjpIVE1MRnJhbWVPd25lckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEZyYW1lT3duZXJFbGVtZW50OjpzZXRTYW5kYm94RmxhZ3NGcm9tQXR0cmlidXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudDo6dXBkYXRlU2FuZGJveEZsYWdzKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudDo6aW5oZXJpdFNhbmRib3hG
bGFncyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQ6Omluc2VydGVk
SW50b0RvY3VtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50Ojppc1NhbmRib3hlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQ6OnNhbmRib3hGbGFncyk6Cisg
ICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHA6IGFkZGVkIHNhbmRib3ggYXR0cmli
dXRlIHBhcnNpbmcKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJRnJhbWVFbGVtZW50OjpwYXJzZU1h
cHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudDo6YWRk
U2FuZGJveFN0YXR1cyk6CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oOgorICAg
ICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXI6OmdldENvb2tpZXMpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c3VibWl0Rm9ybSk6IHNhbmRib3hpbmcgZm9y
bXMKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpyZXF1ZXN0T2JqZWN0KTogc2FuZGJv
eGluZyBwbHVnaW5zCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c2hvdWxkQWxsb3dO
YXZpZ2F0aW9uKTogc2FuZGJveGluZyBuYXZpZ2F0aW9uCisgICAgICAgICogcGFnZS9TZWN1cml0
eU9yaWdpbi5jcHA6IGFkZGVkIHVuaXF1ZSBvcmlnaW4gZm9yIHNhbmRib3hlZCBmcmFtZXMKKyAg
ICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbik6CisgICAgICAg
IChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luOjpjYW5SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luOjp0b1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6aXNT
YW1lU2NoZW1lSG9zdFBvcnQpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uaDogYWRk
ZWQgc2FuZGJveCBmbGFnIHR5cGUKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgIChXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbjo6c2V0U2FuZGJveEZsYWdzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luOjppc1NhbmRib3hlZCk6CisgICAgICAgICogc3RvcmFnZS9EYXRhYmFz
ZVRyYWNrZXIuY3BwOiBzYW5kYm94aW5nIG9yaWdpbiAoZm9yIGxvY2FsIHN0b3JhZ2UpCisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmNhbkVzdGFibGlzaERhdGFiYXNlKToKKyAg
ICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2ZURhdGEpOgorCiAyMDA5LTExLTExICBKb2Nl
bHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmNwcAkocmV2aXNpb24gNTA3OTMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2lu
Y2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiSFRNTERvY3VtZW50LmgiCisjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSGlzdG9yeS5oIgogI2luY2x1ZGUgIkpTQXVkaW9Db25zdHJ1Y3Rvci5oIgogI2lu
Y2x1ZGUgIkpTRE9NV2luZG93U2hlbGwuaCIKQEAgLTc0NCw2ICs3NDUsMTEgQEAgc3RhdGljIEZy
YW1lKiBjcmVhdGVXaW5kb3coRXhlY1N0YXRlKiBleAogICAgIEFTU0VSVChsZXhpY2FsRnJhbWUp
OwogICAgIEFTU0VSVChkeW5hbWljRnJhbWUpOwogCisgICAgLy8gU2FuZGJveGVkIGlmcmFtZXMg
Y2Fubm90IG9wZW4gbmV3IGF1eGlsaWFyeSBicm93c2luZyBjb250ZXh0cworICAgIGlmIChvcGVu
ZXJGcmFtZSAmJiBvcGVuZXJGcmFtZS0+b3duZXJFbGVtZW50KCkKKyAgICAgICAgJiYgb3BlbmVy
RnJhbWUtPm93bmVyRWxlbWVudCgpLT5pc1NhbmRib3hlZChTYW5kYm94TmF2aWdhdGlvbikpCisg
ICAgICAgIHJldHVybiAwOworCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Q7CiAKICAgICAv
LyBGb3Igd2hhdGV2ZXIgcmVhc29uLCBGaXJlZm94IHVzZXMgdGhlIGR5bmFtaWNHbG9iYWxPYmpl
Y3QgdG8gZGV0ZXJtaW5lCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xs
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5jcHAJKHJldmlzaW9uIDUwNzkzKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE4LDYgKzMxOCwxMCBAQCBib29sIFNjcmlw
dENvbnRyb2xsZXI6OmFueVBhZ2VJc1Byb2Nlc3NpCiAKIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6
aXNFbmFibGVkKCkKIHsKKyAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCA9
IG1fZnJhbWUtPm93bmVyRWxlbWVudCgpOworICAgIGlmIChvd25lckVsZW1lbnQgJiYgb3duZXJF
bGVtZW50LT5pc1NhbmRib3hlZChTYW5kYm94U2NyaXB0cykpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgCiAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gbV9mcmFtZS0+c2V0dGluZ3Mo
KTsKICAgICByZXR1cm4gbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5hbGxvd0phdmFTY3Jp
cHQoc2V0dGluZ3MgJiYgc2V0dGluZ3MtPmlzSmF2YVNjcmlwdEVuYWJsZWQoKSk7CiB9CkluZGV4
OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCShyZXZpc2lvbiA1MDc5MykKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjE3Myw4ICsyMTczLDEwIEBAIHZvaWQgRG9jdW1lbnQ6OnByb2Nl
c3NIdHRwRXF1aXYoY29uc3QgU3QKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UoZXF1aXYsICJzZXQtY29va2llIikpIHsKICAgICAgICAgLy8gRklYTUU6IG1ha2Ug
c2V0Q29va2llIHdvcmsgb24gWE1MIGRvY3VtZW50cyB0b287IGUuZy4gaW4gY2FzZSBvZiA8aHRt
bDptZXRhIC4uLi4uPgotICAgICAgICBpZiAoaXNIVE1MRG9jdW1lbnQoKSkKLSAgICAgICAgICAg
IHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KHRoaXMpLT5zZXRDb29raWUoY29udGVudCk7Cisg
ICAgICAgIGlmIChpc0hUTUxEb2N1bWVudCgpKSB7CisgICAgICAgICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsgICAvLyBFeGNlcHRpb24gKGZvciBzYW5kYm94ZWQgZG9jdW1lbnRzKSBpZ25vcmVk
CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPih0aGlzKS0+c2V0Q29va2ll
KGNvbnRlbnQsIGVjKTsKKyAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UoZXF1aXYsICJjb250ZW50LWxhbmd1YWdlIikpCiAgICAgICAgIHNldENvbnRlbnRMYW5ndWFn
ZShjb250ZW50KTsKICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShlcXVpdiwgIngtZG5z
LXByZWZldGNoLWNvbnRyb2wiKSkKQEAgLTI5OTIsMTEgKzI5OTQsMjAgQEAgRWxlbWVudCogRG9j
dW1lbnQ6Om93bmVyRWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGZyYW1lKCktPm93bmVyRWxl
bWVudCgpOwogfQogCi1TdHJpbmcgRG9jdW1lbnQ6OmNvb2tpZSgpIGNvbnN0CitTdHJpbmcgRG9j
dW1lbnQ6OmNvb2tpZShFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsKICAgICBpZiAocGFnZSgp
ICYmICFwYWdlKCktPmNvb2tpZUVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
CisgICAgLy8gRklYTUU6IHRoZSBIVE1MNSBET00gc3BlYyBzdGF0ZXMgdGhhdCB0aGlzIGF0dHJp
YnV0ZSBjYW4gcmFpc2UgYW4KKyAgICAvLyBJTlZBTElEX1NUQVRFX0VSUiBleGNlcHRpb24gb24g
Z2V0dGluZyBpZiB0aGUgRG9jdW1lbnQgaGFzIG5vCisgICAgLy8gYnJvd3NpbmcgY29udGV4dC4K
KworICAgIGlmIChzZWN1cml0eU9yaWdpbigpLT5pc1NhbmRib3hlZChTYW5kYm94T3JpZ2luKSkg
eworICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwor
ICAgIH0KKwogICAgIEtVUkwgY29va2llVVJMID0gdGhpcy0+Y29va2llVVJMKCk7CiAgICAgaWYg
KGNvb2tpZVVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTMwMDQs
MTEgKzMwMTUsMjAgQEAgU3RyaW5nIERvY3VtZW50Ojpjb29raWUoKSBjb25zdAogICAgIHJldHVy
biBjb29raWVzKHRoaXMsIGNvb2tpZVVSTCk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnNldENvb2tp
ZShjb25zdCBTdHJpbmcmIHZhbHVlKQordm9pZCBEb2N1bWVudDo6c2V0Q29va2llKGNvbnN0IFN0
cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmIChwYWdlKCkgJiYgIXBh
Z2UoKS0+Y29va2llRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICAvLyBGSVhNRTog
dGhlIEhUTUw1IERPTSBzcGVjIHN0YXRlcyB0aGF0IHRoaXMgYXR0cmlidXRlIGNhbiByYWlzZSBh
bgorICAgIC8vIElOVkFMSURfU1RBVEVfRVJSIGV4Y2VwdGlvbiBvbiBzZXR0aW5nIGlmIHRoZSBE
b2N1bWVudCBoYXMgbm8KKyAgICAvLyBicm93c2luZyBjb250ZXh0LgorCisgICAgaWYgKHNlY3Vy
aXR5T3JpZ2luKCktPmlzU2FuZGJveGVkKFNhbmRib3hPcmlnaW4pKSB7CisgICAgICAgIGVjID0g
U0VDVVJJVFlfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgS1VSTCBjb29raWVV
UkwgPSB0aGlzLT5jb29raWVVUkwoKTsKICAgICBpZiAoY29va2llVVJMLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtNDI1Nyw2ICs0Mjc3LDExIEBAIHZvaWQgRG9jdW1lbnQ6OmluaXRT
ZWN1cml0eUNvbnRleHQoKQogICAgIG1fY29va2llVVJMID0gdXJsOwogICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OnNldFNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJs
KSk7CiAKKyAgICAvLyBTZXQgdGhlIGlmcmFtZSBzYW5kYm94IG9yaWdpbiBmbGFnIGZyb20gdGhl
IGNvcnJlc3BvbmRpbmcgcHJvcGVydHkgCisgICAgLy8gb2YgaXRzIGZyYW1lIG93bmVyIGVsZW1l
bnQgKGlmcmFtZSkKKyAgICBpZiAoSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQg
PSBtX2ZyYW1lLT5vd25lckVsZW1lbnQoKSkKKyAgICAgICAgc2VjdXJpdHlPcmlnaW4oKS0+c2V0
U2FuZGJveEZsYWdzKG93bmVyRWxlbWVudC0+c2FuZGJveEZsYWdzKCkpOworIAogICAgIGlmIChT
ZWN1cml0eU9yaWdpbjo6YWxsb3dTdWJzdGl0dXRlRGF0YUFjY2Vzc1RvTG9jYWwoKSkgewogICAg
ICAgICAvLyBJZiB0aGlzIGRvY3VtZW50IHdhcyBsb2FkZWQgd2l0aCBzdWJzdGl0dXRlRGF0YSwg
dGhlbiB0aGUgZG9jdW1lbnQgY2FuCiAgICAgICAgIC8vIGxvYWQgbG9jYWwgcmVzb3VyY2VzLiAg
U2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjc1NgpJbmRleDog
V2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCShyZXZpc2lvbiA1MDc5MykKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY3NSw4ICs2NzUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUaXRsZShjb25z
dCBTdHJpbmcmLCBFbGVtZW50KiB0aXRsZUVsZW1lbnQgPSAwKTsKICAgICB2b2lkIHJlbW92ZVRp
dGxlKEVsZW1lbnQqIHRpdGxlRWxlbWVudCk7CiAKLSAgICBTdHJpbmcgY29va2llKCkgY29uc3Q7
Ci0gICAgdm9pZCBzZXRDb29raWUoY29uc3QgU3RyaW5nJik7CisgICAgU3RyaW5nIGNvb2tpZShF
eGNlcHRpb25Db2RlJikgY29uc3Q7CisgICAgdm9pZCBzZXRDb29raWUoY29uc3QgU3RyaW5nJiwg
RXhjZXB0aW9uQ29kZSYpOwogCiAgICAgU3RyaW5nIHJlZmVycmVyKCkgY29uc3Q7CiAKSW5kZXg6
IFdlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1
bWVudC5pZGwJKHJldmlzaW9uIDUwNzkzKQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0xNjIsMTAgKzE2Miw5IEBAIG1vZHVsZSBjb3JlIHsKICNlbmRpZgog
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIFVSTDsKIAotICAgICAgICAvLyBG
SVhNRTogdGhlIERPTSBzcGVjIHN0YXRlcyB0aGF0IHRoaXMgYXR0cmlidXRlIGNhbiAKLSAgICAg
ICAgLy8gcmFpc2UgYW4gZXhjZXB0aW9uIG9uIHNldHRpbmcuCiAgICAgICAgICAgICAgICAgIGF0
dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBjb29raWUKLSAgICAg
ICAgICAgICAgICAgICAgIC8qc2V0dGVyIHJhaXNlcyAoRE9NRXhjZXB0aW9uKSovOworICAgICAg
ICAgICAgICAgICAgICAgZ2V0dGVyIHJhaXNlcyAoRE9NRXhjZXB0aW9uKSwKKyAgICAgICAgICAg
ICAgICAgICAgIHNldHRlciByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAKICAgICAgICAgLy8gRklY
TUU6IHRoZSBET00gc3BlYyBkb2VzIE5PVCBoYXZlIHRoaXMgYXR0cmlidXRlCiAgICAgICAgIC8v
IHJhaXNpbmcgYW4gZXhjZXB0aW9uLgpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiA1MDc5MykKKysrIFdlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJIVE1MQXBwbGV0RWxlbWVudC5oIgogCisjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNs
dWRlICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJN
YXBwZWRBdHRyaWJ1dGUuaCIKQEAgLTExMCw3ICsxMTEsOCBAQCBSZW5kZXJPYmplY3QqIEhUTUxB
cHBsZXRFbGVtZW50OjpjcmVhdGVSCiB7CiAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZG9jdW1l
bnQoKS0+c2V0dGluZ3MoKTsKIAotICAgIGlmIChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+aXNKYXZh
RW5hYmxlZCgpKSB7CisgICAgaWYgKHNldHRpbmdzICYmIHNldHRpbmdzLT5pc0phdmFFbmFibGVk
KCkKKyAgICAgICAgJiYgIWRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmlzU2FuZGJveGVk
KFNhbmRib3hQbHVnaW5zKSkgewogICAgICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBhcmdz
OwogCiAgICAgICAgIGFyZ3Muc2V0KCJjb2RlIiwgZ2V0QXR0cmlidXRlKGNvZGVBdHRyKSk7CkBA
IC0xNDYsNiArMTQ4LDkgQEAgUmVuZGVyV2lkZ2V0KiBIVE1MQXBwbGV0RWxlbWVudDo6cmVuZGVy
VwogICAgIGlmICghc2V0dGluZ3MgfHwgIXNldHRpbmdzLT5pc0phdmFFbmFibGVkKCkpCiAgICAg
ICAgIHJldHVybiAwOwogCisgICAgaWYgKGluRG9jdW1lbnQoKSAmJiBkb2N1bWVudCgpLT5zZWN1
cml0eU9yaWdpbigpLT5pc1NhbmRib3hlZChTYW5kYm94UGx1Z2lucykpCisgICAgICAgIHJldHVy
biAwOworCiAgICAgUmVuZGVyQXBwbGV0KiBhcHBsZXQgPSB0b1JlbmRlckFwcGxldChyZW5kZXJl
cigpKTsKICAgICBpZiAoYXBwbGV0KQogICAgICAgICBhcHBsZXQtPmNyZWF0ZVdpZGdldElmTmVj
ZXNzYXJ5KCk7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4JKHJldmlzaW9uIDUw
NzkzKQorKysgV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgkod29ya2luZyBjb3B5
KQpAQCAtMjE3LDYgKzIxNyw3IEBAIHJvbGUKIHJvd3MKIHJvd3NwYW4KIHJ1bGVzCitzYW5kYm94
CiBzY2hlbWUKIHNjb3BlCiBzY3JvbGxhbW91bnQKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRnJh
bWVPd25lckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRnJhbWVP
d25lckVsZW1lbnQuY3BwCShyZXZpc2lvbiA1MDc5MykKKysrIFdlYkNvcmUvaHRtbC9IVE1MRnJh
bWVPd25lckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM0LDYgKzM1LDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OkhUTUxGcmFtZU93bmVyRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBI
VE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgQ3JlYXRlRWxlbWVudCkKKyAgICAsIG1fc2Fu
ZGJveEZsYWdzKFNhbmRib3hOb25lKQorICAgICwgbV9zYW5kYm94RmxhZ3NGcm9tQXR0cmlidXRl
KFNhbmRib3hOb25lKQogICAgICwgbV9jb250ZW50RnJhbWUoMCkKIHsKIH0KQEAgLTY0LDYgKzY3
LDQ2IEBAIERPTVdpbmRvdyogSFRNTEZyYW1lT3duZXJFbGVtZW50Ojpjb250ZW4KICAgICByZXR1
cm4gbV9jb250ZW50RnJhbWUgPyBtX2NvbnRlbnRGcmFtZS0+ZG9tV2luZG93KCkgOiAwOwogfQog
Cit2b2lkIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6c2V0U2FuZGJveEZsYWdzRnJvbUF0dHJpYnV0
ZShTYW5kYm94RmxhZ3MgZmxhZ3NGcm9tQXR0cmlidXRlKQoreworICAgIG1fc2FuZGJveEZsYWdz
RnJvbUF0dHJpYnV0ZSA9IGZsYWdzRnJvbUF0dHJpYnV0ZTsKKyAgICB1cGRhdGVTYW5kYm94Rmxh
Z3MoKTsKK30KKwordm9pZCBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OnVwZGF0ZVNhbmRib3hGbGFn
cygpCit7CisgICAgU2FuZGJveEZsYWdzIGZsYWdzRnJvbVBhcmVudCA9IFNhbmRib3hOb25lOwor
ICAgIAorICAgIC8vIEluaGVyaXQgc2FuZGJveCBmbGFncyBmcm9tIHRoZSBwYXJlbnQsIGlmIHRo
ZXJlIGlzIG9uZQorICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50OworICAg
IGlmIChpbkRvY3VtZW50KCkgJiYgKG93bmVyRWxlbWVudCA9IGRvY3VtZW50KCktPmZyYW1lKCkt
Pm93bmVyRWxlbWVudCgpKSkKKyAgICAgICAgZmxhZ3NGcm9tUGFyZW50ID0gb3duZXJFbGVtZW50
LT5tX3NhbmRib3hGbGFnczsKKworICAgIGluaGVyaXRTYW5kYm94RmxhZ3MoZmxhZ3NGcm9tUGFy
ZW50KTsKK30KKwordm9pZCBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmluaGVyaXRTYW5kYm94Rmxh
Z3MoU2FuZGJveEZsYWdzIGZsYWdzRnJvbVBhcmVudCkKK3sKKyAgICBtX3NhbmRib3hGbGFncyA9
IG1fc2FuZGJveEZsYWdzRnJvbUF0dHJpYnV0ZSB8IGZsYWdzRnJvbVBhcmVudDsKKworICAgIGlm
IChpbkRvY3VtZW50KCkpCisgICAgICAgIGRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPnNl
dFNhbmRib3hGbGFncyhtX3NhbmRib3hGbGFncyk7CisKKyAgICBpZiAoRnJhbWUqIGZyYW1lID0g
Y29udGVudEZyYW1lKCkpIHsKKyAgICAgICAgZm9yIChGcmFtZSogY2hpbGQgPSBmcmFtZS0+dHJl
ZSgpLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCktPm5leHRTaWJs
aW5nKCkpIHsKKyAgICAgICAgICAgIGlmIChIVE1MRnJhbWVPd25lckVsZW1lbnQqIGNoaWxkT3du
ZXJFbGVtZW50ID0gY2hpbGQtPm93bmVyRWxlbWVudCgpKQorICAgICAgICAgICAgICAgIGNoaWxk
T3duZXJFbGVtZW50LT5pbmhlcml0U2FuZGJveEZsYWdzKG1fc2FuZGJveEZsYWdzKTsKKyAgICAg
ICAgfQorICAgIH0KK30KKwordm9pZCBIVE1MRnJhbWVPd25lckVsZW1lbnQ6Omluc2VydGVkSW50
b0RvY3VtZW50KCkKK3sKKyAgICBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsK
KworICAgIHVwZGF0ZVNhbmRib3hGbGFncygpOworfQorCiAjaWYgRU5BQkxFKFNWRykKIFNWR0Rv
Y3VtZW50KiBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmdldFNWR0RvY3VtZW50KEV4Y2VwdGlvbkNv
ZGUmIGVjKSBjb25zdAogewpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaAko
cmV2aXNpb24gNTA3OTMpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIxLDEyICsyMSwxMiBAQAogI2lmbmRlZiBIVE1MRnJhbWVPd25l
ckVsZW1lbnRfaAogI2RlZmluZSBIVE1MRnJhbWVPd25lckVsZW1lbnRfaAogCisjaW5jbHVkZSAi
RnJhbWUuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIERPTVdpbmRvdzsKLWNsYXNzIEZyYW1lOwogCiAjaWYgRU5BQkxFKFNWRykKIGNs
YXNzIFNWR0RvY3VtZW50OwpAQCAtNDUsMTggKzQ1LDMxIEBAIHB1YmxpYzoKICNlbmRpZgogCiAg
ICAgdmlydHVhbCBTY3JvbGxiYXJNb2RlIHNjcm9sbGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBT
Y3JvbGxiYXJBdXRvOyB9CisgICAgCisgICAgYm9vbCBpc1NhbmRib3hlZChTYW5kYm94RmxhZ3Mg
bWFzaykgY29uc3QgeyByZXR1cm4gbV9zYW5kYm94RmxhZ3MgJiBtYXNrOyB9CisgICAgU2FuZGJv
eEZsYWdzIHNhbmRib3hGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fc2FuZGJveEZsYWdzOyB9CiAK
IHByb3RlY3RlZDoKICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqKTsKIAorICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9E
b2N1bWVudCgpOworCisgICAgdm9pZCBzZXRTYW5kYm94RmxhZ3NGcm9tQXR0cmlidXRlKFNhbmRi
b3hGbGFncyk7CisgICAgCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBGcmFtZTsKIAorICAg
IHZvaWQgdXBkYXRlU2FuZGJveEZsYWdzKCk7CisgICAgdm9pZCBpbmhlcml0U2FuZGJveEZsYWdz
KFNhbmRib3hGbGFncyk7CisgICAgCiAgICAgdmlydHVhbCBib29sIGlzRnJhbWVPd25lckVsZW1l
bnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIGlzS2V5Ym9hcmRG
b2N1c2FibGUoS2V5Ym9hcmRFdmVudCopIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudEZyYW1lOyB9
CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIHdpbGxSZW1vdmUoKTsKIAorICAgIFNhbmRib3hGbGFn
cyBtX3NhbmRib3hGbGFnczsKKyAgICBTYW5kYm94RmxhZ3MgbV9zYW5kYm94RmxhZ3NGcm9tQXR0
cmlidXRlOworCiAgICAgRnJhbWUqIG1fY29udGVudEZyYW1lOwogfTsKIApJbmRleDogV2ViQ29y
ZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
SFRNTElGcmFtZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA1MDc5MykKKysrIFdlYkNvcmUvaHRtbC9I
VE1MSUZyYW1lRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQsNiArNCw3IEBACiAgKiAg
ICAgICAgICAgKEMpIDIwMDAgU2ltb24gSGF1c21hbm4gKGhhdXNtYW5uQGtkZS5vcmcpCiAgKiAg
ICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDYsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC04OCwxMCArODksNTIgQEAgdm9pZCBIVE1M
SUZyYW1lRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaQogICAgICAgICBpZiAoIWF0dHItPmlzTnVs
bCgpICYmICFhdHRyLT52YWx1ZSgpLnRvSW50KCkpCiAgICAgICAgICAgICAvLyBBZGQgYSBydWxl
IHRoYXQgbnVsbHMgb3V0IG91ciBib3JkZXIgd2lkdGguCiAgICAgICAgICAgICBhZGRDU1NMZW5n
dGgoYXR0ciwgQ1NTUHJvcGVydHlCb3JkZXJXaWR0aCwgIjAiKTsKKyAgICB9IGVsc2UgaWYgKGF0
dHItPm5hbWUoKSA9PSBzYW5kYm94QXR0cikgeworICAgICAgICBhZGRTYW5kYm94U3RhdHVzKGF0
dHIpOwogICAgIH0gZWxzZQogICAgICAgICBIVE1MRnJhbWVFbGVtZW50QmFzZTo6cGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAKK3ZvaWQgSFRNTElGcmFtZUVsZW1lbnQ6OmFkZFNhbmRi
b3hTdGF0dXMoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQoreworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgQXRvbWljU3RyaW5nLCBhbGxvd0Zvcm1zLCAoImFsbG93LWZvcm1zIikpOworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBhbGxvd1NhbWVPcmlnaW4s
ICgiYWxsb3ctc2FtZS1vcmlnaW4iKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBB
dG9taWNTdHJpbmcsIGFsbG93U2NyaXB0cywgKCJhbGxvdy1zY3JpcHRzIikpOworICAgIAorICAg
IFNhbmRib3hGbGFncyBuZXdTYW5kYm94RmxhZ3M7CisgICAgLy8gUGFyc2UgdGhlIHVub3JkZXJl
ZCBzZXQgb2YgdW5pcXVlIHNwYWNlLXNlcGFyYXRlZCB0b2tlbnMuCisgICAgaWYgKGF0dHItPmlz
TnVsbCgpKQorICAgICAgICBuZXdTYW5kYm94RmxhZ3MgPSBTYW5kYm94Tm9uZTsKKyAgICBlbHNl
IHsKKyAgICAgICAgbmV3U2FuZGJveEZsYWdzID0gU2FuZGJveEFsbDsKKyAgICAgICAgY29uc3Qg
VUNoYXIqIGNoYXJhY3RlcnMgPSBhdHRyLT52YWx1ZSgpLmNoYXJhY3RlcnMoKTsKKyAgICAgICAg
dW5zaWduZWQgbGVuZ3RoID0gYXR0ci0+dmFsdWUoKS5sZW5ndGgoKTsKKyAgICAgICAgdW5zaWdu
ZWQgc3RhcnQgPSAwOworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgd2hpbGUg
KHN0YXJ0IDwgbGVuZ3RoICYmIGlzQVNDSUlTcGFjZShjaGFyYWN0ZXJzW3N0YXJ0XSkpCisgICAg
ICAgICAgICAgICAgKytzdGFydDsKKyAgICAgICAgICAgIGlmIChzdGFydCA+PSBsZW5ndGgpCisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB1bnNpZ25lZCBlbmQgPSBzdGFydCAr
IDE7CisgICAgICAgICAgICB3aGlsZSAoZW5kIDwgbGVuZ3RoICYmICFpc0FTQ0lJU3BhY2UoY2hh
cmFjdGVyc1tlbmRdKSkKKyAgICAgICAgICAgICAgICArK2VuZDsKKworICAgICAgICAgICAgLy8g
VHVybiBvZmYgdGhlIGNvcnJlc3BvbmRpbmcgc2FuZGJveCBmbGFnIGlmIGl0J3Mgc2V0IGFzICJh
bGxvd2VkIi4KKyAgICAgICAgICAgIEF0b21pY1N0cmluZyBzYW5kYm94VG9rZW4gPSBBdG9taWNT
dHJpbmcoY2hhcmFjdGVycyArIHN0YXJ0LCBlbmQgLSBzdGFydCk7CisgICAgICAgICAgICBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2Uoc2FuZGJveFRva2VuLCBhbGxvd1NhbWVPcmlnaW4pKQorICAgICAg
ICAgICAgICAgIG5ld1NhbmRib3hGbGFncyAmPSB+U2FuZGJveE9yaWdpbjsKKyAgICAgICAgICAg
IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHNhbmRib3hUb2tlbiwgYWxsb3dGb3JtcykpCisg
ICAgICAgICAgICAgICAgbmV3U2FuZGJveEZsYWdzICY9IH5TYW5kYm94Rm9ybXM7CisgICAgICAg
ICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShzYW5kYm94VG9rZW4sIGFsbG93U2NyaXB0
cykpCisgICAgICAgICAgICAgICAgbmV3U2FuZGJveEZsYWdzICY9IH5TYW5kYm94U2NyaXB0czsK
KworICAgICAgICAgICAgc3RhcnQgPSBlbmQgKyAxOworICAgICAgICB9CisgICAgfQorCisgICAg
c2V0U2FuZGJveEZsYWdzRnJvbUF0dHJpYnV0ZShuZXdTYW5kYm94RmxhZ3MpOworfQorCiBib29s
IEhUTUxJRnJhbWVFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkK
IHsKICAgICByZXR1cm4gaXNVUkxBbGxvd2VkKCkgJiYgc3R5bGUtPmRpc3BsYXkoKSAhPSBOT05F
OwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmgJKHJldmlzaW9uIDUwNzkzKQorKysgV2Vi
Q29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQw
LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBtYXBUb0VudHJ5KGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKKyAgICB2b2lkIGFkZFNh
bmRib3hTdGF0dXMoTWFwcGVkQXR0cmlidXRlKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0
ZWRJbnRvRG9jdW1lbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgp
OwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCShyZXZpc2lvbiA1MDc5MykKKysr
IFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDYgKzMzLDcgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW0Nv
bnZlcnROdWxsVG9OdWxsU3RyaW5nLCBSZWZsZWN0PW1hcmdpbmhlaWdodF0gRE9NU3RyaW5nICAg
ICAgIG1hcmdpbkhlaWdodDsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVs
bFRvTnVsbFN0cmluZywgUmVmbGVjdD1tYXJnaW53aWR0aF0gRE9NU3RyaW5nICAgICAgIG1hcmdp
bldpZHRoOwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3Ry
aW5nLCBSZWZsZWN0XSBET01TdHJpbmcgICAgICAgbmFtZTsKKyAgICAgICAgICAgICAgICAgYXR0
cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZywgUmVmbGVjdF0gRE9NU3RyaW5nICAgICAg
IHNhbmRib3g7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxT
dHJpbmcsIFJlZmxlY3RdIERPTVN0cmluZyAgICAgICBzY3JvbGxpbmc7CiAgICAgICAgICAgICAg
ICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmcsIEN1c3RvbVNldHRlciwgUmVm
bGVjdF0gRE9NU3RyaW5nICAgICAgIHNyYzsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtD
b252ZXJ0TnVsbFRvTnVsbFN0cmluZywgUmVmbGVjdF0gRE9NU3RyaW5nICAgICAgIHdpZHRoOwpJ
bmRleDogV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAJKHJldmlzaW9u
IDUwNzkzKQorKysgV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEyMDIsMTAgKzEyMDIsMTYgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9s
bGVyOjpnZXRDb29raWVzKGxvbgogICAgICAgICAgICAgVmVjdG9yPENvb2tpZT4gZG9jQ29va2ll
c0xpc3Q7CiAgICAgICAgICAgICByYXdDb29raWVzSW1wbGVtZW50ZWQgPSBnZXRSYXdDb29raWVz
KGRvY3VtZW50LCBkb2N1bWVudC0+Y29va2llVVJMKCksIGRvY0Nvb2tpZXNMaXN0KTsKICAgICAg
ICAgICAgIAotICAgICAgICAgICAgaWYgKCFyYXdDb29raWVzSW1wbGVtZW50ZWQpCisgICAgICAg
ICAgICBpZiAoIXJhd0Nvb2tpZXNJbXBsZW1lbnRlZCkgewogICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBXZSBuZWVkIGR1cGxpY2F0aW9uIGNoZWNraW5nIGZvciB0aGUgU3RyaW5nIHJlcHJlc2Vu
dGF0aW9uIG9mIGNvb2tpZXMuCi0gICAgICAgICAgICAgICAgc3RyaW5nQ29va2llc0xpc3QgKz0g
ZG9jdW1lbnQtPmNvb2tpZSgpOwotICAgICAgICAgICAgZWxzZSB7CisKKyAgICAgICAgICAgICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAgICAgICAgICAgICAvLyBJZ25vcmUgZXhjZXB0
aW9uIHRocm93biBieSBjb29raWUoKSBiZWxvdyAtLSB0aGUgb25seSBjYXNlIGFuIGV4Y2VwdGlv
biBpcworICAgICAgICAgICAgICAgIC8vIHRocm93biBoZXJlIGlzIHdoZW4gdGhlIGlmcmFtZSBp
cyBzYW5kYm94ZWQsIHdoaWNoIHdpbGwgbmV2ZXIgaGFwcGVuIGhlcmUKKyAgICAgICAgICAgICAg
ICAvLyBiZWNhdXNlICJkb2MiIGlzIHRoZSBkb2N1bWVudCBvZiB0aGUgbWFpbiBmcmFtZSBvZiB0
aGUgcGFnZS4KKyAgICAgICAgICAgICAgICBzdHJpbmdDb29raWVzTGlzdCArPSBkb2N1bWVudC0+
Y29va2llKGVjKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoZWMgPT0gMCk7CisgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGludCBjb29raWVzU2l6ZSA9IGRvY0Nvb2tpZXNM
aXN0LnNpemUoKTsKICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvb2tpZXNT
aXplOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFyYXdDb29raWVzTGlzdC5jb250
YWlucyhkb2NDb29raWVzTGlzdFtpXSkpCkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZp
c2lvbiA1MDc5MykKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDM4LDYgKzQzOCwxMCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzdWJtaXRGb3JtKGNv
bnN0IGNoYXIqCiAgICAgaWYgKHUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBI
VE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCA9IG1fZnJhbWUtPm93bmVyRWxlbWVu
dCgpOworICAgIGlmIChvd25lckVsZW1lbnQgJiYgb3duZXJFbGVtZW50LT5pc1NhbmRib3hlZChT
YW5kYm94Rm9ybXMpKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAocHJvdG9jb2xJc0phdmFT
Y3JpcHQodSkpIHsKICAgICAgICAgbV9pc0V4ZWN1dGluZ0phdmFTY3JpcHRGb3JtQWN0aW9uID0g
dHJ1ZTsKICAgICAgICAgbV9mcmFtZS0+c2NyaXB0KCktPmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwo
dSwgZmFsc2UsIGZhbHNlKTsKQEAgLTEyNTIsNiArMTI1Niw5IEBAIGJvb2wgRnJhbWVMb2FkZXI6
OnJlcXVlc3RPYmplY3QoUmVuZGVyUGEKICAgICBib29sIHVzZUZhbGxiYWNrOwogICAgIGlmIChz
aG91bGRVc2VQbHVnaW4oY29tcGxldGVkVVJMLCBtaW1lVHlwZSwgcmVuZGVyZXItPmhhc0ZhbGxi
YWNrQ29udGVudCgpLCB1c2VGYWxsYmFjaykpIHsKICAgICAgICAgU2V0dGluZ3MqIHNldHRpbmdz
ID0gbV9mcmFtZS0+c2V0dGluZ3MoKTsKKyAgICAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBv
d25lckVsZW1lbnQgPSBtX2ZyYW1lLT5vd25lckVsZW1lbnQoKTsKKyAgICAgICAgaWYgKG93bmVy
RWxlbWVudCAmJiBvd25lckVsZW1lbnQtPmlzU2FuZGJveGVkKFNhbmRib3hQbHVnaW5zKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKCFzZXR0aW5ncyB8fCAhc2V0dGlu
Z3MtPmFyZVBsdWdpbnNFbmFibGVkKCkgfHwgCiAgICAgICAgICAgICAoIXNldHRpbmdzLT5pc0ph
dmFFbmFibGVkKCkgJiYgTUlNRVR5cGVSZWdpc3RyeTo6aXNKYXZhQXBwbGV0TUlNRVR5cGUobWlt
ZVR5cGUpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIxOTcsNiArMjIwNCwxMiBA
QCBib29sIEZyYW1lTG9hZGVyOjpzaG91bGRBbGxvd05hdmlnYXRpb24oCiAgICAgaWYgKG1fZnJh
bWUgPT0gdGFyZ2V0RnJhbWUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCisgICAgLy8gU2FuZGJv
eGVkIGZyYW1lcyBjYW4gb25seSBuYXZpZ2F0ZSB0aGVpciBkZXNjZW5kYW50cy4KKyAgICBIVE1M
RnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCA9IG1fZnJhbWUtPm93bmVyRWxlbWVudCgp
OworICAgIGlmIChvd25lckVsZW1lbnQgJiYgb3duZXJFbGVtZW50LT5pc1NhbmRib3hlZChTYW5k
Ym94TmF2aWdhdGlvbikKKyAgICAgICAgJiYgIXRhcmdldEZyYW1lLT50cmVlKCktPmlzRGVzY2Vu
ZGFudE9mKG1fZnJhbWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICAvLyBMZXQgYSBm
cmFtZSBuYXZpZ2F0ZSB0aGUgdG9wLWxldmVsIHdpbmRvdyB0aGF0IGNvbnRhaW5zIGl0LiAgVGhp
cyBpcwogICAgIC8vIGltcG9ydGFudCB0byBhbGxvdyBiZWNhdXNlIGl0IGxldHMgYSBzaXRlICJm
cmFtZS1idXN0IiAoZXNjYXBlIGZyb20gYQogICAgIC8vIGZyYW1lIGNyZWF0ZWQgYnkgYW5vdGhl
ciB3ZWIgc2l0ZSkuCkluZGV4OiBXZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAJKHJldmlzaW9uIDUwNzkz
KQorKysgV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTUsNiArOTUsNyBAQCBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgS1VSCiAg
ICAgOiBtX3Byb3RvY29sKHVybC5wcm90b2NvbCgpLmlzTnVsbCgpID8gIiIgOiB1cmwucHJvdG9j
b2woKS5sb3dlcigpKQogICAgICwgbV9ob3N0KHVybC5ob3N0KCkuaXNOdWxsKCkgPyAiIiA6IHVy
bC5ob3N0KCkubG93ZXIoKSkKICAgICAsIG1fcG9ydCh1cmwucG9ydCgpKQorICAgICwgbV9zYW5k
Ym94RmxhZ3MoU2FuZGJveE5vbmUpCiAgICAgLCBtX25vQWNjZXNzKGZhbHNlKQogICAgICwgbV91
bml2ZXJzYWxBY2Nlc3MoZmFsc2UpCiAgICAgLCBtX2RvbWFpbldhc1NldEluRE9NKGZhbHNlKQpA
QCAtMTIyLDYgKzEyMyw3IEBAIFNlY3VyaXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbihjb25zdCBT
ZWMKICAgICAsIG1faG9zdChvdGhlci0+bV9ob3N0LnRocmVhZHNhZmVDb3B5KCkpCiAgICAgLCBt
X2RvbWFpbihvdGhlci0+bV9kb21haW4udGhyZWFkc2FmZUNvcHkoKSkKICAgICAsIG1fcG9ydChv
dGhlci0+bV9wb3J0KQorICAgICwgbV9zYW5kYm94RmxhZ3Mob3RoZXItPm1fc2FuZGJveEZsYWdz
KQogICAgICwgbV9ub0FjY2VzcyhvdGhlci0+bV9ub0FjY2VzcykKICAgICAsIG1fdW5pdmVyc2Fs
QWNjZXNzKG90aGVyLT5tX3VuaXZlcnNhbEFjY2VzcykKICAgICAsIG1fZG9tYWluV2FzU2V0SW5E
T00ob3RoZXItPm1fZG9tYWluV2FzU2V0SW5ET00pCkBAIC0xNjIsNyArMTY0LDcgQEAgYm9vbCBT
ZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNzKGNvbnN0IFNlYwogICAgIGlmIChtX3VuaXZlcnNhbEFj
Y2VzcykKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAobV9ub0FjY2VzcyB8fCBvdGhl
ci0+bV9ub0FjY2VzcykKKyAgICBpZiAobV9ub0FjY2VzcyB8fCBvdGhlci0+bV9ub0FjY2VzcyB8
fCBpc1NhbmRib3hlZChTYW5kYm94T3JpZ2luKSB8fCBvdGhlci0+aXNTYW5kYm94ZWQoU2FuZGJv
eE9yaWdpbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIEhlcmUgYXJlIHR3byBj
YXNlcyB3aGVyZSB3ZSBzaG91bGQgcGVybWl0IGFjY2VzczoKQEAgLTIwMyw3ICsyMDUsNyBAQCBi
b29sIFNlY3VyaXR5T3JpZ2luOjpjYW5SZXF1ZXN0KGNvbnN0IEtVCiAgICAgaWYgKG1fdW5pdmVy
c2FsQWNjZXNzKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChtX25vQWNjZXNzKQor
ICAgIGlmIChtX25vQWNjZXNzIHx8IGlzU2FuZGJveGVkKFNhbmRib3hPcmlnaW4pKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRhcmdldE9yaWdp
biA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKTsKQEAgLTI4OSw3ICsyOTEsNyBAQCBTdHJp
bmcgU2VjdXJpdHlPcmlnaW46OnRvU3RyaW5nKCkgY29uc3QKICAgICBpZiAoaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gIm51bGwiOwogCi0gICAgaWYgKG1fbm9BY2Nlc3MpCisgICAgaWYgKG1f
bm9BY2Nlc3MgfHwgaXNTYW5kYm94ZWQoU2FuZGJveE9yaWdpbikpCiAgICAgICAgIHJldHVybiAi
bnVsbCI7CiAKICAgICBpZiAobV9wcm90b2NvbCA9PSAiZmlsZSIpCkBAIC0zODMsNiArMzg1LDkg
QEAgYm9vbCBTZWN1cml0eU9yaWdpbjo6aXNTYW1lU2NoZW1lSG9zdFBvcgogICAgIGlmIChtX3Bv
cnQgIT0gb3RoZXItPm1fcG9ydCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgaWYgKGlz
U2FuZGJveGVkKFNhbmRib3hPcmlnaW4pIHx8IG90aGVyLT5pc1NhbmRib3hlZChTYW5kYm94T3Jp
Z2luKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5k
ZXg6IFdlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGFnZS9TZWN1cml0eU9yaWdpbi5oCShyZXZpc2lvbiA1MDc5MykKKysrIFdlYkNvcmUvcGFnZS9T
ZWN1cml0eU9yaWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCwxOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRG9jdW1lbnQ7CiAgICAgY2xhc3MgS1VSTDsKICAgICAK
KyAgICBlbnVtIFNhbmRib3hGbGFnIHsKKyAgICAgICAgU2FuZGJveE5vbmUgPSAwLAorICAgICAg
ICBTYW5kYm94TmF2aWdhdGlvbiA9IDEsCisgICAgICAgIFNhbmRib3hQbHVnaW5zID0gMSA8PCAx
LAorICAgICAgICBTYW5kYm94T3JpZ2luID0gMSA8PCAyLAorICAgICAgICBTYW5kYm94Rm9ybXMg
PSAxIDw8IDMsCisgICAgICAgIFNhbmRib3hTY3JpcHRzID0gMSA8PCA0LAorICAgICAgICBTYW5k
Ym94QWxsID0gLTEgICAgIC8vIGFsbCBvbmVzCisgICAgfTsKKworICAgIHR5cGVkZWYgdW5zaWdu
ZWQgU2FuZGJveEZsYWdzOworCiAgICAgY2xhc3MgU2VjdXJpdHlPcmlnaW4gOiBwdWJsaWMgVGhy
ZWFkU2FmZVNoYXJlZDxTZWN1cml0eU9yaWdpbj4gewogICAgIHB1YmxpYzoKICAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZp
ZXIoY29uc3QgU3RyaW5nJik7CkBAIC0xMTAsNiArMTIyLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgLy8gV0FSTklORzogVGhpcyBpcyBhbiBleHRyZW1lbHkgcG93ZXJmdWwgYWJp
bGl0eS4gIFVzZSB3aXRoIGNhdXRpb24hCiAgICAgICAgIHZvaWQgZ3JhbnRVbml2ZXJzYWxBY2Nl
c3MoKTsKIAorICAgICAgICAvLyBTYW5kYm94aW5nIHN0YXR1cywgY29waWVkIGZyb20gdGhlIGRv
Y3VtZW50J3Mgb3duZXJFbGVtZW50CisgICAgICAgIHZvaWQgc2V0U2FuZGJveEZsYWdzKFNhbmRi
b3hGbGFncyBmbGFncykgeyBtX3NhbmRib3hGbGFncyA9IGZsYWdzOyB9CisgICAgICAgIGJvb2wg
aXNTYW5kYm94ZWQoU2FuZGJveEZsYWdzIG1hc2spIGNvbnN0IHsgcmV0dXJuIG1fc2FuZGJveEZs
YWdzICYgbWFzazsgfQorCiAgICAgICAgIGJvb2wgaXNTZWN1cmVUcmFuc2l0aW9uVG8oY29uc3Qg
S1VSTCYpIGNvbnN0OwogCiAgICAgICAgIC8vIFRoZSBsb2NhbCBTZWN1cml0eU9yaWdpbiBpcyB0
aGUgbW9zdCBwcml2aWxlZ2VkIFNlY3VyaXR5T3JpZ2luLgpAQCAtMTc1LDYgKzE5MSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU3RyaW5nIG1faG9zdDsKICAgICAgICAgU3RyaW5n
IG1fZG9tYWluOwogICAgICAgICB1bnNpZ25lZCBzaG9ydCBtX3BvcnQ7CisgICAgICAgIFNhbmRi
b3hGbGFncyBtX3NhbmRib3hGbGFnczsKICAgICAgICAgYm9vbCBtX25vQWNjZXNzOwogICAgICAg
ICBib29sIG1fdW5pdmVyc2FsQWNjZXNzOwogICAgICAgICBib29sIG1fZG9tYWluV2FzU2V0SW5E
T007CkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUcmFja2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUcmFja2VyLmNwcAkocmV2aXNpb24gNTA3OTMp
CisrKyBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUcmFja2VyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTI5LDYgKzEyOSwxMCBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6Y2FuRXN0YWJsaXNoRGF0
YWJhCiAKICAgICBTZWN1cml0eU9yaWdpbiogb3JpZ2luID0gZG9jdW1lbnQtPnNlY3VyaXR5T3Jp
Z2luKCk7CiAKKyAgICAvLyBEaXNhYmxlIHRoZSB1c2FnZSBvZiB0aGUgZGF0YWJhc2UgaWYgdGhl
IHNhbmRib3hlZCBvcmlnaW4gYnJvd3NpbmcgY29udGV4dCBmbGFncyB0YWtlcyBlZmZlY3QKKyAg
ICBpZiAob3JpZ2luLT5pc1NhbmRib3hlZChTYW5kYm94T3JpZ2luKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCiAgICAgLy8gU2luY2Ugd2UncmUgaW1taW5lbnRseSBvcGVuaW5nIGEgZGF0YWJh
c2Ugd2l0aGluIHRoaXMgRG9jdW1lbnQncyBvcmlnaW4sIG1ha2Ugc3VyZSB0aGlzIG9yaWdpbiBp
cyBiZWluZyB0cmFja2VkIGJ5IHRoZSBRdW90YVRyYWNrZXIKICAgICAvLyBieSBmZXRjaGluZyBp
dCdzIGN1cnJlbnQgdXNhZ2Ugbm93CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIHVzYWdlID0gdXNh
Z2VGb3JPcmlnaW4ob3JpZ2luKTsKSW5kZXg6IFdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hh
bm5lbC5jcHAJKHJldmlzaW9uIDUwNzkzKQorKysgV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tl
dENoYW5uZWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjcsOCArMTY3LDEwIEBAIHZvaWQgV2Vi
U29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2ZURhdGEoU28KICAgICAgICAgICAgIGlmICghbV9oYW5k
c2hha2Uuc2VydmVyU2V0Q29va2llKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgaWYg
KG1fY29udGV4dC0+aXNEb2N1bWVudCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIERvY3VtZW50
KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9jb250ZXh0KTsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKGNvb2tpZXNFbmFibGVkKGRvY3VtZW50KSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGRvY3VtZW50LT5zZXRDb29raWUobV9oYW5kc2hha2Uuc2VydmVyU2V0Q29va2ll
KCkpOworICAgICAgICAgICAgICAgICAgICBpZiAoY29va2llc0VuYWJsZWQoZG9jdW1lbnQpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsgICAvLyBFeGNl
cHRpb24gKGZvciBzYW5kYm94ZWQgZG9jdW1lbnRzKSBpZ25vcmVkCisgICAgICAgICAgICAgICAg
ICAgICAgICBkb2N1bWVudC0+c2V0Q29va2llKG1faGFuZHNoYWtlLnNlcnZlclNldENvb2tpZSgp
LCBlYyk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAvLyBGSVhNRTogaGFuZGxlIHNldC1jb29raWUyLgpJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gNTA3OTYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSw3MSBAQAorMjAwOS0xMS0xMSAgUGF0cmlrIFBlcnNzb24gIDxwYXRyaWsu
ai5wZXJzc29uQGVyaWNzc29uLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgSFRNTDUncyBzYW5kYm94IGF0dHJpYnV0ZSBmb3Ig
aWZyYW1lcworICAgICAgICBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS90ZXh0LWxldmVsLXNl
bWFudGljcy5odG1sI2F0dHItaWZyYW1lLXNhbmRib3gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjg4CisKKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9y
ZXNvdXJjZXMvbm9uLXNhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUt
cGFyc2luZy1hbGxvd2VkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291
cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWRpc2FsbG93ZWQuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUt
Zm9ybS1hbGxvd2VkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNl
cy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tZGlzYWxsb3dlZC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0ZWQuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUt
bmF2aWdhdGlvbi1jaGlsZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNv
dXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLW5hdmlnYXRlZC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0
aW9uLXBhcmVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMv
c2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXNvdXJjZS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdl
dGxpbmsuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRi
b3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtYXBw
bGV0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94
ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtZW1iZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1vYmplY3Qu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1p
ZnJhbWUtc2NyaXB0LWR5bmFtaWMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMv
c2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmcu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1mb3Jt
cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1p
ZnJhbWUtZm9ybXMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJveGVk
LWlmcmFtZS1uYXZpZ2F0aW9uLWFsbG93ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tYWxsb3dlZC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24t
cGFyZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJv
eGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXBhcmVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdh
dGlvbi10YXJnZXRsaW5rLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NhbmRi
b3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29w
ZW4uaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1w
bHVnaW5zLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJv
eGVkLWlmcmFtZS1wbHVnaW5zLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Nh
bmRib3hlZC1pZnJhbWUtc2NyaXB0aW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1zY3JpcHRpbmcuaHRtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1kb2N1
bWVudC1jb29raWUtcmVhZC1kZW5pZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9zZWN1cml0eS9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1tb2RpZnktc2VsZi5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy94c3MtREVOSUVE
LXNhbmRib3hlZC1pZnJhbWUtYXR0YWNrZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLWRvY3VtZW50LWNvb2tpZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvc2FuZGJveGVkLWlmcmFt
ZS1kb2N1bWVudC1jb29raWUuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1
cml0eS9zYW5kYm94ZWQtaWZyYW1lLW1vZGlmeS1zZWxmLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLW1vZGlmeS1zZWxm
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC1z
YW5kYm94ZWQtaWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9zZWN1cml0eS94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQt
aWZyYW1lLWFsbG93LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRy
b2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJh
bWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJh
bWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmll
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291
cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93LWlmcmFtZS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nl
c3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93LmNnaTogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJv
eGVkLWlmcmFtZS1kZW5pZWQtaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJh
bWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQtaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRi
b3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQuY2dpOiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5k
Ym94ZWQtaWZyYW1lLWRlbmllZC5jZ2k6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvZG9tc3Rv
cmFnZS9sb2NhbHN0b3JhZ2UvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWlmcmFt
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdl
L3NhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
c3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2RvbXN0b3JhZ2Uvc2Vzc2lvbnN0b3JhZ2Uv
cmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBzdG9yYWdlL2RvbXN0b3JhZ2Uvc2Vzc2lvbnN0b3JhZ2Uvc2FuZGJveGVkLWlmcmFt
ZS1kZW5pZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2RvbXN0b3Jh
Z2Uvc2Vzc2lvbnN0b3JhZ2Uvc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQuaHRtbDogQWRkZWQuCisK
IDIwMDktMTEtMTEgIFl1em8gRnVqaXNoaW1hICA8eXV6b0Bnb29nbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERhdmlkIExldmluLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMv
c2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUt
cGFyc2luZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACitUaGlzIHRlc3QgY2FzZSB2ZXJpZmllcyB0aGUgcGFy
c2luZyBvZiB0aGUgaWZyYW1lIHNhbmRib3ggYXR0cmlidXRlLiBUd28gc2V0cyBvZiBpZnJhbWVz
IGFyZSB1c2VkOiBvbmUgd2hlcmUgc2NyaXB0aW5nIGlzIGFsbG93ZWQsIGFuZCBhbm90aGVyIG9u
ZSB3aGVyZSBpdCBpcyBkaXNhbGxvd2VkLiBUaGUgdGVzdCB2ZXJpZmllcyB0aGF0IHRoZSBhbGxv
d2VkIGZyYW1lcyBleGVjdXRlIHNjcmlwdHMgKGJ1dCBvdGhlciBzYW5kYm94ZWQgcHJvcGVydGll
cyBzdGlsbCBhcHBseSAtLSBzcGVjaWZpY2FsbHksIGZvcm1zIGFyZSBkaXNhYmxlZCksIGFuZCB0
aGUgZGlzYWxsb3dlZCBvbmVzIGRvIG5vdC4gSWYgc3VjY2Vzc2Z1bCB0aGUgdGVzdCBwcmludHMg
IlBBU1MiLgorCisgICAgICAgICAgICAgICAgICAKK1BBU1MKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmcuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0
ZS1wYXJzaW5nLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9z
YW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTY1IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworCit2YXIgZmFpbGVkID0gZmFsc2U7Cit2YXIgZnJhbWVzID0gMDsgICAgICAgICAv
KiBudW1iZXIgb2YgYWxsb3dlZCBmcmFtZXMgdGhhdCBjYWxsZWQgYmFjayAqLworCitmdW5jdGlv
biBmYWlsKG1lc3NhZ2UpCit7CisgICAgc2V0U3RhdHVzKCJGQUlMOiAiICsgbWVzc2FnZSk7Cisg
ICAgZmFpbGVkID0gdHJ1ZTsKK30KKworZnVuY3Rpb24gc2V0U3RhdHVzKHN0YXR1cykKK3sKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdFN0YXR1cyIpLmlubmVySFRNTCA9IHN0YXR1
czsKK30KKworZnVuY3Rpb24gYWxsb3dlZENhbGxGcm9tU2FuZGJveCgpCit7CisgICAgKytmcmFt
ZXM7Cit9CisKK2Z1bmN0aW9uIGRpc2FsbG93ZWRDYWxsRnJvbVNhbmRib3goKQoreworICAgIGZh
aWwoImRpc2FsbG93ZWQgc2NyaXB0IGV4ZWN1dGVkIik7Cit9CisKK2Z1bmN0aW9uIGRpc2FsbG93
ZWRGb3JtU3VibWl0dGVkKCkKK3sKKyAgICBmYWlsKCJzYW5kYm94aW5nIGZhaWxlZDogZm9ybSBz
dWJtaXR0ZWQgaW4gc2FuZGJveGVkIGZyYW1lIik7Cit9CisKK3dpbmRvdy5vbmxvYWQgPSBmdW5j
dGlvbigpCit7CisgICAgaWYgKGZyYW1lcyA9PSA1ICYmICFmYWlsZWQpCisgICAgICAgIHNldFN0
YXR1cygiUEFTUyIpOworICAgIGVsc2UgaWYgKCFmYWlsZWQpCisgICAgICAgIGZhaWwoInNjcmlw
dGluZyBkaXNhYmxlZCBpbiBvbmUgb3IgbW9yZSBmcmFtZXMgd2hlcmUgaXQgc2hvdWxkIGJlIGVu
YWJsZWQiKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorCisgICAgPHA+VGhp
cyB0ZXN0IGNhc2UgdmVyaWZpZXMgdGhlIHBhcnNpbmcgb2YgdGhlIGlmcmFtZSBzYW5kYm94IGF0
dHJpYnV0ZS4gVHdvIHNldHMgb2YgaWZyYW1lcworICAgIGFyZSB1c2VkOiBvbmUgd2hlcmUgc2Ny
aXB0aW5nIGlzIGFsbG93ZWQsIGFuZCBhbm90aGVyIG9uZSB3aGVyZSBpdCBpcyBkaXNhbGxvd2Vk
LiBUaGUgdGVzdAorICAgIHZlcmlmaWVzIHRoYXQgdGhlIGFsbG93ZWQgZnJhbWVzIGV4ZWN1dGUg
c2NyaXB0cyAoYnV0IG90aGVyIHNhbmRib3hlZCBwcm9wZXJ0aWVzIHN0aWxsCisgICAgYXBwbHkg
LS0gc3BlY2lmaWNhbGx5LCBmb3JtcyBhcmUgZGlzYWJsZWQpLCBhbmQgdGhlIGRpc2FsbG93ZWQg
b25lcyBkbyBub3QuIElmIHN1Y2Nlc3NmdWwKKyAgICB0aGUgdGVzdCBwcmludHMgJnF1b3Q7UEFT
UyZxdW90Oy48L3A+CisgICAgCisgICAgPCEtLSBpZnJhbWVzIHdoZXJlIHNjcmlwdCBleGVjdXRp
b24gaXMgYWxsb3dlZCwgYnV0IG9yaWdpbiBpcyBub3Qgc2hhcmVkIC0tPgorCisgICAgPCEtLSBw
bGFpbiwgcHJvcGVyIGF0dHJpYnV0ZSB2YWx1ZSAtLT4KKyAgICA8aWZyYW1lIHNhbmRib3g9ImFs
bG93LXNjcmlwdHMiCisgICAgICAgICAgICBuYW1lPSJmMSIKKyAgICAgICAgICAgIHNyYz0icmVz
b3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmctYWxsb3dlZC5odG1sIj4K
KyAgICA8L2lmcmFtZT4KKyAgICAKKyAgICA8IS0tIGxpbmUgZmVlZCBjaGFyYWN0ZXJzIGJlZm9y
ZSBhbmQgYWZ0ZXIgYXR0cmlidXRlIHZhbHVlIC0tPgorICAgIDxpZnJhbWUgc2FuZGJveD0iCisK
K2FsbG93LXNjcmlwdHMKKworIgorICAgICAgICAgICAgbmFtZT0iZjIiCisgICAgICAgICAgICBz
cmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWFsbG93ZWQu
aHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8IS0tIHJpZGljdWxvdXNseSBsb25nLCBpbnZh
bGlkIHRleHQgKHdlbGwsIGZvciB0aGVzZSBwdXJwb3NlcyBhdCBsZWFzdCkKKyAgICAgICAgIHdp
dGggbm9uLUFTQ0lJIGNoYXJhY3RlcnMgc3Vycm91bmRpbmcgYXR0cmlidXRlIHZhbHVlIC0tPgor
ICAgIDxpZnJhbWUgc2FuZGJveD0iCisgICAgICAgIEbDtnIgdmFyIHZlcnMsIGphZyBnw7ZyLAor
ICAgICAgICBMb3ZhciBkdSBlbiBreXNzIG1pZyBnaXZhOworICAgICAgICBBcmtldCBmdWxsdCBq
YWcgYm9yZGUgc2tyaXZhLAorICAgICAgICBNaW5kcmUgaGFyIGphZyBza3Jpdml0IGbDtnIuCisg
ICAgICAgIE1lbiBtYW4gbcOlc3RlIGjDpWxsYSBtw6V0dGEsCisgICAgICAgIEphZyBtZWQgdmVy
cywgbWVkIGt5c3NhciBkdS4KKyAgICAgICAgTMOldCBtaWcgcsOka25hOiBEw6RyIMOkciBzanUh
CisgICAgICAgIEVuIGTDpHJ0aWxsIGRldCBnw7ZyIG1pZyDDpXR0YS4KKworICAgICAgICBOdW1y
byDDpXR0YSDDpHIgZmF0YWwsCisgICAgICAgIEdyZWtsYW5kcyBzw6VuZ23DtnIgdm9ybyBuaW8s
CisgICAgICAgIE9jaCBlbiBzdmVuc2sgZMOkcnRpbGwgZ8O2ciB0aW8uIOKAlAorICAgICAgICBF
bHZhIHZhciBhcG9zdGVsbnMgdGFsLAorICAgICAgICBUeSBqYWcgcsOka25hciBpY2tlIEp1ZGFz
LAorICAgICAgICBIb25vbSwgc29tIGkgdsOkbm5lcnMgbGFnCisgICAgICAgIEt5c3N0ZSBmYWxz
a3Q7IGRldCBnw7ZyIGVqIGphZywKKyAgICAgICAgSGVsc3QgbsOkciB2YWNrcmEgbMOkcHBhciBi
anVkYXMuCisKKyAgICAgICAgSHVydSBzdMOlciBtaW4gcsOka25pbmcgaMOkcj8KKyAgICAgICAg
QWRlcnRvbjsgZGV0IMOkciBkb2NrIG7DpWdvdC4KKyAgICAgICAgTml0dG9uIOKAlCByaW1tZXQg
Z8O2ciBiZXN2w6RyLAorICAgICAgICBEw6RyZsO2cmUgamFnIGZ5bGxlciB0am9nZXQuCisgICAg
ICAgIFN0cm9mZW4gw6RyIGVqIGZ1bGwgc29tIGphZywKKyAgICAgICAgSW4gaSBoYW1uZW4gdmls
bCBqYWcgc3R5cmEsCisgICAgICAgIETDpHJmw7ZyZSB0aWxsIGdvZG8gdGFnCisgICAgICAgIERl
bm5hIGfDpW5nIG1lZCB0anVnb2Z5cmEuCisgICAgICAgIAorICAgICAgICAnS3lzc2FybmEnICgn
VGhlIGtpc3NlcycpLCBFc2FpYXMgVGVnbsOpciwgMTc4Mi0xODQ2CisKKyAgICBhbGxvdy1zY3Jp
cHRzCisgICAgCisgICAgICAgIGludCBtYWluKHZvaWQpCisgICAgICAgIHsKKyAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgfSIKKyAgICAgICAgICAgIG5hbWU9ImYzIgorICAgICAgICAgICAg
c3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1hbGxvd2Vk
Lmh0bWwiPgorICAgIDwvaWZyYW1lPgorCisgICAgPCEtLSB0YWIgY2hhcmFjdGVycyBiZWZvcmUg
YW5kIGFmdGVyIGF0dHJpYnV0ZSB2YWx1ZSAtLT4KKyAgICA8aWZyYW1lIHNhbmRib3g9IgkJYWxs
b3ctc2NyaXB0cwkJIgorICAgICAgICAgICAgbmFtZT0iZjQiCisgICAgICAgICAgICBzcmM9InJl
c291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWFsbG93ZWQuaHRtbCI+
CisgICAgPC9pZnJhbWU+CisKKyAgICA8IS0tIG1peGVkIGNhc2UgLS0+CisgICAgPGlmcmFtZSBz
YW5kYm94PSJBbExvVy1zQ3JJcFRzIgorICAgICAgICAgICAgbmFtZT0iZjUiCisgICAgICAgICAg
ICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWFsbG93
ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8IS0tIGlmcmFtZXMgd2hlcmUgc2NyaXB0
IGV4ZWN1dGlvbiBpcyBkaXNhbGxvd2VkIC0tPgorCisgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxv
d3NjcmlwdHMiCisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0
dHJpYnV0ZS1wYXJzaW5nLWRpc2FsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8
aWZyYW1lIHNhbmRib3g9ImFsbG93cy1jcmlwdHMiCisgICAgICAgICAgICBzcmM9InJlc291cmNl
cy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWRpc2FsbG93ZWQuaHRtbCI+Cisg
ICAgPC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNhbmRib3g9Ii1hbGxvdy1zY3JpcHRzIgorICAg
ICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2lu
Zy1kaXNhbGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorCisgICAgPGlmcmFtZSBzYW5kYm94
PSJhbGxvd19zY3JpcHRzIgorICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlm
cmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1kaXNhbGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgor
CisgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvd1NjcmlwdHMiCisgICAgICAgICAgICBzcmM9InJl
c291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWRpc2FsbG93ZWQuaHRt
bCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNhbmRib3g9ImFhbGxvdy1zY3JpcHRz
IgorICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUt
cGFyc2luZy1kaXNhbGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorCisgICAgPGlmcmFtZSBz
YW5kYm94PSJhbGxvdy1zY3JpcHRzcyIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRi
b3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmctZGlzYWxsb3dlZC5odG1sIj4KKyAgICA8L2lm
cmFtZT4KKworICAgIDxpZnJhbWUgc2FuZGJveAorICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMv
c2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1kaXNhbGxvd2VkLmh0bWwiPgorICAg
IDwvaWZyYW1lPgorCisgICAgPHAgaWQ9J3Rlc3RTdGF0dXMnPkZBSUw6IFNjcmlwdCBkaWRuJ3Qg
cnVuPC9wPgorCis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1l
cy9zYW5kYm94ZWQtaWZyYW1lLWZvcm1zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm1zLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUt
Zm9ybXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKK1RoaXMgdGVz
dCBydW5zIGZpdmUgSUZyYW1lcyB3aXRoIGZvcm1zIGFsbG93ZWQsIG9uZSBJRnJhbWUgd2l0aCBm
b3JtcyBkaXNhbGxvd2VkLCB0aGVuIGZpdmUgbW9yZSBJRnJhbWVzIHdpdGggZm9ybXMgYWxsb3dl
ZC4gSWYgdGVuIGZvcm0gc3VibWlzc2lvbnMgYXJlIG1hZGUsIGFuZCB0aGUgZGlzYWxsb3dlZCBz
dWJtaXNzaW9uIGlzIG5vdCBvbmUgb2YgdGhlbSwgd2UgY29uc2lkZXIgdGhlIHRlc3QgdG8gaGF2
ZSBwYXNzZWQuIFRoaXMgdGVzdCB3aWxsIHByaW50ICJQQVNTIiBvbiBzdWNjZXNzLgorCisgICAg
ICAgICAgICAgICAgICAgIAorUEFTUwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2Fu
ZGJveGVkLWlmcmFtZS1mb3Jtcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtZm9ybXMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtZm9ybXMuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw5NiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisKK2lmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7Cit9CisKK3ZhciBzdWJtaXNzaW9uQ291bnQgICAgICA9IDA7Cit2YXIgZGlzYWxs
b3dlZFN1Ym1pc3Npb24gPSBmYWxzZTsKKworZnVuY3Rpb24gYWxsb3dlZEZvcm1TdWJtaXR0ZWQo
KQoreworICAgICsrc3VibWlzc2lvbkNvdW50OworCisgICAgaWYgKHN1Ym1pc3Npb25Db3VudCA9
PSAxMCkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdF9zdGF0dXMiKS5p
bm5lckhUTUwgPSAoZGlzYWxsb3dlZFN1Ym1pc3Npb24gPyAiRkFJTCIgOiAiUEFTUyIpOworICAg
ICAgCisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAg
ICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIH0KK30KKwor
ZnVuY3Rpb24gZGlzYWxsb3dlZEZvcm1TdWJtaXR0ZWQoKQoreworICAgIGRpc2FsbG93ZWRTdWJt
aXNzaW9uID0gdHJ1ZTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorCisgICAg
PHA+VGhpcyB0ZXN0IHJ1bnMgZml2ZSBJRnJhbWVzIHdpdGggZm9ybXMgYWxsb3dlZCwgb25lIElG
cmFtZSB3aXRoIGZvcm1zCisgICAgZGlzYWxsb3dlZCwgdGhlbiBmaXZlIG1vcmUgSUZyYW1lcyB3
aXRoIGZvcm1zIGFsbG93ZWQuIElmIHRlbiBmb3JtCisgICAgc3VibWlzc2lvbnMgYXJlIG1hZGUs
IGFuZCB0aGUgZGlzYWxsb3dlZCBzdWJtaXNzaW9uIGlzIG5vdCBvbmUgb2YgdGhlbSwKKyAgICB3
ZSBjb25zaWRlciB0aGUgdGVzdCB0byBoYXZlIHBhc3NlZC4gVGhpcyB0ZXN0IHdpbGwgcHJpbnQK
KyAgICAmcXVvdDtQQVNTJnF1b3Q7IG9uIHN1Y2Nlc3MuPC9wPgorCisgICAgPCEtLSBmaXZlIElG
cmFtZXMgd2l0aCBmb3JtcyBhbGxvd2VkIC0tPgorCisgICAgPGlmcmFtZSBzdHlsZT0id2lkdGg6
IDYwcHg7IGhlaWdodDogNjBweDsiCisgICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxs
b3ctZm9ybXMiCisgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1h
bGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorICAgIDxpZnJhbWUgc3R5bGU9IndpZHRoOiA2
MHB4OyBoZWlnaHQ6IDYwcHg7IgorICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93
LWZvcm1zIgorICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tYWxs
b3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIHN0eWxlPSJ3aWR0aDogNjBw
eDsgaGVpZ2h0OiA2MHB4OyIKKyAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1m
b3JtcyIKKyAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWFsbG93
ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBzdHlsZT0id2lkdGg6IDYwcHg7
IGhlaWdodDogNjBweDsiCisgICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9y
bXMiCisgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1hbGxvd2Vk
Lmh0bWwiPgorICAgIDwvaWZyYW1lPgorICAgIDxpZnJhbWUgc3R5bGU9IndpZHRoOiA2MHB4OyBo
ZWlnaHQ6IDYwcHg7IgorICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1z
IgorICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tYWxsb3dlZC5o
dG1sIj4KKyAgICA8L2lmcmFtZT4KKworICAgIDwhLS0gb25lIElGcmFtZSB3aXRoIGZvcm1zIGRp
c2FsbG93ZWQgLS0+CisKKyAgICA8aWZyYW1lIHN0eWxlPSJ3aWR0aDogNjBweDsgaGVpZ2h0OiA2
MHB4OyIKKyAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyIKKyAgICAgICAgc3JjPSJyZXNv
dXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWRpc2FsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJh
bWU+CisKKyAgICA8IS0tIGZpdmUgbW9yZSBJRnJhbWVzIHdpdGggZm9ybXMgYWxsb3dlZCAtLT4K
KworICAgIDxpZnJhbWUgc3R5bGU9IndpZHRoOiA2MHB4OyBoZWlnaHQ6IDYwcHg7IgorICAgICAg
ICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1zIgorICAgICAgICBzcmM9InJlc291
cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4K
KyAgICA8aWZyYW1lIHN0eWxlPSJ3aWR0aDogNjBweDsgaGVpZ2h0OiA2MHB4OyIKKyAgICAgICAg
c2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyIKKyAgICAgICAgc3JjPSJyZXNvdXJj
ZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWFsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+Cisg
ICAgPGlmcmFtZSBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsiCisgICAgICAgIHNh
bmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMiCisgICAgICAgIHNyYz0icmVzb3VyY2Vz
L3NhbmRib3hlZC1pZnJhbWUtZm9ybS1hbGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorICAg
IDxpZnJhbWUgc3R5bGU9IndpZHRoOiA2MHB4OyBoZWlnaHQ6IDYwcHg7IgorICAgICAgICBzYW5k
Ym94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1zIgorICAgICAgICBzcmM9InJlc291cmNlcy9z
YW5kYm94ZWQtaWZyYW1lLWZvcm0tYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKyAgICA8
aWZyYW1lIHN0eWxlPSJ3aWR0aDogNjBweDsgaGVpZ2h0OiA2MHB4OyIKKyAgICAgICAgc2FuZGJv
eD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyIKKyAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2Fu
ZGJveGVkLWlmcmFtZS1mb3JtLWFsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisgICAgCisg
ICAgPHAgaWQ9J3Rlc3Rfc3RhdHVzJz5GQUlMOiBTY3JpcHQgZGlkbid0IHJ1bjwvcD4KKzwvYm9k
eT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJh
bWUtbmF2aWdhdGlvbi1hbGxvd2VkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tYWxsb3dlZC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94
ZWQtaWZyYW1lLW5hdmlnYXRpb24tYWxsb3dlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTIgQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGEgc2FuZGJveGVkIGlmcmFt
ZSBDQU4gbmF2aWdhdGUgYm90aCBpdHNlbGYgYW5kIGEgY2hpbGQgaW4gdGhlIGZyYW1lIHRyZWUu
IEl0IGFsc28gdmVyaWZpZXMgdGhhdCB0aGUgc2FuZGJveCBhdHRyaWJ1dGUgcmVtYWlucyBpbnRh
Y3QgYWZ0ZXIgYSBmcmFtZSBoYXMgYmVlbiBuYXZpZ2F0ZWQsIGFuZCB0aGF0IHNhbmRib3ggYXR0
cmlidXRlcyBhcmUgcHJvcGFnYXRlZCB0aHJvdWdoIHRoZSBmcmFtZSBoaWVyYXJjaHkuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIChzZWxmLnNhbmRib3hlZEZyYW1lLmZy
YW1lV2l0aFBsdWdpbi5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGx1Z2luJykuZGVzdHJveVN0
cmVhbSkgPT0gdW5kZWZpbmVkIGlzIHRydWUKK1BBU1MgKHNlbGYuZnJhbWVXaXRoUGx1Z2luLmRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbHVnaW4nKS5kZXN0cm95U3RyZWFtKSAhPSB1bmRlZmlu
ZWQgaXMgdHJ1ZQorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJveGVkRnJhbWVJ
ZCcpLnNhbmRib3ggaXMgJ2FsbG93LXNjcmlwdHMgYWxsb3ctc2FtZS1vcmlnaW4nCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKyAgCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tYWxsb3dlZC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJh
bWUtbmF2aWdhdGlvbi1hbGxvd2VkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tYWxsb3dlZC5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDYwIEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlw
dCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgd2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICB3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBjaGlsZEZyYW1l
V2FzTmF2aWdhdGVkKCkKK3sKKyAgICAvLyBDaGVjayB0aGF0IHRoZSBjaGlsZCBmcmFtZSB3YXMg
dW5hYmxlIHRvIGxvYWQgYSBwbHVnaW4sIHNpbmNlIGl0cyBwYXJlbnQgaXMgc2FuZGJveGVkLgor
ICAgIHNob3VsZEJlVHJ1ZSgiKHNlbGYuc2FuZGJveGVkRnJhbWUuZnJhbWVXaXRoUGx1Z2luLmRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbHVnaW4nKS5kZXN0cm95U3RyZWFtKSA9PSB1bmRlZmlu
ZWQiKTsKKyAgICAKKyAgICAvLyBDaGVjayBhIG5vbi1zYW5kYm94ZWQgZnJhbWUgYXMgd2VsbCwg
dG8gZW5zdXJlIHRoYXQgdGhlIHBsdWdpbiBpcyBkaXNhYmxlZCBieSBzYW5kYm94aW5nCisgICAg
Ly8gYW5kIG5vdCBzb21lIG90aGVyIGZhaWx1cmUKKyAgICBzaG91bGRCZVRydWUoIihzZWxmLmZy
YW1lV2l0aFBsdWdpbi5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGx1Z2luJykuZGVzdHJveVN0
cmVhbSkgIT0gdW5kZWZpbmVkIik7CisKKyAgICAvLyBXaGVuIHRoZSBjaGlsZCBmcmFtZSAoZ3Jh
bmRjaGlsZCBvZiB0aGUgbWFpbiB3aW5kb3cpIGhhcyBiZWVuIG5hdmlnYXRlZCwKKyAgICAvLyBt
YWtlIHRoZSBzYW5kYm94ZWQgZnJhbWUgbmF2aWdhdGUgaXRzZWxmCisgICAgc2VsZi5zYW5kYm94
ZWRGcmFtZS5sb2NhdGlvbi5hc3NpZ24oImphdmFzY3JpcHQ6IHRvcC5zYW5kYm94V2FzTmF2aWdh
dGVkKCk7Iik7Cit9CisKK2Z1bmN0aW9uIHNhbmRib3hXYXNOYXZpZ2F0ZWQoKQoreworICAgIHNo
b3VsZEJlKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJveGVkRnJhbWVJZCcpLnNhbmRi
b3giLCAiJ2FsbG93LXNjcmlwdHMgYWxsb3ctc2FtZS1vcmlnaW4nIik7CisgICAgaXNTdWNjZXNz
ZnVsbHlQYXJzZWQoKTsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisg
ICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKKzwv
c2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKyAgICA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4K
KyAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworICAgIDxpZnJhbWUgc2FuZGJveD0iYWxs
b3ctc2NyaXB0cyBhbGxvdy1zYW1lLW9yaWdpbiIKKyAgICAgICAgICAgIG5hbWU9InNhbmRib3hl
ZEZyYW1lIgorICAgICAgICAgICAgaWQ9InNhbmRib3hlZEZyYW1lSWQiCisgICAgICAgICAgICBz
cmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tY2hpbGQuaHRtbCI+Cisg
ICAgPC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIG5hbWU9ImZyYW1lV2l0aFBsdWdpbiIKKyAgICAg
ICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1vYmpl
Y3QuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9u
KCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhIHNhbmRib3hlZCBpZnJhbWUgQ0FOIG5hdmlnYXRl
IGJvdGggaXRzZWxmIGFuZCBhIGNoaWxkIGluIHRoZSBmcmFtZSB0cmVlLiAiCisgICAgICAgICAg
ICAgICAgKyAiSXQgYWxzbyB2ZXJpZmllcyB0aGF0IHRoZSBzYW5kYm94IGF0dHJpYnV0ZSByZW1h
aW5zIGludGFjdCBhZnRlciBhIGZyYW1lIGhhcyBiZWVuIG5hdmlnYXRlZCwgIgorICAgICAgICAg
ICAgICAgICsgImFuZCB0aGF0IHNhbmRib3ggYXR0cmlidXRlcyBhcmUgcHJvcGFnYXRlZCB0aHJv
dWdoIHRoZSBmcmFtZSBoaWVyYXJjaHkuIik7CisgICAgdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50LWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZy
YW1lLW5hdmlnYXRpb24tcGFyZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAKK1RoaXMgdGVzdCB2ZXJpZmll
cyB0aGF0IGEgc2FuZGJveGVkIElGcmFtZSBjYW5ub3QgbmF2aWdhdGUgYW4gYW5jZXN0b3IgaW4g
dGhlIGZyYW1lIHRyZWUgYnkgYXNzaWduaW5nIHRoZSBsb2NhdGlvbiBhdHRyaWJ1dGUuCisKK1Ro
aXMgaXMgZG9uZSBieSBsb2FkaW5nIHRlbiBub24tc2FuZGJveGVkIElGcmFtZXMsIGFuZCBhIHNp
bmdsZSBzYW5kYm94ZWQgb25lLiBFeHBlY3QgdGVuIGZyYW1lcyB0byBiZSBuYXZpZ2F0ZWQsIGJ1
dCB0aGUgc2FuZGJveGVkIG9uZSB0byBub3QgYmUgb25lIG9mIHRoZW0uCisKK1RoaXMgdGVzdCB3
aWxsIHByaW50ICJQQVNTIiBvbiBzdWNjZXNzLgorCisgICAgICAgICAgICAgICAKK1BBU1MKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1w
YXJlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94
ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50Lmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjggQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0Pgor
CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgd2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworfQorCit2YXIgbmF2aWdhdGVkRnJhbWVzID0gMDsKKworZnVu
Y3Rpb24gY2hlY2tSZXN1bHRzKCkKK3sKKyAgICB2YXIgdGVzdFN0YXR1cyA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCd0ZXN0U3RhdHVzJyk7CisKKyAgICBpZiAoc2VsZi5uYXZpZ2F0ZWQubG9j
YXRpb24uaHJlZi5pbmRleE9mKCdwYXJlbnQuaHRtbCcpID09IC0xKQorICAgICAgICB0ZXN0U3Rh
dHVzLmlubmVySFRNTCA9ICdGQUlMOiBkaXNhbGxvd2VkIGZyYW1lIG5hdmlnYXRlZCc7CisgICAg
ZWxzZSBpZiAobmF2aWdhdGVkRnJhbWVzID09IDEwKQorICAgICAgICB0ZXN0U3RhdHVzLmlubmVy
SFRNTCA9ICdQQVNTJzsKKyAgICBlbHNlCisgICAgICAgIHRlc3RTdGF0dXMuaW5uZXJIVE1MID0g
J0ZBSUw6IGZyYW1lcyBub3QgbmF2aWdhdGVkIHByb3Blcmx5JzsKKworICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGNvdW50RnJhbWUoKQoreworICAgICsrbmF2
aWdhdGVkRnJhbWVzOworCisgICAgaWYgKG5hdmlnYXRlZEZyYW1lcyA9PSAxMCkKKyAgICAgICAg
Y2hlY2tSZXN1bHRzKCk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKworICAg
IDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGEgc2FuZGJveGVkIElGcmFtZSBjYW5ub3QgbmF2
aWdhdGUgYW4gYW5jZXN0b3IKKyAgICBpbiB0aGUgZnJhbWUgdHJlZSBieSBhc3NpZ25pbmcgdGhl
IGxvY2F0aW9uIGF0dHJpYnV0ZS48L3A+CisKKyAgICA8cD5UaGlzIGlzIGRvbmUgYnkgbG9hZGlu
ZyB0ZW4gbm9uLXNhbmRib3hlZCBJRnJhbWVzLCBhbmQgYSBzaW5nbGUKKyAgICBzYW5kYm94ZWQg
b25lLiBFeHBlY3QgdGVuIGZyYW1lcyB0byBiZSBuYXZpZ2F0ZWQsIGJ1dCB0aGUgc2FuZGJveGVk
CisgICAgb25lIHRvIDxiPm5vdDwvYj4gYmUgb25lIG9mIHRoZW0uPC9wPgorICAgIAorICAgIDxw
PlRoaXMgdGVzdCB3aWxsIHByaW50ICZxdW90O1BBU1MmcXVvdDsgb24gc3VjY2Vzcy48L3A+CisK
KyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL25vbi1zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRp
b24uaHRtbCI+PC9pZnJhbWU+CisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9ub24tc2FuZGJv
eGVkLWlmcmFtZS1uYXZpZ2F0aW9uLmh0bWwiPjwvaWZyYW1lPgorICAgIDxpZnJhbWUgc3JjPSJy
ZXNvdXJjZXMvbm9uLXNhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi5odG1sIj48L2lmcmFtZT4K
KyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL25vbi1zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRp
b24uaHRtbCI+PC9pZnJhbWU+CisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9ub24tc2FuZGJv
eGVkLWlmcmFtZS1uYXZpZ2F0aW9uLmh0bWwiPjwvaWZyYW1lPgorCisgICAgPGlmcmFtZSBuYW1l
PSduYXZpZ2F0ZWQnCisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1l
LW5hdmlnYXRpb24tcGFyZW50Lmh0bWwiCisgICAgPC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNy
Yz0icmVzb3VyY2VzL25vbi1zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24uaHRtbCI+PC9pZnJh
bWU+CisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9ub24tc2FuZGJveGVkLWlmcmFtZS1uYXZp
Z2F0aW9uLmh0bWwiPjwvaWZyYW1lPgorICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvbm9uLXNh
bmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi5odG1sIj48L2lmcmFtZT4KKyAgICA8aWZyYW1lIHNy
Yz0icmVzb3VyY2VzL25vbi1zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24uaHRtbCI+PC9pZnJh
bWU+CisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9ub24tc2FuZGJveGVkLWlmcmFtZS1uYXZp
Z2F0aW9uLmh0bWwiPjwvaWZyYW1lPgorCisgICAgPHAgaWQ9J3Rlc3RTdGF0dXMnPkZBSUw6IFNj
cmlwdCBkaWRuJ3QgcnVuPC9wPgorICAgIAorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmst
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRi
b3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRsaW5rLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlv
bi10YXJnZXRsaW5rLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACitU
aGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhIHNhbmRib3hlZCBJRnJhbWUgY2Fubm90IG9wZW4gYSBs
aW5rIGluIGFub3RoZXIgZnJhbWUgdXNpbmcgdGhlIHRhcmdldCBhdHRyaWJ1dGUgb2YgYSBsaW5r
LgorCitUaGlzIGlzIGRvbmUgYnkgbG9hZGluZyB0ZW4gbm9uLXNhbmRib3hlZCBJRnJhbWVzLCBh
bmQgYSBzaW5nbGUgc2FuZGJveGVkIG9uZS4gSW4gYWRkaXRpb24gZWFjaCBvZiB0aGVzZSBmcmFt
ZXMgaGF2ZSBhIHRhcmdldCBmcmFtZSAoc28sIDIyIGZyYW1lcyBpbiB0b3RhbCkuIEV4cGVjdCB0
ZW4gZnJhbWVzIHRvIGJlIGFibGUgdG8gb3BlbiBhIGxpbmsgaW4gdGhlaXIgY29ycmVzcG9uZGlu
ZyB0YXJnZXQgZnJhbWUsIGJ1dCB0aGUgc2FuZGJveGVkIG9uZSB0byBub3QgYmUgb25lIG9mIHRo
ZW0uCisKK1RoaXMgdGVzdCB3aWxsIHByaW50ICJQQVNTIiBvbiBzdWNjZXNzLgorCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIAorUEFTUwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9m
cmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRp
b24tdGFyZ2V0bGluay5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFt
ZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxMDkgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorCitpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgd2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworfQorCit2YXIgbmF2aWdhdGVkRnJhbWVzID0gMDsKKworZnVuY3Rpb24gY2hl
Y2tSZXN1bHRzKCkKK3sKKyAgICB2YXIgdGVzdFN0YXR1cyA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCd0ZXN0U3RhdHVzJyk7CisKKyAgICBpZiAoc2VsZi5zYW5kYm94ZWRfdGFyZ2V0LmxvY2F0
aW9uLmhyZWYuaW5kZXhPZignLmh0bWwnKSAhPSAtMSkKKyAgICAgICAgdGVzdFN0YXR1cy5pbm5l
ckhUTUwgPSAnRkFJTDogZGlzYWxsb3dlZCBmcmFtZSBuYXZpZ2F0ZWQnOworICAgIGVsc2UgaWYg
KG5hdmlnYXRlZEZyYW1lcyA9PSAxMCkKKyAgICAgICAgdGVzdFN0YXR1cy5pbm5lckhUTUwgPSAn
UEFTUyc7CisgICAgZWxzZQorICAgICAgICB0ZXN0U3RhdHVzLmlubmVySFRNTCA9ICdGQUlMOiBm
cmFtZXMgbm90IG5hdmlnYXRlZCBwcm9wZXJseSc7CisKKyAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOworfQorCitmdW5jdGlvbiBjb3VudEZyYW1lKCkKK3sKKyAgICArK25hdmlnYXRlZEZy
YW1lczsKKworICAgIGlmIChuYXZpZ2F0ZWRGcmFtZXMgPT0gMTApCisgICAgICAgIGNoZWNrUmVz
dWx0cygpOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+CisKKyAgICA8cD5UaGlz
IHRlc3QgdmVyaWZpZXMgdGhhdCBhIHNhbmRib3hlZCBJRnJhbWUgY2Fubm90IG9wZW4gYSBsaW5r
IGluCisgICAgYW5vdGhlciBmcmFtZSB1c2luZyB0aGUgPGNvZGU+dGFyZ2V0PC9jb2RlPiBhdHRy
aWJ1dGUgb2YgYSBsaW5rLjwvcD4KKworICAgIDxwPlRoaXMgaXMgZG9uZSBieSBsb2FkaW5nIHRl
biBub24tc2FuZGJveGVkIElGcmFtZXMsIGFuZCBhIHNpbmdsZQorICAgIHNhbmRib3hlZCBvbmUu
IEluIGFkZGl0aW9uIGVhY2ggb2YgdGhlc2UgZnJhbWVzIGhhdmUgYSB0YXJnZXQgZnJhbWUKKyAg
ICAoc28sIDIyIGZyYW1lcyBpbiB0b3RhbCkuIEV4cGVjdCB0ZW4gZnJhbWVzIHRvIGJlIGFibGUg
dG8gb3BlbiBhIGxpbmsKKyAgICBpbiB0aGVpciBjb3JyZXNwb25kaW5nIHRhcmdldCBmcmFtZSwg
YnV0IHRoZSBzYW5kYm94ZWQgb25lCisgICAgdG8gPGI+bm90PC9iPiBiZSBvbmUgb2YgdGhlbS48
L3A+CisgICAgCisgICAgPHA+VGhpcyB0ZXN0IHdpbGwgcHJpbnQgJnF1b3Q7UEFTUyZxdW90OyBv
biBzdWNjZXNzLjwvcD4KKworICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlm
cmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbCIKKyAgICAgICAgICAgIG5hbWU9ImYxIj4K
KyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIG5hbWU9ImYxX3RhcmdldCIgc3JjPSJhYm91dDpi
bGFuayI+PC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1p
ZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRsaW5rLmh0bWwiCisgICAgICAgICAgICBuYW1lPSJmMiI+
CisgICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBuYW1lPSJmMl90YXJnZXQiIHNyYz0iYWJvdXQ6
YmxhbmsiPjwvaWZyYW1lPgorCisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQt
aWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay5odG1sIgorICAgICAgICAgICAgbmFtZT0iZjMi
PgorICAgIDwvaWZyYW1lPgorICAgIDxpZnJhbWUgbmFtZT0iZjNfdGFyZ2V0IiBzcmM9ImFib3V0
OmJsYW5rIj48L2lmcmFtZT4KKworICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVk
LWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbCIKKyAgICAgICAgICAgIG5hbWU9ImY0
Ij4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIG5hbWU9ImY0X3RhcmdldCIgc3JjPSJhYm91
dDpibGFuayI+PC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hl
ZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRsaW5rLmh0bWwiCisgICAgICAgICAgICBuYW1lPSJm
NSI+CisgICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBuYW1lPSJmNV90YXJnZXQiIHNyYz0iYWJv
dXQ6YmxhbmsiPjwvaWZyYW1lPgorCisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94
ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay5odG1sIgorICAgICAgICAgICAgbmFtZT0i
c2FuZGJveGVkIgorICAgICAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1zYW1l
LW9yaWdpbiI+CisgICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBuYW1lPSJzYW5kYm94ZWRfdGFy
Z2V0IiBzcmM9ImFib3V0OmJsYW5rIj48L2lmcmFtZT4KKworICAgIDxpZnJhbWUgc3JjPSJyZXNv
dXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbCIKKyAgICAg
ICAgICAgIG5hbWU9ImY2Ij4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIG5hbWU9ImY2X3Rh
cmdldCIgc3JjPSJhYm91dDpibGFuayI+PC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNyYz0icmVz
b3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRsaW5rLmh0bWwiCisgICAg
ICAgICAgICBuYW1lPSJmNyI+CisgICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBuYW1lPSJmN190
YXJnZXQiIHNyYz0iYWJvdXQ6YmxhbmsiPjwvaWZyYW1lPgorCisgICAgPGlmcmFtZSBzcmM9InJl
c291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay5odG1sIgorICAg
ICAgICAgICAgbmFtZT0iZjgiPgorICAgIDwvaWZyYW1lPgorICAgIDxpZnJhbWUgbmFtZT0iZjhf
dGFyZ2V0IiBzcmM9ImFib3V0OmJsYW5rIj48L2lmcmFtZT4KKworICAgIDxpZnJhbWUgc3JjPSJy
ZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbCIKKyAg
ICAgICAgICAgIG5hbWU9ImY5Ij4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIG5hbWU9ImY5
X3RhcmdldCIgc3JjPSJhYm91dDpibGFuayI+PC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNyYz0i
cmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRsaW5rLmh0bWwiCisg
ICAgICAgICAgICBuYW1lPSJmMTAiPgorICAgIDwvaWZyYW1lPgorICAgIDxpZnJhbWUgbmFtZT0i
ZjEwX3RhcmdldCIgc3JjPSJhYm91dDpibGFuayI+PC9pZnJhbWU+CisKKyAgICA8cCBpZD0ndGVz
dFN0YXR1cyc+RkFJTDogU2NyaXB0IGRpZG4ndCBydW48L3A+Cis8L2JvZHk+Cis8L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24t
d2luZG93b3Blbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
cmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4tZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFt
ZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDYgQEAKK1ZlcmlmaWVzIHRoYXQgYSBzYW5kYm94ZWQgSUZyYW1lIGNhbm5vdCBvcGVuIG5l
dyB3aW5kb3dzIHVzaW5nIHdpbmRvdy5vcGVuKCkuIEV4cGVjdCB0ZW4gd2luZG93cyB0byBiZSBv
cGVuZWQsIGJ1dCB0aGUgc2FuZGJveGVkIElGcmFtZSBub3QgdG8gYmUgdGhlIG9wZW5lciBvZiBh
bnkgb2YgdGhlbS4KKworVGhpcyB0ZXN0IHdpbGwgcHJpbnQgIlBBU1MiIG9uIHN1Y2Nlc3MuCisK
KyAgICAgICAgICAgICAgIAorUEFTUwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2Fu
ZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4uaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24td2luZG93
b3Blbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJv
eGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw3MiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLnNldENhbk9wZW5XaW5kb3dzKHRydWUpOworfQorCit2YXIgdGVzdFN0YXR1
cyAgICAgICA9ICJGQUlMOiBub3QgY29tcGxldGVkIjsKK3ZhciB3aW5kb3dzT3BlbmVkICAgID0g
MDsKK3ZhciBtYWluV2luZG93TG9hZGVkID0gZmFsc2U7Cit2YXIgdGVzdENvbXBsZXRlZCAgICA9
IGZhbHNlOworCitmdW5jdGlvbiB1cGRhdGVTdGF0dXMobG9hZGVkLCBkb25lKQoreworICAgIG1h
aW5XaW5kb3dMb2FkZWQgfD0gbG9hZGVkOworICAgIHRlc3RDb21wbGV0ZWQgfD0gZG9uZTsKKwor
ICAgIGlmIChtYWluV2luZG93TG9hZGVkICYmIHRlc3RDb21wbGV0ZWQpIHsKKyAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RTdGF0dXMiKS5pbm5lckhUTUwgPSB0ZXN0U3RhdHVz
OworICAgICAgICBpZiAodGVzdENvbXBsZXRlZCAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAg
fQorfQorCitmdW5jdGlvbiB3aW5kb3dPcGVuZWQod2luZG93T3BlbmVyKQoreworICAgIGlmICh3
aW5kb3dPcGVuZXIgPT0gc2VsZi5zYW5kYm94ZWQpIHsKKyAgICAgICAgdGVzdFN0YXR1cyA9ICJG
QUlMOiBzYW5kYm94ZWQgZnJhbWUgb3BlbmVkIHdpbmRvdyI7CisgICAgICAgIHVwZGF0ZVN0YXR1
cyhmYWxzZSwgdHJ1ZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgKyt3aW5kb3dzT3BlbmVkOwor
ICAgICAgICBpZiAod2luZG93c09wZW5lZCA9PSAxMCAmJiAhdGVzdENvbXBsZXRlZCkgeworICAg
ICAgICAgICAgdGVzdFN0YXR1cyA9ICJQQVNTIjsKKyAgICAgICAgICAgIHVwZGF0ZVN0YXR1cyhm
YWxzZSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgor
Cis8Ym9keSBvbmxvYWQ9InVwZGF0ZVN0YXR1cyh0cnVlLCBmYWxzZSk7Ij4KKworICAgIDxwPlZl
cmlmaWVzIHRoYXQgYSBzYW5kYm94ZWQgSUZyYW1lIGNhbm5vdCBvcGVuIG5ldyB3aW5kb3dzCisg
ICAgdXNpbmcgPGNvZGU+d2luZG93Lm9wZW4oKTwvY29kZT4uIEV4cGVjdCB0ZW4gd2luZG93cyB0
byBiZSBvcGVuZWQsCisgICAgYnV0IHRoZSBzYW5kYm94ZWQgSUZyYW1lIG5vdCB0byBiZSB0aGUg
b3BlbmVyIG9mIGFueSBvZiB0aGVtLjwvcD4KKyAgICAKKyAgICA8cD5UaGlzIHRlc3Qgd2lsbCBw
cmludCAmcXVvdDtQQVNTJnF1b3Q7IG9uIHN1Y2Nlc3MuPC9wPgorCisgICAgPGlmcmFtZSBzcmM9
InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi5odG1sIj48
L2lmcmFtZT4KKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2
aWdhdGlvbi13aW5kb3dvcGVuLmh0bWwiPjwvaWZyYW1lPgorICAgIDxpZnJhbWUgc3JjPSJyZXNv
dXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4uaHRtbCI+PC9pZnJh
bWU+CisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRp
b24td2luZG93b3Blbi5odG1sIj48L2lmcmFtZT4KKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2Vz
L3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0bWwiPjwvaWZyYW1lPgor
CisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24t
d2luZG93b3Blbi5odG1sIgorICAgICAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyIKKyAg
ICAgICAgICAgIG5hbWU9InNhbmRib3hlZCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8aWZyYW1l
IHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0
bWwiPjwvaWZyYW1lPgorICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFt
ZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4uaHRtbCI+PC9pZnJhbWU+CisgICAgPGlmcmFtZSBzcmM9
InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi5odG1sIj48
L2lmcmFtZT4KKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2
aWdhdGlvbi13aW5kb3dvcGVuLmh0bWwiPjwvaWZyYW1lPgorICAgIDxpZnJhbWUgc3JjPSJyZXNv
dXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4uaHRtbCI+PC9pZnJh
bWU+CisKKyAgICA8cCBpZD0ndGVzdFN0YXR1cyc+RkFJTDogU2NyaXB0IGRpZG4ndCBydW48L3A+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94
ZWQtaWZyYW1lLXBsdWdpbnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdp
bnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3IEBACitUaGlzIHRlc3Qg
dmVyaWZpZXMgdGhhdCBzYW5kYm94aW5nIG9mIHBsdWdpbnMgd29ya3MgYXMgaW50ZW5kZWQuIFRo
cmVlIHRlc3RzIGFyZSBtYWRlLCBlYWNoIGluIG9uZSBzYW5kYm94ZWQgYW5kIG9uZSBub24tc2Fu
ZGJveGVkIElGcmFtZTogYXBwbGV0cywgZW1iZWRzLCBhbmQgb2JqZWN0cy4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK05PVEU6IFRoZSBmaXJzdCBzdWItdGVzdCB3aWxsIGZhaWwg
aW4gRHVtcFJlbmRlclRyZWUsIHNpbmNlIER1bXBSZW5kZXJUcmVlIGRvZXMgbm90IHN1cHBvcnQg
YXBwbGV0cy4gVGhhdCBzdWItdGVzdCBtdXN0IGJlIHJ1biBpbiBTYWZhcmkgaW5zdGVhZC4KKwor
RkFJTCAoc2VsZi5hcHBsZXRGcmFtZTEuZG9jdW1lbnRbJ2FwcCddLmluaXQpICE9IHVuZGVmaW5l
ZCBzaG91bGQgYmUgdHJ1ZS4gV2FzIGZhbHNlLgorUEFTUyAoc2VsZi5hcHBsZXRGcmFtZTIuZG9j
dW1lbnRbJ2FwcCddLmluaXQpID09IHVuZGVmaW5lZCBpcyB0cnVlCitQQVNTIChzZWxmLmVtYmVk
RnJhbWUxLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbHVnaW4nKS5kZXN0cm95U3RyZWFtKSAh
PSB1bmRlZmluZWQgaXMgdHJ1ZQorUEFTUyAoc2VsZi5lbWJlZEZyYW1lMi5kb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgncGx1Z2luJykuZGVzdHJveVN0cmVhbSkgPT0gdW5kZWZpbmVkIGlzIHRydWUK
K1BBU1MgKHNlbGYub2JqZWN0RnJhbWUxLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbHVnaW4n
KS5kZXN0cm95U3RyZWFtKSAhPSB1bmRlZmluZWQgaXMgdHJ1ZQorUEFTUyAoc2VsZi5vYmplY3RG
cmFtZTIuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BsdWdpbicpLmRlc3Ryb3lTdHJlYW0pID09
IHVuZGVmaW5lZCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKyAgICAgICAgIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2Fu
ZGJveGVkLWlmcmFtZS1wbHVnaW5zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw3NCBAQAorPGh0bWw+IAorPGhlYWQ+IAorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNj
cmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0PiAKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIAorICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsgCisgCit3aW5kb3cub25sb2FkID0gZnVu
Y3Rpb24oKSB7IAorICAgIHNob3VsZEJlVHJ1ZSgiKHNlbGYuYXBwbGV0RnJhbWUxLmRvY3VtZW50
WydhcHAnXS5pbml0KSAhPSB1bmRlZmluZWQiKTsKKyAgICBzaG91bGRCZVRydWUoIihzZWxmLmFw
cGxldEZyYW1lMi5kb2N1bWVudFsnYXBwJ10uaW5pdCkgPT0gdW5kZWZpbmVkIik7CisKKyAgICBz
aG91bGRCZVRydWUoIihzZWxmLmVtYmVkRnJhbWUxLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdw
bHVnaW4nKS5kZXN0cm95U3RyZWFtKSAhPSB1bmRlZmluZWQiKTsKKyAgICBzaG91bGRCZVRydWUo
IihzZWxmLmVtYmVkRnJhbWUyLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbHVnaW4nKS5kZXN0
cm95U3RyZWFtKSA9PSB1bmRlZmluZWQiKTsKKworICAgIHNob3VsZEJlVHJ1ZSgiKHNlbGYub2Jq
ZWN0RnJhbWUxLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbHVnaW4nKS5kZXN0cm95U3RyZWFt
KSAhPSB1bmRlZmluZWQiKTsKKyAgICBzaG91bGRCZVRydWUoIihzZWxmLm9iamVjdEZyYW1lMi5k
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGx1Z2luJykuZGVzdHJveVN0cmVhbSkgPT0gdW5kZWZp
bmVkIik7CisKKyAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOworfSAKKzwvc2NyaXB0PiAKKzwv
aGVhZD4gCisgCis8Ym9keT4gCisgICAgPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CisgCisgICAg
PHA+Tk9URTogVGhlIGZpcnN0IHN1Yi10ZXN0IHdpbGwgZmFpbCBpbiBEdW1wUmVuZGVyVHJlZSwg
c2luY2UgRHVtcFJlbmRlclRyZWUKKyAgICBkb2VzIG5vdCBzdXBwb3J0IGFwcGxldHMuIFRoYXQg
c3ViLXRlc3QgbXVzdCBiZSBydW4gaW4gU2FmYXJpIGluc3RlYWQuPC9wPiAKKworICAgIDxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorCisgICAgPCEtLSBBcHBsZXRzIC0tPgorICAgIAorICAgIDxp
ZnJhbWUgaWQ9ImFwcGxldEZyYW1lMSIgCisgICAgICAgICAgICBzdHlsZT0id2lkdGg6IDIwMHB4
OyBoZWlnaHQ6IDEwMHB4OyIgCisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQt
aWZyYW1lLXBsdWdpbnMtZnJhbWUtYXBwbGV0Lmh0bWwiPiAKKyAgICA8L2lmcmFtZT4gCisgICAg
PGlmcmFtZSBpZD0iYXBwbGV0RnJhbWUyIiAKKyAgICAgICAgICAgIHN0eWxlPSJ3aWR0aDogMjAw
cHg7IGhlaWdodDogMTAwcHg7IiAKKyAgICAgICAgICAgIHNhbmRib3g9ImFsbG93LXNhbWUtb3Jp
Z2luIGFsbG93LXNjcmlwdHMiIAorICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVk
LWlmcmFtZS1wbHVnaW5zLWZyYW1lLWFwcGxldC5odG1sIj4gCisgICAgPC9pZnJhbWU+IAorCisg
ICAgPCEtLSBFbWJlZHMgLS0+CisgICAgCisgICAgPGlmcmFtZSBpZD0iZW1iZWRGcmFtZTEiCisg
ICAgICAgICAgICBzdHlsZT0id2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDEwMHB4OyIKKyAgICAgICAg
ICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1lbWJlZC5o
dG1sIj4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIGlkPSJlbWJlZEZyYW1lMiIKKyAgICAg
ICAgICAgIHN0eWxlPSJ3aWR0aDogMjAwcHg7IGhlaWdodDogMTAwcHg7IgorICAgICAgICAgICAg
c2FuZGJveD0iYWxsb3ctc2FtZS1vcmlnaW4iCisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9z
YW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtZW1iZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+
CisKKyAgICA8IS0tIE9iamVjdHMgLS0+CisgICAgCisgICAgPGlmcmFtZSBpZD0ib2JqZWN0RnJh
bWUxIgorICAgICAgICAgICAgc3R5bGU9IndpZHRoOiAyMDBweDsgaGVpZ2h0OiAxMDBweDsiCisg
ICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUt
b2JqZWN0Lmh0bWwiPgorICAgIDwvaWZyYW1lPgorICAgIDxpZnJhbWUgaWQ9Im9iamVjdEZyYW1l
MiIKKyAgICAgICAgICAgIHN0eWxlPSJ3aWR0aDogMjAwcHg7IGhlaWdodDogMTAwcHg7IgorICAg
ICAgICAgICAgc2FuZGJveD0iYWxsb3ctc2FtZS1vcmlnaW4iCisgICAgICAgICAgICBzcmM9InJl
c291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtb2JqZWN0Lmh0bWwiPgorICAg
IDwvaWZyYW1lPgorCisgICAgPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHZl
cmlmaWVzIHRoYXQgc2FuZGJveGluZyBvZiBwbHVnaW5zIHdvcmtzIGFzIGludGVuZGVkLiBUaHJl
ZSB0ZXN0cyBhcmUgbWFkZSwgZWFjaCBpbiBvbmUgc2FuZGJveGVkIGFuZCBvbmUgbm9uLXNhbmRi
b3hlZCBJRnJhbWU6IGFwcGxldHMsIGVtYmVkcywgYW5kIG9iamVjdHMuIik7CisgICAgdmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+IAorPC9odG1s
PiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtc2NyaXB0
aW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9z
YW5kYm94ZWQtaWZyYW1lLXNjcmlwdGluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXNjcmlwdGluZy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKK1ZlcmlmeSB0aGF0IHNhbmRib3hl
ZCBmcmFtZXMgd2l0aCBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIiBjYW4gZXhlY3V0ZSBzY3JpcHRz
LCBidXQgb3RoZXIgc2FuZGJveGVkIGZyYW1lcyBjYW5ub3QuIEFsc28gdmVyaWZ5IHRoYXQgcmVt
b3ZpbmcgdGhlIHNhbmRib3g9ImFsbG93LXNjcmlwdHMiIGF0dHJpYnV0ZSBhdCBydW50aW1lIHBy
ZXZlbnRzIG5ldyBzY3JpcHRzIGZyb20gbGF1bmNoaW5nLCBidXQgZXhpc3Rpbmcgb25lcyBrZWVw
IHJ1bm5pbmcuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRpc2FsbG93
ZWRFeGVjdXRlZCBpcyAwCitQQVNTIGFsbG93ZWRFeGVjdXRlZCBpcyAyCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKyAgIApJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1zY3JpcHRpbmcuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXNjcmlwdGluZy5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlm
cmFtZS1zY3JpcHRpbmcuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NiBAQAorPGh0bWw+
Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKwordmFyIGRpc2FsbG93ZWRFeGVjdXRlZCA9IDA7Cit2YXIgYWxsb3dlZEV4ZWN1dGVkID0g
MDsKKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBzaG91bGRCZSgiZGlzYWxs
b3dlZEV4ZWN1dGVkIiwgIjAiKTsKKyAgICBzaG91bGRCZSgiYWxsb3dlZEV4ZWN1dGVkIiwgIjIi
KTsKKworICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4K
KworPGJvZHk+CisgICAgPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CisgCisgICAgPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+CisgCisgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zYW1lLW9yaWdp
biBhbGxvdy1zY3JpcHRzIgorICAgICAgICAgICAgc3JjPSJqYXZhc2NyaXB0OiArK3dpbmRvdy50
b3AuYWxsb3dlZEV4ZWN1dGVkOyI+CisgICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBzYW5kYm94
PSJhbGxvdy1zYW1lLW9yaWdpbiIKKyAgICAgICAgICAgIHNyYz0iamF2YXNjcmlwdDogKyt3aW5k
b3cudG9wLmRpc2FsbG93ZWRFeGVjdXRlZDsiPgorICAgIDwvaWZyYW1lPgorICAgIAorICAgIDxp
ZnJhbWUgaWQ9ImZyYW1lIiBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXNjcmlwdC1k
eW5hbWljLmh0bWwiPgorICAgIDwvaWZyYW1lPgorCisgICAgPHNjcmlwdD4KKyAgICBkZXNjcmlw
dGlvbigiVmVyaWZ5IHRoYXQgc2FuZGJveGVkIGZyYW1lcyB3aXRoIHNhbmRib3g9JnF1b3Q7YWxs
b3ctc2NyaXB0cyZxdW90OyBjYW4gZXhlY3V0ZSBzY3JpcHRzLCAiCisgICAgICAgICAgICAgICAg
ICsgImJ1dCBvdGhlciBzYW5kYm94ZWQgZnJhbWVzIGNhbm5vdC4gQWxzbyB2ZXJpZnkgdGhhdCBy
ZW1vdmluZyB0aGUgIgorICAgICAgICAgICAgICAgICArICJzYW5kYm94PSZxdW90O2FsbG93LXNj
cmlwdHMmcXVvdDsgYXR0cmlidXRlIGF0IHJ1bnRpbWUgcHJldmVudHMgbmV3IHNjcmlwdHMgZnJv
bSBsYXVuY2hpbmcsICIKKyAgICAgICAgICAgICAgICAgKyAiYnV0IGV4aXN0aW5nIG9uZXMga2Vl
cCBydW5uaW5nLiIpOworICAgIHZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworICAgIDwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMv
cmVzb3VyY2VzL25vbi1zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24uaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvbm9uLXNhbmRib3hlZC1pZnJh
bWUtbmF2aWdhdGlvbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFt
ZXMvcmVzb3VyY2VzL25vbi1zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24uaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw1IEBACis8aHRtbD4KKzxib2R5PgorICA8aWZyYW1lIHNyYz0ic2Fu
ZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXNvdXJjZS5odG1sIj48L2lmcmFtZT4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94
ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWFsbG93ZWQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1
dGUtcGFyc2luZy1hbGxvd2VkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1hbGxv
d2VkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIgQEAKKzxodG1sPgorPHNjcmlwdD4K
KwordG9wLmFsbG93ZWRDYWxsRnJvbVNhbmRib3goKTsKKworPC9zY3JpcHQ+Cis8Ym9keSBvbmxv
YWQ9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmJykuc3VibWl0KCk7Ij4KKyAgICA8Zm9ybSBp
ZD0nZicgYWN0aW9uPSJqYXZhc2NyaXB0OnRvcC5kaXNhbGxvd2VkRm9ybVN1Ym1pdHRlZCgpOyI+
CisgICAgICAgIDxpbnB1dCBuYW1lPSJ4IiB2YWx1ZT0ieSIgdHlwZT0iY2hlY2tib3giIGNoZWNr
ZWQ9InllcyIgLz4KKyAgICA8L2Zvcm0+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFy
c2luZy1kaXNhbGxvd2VkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFt
ZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmctZGlzYWxsb3dl
ZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2Vz
L3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmctZGlzYWxsb3dlZC5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDUgQEAKKzxodG1sPgorPHNjcmlwdD4KK3RvcC5kaXNhbGxvd2Vk
Q2FsbEZyb21TYW5kYm94KCk7Cis8L3NjcmlwdD4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tYWxsb3dlZC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94
ZWQtaWZyYW1lLWZvcm0tYWxsb3dlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1hbGxvd2VkLmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNSBAQAorPGJvZHkgb25sb2FkPSJkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnZm9ybScpLnN1Ym1pdCgpOyI+Cis8Zm9ybSBpZD0iZm9ybSIgYWN0aW9uPSJq
YXZhc2NyaXB0OndpbmRvdy50b3AuYWxsb3dlZEZvcm1TdWJtaXR0ZWQoKTsiPgorICAgIDxpbnB1
dCBuYW1lPXggdmFsdWU9eSB0eXBlPSJjaGVja2JveCIgY2hlY2tlZD0ieWVzIi8+Cis8L2Zvcm0+
Cis8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJv
eGVkLWlmcmFtZS1mb3JtLWRpc2FsbG93ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWRpc2FsbG93ZWQu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9z
YW5kYm94ZWQtaWZyYW1lLWZvcm0tZGlzYWxsb3dlZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDYgQEAKKzxib2R5IG9ubG9hZD0iZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Zvcm0nKS5z
dWJtaXQoKTsiCisgICAgICBiZ2NvbG9yPSd5ZWxsb3cnPgorPGZvcm0gaWQ9ImZvcm0iIGFjdGlv
bj0iamF2YXNjcmlwdDp3aW5kb3cudG9wLmRpc2FsbG93ZWRGb3JtU3VibWl0dGVkKCk7Ij4KKyAg
ICA8aW5wdXQgbmFtZT14IHZhbHVlPXkgdHlwZT0iY2hlY2tib3giIGNoZWNrZWQ9InllcyIvPgor
PC9mb3JtPgorPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2Vz
L3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGVkLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJv
eGVkLWlmcmFtZS1uYXZpZ2F0ZWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1IEBACis8
aHRtbD4KKzxib2R5IG9ubG9hZD0nc2VsZi50b3AuY291bnRGcmFtZSgpOyc+CituYXZpZ2F0ZWQK
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNl
cy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tY2hpbGQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0
aW9uLWNoaWxkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9y
ZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLWNoaWxkLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTggQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorZnVuY3Rpb24g
bW9kaWZ5KCkKK3sKKyAgICBzZWxmLm5hdmlnYXRlZC5sb2NhdGlvbi5hc3NpZ24oImphdmFzY3Jp
cHQ6IHRvcC5jaGlsZEZyYW1lV2FzTmF2aWdhdGVkKCk7Iik7Cit9Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IG9ubG9hZD0ibW9kaWZ5KCk7Ij4KKyAgICA8aWZyYW1lIG5hbWU9Im5hdmlnYXRl
ZCIKKyAgICAgICAgICAgIHNyYz0ic2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLW5hdmlnYXRl
ZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIG5hbWU9ImZyYW1lV2l0aFBsdWdp
biIKKyAgICAgICAgICAgIHNyYz0ic2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLWZyYW1lLW9iamVj
dC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tbmF2
aWdhdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3Vy
Y2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1uYXZpZ2F0ZWQuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1l
LW5hdmlnYXRpb24tbmF2aWdhdGVkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOSBAQAor
PGh0bWw+Cis8aGVhZD4KKzwvaGVhZD4KKzxib2R5PgorPCEtLSBUaGlzIGZpbGUgaXMgaW4gYSBz
ZXBhcmF0ZSBkb2N1bWVudCBpbiBvcmRlciB0byBzaGFyZSBvcmlnaW4gd2l0aCB0aGUKK3BhcmVu
dCBkb2N1bWVudC4gLS0+Citpbm5vY2VudCBjb250ZW50Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZp
Z2F0aW9uLXBhcmVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50Lmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlm
cmFtZS1uYXZpZ2F0aW9uLXBhcmVudC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAK
KzxodG1sPgorPGJvZHk+CisgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93
LXNhbWUtb3JpZ2luIgorICAgICAgICAgICAgc3JjPSJzYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRp
b24tc291cmNlLmh0bWwiPgorICAgIDwvaWZyYW1lPgorICAgIDxwIGlkPSdpbm5vY2VudF9jb250
ZW50Jz5pbm5vY2VudCBjb250ZW50PC9wPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1z
b3VyY2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJj
ZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXNvdXJjZS5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2
aWdhdGlvbi1zb3VyY2UuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMiBAQAorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBtb2RpZnkoKQoreworICAgIHNlbGYucGFyZW50
LmxvY2F0aW9uLmFzc2lnbignc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0ZWQuaHRtbCcpOworfQor
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9J21vZGlmeSgpOyc+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVk
LWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRh
cmdldGxpbmsuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jl
c291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDMxIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKworLyoK
KyAqIFNldCB0aGUgdGFyZ2V0IG9mIHRoZSBsaW5rIHRvICdYX3RhcmdldCcsIHdoZXJlIFggaXMg
dGhlIG5hbWUgb2YKKyAqIHRoaXMgZnJhbWUuCisgKgorICogVGhlbiBjbGljayB0aGUgbGluay4K
KyAqLworCitmdW5jdGlvbiBjbGlja19saW5rKCkKK3sKKyAgICB2YXIgZXZlbnQgPSBkb2N1bWVu
dC5jcmVhdGVFdmVudCgnTW91c2VFdmVudCcpOworICAgIGV2ZW50LmluaXRFdmVudCgnY2xpY2sn
LCB0cnVlLCB0cnVlKTsKKyAgICB2YXIgbGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCds
aW5rJyk7CisgICAgbGluay50YXJnZXQgPSBzZWxmLm5hbWUgKyAnX3RhcmdldCc7CisgICAgbGlu
ay5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5
IG9ubG9hZD0nY2xpY2tfbGluaygpOyc+CisKKyAgICA8YSBocmVmPSJzYW5kYm94ZWQtaWZyYW1l
LW5hdmlnYXRlZC5odG1sIiBpZD0ibGluayI+CisgICAgICAgIChsaW5rIHRyaWdnZXJlZCBieSBz
Y3JpcHQpCisgICAgPC9hPgorCis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29w
ZW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMv
c2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4uaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5h
dmlnYXRpb24td2luZG93b3Blbi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKKzxz
Y3JpcHQ+CisgICAgd2luZG93Lm9wZW4oImphdmFzY3JpcHQ6IG9wZW5lci5wYXJlbnQud2luZG93
T3BlbmVkKG9wZW5lcik7Iik7Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtYXBwbGV0Lmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hl
ZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1hcHBsZXQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJh
bWUtYXBwbGV0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKKzxodG1sPgorPGhl
YWQ+Cis8L2hlYWQ+CisKKzxib2R5PgorICAgIDxhcHBsZXQgbmFtZT0iYXBwIgorICAgICAgICAg
ICAgY29kZWJhc2U9Ii4uLy4uL2RvbS9yZXNvdXJjZXMiCisgICAgICAgICAgICBjb2RlPSJUZXN0
QXBwbGV0IgorICAgIDwvYXBwbGV0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1l
bWJlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNl
cy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtZW1iZWQuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBs
dWdpbnMtZnJhbWUtZW1iZWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMiBAQAorPGh0
bWw+Cis8aGVhZD4KKzwvaGVhZD4KKworPGJvZHk+CisgICAgPGVtYmVkIGlkPSJwbHVnaW4iIAor
ICAgICAgICAgICB0eXBlPSJhcHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0LW5ldHNjYXBlIgorICAg
ICAgICAgICBzcmM9ImRhdGE6dGV4dC9wbGFpbiwiCisgICAgICAgICAgIHN0eWxlPSJ3aWR0aDow
OyBoZWlnaHQ6MCI+CisgICAgPC9lbWJlZD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJh
bWUtb2JqZWN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVz
b3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1vYmplY3QuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZy
YW1lLXBsdWdpbnMtZnJhbWUtb2JqZWN0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEg
QEAKKzxodG1sPgorPGhlYWQ+Cis8L2hlYWQ+CisKKzxib2R5PgorICAgIDxvYmplY3QgaWQ9InBs
dWdpbiIgCisgICAgICAgICAgICB0eXBlPSJhcHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0LW5ldHNj
YXBlIgorICAgICAgICAgICAgc3R5bGU9IndpZHRoOjA7IGhlaWdodDowIj4KKyAgICA8L29iamVj
dD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291
cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXNjcmlwdC1keW5hbWljLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtc2NyaXB0
LWR5bmFtaWMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jl
c291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXNjcmlwdC1keW5hbWljLmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMjYgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorCisgICAgZnJhbWUg
PSB3aW5kb3cudG9wLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmcmFtZScpOworCisgICAgLy8g
c2V0dGluZyB0aGUgc2FuZGJveCBmbGFnIGF0IHJ1bnRpbWUgc2hvdWxkIG5vdCB0ZXJtaW5hdGUg
YWxyZWFkeQorICAgIC8vIHJ1bm5pbmcgc2NyaXB0cyAoZS5nLiwgdGhpcyBvbmUpCisKKyAgICBm
cmFtZS5zYW5kYm94ID0gJ2FsbG93LXNhbWUtb3JpZ2luJzsgICAvLyBOTyBhbGxvdy1zY3JpcHRz
CisKKyAgICArK3dpbmRvdy50b3AuYWxsb3dlZEV4ZWN1dGVkOworCisgICAgLy8gaG93ZXZlciwg
bmV3IHNjcmlwdHMgKHN1Y2ggYXMgdGhlIG9ubG9hZCBvbmUgYmVsb3cpIHNob3VsZAorICAgIC8v
IG5vdCBydW4KKworICAgIGZ1bmN0aW9uIG9ubG9hZF9ob29rKCkKKyAgICB7CisgICAgICAgICsr
d2luZG93LnRvcC5kaXNhbGxvd2VkRXhlY3V0ZWQ7CisgICAgfTsKKworPC9zY3JpcHQ+Cis8L2hl
YWQ+CisKKzxib2R5IG9ubG9hZD0nb25sb2FkX2hvb2soKTsnPjwvYm9keT4KKzwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc2FuZGJveGVkLWlmcmFtZS1kb2N1
bWVudC1jb29raWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvc2FuZGJveGVkLWlmcmFtZS1kb2N1bWVudC1jb29raWUtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zYW5k
Ym94ZWQtaWZyYW1lLWRvY3VtZW50LWNvb2tpZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsOCBAQAorVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGEgU0VDVVJJVFlfRVJSIGV4Y2Vw
dGlvbiBpcyByYWlzZWQgd2hpbGUgYWNjZXNzaW5nIGRvY3VtZW50LmRvbWFpbiBpbiBhIHNhbmRi
b3hlZCBpZnJhbWUgKHdpdGhvdXQgImFsbG93LW9yaWdpbiIgc2V0KS4gVGhpcyB0ZXN0IHdpbGwg
cHJpbnQgIlBBU1MiIG9uIHN1Y2Nlc3MuCisKKworCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJh
bWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0tLS0tCitQQVNTCkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtZG9jdW1lbnQtY29va2ll
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zYW5k
Ym94ZWQtaWZyYW1lLWRvY3VtZW50LWNvb2tpZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLWRvY3VtZW50LWNvb2tp
ZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI1IEBACis8aHRtbD4KKzxoZWFkPgorCis8
c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+
CisKKyAgICA8cD5UaGlzIHRlc3QgY2hlY2tzIHRoYXQgYSBTRUNVUklUWV9FUlIgZXhjZXB0aW9u
IGlzIHJhaXNlZCB3aGlsZSBhY2Nlc3NpbmcgZG9jdW1lbnQuZG9tYWluCisgICAgaW4gYSBzYW5k
Ym94ZWQgaWZyYW1lICh3aXRob3V0ICZxdW90O2FsbG93LW9yaWdpbiZxdW90OyBzZXQpLiBUaGlz
IHRlc3Qgd2lsbCBwcmludAorICAgICZxdW90O1BBU1MmcXVvdDsgb24gc3VjY2Vzcy48L3A+CisK
KyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93LXNjcmlwdHMiCisgICAgICAgICAgICBzcmM9InJl
c291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWRvY3VtZW50LWNvb2tpZS1yZWFkLWRlbmllZC5odG1s
Ij4KKyAgICA8L2lmcmFtZT4KKzwvYm9keT4KKworPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLW1vZGlmeS1zZWxmLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3NhbmRi
b3hlZC1pZnJhbWUtbW9kaWZ5LXNlbGYtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLW1vZGlmeS1zZWxm
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAorQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDE6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdp
dGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLW1v
ZGlmeS1zZWxmLmh0bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAv
c2VjdXJpdHkvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbW9kaWZ5LXNlbGYuaHRtbC4gRG9t
YWlucywgcHJvdG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgorCitUaGlzIGlzIGEgInNhbml0
eSIgdGVzdCBjYXNlIHRvIHZlcmlmeSB0aGF0IGEgc2FuZGJveGVkIGZyYW1lIGNhbm5vdCBicmVh
ayBvdXQgb2YgaXRzIHNhbmRib3ggYnkgbW9kaWZ5aW5nIGl0cyBvd24gc2FuZGJveCBhdHRyaWJ1
dGUuIFR3byBhdHRlbXB0cyBhcmUgbWFkZToKKworRmlyc3QsIGFuIGF0dGVtcHQgaXMgbWFkZSB0
byBtb2RpZnkgdGhlIHNhbmRib3ggYXR0cmlidXRlIG9mIHRoZSAic2VsZiIgb2JqZWN0LCByZWZl
cnJpbmcgdG8gdGhlIGZyYW1lJ3Mgd2luZG93LiBUaGlzIHNob3VsZCBub3QgaGF2ZSBhbnkgZWZm
ZWN0ICh0aGUgYXR0cmlidXRlIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgaWZyYW1lIERPTSBub2Rl
LCBub3QgdGhlIHdpbmRvdykuIE5vIHdhcm5pbmcgaXMgZXhwZWN0ZWQuCitTZWNvbmQsIGFuIGF0
dGVtcHQgaXMgbWFkZSB0byBtb2RpZnkgdGhlIGlmcmFtZSBET00gb2JqZWN0J3Mgc2FuZGJveCBh
dHRyaWJ1dGUuIEEgd2FybmluZyBtZXNzYWdlIChhYm91dCBjcm9zcy1zaXRlIHNjcmlwdGluZykg
aXMgZXhwZWN0ZWQsIGFuZCB0aGUgc2FuZGJveCBhdHRyaWJ1dGUgc2hvdWxkIHJlbWFpbiBpbnRh
Y3QuCitUaGlzIHRlc3Qgd2lsbCBwcmludCAiUEFTUyIgb24gc3VjY2Vzcy4KKworUEFTUworCisK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc2FuZGJveGVkLWlmcmFtZS1t
b2RpZnktc2VsZi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvc2FuZGJveGVkLWlmcmFtZS1tb2RpZnktc2VsZi5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLW1vZGlmeS1z
ZWxmLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDIgQEAKKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKK3dpbmRvdy5vbmxvYWQgPSBmdW5j
dGlvbigpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRN
TCA9IChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZiIpLnNhbmRib3ggIT0gImFsbG93LXNjcmlw
dHMiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAi
RkFJTDogc2FuZGJveCBhdHRyaWJ1dGUgbW9kaWZpZWQiCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJQQVNTIjsKK30KKworPC9zY3JpcHQ+Cis8L2hl
YWQ+CisKKzxib2R5PgorICAgIDxwPlRoaXMgaXMgYSAmcXVvdDtzYW5pdHkmcXVvdDsgdGVzdCBj
YXNlIHRvIHZlcmlmeSB0aGF0IGEgc2FuZGJveGVkIAorICAgIGZyYW1lIGNhbm5vdCBicmVhayBv
dXQgb2YgaXRzIHNhbmRib3ggYnkgbW9kaWZ5aW5nIGl0cyBvd24gc2FuZGJveAorICAgIGF0dHJp
YnV0ZS4gVHdvIGF0dGVtcHRzIGFyZSBtYWRlOjwvcD4KKyAgICAKKyAgICA8b2w+CisgICAgICAg
IDxsaT5GaXJzdCwgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIG1vZGlmeSB0aGUgc2FuZGJveCBhdHRy
aWJ1dGUgb2YgdGhlCisgICAgICAgICZxdW90O3NlbGYmcXVvdDsgb2JqZWN0LCByZWZlcnJpbmcg
dG8gdGhlIGZyYW1lJ3Mgd2luZG93LiBUaGlzIHNob3VsZAorICAgICAgICBub3QgaGF2ZSBhbnkg
ZWZmZWN0ICh0aGUgYXR0cmlidXRlIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgaWZyYW1lIERPTQor
ICAgICAgICBub2RlLCBub3QgdGhlIHdpbmRvdykuIE5vIHdhcm5pbmcgaXMgZXhwZWN0ZWQuPC9s
aT4KKyAgICAgICAgPGxpPlNlY29uZCwgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIG1vZGlmeSB0aGUg
aWZyYW1lIERPTSBvYmplY3QncyBzYW5kYm94CisgICAgICAgIGF0dHJpYnV0ZS4gQSB3YXJuaW5n
IG1lc3NhZ2UgKGFib3V0IGNyb3NzLXNpdGUgc2NyaXB0aW5nKSBpcyBleHBlY3RlZCwKKyAgICAg
ICAgYW5kIHRoZSBzYW5kYm94IGF0dHJpYnV0ZSBzaG91bGQgcmVtYWluIGludGFjdC48L2xpPgor
ICAgIDwvb2w+CisgICAgCisgICAgPHA+VGhpcyB0ZXN0IHdpbGwgcHJpbnQgJnF1b3Q7UEFTUyZx
dW90OyBvbiBzdWNjZXNzLjwvcD4KKworICAgIDxwIGlkPSJyZXN1bHQiPkZBSUw8L3A+CisKKyAg
ICA8aWZyYW1lIGlkPSJmIgorICAgICAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyIKKyAg
ICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbW9kaWZ5LXNlbGYuaHRt
bCI+CisgICAgPC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQtc2FuZGJveGVkLWlmcmFtZS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVO
SUVELXNhbmRib3hlZC1pZnJhbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAKK0NPTlNPTEUgTUVTU0FHRTog
bGluZSAxOiBVbnNhZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRvIGFjY2VzcyBmcmFtZSB3aXRoIFVS
TCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkveHNzLURFTklFRC1zYW5kYm94ZWQtaWZy
YW1lLmh0bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJp
dHkvcmVzb3VyY2VzL3hzcy1ERU5JRUQtc2FuZGJveGVkLWlmcmFtZS1hdHRhY2tlci5odG1sLiBE
b21haW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0Y2guCisKK0NPTlNPTEUgTUVTU0FH
RTogbGluZSAxOiBVbnNhZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRvIGFjY2VzcyBmcmFtZSB3aXRo
IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkveHNzLURFTklFRC1zYW5kYm94ZWQt
aWZyYW1lLmh0bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2Vj
dXJpdHkvcmVzb3VyY2VzL3hzcy1ERU5JRUQtc2FuZGJveGVkLWlmcmFtZS1hdHRhY2tlci5odG1s
LiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0Y2guCisKK1RoaXMgdGVzdCB2
ZXJpZmllcyB0aGF0IHNhbmRib3hlZCBpZnJhbWUgcHJldmVudHMgY3Jvc3MtZG9tYWluIHNjcmlw
dCBhY2Nlc3MuIEl0IHdpbGwgcHJpbnQgIlBBU1MiIG9uIHN1Y2Nlc3MuCisKKworUEFTUzogY3Jv
c3MtZG9tYWluIHNjcmlwdCBhY2Nlc3MgZGlzYWxsb3dlZCBmcm9tIHNhbmRib3hlZCBpZnJhbWUK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC1zYW5kYm94
ZWQtaWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC1zYW5kYm94ZWQtaWZyYW1l
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjkgQEAKKzxodG1sPgorPHNjcmlwdD4KKwor
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisKK3ZhciBkb2NSZWYgPSB1bmRlZmluZWQ7CisKK3dpbmRvdy5vbmxv
YWQgPSBmdW5jdGlvbigpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUi
KS5pbm5lckhUTUwgPQorICAgICAgICAoZG9jUmVmID8gIkZBSUw6IGNyb3NzLWRvbWFpbiBzY3Jp
cHQgYWNjZXNzIGFsbG93ZWQgZnJvbSBzYW5kYm94ZWQgaWZyYW1lIgorICAgICAgICAgICAgICAg
IDogIlBBU1M6IGNyb3NzLWRvbWFpbiBzY3JpcHQgYWNjZXNzIGRpc2FsbG93ZWQgZnJvbSBzYW5k
Ym94ZWQgaWZyYW1lIik7Cit9CisKKzwvc2NyaXB0PgorPGJvZHk+CisKKyAgICA8cD5UaGlzIHRl
c3QgdmVyaWZpZXMgdGhhdCBzYW5kYm94ZWQgaWZyYW1lIHByZXZlbnRzIGNyb3NzLWRvbWFpbgor
ICAgIHNjcmlwdCBhY2Nlc3MuIEl0IHdpbGwgcHJpbnQgJnF1b3Q7UEFTUyZxdW90OyBvbiBzdWNj
ZXNzLjwvcD4KKworICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyIKKyAgICAgICAg
ICAgIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy94c3MtREVO
SUVELXNhbmRib3hlZC1pZnJhbWUtYXR0YWNrZXIuaHRtbCI+CisgICAgPC9pZnJhbWU+CisgICAg
CisgICAgPGRpdiBpZD0iY29uc29sZSI+RkFJTDogU2NyaXB0IGRpZG4ndCBydW48L2Rpdj4KKyAg
ICAKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZG9jdW1lbnQtY29va2llLXJlYWQtZGVuaWVk
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNv
dXJjZXMvc2FuZGJveGVkLWlmcmFtZS1kb2N1bWVudC1jb29raWUtcmVhZC1kZW5pZWQuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2Vz
L3NhbmRib3hlZC1pZnJhbWUtZG9jdW1lbnQtY29va2llLXJlYWQtZGVuaWVkLmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMjUgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorCitmdW5j
dGlvbiBydW5UZXN0KCkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdFJlc3Vs
dCIpLmlubmVySFRNTCA9IChmdW5jdGlvbigpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAg
IHZhciBjb29raWUgPSBkb2N1bWVudC5jb29raWU7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2gg
KGVycikgeworICAgICAgICAgICAgaWYgKGVyci5uYW1lLmluZGV4T2YoIlNFQ1VSSVRZX0VSUiIp
ICE9IC0xKQorICAgICAgICAgICAgICAgIHJldHVybiAiUEFTUyI7CisgICAgICAgIH0KKworICAg
ICAgICByZXR1cm4gIkZBSUw6IFNFQ1VSSVRZX0VSUiBub3QgcmFpc2VkIjsKKyAgICB9KSgpOwor
fQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpOyI+CisgICAg
PHAgaWQ9InRlc3RSZXN1bHQiPkZBSUw6IFNjcmlwdCBkaWRuJ3QgcnVuPC9wPgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMv
c2FuZGJveGVkLWlmcmFtZS1tb2RpZnktc2VsZi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbW9kaWZ5
LXNlbGYuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbW9kaWZ5LXNlbGYuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxNCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisKKy8vIHRoaXMg
YXNzaWdubWVudCBzaG91bGQgaGF2ZSBubyBlZmZlY3Qgb24gc2FuZGJveCBzdGF0dXMKK3NlbGYu
c2FuZGJveCA9ICdhbGxvdy1zY3JpcHRzIGFsbG93LXNhbWUtb3JpZ2luIGhhY2tlZC12aWEtd2lu
ZG93LW9iamVjdCc7CisKKy8vIHRoaXMgc2hvdWxkIGJlIHByZXZlbnRlZCBieSB0aGUgc2FuZGJv
eCAnb3JpZ2luJyBmbGFnCitpZiAodG9wLmRvY3VtZW50KQorICAgIHRvcC5kb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnZicpLnNhbmRib3ggPSAnYWxsb3ctc2NyaXB0cyBhbGxvdy1zYW1lLW9yaWdp
biBoYWNrZWQtdmlhLWRvbSc7CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMveHNzLURFTklFRC1zYW5k
Ym94ZWQtaWZyYW1lLWF0dGFja2VyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMveHNzLURFTklFRC1zYW5kYm94ZWQtaWZyYW1lLWF0
dGFja2VyLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3Jlc291cmNlcy94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUtYXR0YWNrZXIuaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw3IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKyAg
ICB0b3AuZG9jUmVmID0gcGFyZW50LmRvY3VtZW50OyAgLy8gYWNjZXNzIHBhcmVudCdzIERPTSB0
cmVlOiBzaG91bGQgbm90IGJlIGFsbG93ZWQKKzwvc2NyaXB0PgorPC9oZWFkPgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJv
bC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hl
ZC1pZnJhbWUtYWxsb3ctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1l
LWFsbG93LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5IEBACitUaGlzIHRl
c3QgdmVyaWZpZXMgdGhhdCBzYW5kYm94ZWQgaWZyYW1lIGhhcyBYbWxIdHRwUmVxdWVzdCBhY2Nl
c3MgdG8gdGhlIHNlcnZlciB0aGF0IGFjY2VwdHMgYWxsIGRvbWFpbnMuIEl0IHdpbGwgcHJpbnQg
IlBBU1MiIG9uIHN1Y2Nlc3MuCisKKworCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRo
IC8vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0tLS0tCitQQVNTOiBTYW5kYm94ZWQgaWZyYW1lIFhI
UiBhY2Nlc3MgYWxsb3dlZC4KKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRw
cmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93Lmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29u
dHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1p
ZnJhbWUtYWxsb3cuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOCBAQAorPGh0bWw+Cis8
c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworfQorCis8L3NjcmlwdD4KKzxib2R5PgorICAgIDxwPlRo
aXMgdGVzdCB2ZXJpZmllcyB0aGF0IHNhbmRib3hlZCBpZnJhbWUgaGFzIFhtbEh0dHBSZXF1ZXN0
IGFjY2VzcworICAgIHRvIHRoZSBzZXJ2ZXIgdGhhdCBhY2NlcHRzIGFsbCBkb21haW5zLiBJdCB3
aWxsIHByaW50ICZxdW90O1BBU1MmcXVvdDsgb24gc3VjY2Vzcy48L3A+CisgICAgCisgICAgPGlm
cmFtZSBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIiBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC94
bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1h
bGxvdy1pZnJhbWUuaHRtbCIgc3R5bGU9IndpZHRoOiA1MDBweDsiPgorICAgIDwvaWZyYW1lPiAK
KyAgICAKKzwvYm9keT4gCis8L2h0bWw+IApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVx
dWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Fj
Y2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw4IEBACitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBzYW5kYm94ZWQg
aWZyYW1lIGRvZXMgbm90IGhhdmUgWG1sSHR0cFJlcXVlc3QgYWNjZXNzIHRvIGl0cyBzZXJ2ZXIu
IEl0IHdpbGwgcHJpbnQgIlBBU1MiIG9uIHN1Y2Nlc3MuCisKKworCistLS0tLS0tLQorRnJhbWU6
ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0tLS0tCitQQVNTOiBFeGNl
cHRpb24gdGhyb3duLiBTYW5kYm94ZWQgaWZyYW1lIFhIUiBhY2Nlc3Mgd2FzIGRlbmllZCBpbiAn
c2VuZCcuIFtORVRXT1JLX0VSUjogWE1MSHR0cFJlcXVlc3QgRXhjZXB0aW9uIDEwMV0uCkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNh
bmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNv
bnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtd2l0aG91dC13aWxkY2FyZC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwIEBACitUaGlzIHRlc3QgdmVy
aWZpZXMgdGhhdCBzYW5kYm94ZWQgaWZyYW1lIGRvZXMgbm90IGhhdmUgWG1sSHR0cFJlcXVlc3Qg
YWNjZXNzIHRvIGl0cyBzZXJ2ZXIgd2l0aCAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIiBz
ZXQgdG8gaXRzIG93biBvcmlnaW4gKDEyNy4wLjAuMSkuCisKK1RoaXMgdGVzdCB3aWxsIHByaW50
ICJQQVNTIiBvbiBzdWNjZXNzLgorCisKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0
aCAvLzwhLS1mcmFtZTAtLT4tLT4nCistLS0tLS0tLQorUEFTUzogRXhjZXB0aW9uIHRocm93bi4g
U2FuZGJveGVkIGlmcmFtZSBYSFIgYWNjZXNzIHdhcyBkZW5pZWQgaW4gJ3NlbmQnLiBbTkVUV09S
S19FUlI6IFhNTEh0dHBSZXF1ZXN0IEV4Y2VwdGlvbiAxMDFdLgpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1l
LWRlbmllZC13aXRob3V0LXdpbGRjYXJkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1l
LWRlbmllZC13aXRob3V0LXdpbGRjYXJkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJh
bWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwy
MiBAQAorPGh0bWw+Cis8c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworfQorCis8L3NjcmlwdD4KKzxi
b2R5PgorCisgICAgPHA+VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgc2FuZGJveGVkIGlmcmFtZSBk
b2VzIG5vdCBoYXZlIFhtbEh0dHBSZXF1ZXN0IGFjY2VzcyB0bworICAgIGl0cyBzZXJ2ZXIgd2l0
aCAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIiBzZXQgdG8gaXRzIG93biBvcmlnaW4gKDEy
Ny4wLjAuMSkuPC9wPgorICAgIAorICAgIDxwPlRoaXMgdGVzdCB3aWxsIHByaW50ICZxdW90O1BB
U1MmcXVvdDsgb24gc3VjY2Vzcy48L3A+CisKKyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93LXNj
cmlwdHMiCisgICAgICAgICAgICBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC94bWxodHRwcmVx
dWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtd2l0
aG91dC13aWxkY2FyZC1pZnJhbWUuaHRtbCIgc3R5bGU9IndpZHRoOiA1MDBweDsiPgorICAgIDwv
aWZyYW1lPgorICAgIAorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmll
ZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVl
c3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRy
b2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
OSBAQAorPGh0bWw+IAorPHNjcmlwdD4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKK30KKworPC9zY3JpcHQ+CisK
Kzxib2R5PiAKKyAgICA8cD5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBzYW5kYm94ZWQgaWZyYW1l
IGRvZXMgbm90IGhhdmUgWG1sSHR0cFJlcXVlc3QgYWNjZXNzCisgICAgdG8gaXRzIHNlcnZlci4g
SXQgd2lsbCBwcmludCAmcXVvdDtQQVNTJnF1b3Q7IG9uIHN1Y2Nlc3MuPC9wPgorICAgIAorICAg
IDxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyIKKyAgICAgICAgICAgIHNyYz0iaHR0cDov
LzEyNy4wLjAuMTo4MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1z
YW5kYm94ZWQtaWZyYW1lLWRlbmllZC1pZnJhbWUuaHRtbCIgc3R5bGU9IndpZHRoOiA1MDBweDsi
PgorICAgIDwvaWZyYW1lPiAKKzwvYm9keT4gCis8L2h0bWw+IApJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJv
eGVkLWlmcmFtZS1hbGxvdy1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94
ZWQtaWZyYW1lLWFsbG93LWlmcmFtZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJv
eGVkLWlmcmFtZS1hbGxvdy1pZnJhbWUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNSBA
QAorPGh0bWw+IAorPGJvZHk+IAorPHByZSBpZD0nY29uc29sZSc+PC9wcmU+IAorPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiAKKworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNv
bGUnKS5pbm5lckhUTUwgPSAoZnVuY3Rpb24oKSB7IAorICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0
cFJlcXVlc3Q7IAorIAorICAgIHRyeSB7IAorICAgICAgICB4aHIub3BlbigiR0VUIiwgImh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wt
c2FuZGJveGVkLWlmcmFtZS1hbGxvdy5jZ2kiLCBmYWxzZSk7IAorICAgIH0gY2F0Y2goZSkgeyAK
KyAgICAgICAgcmV0dXJuICJGQUlMOiBFeGNlcHRpb24gdGhyb3duLiBTYW5kYm94ZWQgaWZyYW1l
IFhIUiBhY2Nlc3MgaXMgbm90IGFsbG93ZWQgaW4gJ29wZW4nLiBbIiArIGUubWVzc2FnZSArICJd
LiI7IAorICAgIH0gCisgCisgICAgdHJ5IHsgCisgICAgICAgIHhoci5zZW5kKCk7IAorICAgIH0g
Y2F0Y2goZSkgeyAKKyAgICAgICAgcmV0dXJuICJGQUlMOiBFeGNlcHRpb24gdGhyb3duLiBTYW5k
Ym94ZWQgaWZyYW1lIFhIUiBhY2Nlc3MgaXMgbm90IGFsbG93ZWQgaW4gJ3NlbmQnLiBbIiArIGUu
bWVzc2FnZSArICJdLiI7IAorICAgIH0gCisgCisgICAgcmV0dXJuIHhoci5yZXNwb25zZVRleHQ7
IAorfSkoKTsgCis8L3NjcmlwdD4gCis8L2JvZHk+IAorPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2Fu
ZGJveGVkLWlmcmFtZS1hbGxvdy5jZ2kKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlm
cmFtZS1hbGxvdy5jZ2kJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFs
bG93LmNnaQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACisjIS91c3IvYmluL3BlcmwgLXdU
Cit1c2Ugc3RyaWN0OworCitwcmludCAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluXG4iOworcHJp
bnQgIkFjY2Vzcy1Db250cm9sLUFsbG93LUNyZWRlbnRpYWxzOiB0cnVlXG4iOworcHJpbnQgIkFj
Y2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbjogKlxuXG4iOworCitwcmludCAiUEFTUzogU2FuZGJv
eGVkIGlmcmFtZSBYSFIgYWNjZXNzIGFsbG93ZWQuXG4iOwoKUHJvcGVydHkgY2hhbmdlcyBvbjog
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNv
bnRyb2wtc2FuZGJveGVkLWlmcmFtZS1hbGxvdy5jZ2kKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4
ZWN1dGFibGUKICAgKyAqCgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVx
dWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtaWZy
YW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVx
dWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtaWZy
YW1lLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC1p
ZnJhbWUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNyBAQAorPGh0bWw+IAorPGJvZHk+
IAorPHByZSBpZD0nY29uc29sZSc+PC9wcmU+IAorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiPiAKKworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwgPSAo
ZnVuY3Rpb24oKSB7CisgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdDsgCisgCisgCisg
ICAgdHJ5IHsgCisgICAgICAgIHhoci5vcGVuKCJHRVQiLCAiaHR0cDovLzEyNy4wLjAuMTo4MDAw
L3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1l
LWRlbmllZC5jZ2kiLCBmYWxzZSk7IAorICAgIH0gY2F0Y2goZSkgeyAKKyAgICAgICAgcmV0dXJu
ICJGQUlMOiBFeGNlcHRpb24gdGhyb3duLiBTYW5kYm94ZWQgaWZyYW1lIFhIUiBhY2Nlc3MgaXMg
bm90IGFsbG93ZWQgaW4gJ29wZW4nLiBbIiArIGUubWVzc2FnZSArICJdLiI7IAorICAgIH0gCisg
CisgICAgdHJ5IHsgCisgICAgICAgIHhoci5zZW5kKCk7IAorICAgIH0gY2F0Y2goZSkgeyAKKyAg
ICAgICAgcmV0dXJuICJQQVNTOiBFeGNlcHRpb24gdGhyb3duLiBTYW5kYm94ZWQgaWZyYW1lIFhI
UiBhY2Nlc3Mgd2FzIGRlbmllZCBpbiAnc2VuZCcuIFsiICsgZS5tZXNzYWdlICsgIl0uIjsgCisg
ICAgfQorIAorICAgIHJldHVybiB4aHIucmVzcG9uc2VUZXh0OyAKK30pKCk7CisgIAorPC9zY3Jp
cHQ+IAorPC9ib2R5PiAKKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVu
aWVkLXdpdGhvdXQtd2lsZGNhcmQtaWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2Fu
ZGJveGVkLWlmcmFtZS1kZW5pZWQtd2l0aG91dC13aWxkY2FyZC1pZnJhbWUuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2Vz
L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQt
aWZyYW1lLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjYgQEAKKzxodG1sPgorPGJvZHk+
Cis8cHJlIGlkPSdjb25zb2xlJz48L3ByZT4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
Ij4KKworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwgPSAoZnVu
Y3Rpb24oKSB7CisgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKKworICAgIHRyeSB7
CisgICAgICAgIHhoci5vcGVuKCJHRVQiLCAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL3htbGh0dHBy
ZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC13
aXRob3V0LXdpbGRjYXJkLmNnaSIsIGZhbHNlKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAg
cmV0dXJuICJGQUlMOiBFeGNlcHRpb24gdGhyb3duLiBTYW5kYm94ZWQgaWZyYW1lIFhIUiBhY2Nl
c3MgaXMgbm90IGFsbG93ZWQgaW4gJ29wZW4nLiBbIiArIGUubWVzc2FnZSArICJdLiI7CisgICAg
fQorCisgICAgdHJ5IHsKKyAgICAgICAgeGhyLnNlbmQoKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAg
ICAgICAgcmV0dXJuICJQQVNTOiBFeGNlcHRpb24gdGhyb3duLiBTYW5kYm94ZWQgaWZyYW1lIFhI
UiBhY2Nlc3Mgd2FzIGRlbmllZCBpbiAnc2VuZCcuIFsiICsgZS5tZXNzYWdlICsgIl0uIjsKKyAg
ICB9CisKKyAgICByZXR1cm4geGhyLnJlc3BvbnNlVGV4dDsKK30pKCk7CisKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVx
dWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtd2l0
aG91dC13aWxkY2FyZC5jZ2kKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1k
ZW5pZWQtd2l0aG91dC13aWxkY2FyZC5jZ2kJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94
ZWQtaWZyYW1lLWRlbmllZC13aXRob3V0LXdpbGRjYXJkLmNnaQkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw4IEBACisjIS91c3IvYmluL3BlcmwgLXdUCit1c2Ugc3RyaWN0OworCitwcmludCAiQ29u
dGVudC1UeXBlOiB0ZXh0L3BsYWluXG4iOworcHJpbnQgIkFjY2Vzcy1Db250cm9sLUFsbG93LUNy
ZWRlbnRpYWxzOiB0cnVlXG4iOworcHJpbnQgIkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbjog
aHR0cDovLzEyNy4wLjAuMTo4MDAwXG5cbiI7CisKK3ByaW50ICJGQUlMOiBTYW5kYm94ZWQgaWZy
YW1lIFhIUiBhY2Nlc3MgYWxsb3dlZC5cbiI7CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1z
YW5kYm94ZWQtaWZyYW1lLWRlbmllZC13aXRob3V0LXdpbGRjYXJkLmNnaQpfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFk
ZGVkOiBzdm46ZXhlY3V0YWJsZQogICArICoKCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1l
LWRlbmllZC5jZ2kKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRw
cmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQu
Y2dpCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVz
dC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQuY2dpCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYgQEAKKyMhL3Vzci9iaW4vcGVybCAtd1QKK3VzZSBzdHJp
Y3Q7CisKK3ByaW50ICJDb250ZW50LVR5cGU6IHRleHQvcGxhaW5cblxuIjsKKworcHJpbnQgIkZB
SUw6IFNhbmRib3hlZCBpZnJhbWUgWEhSIGFjY2VzcyBhbGxvd2VkLlxuIjsKClByb3BlcnR5IGNo
YW5nZXMgb246IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2Vz
L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLmNnaQpfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFk
ZGVkOiBzdm46ZXhlY3V0YWJsZQogICArICoKCkluZGV4OiBMYXlvdXRUZXN0cy9zdG9yYWdlL2Rv
bXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3NhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9y
YWdlL3NhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2Uvc2FuZGJveGVkLWlm
cmFtZS1kZW5pZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwIEBACitU
aGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBzYW5kYm94ZWQgaWZyYW1lIGRvZXMgbm90IGhhdmUgYWNj
ZXNzIHRvIHRoZSBsb2NhbCBzdG9yYWdlIG9mIGl0cyBjb250YWluaW5nIGZyYW1lIGZyb20gdGhl
IHNhbWUgb3JpZ2luLgorCitUaGlzIHRlc3Qgd2lsbCBwcmludCAiUEFTUyIgb24gc3VjY2Vzcy4K
KworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+
JworLS0tLS0tLS0KK1BBU1M6IFNhbmRib3hlZCBpZnJhbWUgZG9lcyBub3QgaGF2ZSBhY2Nlc3Mg
dG8gdGhlIGxvY2FsIHN0b3JhZ2UgZnJvbSB0aGUgc2FtZSBvcmlnaW4uCkluZGV4OiBMYXlvdXRU
ZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3NhbmRib3hlZC1pZnJhbWUtZGVu
aWVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL2xv
Y2Fsc3RvcmFnZS9zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9zYW5kYm94ZWQtaWZy
YW1lLWRlbmllZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM5IEBACis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7Cit9CisKK3dpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpCit7CisgICAg
aWYgKCF3aW5kb3cubG9jYWxTdG9yYWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJsb2dnZXIiKS5pbm5lckhUTUwgPSAid2luZG93LmxvY2FsU3RvcmFnZSBET0VTIE5PVCBl
eGlzdCI7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBsb2NhbFN0b3JhZ2UuY2xlYXIoKTsKKyAgICBsb2NhbFN0b3JhZ2UuZm9v
ID0gImJhciI7CisKKyAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZy
YW1lIik7CisgICAgaWZyYW1lLnNhbmRib3ggPSAiYWxsb3ctc2NyaXB0cyI7CisgICAgaWZyYW1l
LnNyYyA9ICJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtaWZyYW1lLmh0bWwiOwor
ICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTsKK30KKworPC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKyAgICA8cD5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBzYW5kYm94ZWQg
aWZyYW1lIGRvZXMgbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBsb2NhbCBzdG9yYWdlCisgICAgb2Yg
aXRzIGNvbnRhaW5pbmcgZnJhbWUgZnJvbSB0aGUgc2FtZSBvcmlnaW4uPC9wPgorCisgICAgPHA+
VGhpcyB0ZXN0IHdpbGwgcHJpbnQgJnF1b3Q7UEFTUyZxdW90OyBvbiBzdWNjZXNzLjwvcD4KKwor
ICAgIDxkaXYgaWQ9ImxvZ2dlciI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3Jlc291cmNlcy9zYW5kYm94
ZWQtaWZyYW1lLWRlbmllZC1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9z
dG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1l
LWRlbmllZC1pZnJhbWUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N0b3JhZ2Uv
ZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2UvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZGVuaWVk
LWlmcmFtZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIwIEBACis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdD4KKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgibG9nZ2VyIikuaW5uZXJIVE1MID0gKGxvY2FsU3RvcmFnZS5nZXRJ
dGVtKCJmb28iKSA9PSAiYmFyIikKKyAgICAgICAgPyAiRkFJTDogU2FuZGJveGVkIGlmcmFtZSBo
YXMgYWNjZXNzIHRvIHRoZSBsb2NhbCBzdG9yYWdlIGZyb20gdGhlIHNhbWUgb3JpZ2luLiIKKyAg
ICAgICAgOiAiUEFTUzogU2FuZGJveGVkIGlmcmFtZSBkb2VzIG5vdCBoYXZlIGFjY2VzcyB0byB0
aGUgbG9jYWwgc3RvcmFnZSBmcm9tIHRoZSBzYW1lIG9yaWdpbi4iOworCisgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ibG9n
Z2VyIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3N0b3JhZ2Uv
ZG9tc3RvcmFnZS9zZXNzaW9uc3RvcmFnZS9zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL3Nlc3Np
b25zdG9yYWdlL3NhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9zZXNzaW9uc3RvcmFnZS9zYW5k
Ym94ZWQtaWZyYW1lLWRlbmllZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTAgQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHNhbmRib3hlZCBpZnJhbWUgZG9lcyBub3Qg
aGF2ZSBhY2Nlc3MgdG8gdGhlIHNlc3Npb24gc3RvcmFnZSBvZiBpdHMgY29udGFpbmluZyBmcmFt
ZSBmcm9tIHRoZSBzYW1lIG9yaWdpbi4KKworVGhpcyB0ZXN0IHdpbGwgcHJpbnQgIlBBU1MiIG9u
IHN1Y2Nlc3MuCisKKworCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZy
YW1lMC0tPi0tPicKKy0tLS0tLS0tCitQQVNTOiBTYW5kYm94ZWQgaWZyYW1lIGRvZXMgbm90IGhh
dmUgYWNjZXNzIHRvIHRoZSBzZXNzaW9uIHN0b3JhZ2UgZnJvbSB0aGUgc2FtZSBvcmlnaW4uCklu
ZGV4OiBMYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2Uvc2Vzc2lvbnN0b3JhZ2Uvc2FuZGJv
eGVkLWlmcmFtZS1kZW5pZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdG9yYWdl
L2RvbXN0b3JhZ2Uvc2Vzc2lvbnN0b3JhZ2Uvc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9zZXNzaW9uc3Rv
cmFnZS9zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDM5IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK3dpbmRvdy5vbmxvYWQgPSBm
dW5jdGlvbigpCit7CisgICAgaWYgKCF3aW5kb3cuc2Vzc2lvblN0b3JhZ2UpIHsKKyAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZ2dlciIpLmlubmVySFRNTCA9ICJ3aW5kb3cuc2Vz
c2lvblN0b3JhZ2UgRE9FUyBOT1QgZXhpc3QiOworICAgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2Vzc2lvblN0b3JhZ2UuY2xlYXIo
KTsKKyAgICBzZXNzaW9uU3RvcmFnZS5mb28gPSAiYmFyIjsKKworICAgIHZhciBpZnJhbWUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICBpZnJhbWUuc2FuZGJveCA9ICJh
bGxvdy1zY3JpcHRzIjsKKyAgICBpZnJhbWUuc3JjID0gInJlc291cmNlcy9zYW5kYm94ZWQtaWZy
YW1lLWRlbmllZC1pZnJhbWUuaHRtbCI7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChp
ZnJhbWUpOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxwPlRoaXMgdGVz
dCB2ZXJpZmllcyB0aGF0IHNhbmRib3hlZCBpZnJhbWUgZG9lcyBub3QgaGF2ZSBhY2Nlc3MgdG8g
dGhlIHNlc3Npb24gc3RvcmFnZQorICAgIG9mIGl0cyBjb250YWluaW5nIGZyYW1lIGZyb20gdGhl
IHNhbWUgb3JpZ2luLjwvcD4KKworICAgIDxwPlRoaXMgdGVzdCB3aWxsIHByaW50ICZxdW90O1BB
U1MmcXVvdDsgb24gc3VjY2Vzcy48L3A+CisKKyAgICA8ZGl2IGlkPSJsb2dnZXIiPjwvZGl2Pgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL3Nl
c3Npb25zdG9yYWdlL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC1pZnJhbWUuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2Uvc2Vzc2lvbnN0
b3JhZ2UvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWlmcmFtZS5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL3Nlc3Npb25zdG9yYWdl
L3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC1pZnJhbWUuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwyMCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisKK3dpbmRvdy5v
bmxvYWQgPSBmdW5jdGlvbigpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZ2dl
ciIpLmlubmVySFRNTCA9IChzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCJmb28iKSA9PSAiYmFyIikK
KyAgICAgICAgPyAiRkFJTDogU2FuZGJveGVkIGlmcmFtZSBoYXMgYWNjZXNzIHRvIHRoZSBzZXNz
aW9uIHN0b3JhZ2UgZnJvbSB0aGUgc2FtZSBvcmlnaW4uIgorICAgICAgICA6ICJQQVNTOiBTYW5k
Ym94ZWQgaWZyYW1lIGRvZXMgbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBzZXNzaW9uIHN0b3JhZ2Ug
ZnJvbSB0aGUgc2FtZSBvcmlnaW4uIjsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKwor
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImxvZ2dlciI+PC9kaXY+Cis8L2Jv
ZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="24593"
          type_id="1"
          status="-"
          setter="darin"
    />
    <flag name="commit-queue"
          id="24601"
          type_id="3"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43307</attachid>
            <date>2009-11-16 07:48:51 -0800</date>
            <delta_ts>2009-11-17 10:11:08 -0800</delta_ts>
            <desc>Thank you for your informative review. Here&apos;s our updated patch.</desc>
            <filename>sandbox-r51018.patch</filename>
            <type>text/plain</type>
            <size>101343</size>
            <attacher name="Patrik Persson">patrik.j.persson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTAzNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODIgQEAKKzIwMDktMTEtMTYgIFBhdHJpayBQZXJzc29uICA8cGF0cmlrLmoucGVy
c3NvbkBlcmljc3Nvbi5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wbGVtZW50IEhUTUw1J3Mgc2FuZGJveCBhdHRyaWJ1dGUgZm9yIGlmcmFt
ZXMuCisgICAgICAgIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L3RleHQtbGV2ZWwtc2VtYW50
aWNzLmh0bWwjYXR0ci1pZnJhbWUtc2FuZGJveAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyODgKKworICAgICAgICBUZXN0czogZmFzdC9mcmFtZXMv
c2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy5odG1sCisgICAgICAgICAgICAgICBm
YXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm1zLmh0bWwKKyAgICAgICAgICAgICAgIGZh
c3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1hbGxvd2VkLmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQu
aHRtbAorICAgICAgICAgICAgICAgZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0
aW9uLXRhcmdldGxpbmsuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9mcmFtZXMvc2FuZGJveGVk
LWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4uaHRtbAorICAgICAgICAgICAgICAgZmFzdC9m
cmFtZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
ZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtc2NyaXB0aW5nLmh0bWwKKyAgICAgICAgICAgICAgIGh0
dHAvdGVzdHMvc2VjdXJpdHkvc2FuZGJveGVkLWlmcmFtZS1kb2N1bWVudC1jb29raWUuaHRtbAor
ICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLW1vZGlm
eS1zZWxmLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklF
RC1zYW5kYm94ZWQtaWZyYW1lLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1hbGxvdy5odG1sCisgICAg
ICAgICAgICAgICBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRi
b3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQuaHRtbAorICAgICAgICAgICAgICAg
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1l
LWRlbmllZC5odG1sCisgICAgICAgICAgICAgICBzdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9y
YWdlL3NhbmRib3hlZC1pZnJhbWUtZGVuaWVkLmh0bWwKKyAgICAgICAgICAgICAgIHN0b3JhZ2Uv
ZG9tc3RvcmFnZS9zZXNzaW9uc3RvcmFnZS9zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC5odG1sCisK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVXaW5kb3cpOiBzYW5kYm94aW5nIG5hdmlnYXRpb24KKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dENvbnRyb2xsZXI6OmlzRW5hYmxlZCk6IHNhbmRib3hpbmcgc2NyaXB0cworICAgICAgICAqIGRv
bS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cHJvY2Vzc0h0dHBF
cXVpdik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y29va2llKTogcmFpc2UgZXhjZXB0
aW9uIHdoZW4gYWNjZXNzZWQgZnJvbSBzYW5kYm94CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6c2V0Q29va2llKTogcmFpc2UgZXhjZXB0aW9uIHdoZW4gYWNjZXNzZWQgZnJvbSBzYW5kYm94
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCk6IGNvcHkg
c2FuZGJveCBzdGF0dXMgZnJvbSBmcmFtZSB0byBTZWN1cml0eU9yaWdpbgorICAgICAgICAqIGRv
bS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5pZGw6CisgICAgICAgICogaHRt
bC9IVE1MQXBwbGV0RWxlbWVudC5jcHA6IHNhbmRib3hpbmcgYXBwbGV0cworICAgICAgICAoV2Vi
Q29yZTo6SFRNTEFwcGxldEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxBcHBsZXRFbGVtZW50OjpyZW5kZXJXaWRnZXRGb3JKU0JpbmRpbmdzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50Ojppc0phdmFFbmFibGVkKTogYWRkZWQKKyAg
ICAgICAgKiBodG1sL0hUTUxBcHBsZXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MQXR0
cmlidXRlTmFtZXMuaW46CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3Bw
OiBtYW5hZ2VtZW50IG9mIHNhbmRib3ggZmxhZ3MgYXMgc3RhdGVkIGluIGF0dHJpYnV0ZQorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50OjpIVE1MRnJhbWVPd25lckVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50OjpzZXRTYW5kYm94
RmxhZ3NGcm9tQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxl
bWVudDo6dXBkYXRlU2FuZGJveEZsYWdzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZU93
bmVyRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTEZy
YW1lT3duZXJFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHA6
IGFkZGVkIHNhbmRib3ggYXR0cmlidXRlIHBhcnNpbmcKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNl
U2FuZGJveEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQu
aWRsOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmdldENvb2tpZXMpOgorICAgICAgICAq
IGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
c3VibWl0Rm9ybSk6IHNhbmRib3hpbmcgZm9ybXMKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpyZXF1ZXN0T2JqZWN0KTogc2FuZGJveGluZyBwbHVnaW5zCisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6c2hvdWxkQWxsb3dOYXZpZ2F0aW9uKTogc2FuZGJveGluZyBuYXZpZ2F0
aW9uCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6IG1hbmFnZW1lbnQgYW5kIHByb3BhZ2F0aW9u
IG9mIHNhbmRib3ggZmxhZ3MKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpGcmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZTo6aW5oZXJpdFNhbmRib3hGbGFncyk6CisgICAgICAgICogcGFn
ZS9GcmFtZS5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmlzU2FuZGJveGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lOjpzYW5kYm94RmxhZ3MpOgorICAgICAgICAqIHBhZ2UvU2VjdXJp
dHlPcmlnaW4uY3BwOiBhZGRlZCB1bmlxdWUgb3JpZ2luIGZvciBzYW5kYm94ZWQgZnJhbWVzCisg
ICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4pOgorICAgICAg
ICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNhbkFjY2Vzcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbjo6Y2FuUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbjo6dG9TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46Omlz
U2FtZVNjaGVtZUhvc3RQb3J0KToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luLmg6IGFk
ZGVkIHNhbmRib3ggZmxhZyB0eXBlCisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAoV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW46OnNldFNhbmRib3hGbGFncyk6CisgICAgICAgIChXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbjo6aXNTYW5kYm94ZWQpOgorICAgICAgICAqIHN0b3JhZ2UvRGF0YWJh
c2VUcmFja2VyLmNwcDogc2FuZGJveGluZyBvcmlnaW4gKGZvciBsb2NhbCBzdG9yYWdlKQorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpjYW5Fc3RhYmxpc2hEYXRhYmFzZSk6Cisg
ICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldENoYW5uZWw6OmRpZFJlY2VpdmVEYXRhKToKKwogMjAwOS0xMS0xNCAgQ2hy
aXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEFkbGVyLgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHAJKHJldmlzaW9uIDUxMDE4KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0NCw2ICs3NDQsMTAgQEAgc3RhdGljIEZy
YW1lKiBjcmVhdGVXaW5kb3coRXhlY1N0YXRlKiBleAogICAgIEFTU0VSVChsZXhpY2FsRnJhbWUp
OwogICAgIEFTU0VSVChkeW5hbWljRnJhbWUpOwogCisgICAgLy8gU2FuZGJveGVkIGlmcmFtZXMg
Y2Fubm90IG9wZW4gbmV3IGF1eGlsaWFyeSBicm93c2luZyBjb250ZXh0cy4KKyAgICBpZiAob3Bl
bmVyRnJhbWUgJiYgb3BlbmVyRnJhbWUtPmlzU2FuZGJveGVkKFNhbmRib3hOYXZpZ2F0aW9uKSkK
KyAgICAgICAgcmV0dXJuIDA7CisKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdDsKIAogICAg
IC8vIEZvciB3aGF0ZXZlciByZWFzb24sIEZpcmVmb3ggdXNlcyB0aGUgZHluYW1pY0dsb2JhbE9i
amVjdCB0byBkZXRlcm1pbmUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmNwcAkocmV2aXNpb24gNTEwMTgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTEsNiArMjkxLDkgQEAgYm9vbCBTY3Jp
cHRDb250cm9sbGVyOjphbnlQYWdlSXNQcm9jZXNzaQogCiBib29sIFNjcmlwdENvbnRyb2xsZXI6
OmlzRW5hYmxlZCgpCiB7CisgICAgaWYgKG1fZnJhbWUtPmlzU2FuZGJveGVkKFNhbmRib3hTY3Jp
cHRzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKICAgICBTZXR0aW5ncyogc2V0
dGluZ3MgPSBtX2ZyYW1lLT5zZXR0aW5ncygpOwogICAgIHJldHVybiBtX2ZyYW1lLT5sb2FkZXIo
KS0+Y2xpZW50KCktPmFsbG93SmF2YVNjcmlwdChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+aXNKYXZh
U2NyaXB0RW5hYmxlZCgpKTsKIH0KSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDUxMDE4KQorKysg
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTczLDggKzIxNzMs
MTAgQEAgdm9pZCBEb2N1bWVudDo6cHJvY2Vzc0h0dHBFcXVpdihjb25zdCBTdAogICAgICAgICB9
CiAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShlcXVpdiwgInNldC1jb29raWUiKSkg
ewogICAgICAgICAvLyBGSVhNRTogbWFrZSBzZXRDb29raWUgd29yayBvbiBYTUwgZG9jdW1lbnRz
IHRvbzsgZS5nLiBpbiBjYXNlIG9mIDxodG1sOm1ldGEgLi4uLi4+Ci0gICAgICAgIGlmIChpc0hU
TUxEb2N1bWVudCgpKQotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4odGhp
cyktPnNldENvb2tpZShjb250ZW50KTsKKyAgICAgICAgaWYgKGlzSFRNTERvY3VtZW50KCkpIHsK
KyAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7IC8vIEV4Y2VwdGlvbiAoZm9yIHNhbmRib3hl
ZCBkb2N1bWVudHMpIGlnbm9yZWQuCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxIVE1MRG9jdW1l
bnQqPih0aGlzKS0+c2V0Q29va2llKGNvbnRlbnQsIGVjKTsKKyAgICAgICAgfQogICAgIH0gZWxz
ZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZXF1aXYsICJjb250ZW50LWxhbmd1YWdlIikpCiAgICAg
ICAgIHNldENvbnRlbnRMYW5ndWFnZShjb250ZW50KTsKICAgICBlbHNlIGlmIChlcXVhbElnbm9y
aW5nQ2FzZShlcXVpdiwgIngtZG5zLXByZWZldGNoLWNvbnRyb2wiKSkKQEAgLTI5OTIsMTEgKzI5
OTQsMjAgQEAgRWxlbWVudCogRG9jdW1lbnQ6Om93bmVyRWxlbWVudCgpIGNvbnN0CiAgICAgcmV0
dXJuIGZyYW1lKCktPm93bmVyRWxlbWVudCgpOwogfQogCi1TdHJpbmcgRG9jdW1lbnQ6OmNvb2tp
ZSgpIGNvbnN0CitTdHJpbmcgRG9jdW1lbnQ6OmNvb2tpZShFeGNlcHRpb25Db2RlJiBlYykgY29u
c3QKIHsKICAgICBpZiAocGFnZSgpICYmICFwYWdlKCktPmNvb2tpZUVuYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwogCisgICAgLy8gRklYTUU6IHRoZSBIVE1MNSBET00gc3BlYyBz
dGF0ZXMgdGhhdCB0aGlzIGF0dHJpYnV0ZSBjYW4gcmFpc2UgYW4KKyAgICAvLyBJTlZBTElEX1NU
QVRFX0VSUiBleGNlcHRpb24gb24gZ2V0dGluZyBpZiB0aGUgRG9jdW1lbnQgaGFzIG5vCisgICAg
Ly8gYnJvd3NpbmcgY29udGV4dC4KKworICAgIGlmIChzZWN1cml0eU9yaWdpbigpLT5pc1NhbmRi
b3hlZChTYW5kYm94T3JpZ2luKSkgeworICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKKyAgICAg
ICAgcmV0dXJuIFN0cmluZygpOworICAgIH0KKwogICAgIEtVUkwgY29va2llVVJMID0gdGhpcy0+
Y29va2llVVJMKCk7CiAgICAgaWYgKGNvb2tpZVVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKQEAgLTMwMDQsMTEgKzMwMTUsMjAgQEAgU3RyaW5nIERvY3VtZW50Ojpjb29r
aWUoKSBjb25zdAogICAgIHJldHVybiBjb29raWVzKHRoaXMsIGNvb2tpZVVSTCk7CiB9CiAKLXZv
aWQgRG9jdW1lbnQ6OnNldENvb2tpZShjb25zdCBTdHJpbmcmIHZhbHVlKQordm9pZCBEb2N1bWVu
dDo6c2V0Q29va2llKGNvbnN0IFN0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewog
ICAgIGlmIChwYWdlKCkgJiYgIXBhZ2UoKS0+Y29va2llRW5hYmxlZCgpKQogICAgICAgICByZXR1
cm47CiAKKyAgICAvLyBGSVhNRTogdGhlIEhUTUw1IERPTSBzcGVjIHN0YXRlcyB0aGF0IHRoaXMg
YXR0cmlidXRlIGNhbiByYWlzZSBhbgorICAgIC8vIElOVkFMSURfU1RBVEVfRVJSIGV4Y2VwdGlv
biBvbiBzZXR0aW5nIGlmIHRoZSBEb2N1bWVudCBoYXMgbm8KKyAgICAvLyBicm93c2luZyBjb250
ZXh0LgorCisgICAgaWYgKHNlY3VyaXR5T3JpZ2luKCktPmlzU2FuZGJveGVkKFNhbmRib3hPcmln
aW4pKSB7CisgICAgICAgIGVjID0gU0VDVVJJVFlfRVJSOworICAgICAgICByZXR1cm47CisgICAg
fQorCiAgICAgS1VSTCBjb29raWVVUkwgPSB0aGlzLT5jb29raWVVUkwoKTsKICAgICBpZiAoY29v
a2llVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDI1Nyw2ICs0Mjc3LDkgQEAg
dm9pZCBEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCgpCiAgICAgbV9jb29raWVVUkwgPSB1
cmw7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c2V0U2VjdXJpdHlPcmlnaW4oU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZSh1cmwpKTsKIAorICAgIC8vIFNldCBzYW5kYm94IGZsYWdzIGFzIGRl
dGVybWluZWQgYnkgdGhlIGZyYW1lLgorICAgIHNlY3VyaXR5T3JpZ2luKCktPnNldFNhbmRib3hG
bGFncyhtX2ZyYW1lLT5zYW5kYm94RmxhZ3MoKSk7CisgCiAgICAgaWYgKFNlY3VyaXR5T3JpZ2lu
OjphbGxvd1N1YnN0aXR1dGVEYXRhQWNjZXNzVG9Mb2NhbCgpKSB7CiAgICAgICAgIC8vIElmIHRo
aXMgZG9jdW1lbnQgd2FzIGxvYWRlZCB3aXRoIHN1YnN0aXR1dGVEYXRhLCB0aGVuIHRoZSBkb2N1
bWVudCBjYW4KICAgICAgICAgLy8gbG9hZCBsb2NhbCByZXNvdXJjZXMuICBTZWUgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NzU2CkluZGV4OiBXZWJDb3JlL2RvbS9E
b2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9u
IDUxMDE4KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjc1
LDggKzY3NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYsIEVs
ZW1lbnQqIHRpdGxlRWxlbWVudCA9IDApOwogICAgIHZvaWQgcmVtb3ZlVGl0bGUoRWxlbWVudCog
dGl0bGVFbGVtZW50KTsKIAotICAgIFN0cmluZyBjb29raWUoKSBjb25zdDsKLSAgICB2b2lkIHNl
dENvb2tpZShjb25zdCBTdHJpbmcmKTsKKyAgICBTdHJpbmcgY29va2llKEV4Y2VwdGlvbkNvZGUm
KSBjb25zdDsKKyAgICB2b2lkIHNldENvb2tpZShjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2Rl
Jik7CiAKICAgICBTdHJpbmcgcmVmZXJyZXIoKSBjb25zdDsKIApJbmRleDogV2ViQ29yZS9kb20v
RG9jdW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkocmV2
aXNpb24gNTEwMTgpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTE2MiwxMCArMTYyLDkgQEAgbW9kdWxlIGNvcmUgewogI2VuZGlmCiAgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgVVJMOwogCi0gICAgICAgIC8vIEZJWE1FOiB0aGUgRE9N
IHNwZWMgc3RhdGVzIHRoYXQgdGhpcyBhdHRyaWJ1dGUgY2FuIAotICAgICAgICAvLyByYWlzZSBh
biBleGNlcHRpb24gb24gc2V0dGluZy4KICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtDb252
ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIGNvb2tpZQotICAgICAgICAgICAgICAgICAg
ICAgLypzZXR0ZXIgcmFpc2VzIChET01FeGNlcHRpb24pKi87CisgICAgICAgICAgICAgICAgICAg
ICBnZXR0ZXIgcmFpc2VzIChET01FeGNlcHRpb24pLAorICAgICAgICAgICAgICAgICAgICAgc2V0
dGVyIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKIAogICAgICAgICAvLyBGSVhNRTogdGhlIERPTSBz
cGVjIGRvZXMgTk9UIGhhdmUgdGhpcyBhdHRyaWJ1dGUKICAgICAgICAgLy8gcmFpc2luZyBhbiBl
eGNlcHRpb24uCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAJKHJldmlzaW9uIDUx
MDE4KQorKysgV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTA4LDkgKzEwOCw3IEBAIGJvb2wgSFRNTEFwcGxldEVsZW1lbnQ6OnJlbmRlcmVySXNO
ZWVkZWQKIAogUmVuZGVyT2JqZWN0KiBIVE1MQXBwbGV0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIo
UmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7Ci0gICAgU2V0dGluZ3MqIHNldHRp
bmdzID0gZG9jdW1lbnQoKS0+c2V0dGluZ3MoKTsKLQotICAgIGlmIChzZXR0aW5ncyAmJiBzZXR0
aW5ncy0+aXNKYXZhRW5hYmxlZCgpKSB7CisgICAgaWYgKGlzSmF2YUVuYWJsZWQoKSkgewogICAg
ICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBhcmdzOwogCiAgICAgICAgIGFyZ3Muc2V0KCJj
b2RlIiwgZ2V0QXR0cmlidXRlKGNvZGVBdHRyKSk7CkBAIC0xNDIsOCArMTQwLDcgQEAgUmVuZGVy
T2JqZWN0KiBIVE1MQXBwbGV0RWxlbWVudDo6Y3JlYXRlUgogCiBSZW5kZXJXaWRnZXQqIEhUTUxB
cHBsZXRFbGVtZW50OjpyZW5kZXJXaWRnZXRGb3JKU0JpbmRpbmdzKCkgY29uc3QKIHsKLSAgICBT
ZXR0aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudCgpLT5zZXR0aW5ncygpOwotICAgIGlmICghc2V0
dGluZ3MgfHwgIXNldHRpbmdzLT5pc0phdmFFbmFibGVkKCkpCisgICAgaWYgKCFpc0phdmFFbmFi
bGVkKCkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgUmVuZGVyQXBwbGV0KiBhcHBsZXQgPSB0
b1JlbmRlckFwcGxldChyZW5kZXJlcigpKTsKQEAgLTE1Myw2ICsxNTAsMTggQEAgUmVuZGVyV2lk
Z2V0KiBIVE1MQXBwbGV0RWxlbWVudDo6cmVuZGVyVwogICAgIHJldHVybiBhcHBsZXQ7CiB9CiAK
K2Jvb2wgSFRNTEFwcGxldEVsZW1lbnQ6OmlzSmF2YUVuYWJsZWQoKSBjb25zdAoreworICAgIGlm
ICghaW5Eb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoZG9jdW1l
bnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+aXNTYW5kYm94ZWQoU2FuZGJveFBsdWdpbnMpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudCgp
LT5zZXR0aW5ncygpOworICAgIHJldHVybiBzZXR0aW5ncyAmJiBzZXR0aW5ncy0+aXNKYXZhRW5h
YmxlZCgpOworfQorCiB2b2lkIEhUTUxBcHBsZXRFbGVtZW50OjpmaW5pc2hQYXJzaW5nQ2hpbGRy
ZW4oKQogewogICAgIC8vIFRoZSBwYXJzZXIganVzdCByZWFjaGVkIDwvYXBwbGV0Piwgc28gYWxs
IHRoZSBwYXJhbXMgYXJlIGF2YWlsYWJsZSBub3cuCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEFw
cGxldEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1l
bnQuaAkocmV2aXNpb24gNTEwMTgpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
UmVuZGVyV2lkZ2V0KiByZW5kZXJXaWRnZXRGb3JKU0JpbmRpbmdzKCkgY29uc3Q7CiAKICAgICB2
b2lkIHNldHVwQXBwbGV0KCkgY29uc3Q7CisgICAgYm9vbCBpc0phdmFFbmFibGVkKCkgY29uc3Q7
CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgpOwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxBdHRy
aWJ1dGVOYW1lcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5h
bWVzLmluCShyZXZpc2lvbiA1MTAxOCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFt
ZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIyMCw2ICsyMjAsNyBAQCByb2xlCiByb3dzCiByb3dz
cGFuCiBydWxlcworc2FuZGJveAogc2NoZW1lCiBzY29wZQogc2Nyb2xsYW1vdW50CkluZGV4OiBX
ZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcAkocmV2aXNpb24gNTEwMTgpCisrKyBX
ZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEVyaWNzc29u
IEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zNSw2ICsz
Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6SFRNTEZy
YW1lT3duZXJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBk
b2N1bWVudCkKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBDcmVhdGVFbGVt
ZW50KQogICAgICwgbV9jb250ZW50RnJhbWUoMCkKKyAgICAsIG1fc2FuZGJveEZsYWdzRnJvbUF0
dHJpYnV0ZShTYW5kYm94Tm9uZSkKIHsKIH0KIApAQCAtNjQsNiArNjYsMzIgQEAgRE9NV2luZG93
KiBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmNvbnRlbgogICAgIHJldHVybiBtX2NvbnRlbnRGcmFt
ZSA/IG1fY29udGVudEZyYW1lLT5kb21XaW5kb3coKSA6IDA7CiB9CiAKK3ZvaWQgSFRNTEZyYW1l
T3duZXJFbGVtZW50OjpzZXRTYW5kYm94RmxhZ3NGcm9tQXR0cmlidXRlKFNhbmRib3hGbGFncyBm
bGFnc0Zyb21BdHRyaWJ1dGUpCit7CisgICAgbV9zYW5kYm94RmxhZ3NGcm9tQXR0cmlidXRlID0g
ZmxhZ3NGcm9tQXR0cmlidXRlOworICAgIHVwZGF0ZVNhbmRib3hGbGFncygpOworfQorCit2b2lk
IEhUTUxGcmFtZU93bmVyRWxlbWVudDo6dXBkYXRlU2FuZGJveEZsYWdzKCkKK3sKKyAgICBTYW5k
Ym94RmxhZ3MgZmxhZ3NGcm9tUGFyZW50ID0gbV9zYW5kYm94RmxhZ3NGcm9tQXR0cmlidXRlOwor
ICAgIAorICAgIC8vIEluaGVyaXQgc2FuZGJveCBmbGFncyBmcm9tIHRoZSBwYXJlbnQgZnJhbWUs
IGlmIHRoZXJlIGlzIG9uZS4KKyAgICBGcmFtZSogcGFyZW50RnJhbWU7CisgICAgaWYgKGluRG9j
dW1lbnQoKSAmJiAocGFyZW50RnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKSkKKyAgICAgICAg
ZmxhZ3NGcm9tUGFyZW50IHw9IHBhcmVudEZyYW1lLT5zYW5kYm94RmxhZ3MoKTsKKworICAgIGlm
IChjb250ZW50RnJhbWUoKSkKKyAgICAgICAgY29udGVudEZyYW1lKCktPmluaGVyaXRTYW5kYm94
RmxhZ3MoZmxhZ3NGcm9tUGFyZW50KTsKK30KKwordm9pZCBIVE1MRnJhbWVPd25lckVsZW1lbnQ6
Omluc2VydGVkSW50b0RvY3VtZW50KCkKK3sKKyAgICBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRv
RG9jdW1lbnQoKTsKKworICAgIHVwZGF0ZVNhbmRib3hGbGFncygpOworfQorCiAjaWYgRU5BQkxF
KFNWRykKIFNWR0RvY3VtZW50KiBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmdldFNWR0RvY3VtZW50
KEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxGcmFt
ZU93bmVyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25l
ckVsZW1lbnQuaAkocmV2aXNpb24gNTEwMTgpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3du
ZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDEyICsyMSwxMiBAQAogI2lmbmRlZiBI
VE1MRnJhbWVPd25lckVsZW1lbnRfaAogI2RlZmluZSBIVE1MRnJhbWVPd25lckVsZW1lbnRfaAog
CisjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIERPTVdpbmRvdzsKLWNsYXNzIEZyYW1lOwogCiAjaWYgRU5B
QkxFKFNWRykKIGNsYXNzIFNWR0RvY3VtZW50OwpAQCAtNDksNiArNDksMTAgQEAgcHVibGljOgog
cHJvdGVjdGVkOgogICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCopOwogCisgICAgdm9pZCBzZXRTYW5kYm94RmxhZ3NGcm9tQXR0
cmlidXRlKFNhbmRib3hGbGFncyk7CisKKyAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9j
dW1lbnQoKTsKKyAgICAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEZyYW1lOwogCkBAIC01
Nyw3ICs2MSwxMCBAQCBwcml2YXRlOgogICAgIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVtb3Zl
KCk7CiAKKyAgICB2b2lkIHVwZGF0ZVNhbmRib3hGbGFncygpOworCiAgICAgRnJhbWUqIG1fY29u
dGVudEZyYW1lOworICAgIFNhbmRib3hGbGFncyBtX3NhbmRib3hGbGFnc0Zyb21BdHRyaWJ1dGU7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTElG
cmFtZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxl
bWVudC5jcHAJKHJldmlzaW9uIDUxMDE4KQorKysgV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNCw2ICs0LDcgQEAKICAqICAgICAgICAgICAoQykg
MjAwMCBTaW1vbiBIYXVzbWFubiAoaGF1c21hbm5Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykg
MjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKICAqIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNiwgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDkgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTY2LDYgKzY3LDQ2IEBAIGJvb2wgSFRNTElGcmFtZUVsZW1lbnQ6
Om1hcFRvRW50cnkoY29uc3QKICAgICByZXR1cm4gSFRNTEZyYW1lRWxlbWVudEJhc2U6Om1hcFRv
RW50cnkoYXR0ck5hbWUsIHJlc3VsdCk7CiB9CiAKK3N0YXRpYyBTYW5kYm94RmxhZ3MgcGFyc2VT
YW5kYm94QXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cmlidXRlKQoreworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBhbGxvd0Zvcm1zLCAoImFsbG93LWZv
cm1zIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBhbGxv
d1NhbWVPcmlnaW4sICgiYWxsb3ctc2FtZS1vcmlnaW4iKSk7CisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGFsbG93U2NyaXB0cywgKCJhbGxvdy1zY3JpcHRzIikp
OworICAgIAorICAgIFNhbmRib3hGbGFncyBuZXdTYW5kYm94RmxhZ3M7CisgICAgLy8gUGFyc2Ug
dGhlIHVub3JkZXJlZCBzZXQgb2YgdW5pcXVlIHNwYWNlLXNlcGFyYXRlZCB0b2tlbnMuCisgICAg
aWYgKGF0dHJpYnV0ZS0+aXNOdWxsKCkpCisgICAgICAgIG5ld1NhbmRib3hGbGFncyA9IFNhbmRi
b3hOb25lOworICAgIGVsc2UgeworICAgICAgICBuZXdTYW5kYm94RmxhZ3MgPSBTYW5kYm94QWxs
OworICAgICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IGF0dHJpYnV0ZS0+dmFsdWUoKS5j
aGFyYWN0ZXJzKCk7CisgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGF0dHJpYnV0ZS0+dmFsdWUo
KS5sZW5ndGgoKTsKKyAgICAgICAgdW5zaWduZWQgc3RhcnQgPSAwOworICAgICAgICB3aGlsZSAo
dHJ1ZSkgeworICAgICAgICAgICAgd2hpbGUgKHN0YXJ0IDwgbGVuZ3RoICYmIGlzQVNDSUlTcGFj
ZShjaGFyYWN0ZXJzW3N0YXJ0XSkpCisgICAgICAgICAgICAgICAgKytzdGFydDsKKyAgICAgICAg
ICAgIGlmIChzdGFydCA+PSBsZW5ndGgpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB1bnNpZ25lZCBlbmQgPSBzdGFydCArIDE7CisgICAgICAgICAgICB3aGlsZSAoZW5kIDwg
bGVuZ3RoICYmICFpc0FTQ0lJU3BhY2UoY2hhcmFjdGVyc1tlbmRdKSkKKyAgICAgICAgICAgICAg
ICArK2VuZDsKKworICAgICAgICAgICAgLy8gVHVybiBvZmYgdGhlIGNvcnJlc3BvbmRpbmcgc2Fu
ZGJveCBmbGFnIGlmIGl0J3Mgc2V0IGFzICJhbGxvd2VkIi4KKyAgICAgICAgICAgIEF0b21pY1N0
cmluZyBzYW5kYm94VG9rZW4gPSBBdG9taWNTdHJpbmcoY2hhcmFjdGVycyArIHN0YXJ0LCBlbmQg
LSBzdGFydCk7CisgICAgICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uoc2FuZGJveFRva2Vu
LCBhbGxvd1NhbWVPcmlnaW4pKQorICAgICAgICAgICAgICAgIG5ld1NhbmRib3hGbGFncyAmPSB+
U2FuZGJveE9yaWdpbjsKKyAgICAgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHNh
bmRib3hUb2tlbiwgYWxsb3dGb3JtcykpCisgICAgICAgICAgICAgICAgbmV3U2FuZGJveEZsYWdz
ICY9IH5TYW5kYm94Rm9ybXM7CisgICAgICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2Fz
ZShzYW5kYm94VG9rZW4sIGFsbG93U2NyaXB0cykpCisgICAgICAgICAgICAgICAgbmV3U2FuZGJv
eEZsYWdzICY9IH5TYW5kYm94U2NyaXB0czsKKworICAgICAgICAgICAgc3RhcnQgPSBlbmQgKyAx
OworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiBuZXdTYW5kYm94RmxhZ3M7Cit9
CisKIHZvaWQgSFRNTElGcmFtZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0
dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IHdpZHRoQXR0cikKQEAg
LTg4LDcgKzEyOSw5IEBAIHZvaWQgSFRNTElGcmFtZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmkK
ICAgICAgICAgaWYgKCFhdHRyLT5pc051bGwoKSAmJiAhYXR0ci0+dmFsdWUoKS50b0ludCgpKQog
ICAgICAgICAgICAgLy8gQWRkIGEgcnVsZSB0aGF0IG51bGxzIG91dCBvdXIgYm9yZGVyIHdpZHRo
LgogICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgs
ICIwIik7Ci0gICAgfSBlbHNlCisgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gc2FuZGJv
eEF0dHIpCisgICAgICAgIHNldFNhbmRib3hGbGFnc0Zyb21BdHRyaWJ1dGUocGFyc2VTYW5kYm94
QXR0cmlidXRlKGF0dHIpKTsKKyAgICBlbHNlCiAgICAgICAgIEhUTUxGcmFtZUVsZW1lbnRCYXNl
OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIApJbmRleDogV2ViQ29yZS9odG1sL0hU
TUxJRnJhbWVFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTElGcmFt
ZUVsZW1lbnQuaWRsCShyZXZpc2lvbiA1MTAxOCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1l
RWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAgbW9kdWxlIGh0bWwg
ewogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nLCBS
ZWZsZWN0PW1hcmdpbmhlaWdodF0gRE9NU3RyaW5nICAgICAgIG1hcmdpbkhlaWdodDsKICAgICAg
ICAgICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZywgUmVmbGVjdD1t
YXJnaW53aWR0aF0gRE9NU3RyaW5nICAgICAgIG1hcmdpbldpZHRoOwogICAgICAgICAgICAgICAg
ICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nLCBSZWZsZWN0XSBET01TdHJpbmcg
ICAgICAgbmFtZTsKKyAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVs
bFN0cmluZywgUmVmbGVjdF0gRE9NU3RyaW5nICAgICAgIHNhbmRib3g7CiAgICAgICAgICAgICAg
ICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmcsIFJlZmxlY3RdIERPTVN0cmlu
ZyAgICAgICBzY3JvbGxpbmc7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51
bGxUb051bGxTdHJpbmcsIEN1c3RvbVNldHRlciwgUmVmbGVjdF0gRE9NU3RyaW5nICAgICAgIHNy
YzsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZywg
UmVmbGVjdF0gRE9NU3RyaW5nICAgICAgIHdpZHRoOwpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDUxMDE4KQorKysgV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMDIsMTAg
KzEyMDIsMTQgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpnZXRDb29raWVzKGxvbgogICAg
ICAgICAgICAgVmVjdG9yPENvb2tpZT4gZG9jQ29va2llc0xpc3Q7CiAgICAgICAgICAgICByYXdD
b29raWVzSW1wbGVtZW50ZWQgPSBnZXRSYXdDb29raWVzKGRvY3VtZW50LCBkb2N1bWVudC0+Y29v
a2llVVJMKCksIGRvY0Nvb2tpZXNMaXN0KTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYg
KCFyYXdDb29raWVzSW1wbGVtZW50ZWQpCisgICAgICAgICAgICBpZiAoIXJhd0Nvb2tpZXNJbXBs
ZW1lbnRlZCkgewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIGR1cGxpY2F0aW9u
IGNoZWNraW5nIGZvciB0aGUgU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGNvb2tpZXMuCi0gICAg
ICAgICAgICAgICAgc3RyaW5nQ29va2llc0xpc3QgKz0gZG9jdW1lbnQtPmNvb2tpZSgpOwotICAg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Cisg
ICAgICAgICAgICAgICAgc3RyaW5nQ29va2llc0xpc3QgKz0gZG9jdW1lbnQtPmNvb2tpZShlYyk7
CisgICAgICAgICAgICAgICAgLy8gRXhjZXB0aW9ucyBhcmUgdGhyb3duIGJ5IGNvb2tpZSgpIGlu
IHNhbmRib3hlZCBmcmFtZXMuIFRoYXQgd29uJ3QgaGFwcGVuIGhlcmUKKyAgICAgICAgICAgICAg
ICAvLyBiZWNhdXNlICJkb2N1bWVudCIgaXMgdGhlIGRvY3VtZW50IG9mIHRoZSBtYWluIGZyYW1l
IG9mIHRoZSBwYWdlLgorICAgICAgICAgICAgICAgIEFTU0VSVChlYyA9PSAwKTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaW50IGNvb2tpZXNTaXplID0gZG9jQ29va2ll
c0xpc3Quc2l6ZSgpOwogICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY29va2ll
c1NpemU7IGkrKykgewogICAgICAgICAgICAgICAgICAgICBpZiAoIXJhd0Nvb2tpZXNMaXN0LmNv
bnRhaW5zKGRvY0Nvb2tpZXNMaXN0W2ldKSkKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJl
dmlzaW9uIDUxMDE4KQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MzgsNiArNDM4LDkgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c3VibWl0Rm9ybShj
b25zdCBjaGFyKgogICAgIGlmICh1LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAg
aWYgKG1fZnJhbWUtPmlzU2FuZGJveGVkKFNhbmRib3hGb3JtcykpCisgICAgICAgIHJldHVybjsK
KwogICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdCh1KSkgewogICAgICAgICBtX2lzRXhlY3V0
aW5nSmF2YVNjcmlwdEZvcm1BY3Rpb24gPSB0cnVlOwogICAgICAgICBtX2ZyYW1lLT5zY3JpcHQo
KS0+ZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTCh1LCBmYWxzZSwgZmFsc2UpOwpAQCAtMTI1NSw2ICsx
MjU4LDggQEAgYm9vbCBGcmFtZUxvYWRlcjo6cmVxdWVzdE9iamVjdChSZW5kZXJQYQogICAgICAg
ICBpZiAoIXNldHRpbmdzIHx8ICFzZXR0aW5ncy0+YXJlUGx1Z2luc0VuYWJsZWQoKSB8fCAKICAg
ICAgICAgICAgICghc2V0dGluZ3MtPmlzSmF2YUVuYWJsZWQoKSAmJiBNSU1FVHlwZVJlZ2lzdHJ5
Ojppc0phdmFBcHBsZXRNSU1FVHlwZShtaW1lVHlwZSkpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICBpZiAobV9mcmFtZS0+aXNTYW5kYm94ZWQoU2FuZGJveFBsdWdpbnMpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gbG9hZFBsdWdpbihyZW5k
ZXJlciwgY29tcGxldGVkVVJMLCBtaW1lVHlwZSwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMsIHVz
ZUZhbGxiYWNrKTsKICAgICB9CiAKQEAgLTIxOTcsNiArMjIwMiwxMCBAQCBib29sIEZyYW1lTG9h
ZGVyOjpzaG91bGRBbGxvd05hdmlnYXRpb24oCiAgICAgaWYgKG1fZnJhbWUgPT0gdGFyZ2V0RnJh
bWUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCisgICAgLy8gQSBzYW5kYm94ZWQgZnJhbWUgY2Fu
IG9ubHkgbmF2aWdhdGUgaXRzZWxmIGFuZCBpdHMgZGVzY2VuZGFudHMuCisgICAgaWYgKG1fZnJh
bWUtPmlzU2FuZGJveGVkKFNhbmRib3hOYXZpZ2F0aW9uKSAmJiAhdGFyZ2V0RnJhbWUtPnRyZWUo
KS0+aXNEZXNjZW5kYW50T2YobV9mcmFtZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAg
IC8vIExldCBhIGZyYW1lIG5hdmlnYXRlIHRoZSB0b3AtbGV2ZWwgd2luZG93IHRoYXQgY29udGFp
bnMgaXQuICBUaGlzIGlzCiAgICAgLy8gaW1wb3J0YW50IHRvIGFsbG93IGJlY2F1c2UgaXQgbGV0
cyBhIHNpdGUgImZyYW1lLWJ1c3QiIChlc2NhcGUgZnJvbSBhCiAgICAgLy8gZnJhbWUgY3JlYXRl
ZCBieSBhbm90aGVyIHdlYiBzaXRlKS4KSW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkocmV2aXNpb24gNTEwMTgpCisrKyBX
ZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNiArMTQ3LDcgQEAg
RnJhbWU6OkZyYW1lKFBhZ2UqIHBhZ2UsIEhUTUxGcmFtZU93bmVyRQogICAgICwgbV9uZWVkc1Jl
YXBwbHlTdHlsZXMoZmFsc2UpCiAgICAgLCBtX2lzRGlzY29ubmVjdGVkKGZhbHNlKQogICAgICwg
bV9leGNsdWRlRnJvbVRleHRTZWFyY2goZmFsc2UpCisgICAgLCBtX3NhbmRib3hGbGFncyhTYW5k
Ym94Tm9uZSkKIHsKICAgICBGcmFtZSogcGFyZW50ID0gcGFyZW50RnJvbU93bmVyRWxlbWVudChv
d25lckVsZW1lbnQpOwogICAgIG1fem9vbUZhY3RvciA9IHBhcmVudCA/IHBhcmVudC0+bV96b29t
RmFjdG9yIDogMS4wZjsKQEAgLTE3OCw2ICsxNzksOSBAQCBGcmFtZTo6RnJhbWUoUGFnZSogcGFn
ZSwgSFRNTEZyYW1lT3duZXJFCiAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSB3aWxsIG5vdCBlbmQg
dXAgd2l0aCB0d28gZnJhbWVzIHJlZmVyZW5jaW5nIHRoZSBzYW1lIG93bmVyIGVsZW1lbnQuCiAg
ICAgICAgIEFTU0VSVCgoIShvd25lckVsZW1lbnQtPm1fY29udGVudEZyYW1lKSkgfHwgKG93bmVy
RWxlbWVudC0+bV9jb250ZW50RnJhbWUtPm93bmVyRWxlbWVudCgpICE9IG93bmVyRWxlbWVudCkp
OwogICAgICAgICBvd25lckVsZW1lbnQtPm1fY29udGVudEZyYW1lID0gdGhpczsKKyAgICAgICAg
CisgICAgICAgIC8vIFByb3BhZ2F0ZSBzYW5kYm94IGF0dHJpYnV0ZXMgdG8gdGhpcyBGcmFtZSAo
YW5kIGl0cyBkZXNjZW5kYW50cykuCisgICAgICAgIG93bmVyRWxlbWVudC0+dXBkYXRlU2FuZGJv
eEZsYWdzKCk7CiAgICAgfQogCiAjaWZuZGVmIE5ERUJVRwpAQCAtMTI1NCw2ICsxMjU4LDIwIEBA
IHZvaWQgRnJhbWU6OnNldEV4Y2x1ZGVGcm9tVGV4dFNlYXJjaChib28KICAgICBtX2V4Y2x1ZGVG
cm9tVGV4dFNlYXJjaCA9IGV4Y2x1ZGU7CiB9CiAKK3ZvaWQgRnJhbWU6OmluaGVyaXRTYW5kYm94
RmxhZ3MoU2FuZGJveEZsYWdzIGZsYWdzRnJvbVBhcmVudCkKK3sKKyAgICBtX3NhbmRib3hGbGFn
cyA9IGZsYWdzRnJvbVBhcmVudDsKKyAgICAKKyAgICBpZiAobV9vd25lckVsZW1lbnQpCisgICAg
ICAgIG1fc2FuZGJveEZsYWdzIHw9IG1fb3duZXJFbGVtZW50LT5tX3NhbmRib3hGbGFnc0Zyb21B
dHRyaWJ1dGU7CisKKyAgICBpZiAobV9kb2MpIAorICAgICAgICBtX2RvYy0+c2VjdXJpdHlPcmln
aW4oKS0+c2V0U2FuZGJveEZsYWdzKG1fc2FuZGJveEZsYWdzKTsKKworICAgIGZvciAoRnJhbWUq
IGNoaWxkID0gdHJlZSgpLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVl
KCktPm5leHRTaWJsaW5nKCkpCisgICAgICAgIGNoaWxkLT5pbmhlcml0U2FuZGJveEZsYWdzKG1f
c2FuZGJveEZsYWdzKTsKK30KKwogLy8gcmV0dXJucyBGbG9hdFJlY3QgYmVjYXVzZSBnb2luZyB0
aHJvdWdoIEludFJlY3Qgd291bGQgdHJ1bmNhdGUgYW55IGZsb2F0cwogRmxvYXRSZWN0IEZyYW1l
OjpzZWxlY3Rpb25Cb3VuZHMoYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCkgY29uc3QKIHsKSW5k
ZXg6IFdlYkNvcmUvcGFnZS9GcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFt
ZS5oCShyZXZpc2lvbiA1MTAxOCkKKysrIFdlYkNvcmUvcGFnZS9GcmFtZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjUsNiArMTI1LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9v
bCBleGNsdWRlRnJvbVRleHRTZWFyY2goKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRFeGNsdWRl
RnJvbVRleHRTZWFyY2goYm9vbCk7CiAKKyAgICAgICAgdm9pZCBpbmhlcml0U2FuZGJveEZsYWdz
KFNhbmRib3hGbGFncyk7IC8vIFByb3BhZ2F0ZSBzYW5kYm94IGZsYWdzIHRvIGRlc2NlbmRhbnRz
IGluIHRoZSBmcmFtZSB0cmVlLgorICAgIAorICAgICAgICBib29sIGlzU2FuZGJveGVkKFNhbmRi
b3hGbGFncyBtYXNrKSBjb25zdCB7IHJldHVybiBtX3NhbmRib3hGbGFncyAmIG1hc2s7IH0KKyAg
ICAgICAgU2FuZGJveEZsYWdzIHNhbmRib3hGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fc2FuZGJv
eEZsYWdzOyB9CisKICAgICAgICAgdm9pZCBjcmVhdGVWaWV3KGNvbnN0IEludFNpemUmLCBjb25z
dCBDb2xvciYsIGJvb2wsIGNvbnN0IEludFNpemUgJiwgYm9vbCwKICAgICAgICAgICAgICAgICAg
ICAgICAgIFNjcm9sbGJhck1vZGUgPSBTY3JvbGxiYXJBdXRvLCBTY3JvbGxiYXJNb2RlID0gU2Ny
b2xsYmFyQXV0byk7CiAKQEAgLTM3Nyw2ICszODIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIGJvb2wgbV9uZWVkc1JlYXBwbHlTdHlsZXM7CiAgICAgICAgIGJvb2wgbV9pc0Rpc2Nv
bm5lY3RlZDsKICAgICAgICAgYm9vbCBtX2V4Y2x1ZGVGcm9tVGV4dFNlYXJjaDsKKworICAgICAg
ICBTYW5kYm94RmxhZ3MgbV9zYW5kYm94RmxhZ3M7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCShyZXZpc2lvbiA1MTAxOCkKKysr
IFdlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDYg
Kzk1LDcgQEAgU2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKGNvbnN0IEtVUgogICAgIDog
bV9wcm90b2NvbCh1cmwucHJvdG9jb2woKS5pc051bGwoKSA/ICIiIDogdXJsLnByb3RvY29sKCku
bG93ZXIoKSkKICAgICAsIG1faG9zdCh1cmwuaG9zdCgpLmlzTnVsbCgpID8gIiIgOiB1cmwuaG9z
dCgpLmxvd2VyKCkpCiAgICAgLCBtX3BvcnQodXJsLnBvcnQoKSkKKyAgICAsIG1fc2FuZGJveEZs
YWdzKFNhbmRib3hOb25lKQogICAgICwgbV9ub0FjY2VzcyhmYWxzZSkKICAgICAsIG1fdW5pdmVy
c2FsQWNjZXNzKGZhbHNlKQogICAgICwgbV9kb21haW5XYXNTZXRJbkRPTShmYWxzZSkKQEAgLTEy
Miw2ICsxMjMsNyBAQCBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgU2VjCiAg
ICAgLCBtX2hvc3Qob3RoZXItPm1faG9zdC50aHJlYWRzYWZlQ29weSgpKQogICAgICwgbV9kb21h
aW4ob3RoZXItPm1fZG9tYWluLnRocmVhZHNhZmVDb3B5KCkpCiAgICAgLCBtX3BvcnQob3RoZXIt
Pm1fcG9ydCkKKyAgICAsIG1fc2FuZGJveEZsYWdzKG90aGVyLT5tX3NhbmRib3hGbGFncykKICAg
ICAsIG1fbm9BY2Nlc3Mob3RoZXItPm1fbm9BY2Nlc3MpCiAgICAgLCBtX3VuaXZlcnNhbEFjY2Vz
cyhvdGhlci0+bV91bml2ZXJzYWxBY2Nlc3MpCiAgICAgLCBtX2RvbWFpbldhc1NldEluRE9NKG90
aGVyLT5tX2RvbWFpbldhc1NldEluRE9NKQpAQCAtMTYyLDcgKzE2NCw3IEBAIGJvb2wgU2VjdXJp
dHlPcmlnaW46OmNhbkFjY2Vzcyhjb25zdCBTZWMKICAgICBpZiAobV91bml2ZXJzYWxBY2Nlc3Mp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKG1fbm9BY2Nlc3MgfHwgb3RoZXItPm1f
bm9BY2Nlc3MpCisgICAgaWYgKG1fbm9BY2Nlc3MgfHwgb3RoZXItPm1fbm9BY2Nlc3MgfHwgaXNT
YW5kYm94ZWQoU2FuZGJveE9yaWdpbikgfHwgb3RoZXItPmlzU2FuZGJveGVkKFNhbmRib3hPcmln
aW4pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBIZXJlIGFyZSB0d28gY2FzZXMg
d2hlcmUgd2Ugc2hvdWxkIHBlcm1pdCBhY2Nlc3M6CkBAIC0yMDMsNyArMjA1LDcgQEAgYm9vbCBT
ZWN1cml0eU9yaWdpbjo6Y2FuUmVxdWVzdChjb25zdCBLVQogICAgIGlmIChtX3VuaXZlcnNhbEFj
Y2VzcykKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAobV9ub0FjY2VzcykKKyAgICBp
ZiAobV9ub0FjY2VzcyB8fCBpc1NhbmRib3hlZChTYW5kYm94T3JpZ2luKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0YXJnZXRPcmlnaW4gPSBT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCk7CkBAIC0yODksNyArMjkxLDcgQEAgU3RyaW5nIFNl
Y3VyaXR5T3JpZ2luOjp0b1N0cmluZygpIGNvbnN0CiAgICAgaWYgKGlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuICJudWxsIjsKIAotICAgIGlmIChtX25vQWNjZXNzKQorICAgIGlmIChtX25vQWNj
ZXNzIHx8IGlzU2FuZGJveGVkKFNhbmRib3hPcmlnaW4pKQogICAgICAgICByZXR1cm4gIm51bGwi
OwogCiAgICAgaWYgKG1fcHJvdG9jb2wgPT0gImZpbGUiKQpAQCAtMzgzLDYgKzM4NSw5IEBAIGJv
b2wgU2VjdXJpdHlPcmlnaW46OmlzU2FtZVNjaGVtZUhvc3RQb3IKICAgICBpZiAobV9wb3J0ICE9
IG90aGVyLT5tX3BvcnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGlmIChpc1NhbmRi
b3hlZChTYW5kYm94T3JpZ2luKSB8fCBvdGhlci0+aXNTYW5kYm94ZWQoU2FuZGJveE9yaWdpbikp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBX
ZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlPcmlnaW4uaAkocmV2aXNpb24gNTEwMTgpCisrKyBXZWJDb3JlL3BhZ2UvU2VjdXJp
dHlPcmlnaW4uaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsMTggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIGNsYXNzIERvY3VtZW50OwogICAgIGNsYXNzIEtVUkw7CiAgICAgCisgICAg
ZW51bSBTYW5kYm94RmxhZyB7CisgICAgICAgIFNhbmRib3hOb25lID0gMCwKKyAgICAgICAgU2Fu
ZGJveE5hdmlnYXRpb24gPSAxLAorICAgICAgICBTYW5kYm94UGx1Z2lucyA9IDEgPDwgMSwKKyAg
ICAgICAgU2FuZGJveE9yaWdpbiA9IDEgPDwgMiwKKyAgICAgICAgU2FuZGJveEZvcm1zID0gMSA8
PCAzLAorICAgICAgICBTYW5kYm94U2NyaXB0cyA9IDEgPDwgNCwKKyAgICAgICAgU2FuZGJveEFs
bCA9IC0xIC8vIE1hc2sgd2l0aCBhbGwgYml0cyBzZXQgdG8gMS4KKyAgICB9OworCisgICAgdHlw
ZWRlZiB1bnNpZ25lZCBTYW5kYm94RmxhZ3M7CisKICAgICBjbGFzcyBTZWN1cml0eU9yaWdpbiA6
IHB1YmxpYyBUaHJlYWRTYWZlU2hhcmVkPFNlY3VyaXR5T3JpZ2luPiB7CiAgICAgcHVibGljOgog
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlRnJvbURhdGFi
YXNlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsKQEAgLTExMCw2ICsxMjIsMTAgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICAvLyBXQVJOSU5HOiBUaGlzIGlzIGFuIGV4dHJlbWVseSBw
b3dlcmZ1bCBhYmlsaXR5LiAgVXNlIHdpdGggY2F1dGlvbiEKICAgICAgICAgdm9pZCBncmFudFVu
aXZlcnNhbEFjY2VzcygpOwogCisgICAgICAgIC8vIFNhbmRib3hpbmcgc3RhdHVzIGFzIGRldGVy
bWluZWQgYnkgdGhlIGZyYW1lLgorICAgICAgICB2b2lkIHNldFNhbmRib3hGbGFncyhTYW5kYm94
RmxhZ3MgZmxhZ3MpIHsgbV9zYW5kYm94RmxhZ3MgPSBmbGFnczsgfQorICAgICAgICBib29sIGlz
U2FuZGJveGVkKFNhbmRib3hGbGFncyBtYXNrKSBjb25zdCB7IHJldHVybiBtX3NhbmRib3hGbGFn
cyAmIG1hc2s7IH0KKwogICAgICAgICBib29sIGlzU2VjdXJlVHJhbnNpdGlvblRvKGNvbnN0IEtV
UkwmKSBjb25zdDsKIAogICAgICAgICAvLyBUaGUgbG9jYWwgU2VjdXJpdHlPcmlnaW4gaXMgdGhl
IG1vc3QgcHJpdmlsZWdlZCBTZWN1cml0eU9yaWdpbi4KQEAgLTE4MSw2ICsxOTcsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFN0cmluZyBtX2hvc3Q7CiAgICAgICAgIFN0cmluZyBt
X2RvbWFpbjsKICAgICAgICAgdW5zaWduZWQgc2hvcnQgbV9wb3J0OworICAgICAgICBTYW5kYm94
RmxhZ3MgbV9zYW5kYm94RmxhZ3M7CiAgICAgICAgIGJvb2wgbV9ub0FjY2VzczsKICAgICAgICAg
Ym9vbCBtX3VuaXZlcnNhbEFjY2VzczsKICAgICAgICAgYm9vbCBtX2RvbWFpbldhc1NldEluRE9N
OwpJbmRleDogV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlVHJhY2tlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlVHJhY2tlci5jcHAJKHJldmlzaW9uIDUxMDE4KQor
KysgV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlVHJhY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEyOSw2ICsxMjksMTAgQEAgYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmNhbkVzdGFibGlzaERhdGFi
YQogCiAgICAgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IGRvY3VtZW50LT5zZWN1cml0eU9yaWdp
bigpOwogCisgICAgLy8gRGlzYWJsZSBkYXRhYmFzZSBhY2Nlc3MgaWYgdGhlIHNhbmRib3hlZCBv
cmlnaW4gZmxhZyBpcyBzZXQuCisgICAgaWYgKG9yaWdpbi0+aXNTYW5kYm94ZWQoU2FuZGJveE9y
aWdpbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIC8vIFNpbmNlIHdlJ3JlIGltbWlu
ZW50bHkgb3BlbmluZyBhIGRhdGFiYXNlIHdpdGhpbiB0aGlzIERvY3VtZW50J3Mgb3JpZ2luLCBt
YWtlIHN1cmUgdGhpcyBvcmlnaW4gaXMgYmVpbmcgdHJhY2tlZCBieSB0aGUgUXVvdGFUcmFja2Vy
CiAgICAgLy8gYnkgZmV0Y2hpbmcgaXQncyBjdXJyZW50IHVzYWdlIG5vdwogICAgIHVuc2lnbmVk
IGxvbmcgbG9uZyB1c2FnZSA9IHVzYWdlRm9yT3JpZ2luKG9yaWdpbik7CkluZGV4OiBXZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93
ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCShyZXZpc2lvbiA1MTAxOCkKKysrIFdlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5
LDggKzE1OSwxMCBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZFJlY2VpdmVEYXRhKFNvCiAg
ICAgICAgICAgICBpZiAoIW1faGFuZHNoYWtlLnNlcnZlclNldENvb2tpZSgpLmlzRW1wdHkoKSkg
ewogICAgICAgICAgICAgICAgIGlmIChtX2NvbnRleHQtPmlzRG9jdW1lbnQoKSkgewogICAgICAg
ICAgICAgICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+
KG1fY29udGV4dCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjb29raWVzRW5hYmxlZChkb2N1
bWVudCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC0+c2V0Q29va2llKG1faGFu
ZHNoYWtlLnNlcnZlclNldENvb2tpZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNvb2tp
ZXNFbmFibGVkKGRvY3VtZW50KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgRXhjZXB0aW9u
Q29kZSBlYzsgLy8gRXhjZXB0aW9uIChmb3Igc2FuZGJveGVkIGRvY3VtZW50cykgaWdub3JlZC4K
KyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LT5zZXRDb29raWUobV9oYW5kc2hha2Uu
c2VydmVyU2V0Q29va2llKCksIGVjKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIEZJWE1FOiBoYW5kbGUgc2V0
LWNvb2tpZTIuCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1MTAzNikKKysrIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcxIEBACisyMDA5LTExLTE2ICBQYXRyaWsg
UGVyc3NvbiAgPHBhdHJpay5qLnBlcnNzb25AZXJpY3Nzb24uY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBIVE1MNSdzIHNhbmRi
b3ggYXR0cmlidXRlIGZvciBpZnJhbWVzLgorICAgICAgICBodHRwOi8vd3d3LnczLm9yZy9UUi9o
dG1sNS90ZXh0LWxldmVsLXNlbWFudGljcy5odG1sI2F0dHItaWZyYW1lLXNhbmRib3gKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjg4CisKKyAgICAg
ICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvbm9uLXNhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlv
bi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVk
LWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1hbGxvd2VkLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5n
LWRpc2FsbG93ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2Vz
L3NhbmRib3hlZC1pZnJhbWUtZm9ybS1hbGxvd2VkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tZGlzYWxsb3dlZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFt
ZS1uYXZpZ2F0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2Vz
L3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1jaGlsZC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLW5hdmln
YXRlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJv
eGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXBhcmVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXNvdXJjZS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFt
ZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFt
ZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1l
LXBsdWdpbnMtZnJhbWUtYXBwbGV0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVz
L3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtZW1iZWQuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1
Z2lucy1mcmFtZS1vYmplY3QuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVz
b3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtc2NyaXB0LWR5bmFtaWMuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUt
YXR0cmlidXRlLXBhcnNpbmcuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc2Fu
ZGJveGVkLWlmcmFtZS1mb3Jtcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtZm9ybXMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLWFsbG93ZWQtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRp
b24tYWxsb3dlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQt
aWZyYW1lLW5hdmlnYXRpb24tcGFyZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXBhcmVudC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFy
Z2V0bGluay1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NhbmRi
b3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRsaW5rLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1u
YXZpZ2F0aW9uLXdpbmRvd29wZW4uaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMv
c2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtc2NyaXB0aW5nLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1zY3JpcHRpbmcu
aHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvc2Fu
ZGJveGVkLWlmcmFtZS1kb2N1bWVudC1jb29raWUtcmVhZC1kZW5pZWQuaHRtbDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1t
b2RpZnktc2VsZi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Jl
c291cmNlcy94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUtYXR0YWNrZXIuaHRtbDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLWRvY3VtZW50
LWNvb2tpZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJp
dHkvc2FuZGJveGVkLWlmcmFtZS1kb2N1bWVudC1jb29raWUuaHRtbDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLW1vZGlmeS1zZWxmLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQt
aWZyYW1lLW1vZGlmeS1zZWxmLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2Vj
dXJpdHkveHNzLURFTklFRC1zYW5kYm94ZWQtaWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUu
aHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3Mt
Y29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQt
aWZyYW1lLWFsbG93Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250
cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250
cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQuaHRtbDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5k
Ym94ZWQtaWZyYW1lLWRlbmllZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFs
bG93LWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93LmNnaTog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNj
ZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtaWZyYW1lLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250
cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQtaWZyYW1lLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2Fj
Y2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQuY2dp
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9h
Y2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC5jZ2k6IEFkZGVkLgorICAgICAg
ICAqIHN0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2UvcmVzb3VyY2VzL3NhbmRib3hlZC1p
ZnJhbWUtZGVuaWVkLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2RvbXN0
b3JhZ2UvbG9jYWxzdG9yYWdlL3NhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9zYW5kYm94
ZWQtaWZyYW1lLWRlbmllZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2RvbXN0b3Jh
Z2Uvc2Vzc2lvbnN0b3JhZ2UvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWlmcmFt
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2RvbXN0b3JhZ2Uvc2Vzc2lvbnN0b3Jh
Z2Uvc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBzdG9yYWdlL2RvbXN0b3JhZ2Uvc2Vzc2lvbnN0b3JhZ2Uvc2FuZGJveGVkLWlmcmFtZS1kZW5p
ZWQuaHRtbDogQWRkZWQuCisKIDIwMDktMTEtMTYgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2Vu
ICA8a2VubmV0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJ1YmJlcnN0YW1wZWQgYnkgU2ltb24g
SGF1c21hbm4uCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1l
LWF0dHJpYnV0ZS1wYXJzaW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1p
ZnJhbWUtYXR0cmlidXRlLXBhcnNpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDQgQEAKK1RoaXMgdGVzdCBjYXNlIHZlcmlmaWVzIHRoZSBwYXJzaW5nIG9mIHRoZSBpZnJh
bWUgc2FuZGJveCBhdHRyaWJ1dGUuIFR3byBzZXRzIG9mIGlmcmFtZXMgYXJlIHVzZWQ6IG9uZSB3
aGVyZSBzY3JpcHRpbmcgaXMgYWxsb3dlZCwgYW5kIGFub3RoZXIgb25lIHdoZXJlIGl0IGlzIGRp
c2FsbG93ZWQuIFRoZSB0ZXN0IHZlcmlmaWVzIHRoYXQgdGhlIGFsbG93ZWQgZnJhbWVzIGV4ZWN1
dGUgc2NyaXB0cyAoYnV0IG90aGVyIHNhbmRib3hlZCBwcm9wZXJ0aWVzIHN0aWxsIGFwcGx5IC0t
IHNwZWNpZmljYWxseSwgZm9ybXMgYXJlIGRpc2FibGVkKSwgYW5kIHRoZSBkaXNhbGxvd2VkIG9u
ZXMgZG8gbm90LiBJZiBzdWNjZXNzZnVsIHRoZSB0ZXN0IHByaW50cyAiUEFTUyIuCisKKyAgICAg
ICAgICAgICAgICAgIAorUEFTUwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJv
eGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmcuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUt
YXR0cmlidXRlLXBhcnNpbmcuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNjUgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKK3ZhciBm
YWlsZWQgPSBmYWxzZTsKK3ZhciBmcmFtZXMgPSAwOyAgICAgICAgIC8qIG51bWJlciBvZiBhbGxv
d2VkIGZyYW1lcyB0aGF0IGNhbGxlZCBiYWNrICovCisKK2Z1bmN0aW9uIGZhaWwobWVzc2FnZSkK
K3sKKyAgICBzZXRTdGF0dXMoIkZBSUw6ICIgKyBtZXNzYWdlKTsKKyAgICBmYWlsZWQgPSB0cnVl
OworfQorCitmdW5jdGlvbiBzZXRTdGF0dXMoc3RhdHVzKQoreworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ0ZXN0U3RhdHVzIikuaW5uZXJIVE1MID0gc3RhdHVzOworfQorCitmdW5jdGlv
biBhbGxvd2VkQ2FsbEZyb21TYW5kYm94KCkKK3sKKyAgICArK2ZyYW1lczsKK30KKworZnVuY3Rp
b24gZGlzYWxsb3dlZENhbGxGcm9tU2FuZGJveCgpCit7CisgICAgZmFpbCgiZGlzYWxsb3dlZCBz
Y3JpcHQgZXhlY3V0ZWQiKTsKK30KKworZnVuY3Rpb24gZGlzYWxsb3dlZEZvcm1TdWJtaXR0ZWQo
KQoreworICAgIGZhaWwoInNhbmRib3hpbmcgZmFpbGVkOiBmb3JtIHN1Ym1pdHRlZCBpbiBzYW5k
Ym94ZWQgZnJhbWUiKTsKK30KKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBp
ZiAoZnJhbWVzID09IDUgJiYgIWZhaWxlZCkKKyAgICAgICAgc2V0U3RhdHVzKCJQQVNTIik7Cisg
ICAgZWxzZSBpZiAoIWZhaWxlZCkKKyAgICAgICAgZmFpbCgic2NyaXB0aW5nIGRpc2FibGVkIGlu
IG9uZSBvciBtb3JlIGZyYW1lcyB3aGVyZSBpdCBzaG91bGQgYmUgZW5hYmxlZCIpOworfQorCis8
L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+CisKKyAgICA8cD5UaGlzIHRlc3QgY2FzZSB2ZXJp
ZmllcyB0aGUgcGFyc2luZyBvZiB0aGUgaWZyYW1lIHNhbmRib3ggYXR0cmlidXRlLiBUd28gc2V0
cyBvZiBpZnJhbWVzCisgICAgYXJlIHVzZWQ6IG9uZSB3aGVyZSBzY3JpcHRpbmcgaXMgYWxsb3dl
ZCwgYW5kIGFub3RoZXIgb25lIHdoZXJlIGl0IGlzIGRpc2FsbG93ZWQuIFRoZSB0ZXN0CisgICAg
dmVyaWZpZXMgdGhhdCB0aGUgYWxsb3dlZCBmcmFtZXMgZXhlY3V0ZSBzY3JpcHRzIChidXQgb3Ro
ZXIgc2FuZGJveGVkIHByb3BlcnRpZXMgc3RpbGwKKyAgICBhcHBseSAtLSBzcGVjaWZpY2FsbHks
IGZvcm1zIGFyZSBkaXNhYmxlZCksIGFuZCB0aGUgZGlzYWxsb3dlZCBvbmVzIGRvIG5vdC4gSWYg
c3VjY2Vzc2Z1bAorICAgIHRoZSB0ZXN0IHByaW50cyAmcXVvdDtQQVNTJnF1b3Q7LjwvcD4KKyAg
ICAKKyAgICA8IS0tIGlmcmFtZXMgd2hlcmUgc2NyaXB0IGV4ZWN1dGlvbiBpcyBhbGxvd2VkLCBi
dXQgb3JpZ2luIGlzIG5vdCBzaGFyZWQgLS0+CisKKyAgICA8IS0tIHBsYWluLCBwcm9wZXIgYXR0
cmlidXRlIHZhbHVlIC0tPgorICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyIKKyAg
ICAgICAgICAgIG5hbWU9ImYxIgorICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVk
LWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1hbGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgor
ICAgIAorICAgIDwhLS0gbGluZSBmZWVkIGNoYXJhY3RlcnMgYmVmb3JlIGFuZCBhZnRlciBhdHRy
aWJ1dGUgdmFsdWUgLS0+CisgICAgPGlmcmFtZSBzYW5kYm94PSIKKworYWxsb3ctc2NyaXB0cwor
CisiCisgICAgICAgICAgICBuYW1lPSJmMiIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3Nh
bmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmctYWxsb3dlZC5odG1sIj4KKyAgICA8L2lm
cmFtZT4KKworICAgIDwhLS0gcmlkaWN1bG91c2x5IGxvbmcsIGludmFsaWQgdGV4dCAod2VsbCwg
Zm9yIHRoZXNlIHB1cnBvc2VzIGF0IGxlYXN0KQorICAgICAgICAgd2l0aCBub24tQVNDSUkgY2hh
cmFjdGVycyBzdXJyb3VuZGluZyBhdHRyaWJ1dGUgdmFsdWUgLS0+CisgICAgPGlmcmFtZSBzYW5k
Ym94PSIKKyAgICAgICAgRsO2ciB2YXIgdmVycywgamFnIGfDtnIsCisgICAgICAgIExvdmFyIGR1
IGVuIGt5c3MgbWlnIGdpdmE7CisgICAgICAgIEFya2V0IGZ1bGx0IGphZyBib3JkZSBza3JpdmEs
CisgICAgICAgIE1pbmRyZSBoYXIgamFnIHNrcml2aXQgZsO2ci4KKyAgICAgICAgTWVuIG1hbiBt
w6VzdGUgaMOlbGxhIG3DpXR0YSwKKyAgICAgICAgSmFnIG1lZCB2ZXJzLCBtZWQga3lzc2FyIGR1
LgorICAgICAgICBMw6V0IG1pZyByw6RrbmE6IETDpHIgw6RyIHNqdSEKKyAgICAgICAgRW4gZMOk
cnRpbGwgZGV0IGfDtnIgbWlnIMOldHRhLgorCisgICAgICAgIE51bXJvIMOldHRhIMOkciBmYXRh
bCwKKyAgICAgICAgR3Jla2xhbmRzIHPDpW5nbcO2ciB2b3JvIG5pbywKKyAgICAgICAgT2NoIGVu
IHN2ZW5zayBkw6RydGlsbCBnw7ZyIHRpby4g4oCUCisgICAgICAgIEVsdmEgdmFyIGFwb3N0ZWxu
cyB0YWwsCisgICAgICAgIFR5IGphZyByw6RrbmFyIGlja2UgSnVkYXMsCisgICAgICAgIEhvbm9t
LCBzb20gaSB2w6RubmVycyBsYWcKKyAgICAgICAgS3lzc3RlIGZhbHNrdDsgZGV0IGfDtnIgZWog
amFnLAorICAgICAgICBIZWxzdCBuw6RyIHZhY2tyYSBsw6RwcGFyIGJqdWRhcy4KKworICAgICAg
ICBIdXJ1IHN0w6VyIG1pbiByw6RrbmluZyBow6RyPworICAgICAgICBBZGVydG9uOyBkZXQgw6Ry
IGRvY2sgbsOlZ290LgorICAgICAgICBOaXR0b24g4oCUIHJpbW1ldCBnw7ZyIGJlc3bDpHIsCisg
ICAgICAgIETDpHJmw7ZyZSBqYWcgZnlsbGVyIHRqb2dldC4KKyAgICAgICAgU3Ryb2ZlbiDDpHIg
ZWogZnVsbCBzb20gamFnLAorICAgICAgICBJbiBpIGhhbW5lbiB2aWxsIGphZyBzdHlyYSwKKyAg
ICAgICAgRMOkcmbDtnJlIHRpbGwgZ29kbyB0YWcKKyAgICAgICAgRGVubmEgZ8OlbmcgbWVkIHRq
dWdvZnlyYS4KKyAgICAgICAgCisgICAgICAgICdLeXNzYXJuYScgKCdUaGUga2lzc2VzJyksIEVz
YWlhcyBUZWduw6lyLCAxNzgyLTE4NDYKKworICAgIGFsbG93LXNjcmlwdHMKKyAgICAKKyAgICAg
ICAgaW50IG1haW4odm9pZCkKKyAgICAgICAgeworICAgICAgICAgIHJldHVybiAwOworICAgICAg
ICB9IgorICAgICAgICAgICAgbmFtZT0iZjMiCisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9z
YW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWFsbG93ZWQuaHRtbCI+CisgICAgPC9p
ZnJhbWU+CisKKyAgICA8IS0tIHRhYiBjaGFyYWN0ZXJzIGJlZm9yZSBhbmQgYWZ0ZXIgYXR0cmli
dXRlIHZhbHVlIC0tPgorICAgIDxpZnJhbWUgc2FuZGJveD0iCQlhbGxvdy1zY3JpcHRzCQkiCisg
ICAgICAgICAgICBuYW1lPSJmNCIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hl
ZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmctYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4K
KworICAgIDwhLS0gbWl4ZWQgY2FzZSAtLT4KKyAgICA8aWZyYW1lIHNhbmRib3g9IkFsTG9XLXND
cklwVHMiCisgICAgICAgICAgICBuYW1lPSJmNSIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2Vz
L3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmctYWxsb3dlZC5odG1sIj4KKyAgICA8
L2lmcmFtZT4KKworICAgIDwhLS0gaWZyYW1lcyB3aGVyZSBzY3JpcHQgZXhlY3V0aW9uIGlzIGRp
c2FsbG93ZWQgLS0+CisKKyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93c2NyaXB0cyIKKyAgICAg
ICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmct
ZGlzYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKworICAgIDxpZnJhbWUgc2FuZGJveD0i
YWxsb3dzLWNyaXB0cyIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJh
bWUtYXR0cmlidXRlLXBhcnNpbmctZGlzYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKwor
ICAgIDxpZnJhbWUgc2FuZGJveD0iLWFsbG93LXNjcmlwdHMiCisgICAgICAgICAgICBzcmM9InJl
c291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWRpc2FsbG93ZWQuaHRt
bCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93X3NjcmlwdHMi
CisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1w
YXJzaW5nLWRpc2FsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNh
bmRib3g9ImFsbG93U2NyaXB0cyIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hl
ZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmctZGlzYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFt
ZT4KKworICAgIDxpZnJhbWUgc2FuZGJveD0iYWFsbG93LXNjcmlwdHMiCisgICAgICAgICAgICBz
cmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWRpc2FsbG93
ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93LXNj
cmlwdHNzIgorICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRy
aWJ1dGUtcGFyc2luZy1kaXNhbGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorCisgICAgPGlm
cmFtZSBzYW5kYm94CisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1l
LWF0dHJpYnV0ZS1wYXJzaW5nLWRpc2FsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAg
ICA8cCBpZD0ndGVzdFN0YXR1cyc+RkFJTDogU2NyaXB0IGRpZG4ndCBydW48L3A+CisKKzwvYm9k
eT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJh
bWUtZm9ybXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL3NhbmRib3hlZC1pZnJhbWUtZm9ybXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1mb3Jtcy1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorVGhpcyB0ZXN0IHJ1bnMgZml2ZSBJRnJh
bWVzIHdpdGggZm9ybXMgYWxsb3dlZCwgb25lIElGcmFtZSB3aXRoIGZvcm1zIGRpc2FsbG93ZWQs
IHRoZW4gZml2ZSBtb3JlIElGcmFtZXMgd2l0aCBmb3JtcyBhbGxvd2VkLiBJZiB0ZW4gZm9ybSBz
dWJtaXNzaW9ucyBhcmUgbWFkZSwgYW5kIHRoZSBkaXNhbGxvd2VkIHN1Ym1pc3Npb24gaXMgbm90
IG9uZSBvZiB0aGVtLCB3ZSBjb25zaWRlciB0aGUgdGVzdCB0byBoYXZlIHBhc3NlZC4gVGhpcyB0
ZXN0IHdpbGwgcHJpbnQgIlBBU1MiIG9uIHN1Y2Nlc3MuCisKKyAgICAgICAgICAgICAgICAgICAg
CitQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWZv
cm1zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVk
LWlmcmFtZS1mb3Jtcy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFt
ZXMvc2FuZGJveGVkLWlmcmFtZS1mb3Jtcy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk2
IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgeworICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKwor
dmFyIHN1Ym1pc3Npb25Db3VudCAgICAgID0gMDsKK3ZhciBkaXNhbGxvd2VkU3VibWlzc2lvbiA9
IGZhbHNlOworCitmdW5jdGlvbiBhbGxvd2VkRm9ybVN1Ym1pdHRlZCgpCit7CisgICAgKytzdWJt
aXNzaW9uQ291bnQ7CisKKyAgICBpZiAoc3VibWlzc2lvbkNvdW50ID09IDEwKSB7CisgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0X3N0YXR1cyIpLmlubmVySFRNTCA9IChkaXNh
bGxvd2VkU3VibWlzc2lvbiA/ICJGQUlMIiA6ICJQQVNTIik7CisgICAgICAKKyAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgfQorfQorCitmdW5jdGlvbiBkaXNhbGxv
d2VkRm9ybVN1Ym1pdHRlZCgpCit7CisgICAgZGlzYWxsb3dlZFN1Ym1pc3Npb24gPSB0cnVlOwor
fQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+CisKKyAgICA8cD5UaGlzIHRlc3QgcnVu
cyBmaXZlIElGcmFtZXMgd2l0aCBmb3JtcyBhbGxvd2VkLCBvbmUgSUZyYW1lIHdpdGggZm9ybXMK
KyAgICBkaXNhbGxvd2VkLCB0aGVuIGZpdmUgbW9yZSBJRnJhbWVzIHdpdGggZm9ybXMgYWxsb3dl
ZC4gSWYgdGVuIGZvcm0KKyAgICBzdWJtaXNzaW9ucyBhcmUgbWFkZSwgYW5kIHRoZSBkaXNhbGxv
d2VkIHN1Ym1pc3Npb24gaXMgbm90IG9uZSBvZiB0aGVtLAorICAgIHdlIGNvbnNpZGVyIHRoZSB0
ZXN0IHRvIGhhdmUgcGFzc2VkLiBUaGlzIHRlc3Qgd2lsbCBwcmludAorICAgICZxdW90O1BBU1Mm
cXVvdDsgb24gc3VjY2Vzcy48L3A+CisKKyAgICA8IS0tIGZpdmUgSUZyYW1lcyB3aXRoIGZvcm1z
IGFsbG93ZWQgLS0+CisKKyAgICA8aWZyYW1lIHN0eWxlPSJ3aWR0aDogNjBweDsgaGVpZ2h0OiA2
MHB4OyIKKyAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyIKKyAgICAg
ICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWFsbG93ZWQuaHRtbCI+Cisg
ICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBw
eDsiCisgICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMiCisgICAgICAg
IHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1hbGxvd2VkLmh0bWwiPgorICAg
IDwvaWZyYW1lPgorICAgIDxpZnJhbWUgc3R5bGU9IndpZHRoOiA2MHB4OyBoZWlnaHQ6IDYwcHg7
IgorICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1zIgorICAgICAgICBz
cmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tYWxsb3dlZC5odG1sIj4KKyAgICA8
L2lmcmFtZT4KKyAgICA8aWZyYW1lIHN0eWxlPSJ3aWR0aDogNjBweDsgaGVpZ2h0OiA2MHB4OyIK
KyAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyIKKyAgICAgICAgc3Jj
PSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWFsbG93ZWQuaHRtbCI+CisgICAgPC9p
ZnJhbWU+CisgICAgPGlmcmFtZSBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsiCisg
ICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMiCisgICAgICAgIHNyYz0i
cmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1hbGxvd2VkLmh0bWwiPgorICAgIDwvaWZy
YW1lPgorCisgICAgPCEtLSBvbmUgSUZyYW1lIHdpdGggZm9ybXMgZGlzYWxsb3dlZCAtLT4KKwor
ICAgIDxpZnJhbWUgc3R5bGU9IndpZHRoOiA2MHB4OyBoZWlnaHQ6IDYwcHg7IgorICAgICAgICBz
YW5kYm94PSJhbGxvdy1zY3JpcHRzIgorICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQt
aWZyYW1lLWZvcm0tZGlzYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKworICAgIDwhLS0g
Zml2ZSBtb3JlIElGcmFtZXMgd2l0aCBmb3JtcyBhbGxvd2VkIC0tPgorCisgICAgPGlmcmFtZSBz
dHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsiCisgICAgICAgIHNhbmRib3g9ImFsbG93
LXNjcmlwdHMgYWxsb3ctZm9ybXMiCisgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1p
ZnJhbWUtZm9ybS1hbGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorICAgIDxpZnJhbWUgc3R5
bGU9IndpZHRoOiA2MHB4OyBoZWlnaHQ6IDYwcHg7IgorICAgICAgICBzYW5kYm94PSJhbGxvdy1z
Y3JpcHRzIGFsbG93LWZvcm1zIgorICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZy
YW1lLWZvcm0tYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIHN0eWxl
PSJ3aWR0aDogNjBweDsgaGVpZ2h0OiA2MHB4OyIKKyAgICAgICAgc2FuZGJveD0iYWxsb3ctc2Ny
aXB0cyBhbGxvdy1mb3JtcyIKKyAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFt
ZS1mb3JtLWFsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBzdHlsZT0i
d2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsiCisgICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlw
dHMgYWxsb3ctZm9ybXMiCisgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUt
Zm9ybS1hbGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorICAgIDxpZnJhbWUgc3R5bGU9Indp
ZHRoOiA2MHB4OyBoZWlnaHQ6IDYwcHg7IgorICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRz
IGFsbG93LWZvcm1zIgorICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZv
cm0tYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKyAgICAKKyAgICA8cCBpZD0ndGVzdF9z
dGF0dXMnPkZBSUw6IFNjcmlwdCBkaWRuJ3QgcnVuPC9wPgorPC9ib2R5PgorPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLWFs
bG93ZWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1hbGxvd2VkLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdh
dGlvbi1hbGxvd2VkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMiBAQAor
VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYSBzYW5kYm94ZWQgaWZyYW1lIENBTiBuYXZpZ2F0ZSBi
b3RoIGl0c2VsZiBhbmQgYSBjaGlsZCBpbiB0aGUgZnJhbWUgdHJlZS4gSXQgYWxzbyB2ZXJpZmll
cyB0aGF0IHRoZSBzYW5kYm94IGF0dHJpYnV0ZSByZW1haW5zIGludGFjdCBhZnRlciBhIGZyYW1l
IGhhcyBiZWVuIG5hdmlnYXRlZCwgYW5kIHRoYXQgc2FuZGJveCBhdHRyaWJ1dGVzIGFyZSBwcm9w
YWdhdGVkIHRocm91Z2ggdGhlIGZyYW1lIGhpZXJhcmNoeS4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1MgKHNlbGYuc2FuZGJveGVkRnJhbWUuZnJhbWVXaXRoUGx1Z2luLmRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbHVnaW4nKS5kZXN0cm95U3RyZWFtKSA9PSB1bmRlZmlu
ZWQgaXMgdHJ1ZQorUEFTUyAoc2VsZi5mcmFtZVdpdGhQbHVnaW4uZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3BsdWdpbicpLmRlc3Ryb3lTdHJlYW0pICE9IHVuZGVmaW5lZCBpcyB0cnVlCitQQVNT
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94ZWRGcmFtZUlkJykuc2FuZGJveCBpcyAn
YWxsb3ctc2NyaXB0cyBhbGxvdy1zYW1lLW9yaWdpbicKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorICAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1hbGxvd2VkLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLWFs
bG93ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRi
b3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1hbGxvd2VkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNjAgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2lm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGNoaWxkRnJhbWVXYXNOYXZpZ2F0ZWQoKQor
eworICAgIC8vIENoZWNrIHRoYXQgdGhlIGNoaWxkIGZyYW1lIHdhcyB1bmFibGUgdG8gbG9hZCBh
IHBsdWdpbiwgc2luY2UgaXRzIHBhcmVudCBpcyBzYW5kYm94ZWQuCisgICAgc2hvdWxkQmVUcnVl
KCIoc2VsZi5zYW5kYm94ZWRGcmFtZS5mcmFtZVdpdGhQbHVnaW4uZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3BsdWdpbicpLmRlc3Ryb3lTdHJlYW0pID09IHVuZGVmaW5lZCIpOworICAgIAorICAg
IC8vIENoZWNrIGEgbm9uLXNhbmRib3hlZCBmcmFtZSBhcyB3ZWxsLCB0byBlbnN1cmUgdGhhdCB0
aGUgcGx1Z2luIGlzIGRpc2FibGVkIGJ5IHNhbmRib3hpbmcKKyAgICAvLyBhbmQgbm90IHNvbWUg
b3RoZXIgZmFpbHVyZQorICAgIHNob3VsZEJlVHJ1ZSgiKHNlbGYuZnJhbWVXaXRoUGx1Z2luLmRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbHVnaW4nKS5kZXN0cm95U3RyZWFtKSAhPSB1bmRlZmlu
ZWQiKTsKKworICAgIC8vIFdoZW4gdGhlIGNoaWxkIGZyYW1lIChncmFuZGNoaWxkIG9mIHRoZSBt
YWluIHdpbmRvdykgaGFzIGJlZW4gbmF2aWdhdGVkLAorICAgIC8vIG1ha2UgdGhlIHNhbmRib3hl
ZCBmcmFtZSBuYXZpZ2F0ZSBpdHNlbGYKKyAgICBzZWxmLnNhbmRib3hlZEZyYW1lLmxvY2F0aW9u
LmFzc2lnbigiamF2YXNjcmlwdDogdG9wLnNhbmRib3hXYXNOYXZpZ2F0ZWQoKTsiKTsKK30KKwor
ZnVuY3Rpb24gc2FuZGJveFdhc05hdmlnYXRlZCgpCit7CisgICAgc2hvdWxkQmUoImRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94ZWRGcmFtZUlkJykuc2FuZGJveCIsICInYWxsb3ctc2Ny
aXB0cyBhbGxvdy1zYW1lLW9yaWdpbiciKTsKKyAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOwor
CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgd2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+
CisKKzxib2R5PgorICAgIDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorICAgIDxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorCisgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93
LXNhbWUtb3JpZ2luIgorICAgICAgICAgICAgbmFtZT0ic2FuZGJveGVkRnJhbWUiCisgICAgICAg
ICAgICBpZD0ic2FuZGJveGVkRnJhbWVJZCIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3Nh
bmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1jaGlsZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKwor
ICAgIDxpZnJhbWUgbmFtZT0iZnJhbWVXaXRoUGx1Z2luIgorICAgICAgICAgICAgc3JjPSJyZXNv
dXJjZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLWZyYW1lLW9iamVjdC5odG1sIj4KKyAgICA8
L2lmcmFtZT4KKworICAgIDxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdCB2ZXJp
ZmllcyB0aGF0IGEgc2FuZGJveGVkIGlmcmFtZSBDQU4gbmF2aWdhdGUgYm90aCBpdHNlbGYgYW5k
IGEgY2hpbGQgaW4gdGhlIGZyYW1lIHRyZWUuICIKKyAgICAgICAgICAgICAgICArICJJdCBhbHNv
IHZlcmlmaWVzIHRoYXQgdGhlIHNhbmRib3ggYXR0cmlidXRlIHJlbWFpbnMgaW50YWN0IGFmdGVy
IGEgZnJhbWUgaGFzIGJlZW4gbmF2aWdhdGVkLCAiCisgICAgICAgICAgICAgICAgKyAiYW5kIHRo
YXQgc2FuZGJveCBhdHRyaWJ1dGVzIGFyZSBwcm9wYWdhdGVkIHRocm91Z2ggdGhlIGZyYW1lIGhp
ZXJhcmNoeS4iKTsKKyAgICB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKyAgICA8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Nh
bmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1w
YXJlbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFt
ZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXBhcmVudC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsOCBAQAorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYSBzYW5kYm94
ZWQgSUZyYW1lIGNhbm5vdCBuYXZpZ2F0ZSBhbiBhbmNlc3RvciBpbiB0aGUgZnJhbWUgdHJlZSBi
eSBhc3NpZ25pbmcgdGhlIGxvY2F0aW9uIGF0dHJpYnV0ZS4KKworVGhpcyBpcyBkb25lIGJ5IGxv
YWRpbmcgdGVuIG5vbi1zYW5kYm94ZWQgSUZyYW1lcywgYW5kIGEgc2luZ2xlIHNhbmRib3hlZCBv
bmUuIEV4cGVjdCB0ZW4gZnJhbWVzIHRvIGJlIG5hdmlnYXRlZCwgYnV0IHRoZSBzYW5kYm94ZWQg
b25lIHRvIG5vdCBiZSBvbmUgb2YgdGhlbS4KKworVGhpcyB0ZXN0IHdpbGwgcHJpbnQgIlBBU1Mi
IG9uIHN1Y2Nlc3MuCisKKyAgICAgICAgICAgICAgIAorUEFTUwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXBhcmVudC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdh
dGlvbi1wYXJlbnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw2OCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7Cit9CisKK3ZhciBuYXZpZ2F0ZWRGcmFtZXMgPSAwOworCitmdW5jdGlvbiBjaGVja1Jlc3Vs
dHMoKQoreworICAgIHZhciB0ZXN0U3RhdHVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rl
c3RTdGF0dXMnKTsKKworICAgIGlmIChzZWxmLm5hdmlnYXRlZC5sb2NhdGlvbi5ocmVmLmluZGV4
T2YoJ3BhcmVudC5odG1sJykgPT0gLTEpCisgICAgICAgIHRlc3RTdGF0dXMuaW5uZXJIVE1MID0g
J0ZBSUw6IGRpc2FsbG93ZWQgZnJhbWUgbmF2aWdhdGVkJzsKKyAgICBlbHNlIGlmIChuYXZpZ2F0
ZWRGcmFtZXMgPT0gMTApCisgICAgICAgIHRlc3RTdGF0dXMuaW5uZXJIVE1MID0gJ1BBU1MnOwor
ICAgIGVsc2UKKyAgICAgICAgdGVzdFN0YXR1cy5pbm5lckhUTUwgPSAnRkFJTDogZnJhbWVzIG5v
dCBuYXZpZ2F0ZWQgcHJvcGVybHknOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
K30KKworZnVuY3Rpb24gY291bnRGcmFtZSgpCit7CisgICAgKytuYXZpZ2F0ZWRGcmFtZXM7CisK
KyAgICBpZiAobmF2aWdhdGVkRnJhbWVzID09IDEwKQorICAgICAgICBjaGVja1Jlc3VsdHMoKTsK
K30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorCisgICAgPHA+VGhpcyB0ZXN0IHZl
cmlmaWVzIHRoYXQgYSBzYW5kYm94ZWQgSUZyYW1lIGNhbm5vdCBuYXZpZ2F0ZSBhbiBhbmNlc3Rv
cgorICAgIGluIHRoZSBmcmFtZSB0cmVlIGJ5IGFzc2lnbmluZyB0aGUgbG9jYXRpb24gYXR0cmli
dXRlLjwvcD4KKworICAgIDxwPlRoaXMgaXMgZG9uZSBieSBsb2FkaW5nIHRlbiBub24tc2FuZGJv
eGVkIElGcmFtZXMsIGFuZCBhIHNpbmdsZQorICAgIHNhbmRib3hlZCBvbmUuIEV4cGVjdCB0ZW4g
ZnJhbWVzIHRvIGJlIG5hdmlnYXRlZCwgYnV0IHRoZSBzYW5kYm94ZWQKKyAgICBvbmUgdG8gPGI+
bm90PC9iPiBiZSBvbmUgb2YgdGhlbS48L3A+CisgICAgCisgICAgPHA+VGhpcyB0ZXN0IHdpbGwg
cHJpbnQgJnF1b3Q7UEFTUyZxdW90OyBvbiBzdWNjZXNzLjwvcD4KKworICAgIDxpZnJhbWUgc3Jj
PSJyZXNvdXJjZXMvbm9uLXNhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi5odG1sIj48L2lmcmFt
ZT4KKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL25vbi1zYW5kYm94ZWQtaWZyYW1lLW5hdmln
YXRpb24uaHRtbCI+PC9pZnJhbWU+CisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9ub24tc2Fu
ZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLmh0bWwiPjwvaWZyYW1lPgorICAgIDxpZnJhbWUgc3Jj
PSJyZXNvdXJjZXMvbm9uLXNhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi5odG1sIj48L2lmcmFt
ZT4KKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL25vbi1zYW5kYm94ZWQtaWZyYW1lLW5hdmln
YXRpb24uaHRtbCI+PC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIG5hbWU9J25hdmlnYXRlZCcKKyAg
ICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJl
bnQuaHRtbCIKKyAgICA8L2lmcmFtZT4KKworICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvbm9u
LXNhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi5odG1sIj48L2lmcmFtZT4KKyAgICA8aWZyYW1l
IHNyYz0icmVzb3VyY2VzL25vbi1zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24uaHRtbCI+PC9p
ZnJhbWU+CisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9ub24tc2FuZGJveGVkLWlmcmFtZS1u
YXZpZ2F0aW9uLmh0bWwiPjwvaWZyYW1lPgorICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvbm9u
LXNhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi5odG1sIj48L2lmcmFtZT4KKyAgICA8aWZyYW1l
IHNyYz0icmVzb3VyY2VzL25vbi1zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24uaHRtbCI+PC9p
ZnJhbWU+CisKKyAgICA8cCBpZD0ndGVzdFN0YXR1cyc+RkFJTDogU2NyaXB0IGRpZG4ndCBydW48
L3A+CisgICAgCis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1l
cy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZp
Z2F0aW9uLXRhcmdldGxpbmstZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmstZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAKK1RoaXMgdGVzdCB2ZXJpZmll
cyB0aGF0IGEgc2FuZGJveGVkIElGcmFtZSBjYW5ub3Qgb3BlbiBhIGxpbmsgaW4gYW5vdGhlciBm
cmFtZSB1c2luZyB0aGUgdGFyZ2V0IGF0dHJpYnV0ZSBvZiBhIGxpbmsuCisKK1RoaXMgaXMgZG9u
ZSBieSBsb2FkaW5nIHRlbiBub24tc2FuZGJveGVkIElGcmFtZXMsIGFuZCBhIHNpbmdsZSBzYW5k
Ym94ZWQgb25lLiBJbiBhZGRpdGlvbiBlYWNoIG9mIHRoZXNlIGZyYW1lcyBoYXZlIGEgdGFyZ2V0
IGZyYW1lIChzbywgMjIgZnJhbWVzIGluIHRvdGFsKS4gRXhwZWN0IHRlbiBmcmFtZXMgdG8gYmUg
YWJsZSB0byBvcGVuIGEgbGluayBpbiB0aGVpciBjb3JyZXNwb25kaW5nIHRhcmdldCBmcmFtZSwg
YnV0IHRoZSBzYW5kYm94ZWQgb25lIHRvIG5vdCBiZSBvbmUgb2YgdGhlbS4KKworVGhpcyB0ZXN0
IHdpbGwgcHJpbnQgIlBBU1MiIG9uIHN1Y2Nlc3MuCisKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgCitQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQt
aWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRsaW5rLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZy
YW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEw
OSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKKyAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisK
K3ZhciBuYXZpZ2F0ZWRGcmFtZXMgPSAwOworCitmdW5jdGlvbiBjaGVja1Jlc3VsdHMoKQorewor
ICAgIHZhciB0ZXN0U3RhdHVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3RTdGF0dXMn
KTsKKworICAgIGlmIChzZWxmLnNhbmRib3hlZF90YXJnZXQubG9jYXRpb24uaHJlZi5pbmRleE9m
KCcuaHRtbCcpICE9IC0xKQorICAgICAgICB0ZXN0U3RhdHVzLmlubmVySFRNTCA9ICdGQUlMOiBk
aXNhbGxvd2VkIGZyYW1lIG5hdmlnYXRlZCc7CisgICAgZWxzZSBpZiAobmF2aWdhdGVkRnJhbWVz
ID09IDEwKQorICAgICAgICB0ZXN0U3RhdHVzLmlubmVySFRNTCA9ICdQQVNTJzsKKyAgICBlbHNl
CisgICAgICAgIHRlc3RTdGF0dXMuaW5uZXJIVE1MID0gJ0ZBSUw6IGZyYW1lcyBub3QgbmF2aWdh
dGVkIHByb3Blcmx5JzsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisg
ICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1
bmN0aW9uIGNvdW50RnJhbWUoKQoreworICAgICsrbmF2aWdhdGVkRnJhbWVzOworCisgICAgaWYg
KG5hdmlnYXRlZEZyYW1lcyA9PSAxMCkKKyAgICAgICAgY2hlY2tSZXN1bHRzKCk7Cit9CisKKzwv
c2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKworICAgIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0
aGF0IGEgc2FuZGJveGVkIElGcmFtZSBjYW5ub3Qgb3BlbiBhIGxpbmsgaW4KKyAgICBhbm90aGVy
IGZyYW1lIHVzaW5nIHRoZSA8Y29kZT50YXJnZXQ8L2NvZGU+IGF0dHJpYnV0ZSBvZiBhIGxpbmsu
PC9wPgorCisgICAgPHA+VGhpcyBpcyBkb25lIGJ5IGxvYWRpbmcgdGVuIG5vbi1zYW5kYm94ZWQg
SUZyYW1lcywgYW5kIGEgc2luZ2xlCisgICAgc2FuZGJveGVkIG9uZS4gSW4gYWRkaXRpb24gZWFj
aCBvZiB0aGVzZSBmcmFtZXMgaGF2ZSBhIHRhcmdldCBmcmFtZQorICAgIChzbywgMjIgZnJhbWVz
IGluIHRvdGFsKS4gRXhwZWN0IHRlbiBmcmFtZXMgdG8gYmUgYWJsZSB0byBvcGVuIGEgbGluawor
ICAgIGluIHRoZWlyIGNvcnJlc3BvbmRpbmcgdGFyZ2V0IGZyYW1lLCBidXQgdGhlIHNhbmRib3hl
ZCBvbmUKKyAgICB0byA8Yj5ub3Q8L2I+IGJlIG9uZSBvZiB0aGVtLjwvcD4KKyAgICAKKyAgICA8
cD5UaGlzIHRlc3Qgd2lsbCBwcmludCAmcXVvdDtQQVNTJnF1b3Q7IG9uIHN1Y2Nlc3MuPC9wPgor
CisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24t
dGFyZ2V0bGluay5odG1sIgorICAgICAgICAgICAgbmFtZT0iZjEiPgorICAgIDwvaWZyYW1lPgor
ICAgIDxpZnJhbWUgbmFtZT0iZjFfdGFyZ2V0IiBzcmM9ImFib3V0OmJsYW5rIj48L2lmcmFtZT4K
KworICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9u
LXRhcmdldGxpbmsuaHRtbCIKKyAgICAgICAgICAgIG5hbWU9ImYyIj4KKyAgICA8L2lmcmFtZT4K
KyAgICA8aWZyYW1lIG5hbWU9ImYyX3RhcmdldCIgc3JjPSJhYm91dDpibGFuayI+PC9pZnJhbWU+
CisKKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlv
bi10YXJnZXRsaW5rLmh0bWwiCisgICAgICAgICAgICBuYW1lPSJmMyI+CisgICAgPC9pZnJhbWU+
CisgICAgPGlmcmFtZSBuYW1lPSJmM190YXJnZXQiIHNyYz0iYWJvdXQ6YmxhbmsiPjwvaWZyYW1l
PgorCisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRp
b24tdGFyZ2V0bGluay5odG1sIgorICAgICAgICAgICAgbmFtZT0iZjQiPgorICAgIDwvaWZyYW1l
PgorICAgIDxpZnJhbWUgbmFtZT0iZjRfdGFyZ2V0IiBzcmM9ImFib3V0OmJsYW5rIj48L2lmcmFt
ZT4KKworICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0
aW9uLXRhcmdldGxpbmsuaHRtbCIKKyAgICAgICAgICAgIG5hbWU9ImY1Ij4KKyAgICA8L2lmcmFt
ZT4KKyAgICA8aWZyYW1lIG5hbWU9ImY1X3RhcmdldCIgc3JjPSJhYm91dDpibGFuayI+PC9pZnJh
bWU+CisKKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdh
dGlvbi10YXJnZXRsaW5rLmh0bWwiCisgICAgICAgICAgICBuYW1lPSJzYW5kYm94ZWQiCisgICAg
ICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LXNhbWUtb3JpZ2luIj4KKyAgICA8
L2lmcmFtZT4KKyAgICA8aWZyYW1lIG5hbWU9InNhbmRib3hlZF90YXJnZXQiIHNyYz0iYWJvdXQ6
YmxhbmsiPjwvaWZyYW1lPgorCisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQt
aWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay5odG1sIgorICAgICAgICAgICAgbmFtZT0iZjYi
PgorICAgIDwvaWZyYW1lPgorICAgIDxpZnJhbWUgbmFtZT0iZjZfdGFyZ2V0IiBzcmM9ImFib3V0
OmJsYW5rIj48L2lmcmFtZT4KKworICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVk
LWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbCIKKyAgICAgICAgICAgIG5hbWU9ImY3
Ij4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIG5hbWU9ImY3X3RhcmdldCIgc3JjPSJhYm91
dDpibGFuayI+PC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hl
ZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRsaW5rLmh0bWwiCisgICAgICAgICAgICBuYW1lPSJm
OCI+CisgICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBuYW1lPSJmOF90YXJnZXQiIHNyYz0iYWJv
dXQ6YmxhbmsiPjwvaWZyYW1lPgorCisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94
ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay5odG1sIgorICAgICAgICAgICAgbmFtZT0i
ZjkiPgorICAgIDwvaWZyYW1lPgorICAgIDxpZnJhbWUgbmFtZT0iZjlfdGFyZ2V0IiBzcmM9ImFi
b3V0OmJsYW5rIj48L2lmcmFtZT4KKworICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJv
eGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbCIKKyAgICAgICAgICAgIG5hbWU9
ImYxMCI+CisgICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBuYW1lPSJmMTBfdGFyZ2V0IiBzcmM9
ImFib3V0OmJsYW5rIj48L2lmcmFtZT4KKworICAgIDxwIGlkPSd0ZXN0U3RhdHVzJz5GQUlMOiBT
Y3JpcHQgZGlkbid0IHJ1bjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQt
aWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24td2lu
ZG93b3Blbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNiBAQAorVmVyaWZp
ZXMgdGhhdCBhIHNhbmRib3hlZCBJRnJhbWUgY2Fubm90IG9wZW4gbmV3IHdpbmRvd3MgdXNpbmcg
d2luZG93Lm9wZW4oKS4gRXhwZWN0IHRlbiB3aW5kb3dzIHRvIGJlIG9wZW5lZCwgYnV0IHRoZSBz
YW5kYm94ZWQgSUZyYW1lIG5vdCB0byBiZSB0aGUgb3BlbmVyIG9mIGFueSBvZiB0aGVtLgorCitU
aGlzIHRlc3Qgd2lsbCBwcmludCAiUEFTUyIgb24gc3VjY2Vzcy4KKworICAgICAgICAgICAgICAg
CitQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5h
dmlnYXRpb24td2luZG93b3Blbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmln
YXRpb24td2luZG93b3Blbi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcyIEBACis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
eworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0
Q2FuT3BlbldpbmRvd3ModHJ1ZSk7Cit9CisKK3ZhciB0ZXN0U3RhdHVzICAgICAgID0gIkZBSUw6
IG5vdCBjb21wbGV0ZWQiOwordmFyIHdpbmRvd3NPcGVuZWQgICAgPSAwOwordmFyIG1haW5XaW5k
b3dMb2FkZWQgPSBmYWxzZTsKK3ZhciB0ZXN0Q29tcGxldGVkICAgID0gZmFsc2U7CisKK2Z1bmN0
aW9uIHVwZGF0ZVN0YXR1cyhsb2FkZWQsIGRvbmUpCit7CisgICAgbWFpbldpbmRvd0xvYWRlZCB8
PSBsb2FkZWQ7CisgICAgdGVzdENvbXBsZXRlZCB8PSBkb25lOworCisgICAgaWYgKG1haW5XaW5k
b3dMb2FkZWQgJiYgdGVzdENvbXBsZXRlZCkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgidGVzdFN0YXR1cyIpLmlubmVySFRNTCA9IHRlc3RTdGF0dXM7CisgICAgICAgIGlmICh0
ZXN0Q29tcGxldGVkICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9u
IHdpbmRvd09wZW5lZCh3aW5kb3dPcGVuZXIpCit7CisgICAgaWYgKHdpbmRvd09wZW5lciA9PSBz
ZWxmLnNhbmRib3hlZCkgeworICAgICAgICB0ZXN0U3RhdHVzID0gIkZBSUw6IHNhbmRib3hlZCBm
cmFtZSBvcGVuZWQgd2luZG93IjsKKyAgICAgICAgdXBkYXRlU3RhdHVzKGZhbHNlLCB0cnVlKTsK
KyAgICB9IGVsc2UgeworICAgICAgICArK3dpbmRvd3NPcGVuZWQ7CisgICAgICAgIGlmICh3aW5k
b3dzT3BlbmVkID09IDEwICYmICF0ZXN0Q29tcGxldGVkKSB7CisgICAgICAgICAgICB0ZXN0U3Rh
dHVzID0gIlBBU1MiOworICAgICAgICAgICAgdXBkYXRlU3RhdHVzKGZhbHNlLCB0cnVlKTsKKyAg
ICAgICAgfQorICAgIH0KK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0i
dXBkYXRlU3RhdHVzKHRydWUsIGZhbHNlKTsiPgorCisgICAgPHA+VmVyaWZpZXMgdGhhdCBhIHNh
bmRib3hlZCBJRnJhbWUgY2Fubm90IG9wZW4gbmV3IHdpbmRvd3MKKyAgICB1c2luZyA8Y29kZT53
aW5kb3cub3BlbigpPC9jb2RlPi4gRXhwZWN0IHRlbiB3aW5kb3dzIHRvIGJlIG9wZW5lZCwKKyAg
ICBidXQgdGhlIHNhbmRib3hlZCBJRnJhbWUgbm90IHRvIGJlIHRoZSBvcGVuZXIgb2YgYW55IG9m
IHRoZW0uPC9wPgorICAgIAorICAgIDxwPlRoaXMgdGVzdCB3aWxsIHByaW50ICZxdW90O1BBU1Mm
cXVvdDsgb24gc3VjY2Vzcy48L3A+CisKKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRi
b3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0bWwiPjwvaWZyYW1lPgorICAgIDxp
ZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29w
ZW4uaHRtbCI+PC9pZnJhbWU+CisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQt
aWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi5odG1sIj48L2lmcmFtZT4KKyAgICA8aWZyYW1l
IHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0
bWwiPjwvaWZyYW1lPgorICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFt
ZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4uaHRtbCI+PC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNy
Yz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0bWwi
CisgICAgICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIgorICAgICAgICAgICAgbmFtZT0i
c2FuZGJveGVkIj4KKyAgICA8L2lmcmFtZT4KKworICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMv
c2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4uaHRtbCI+PC9pZnJhbWU+Cisg
ICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24td2lu
ZG93b3Blbi5odG1sIj48L2lmcmFtZT4KKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRi
b3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0bWwiPjwvaWZyYW1lPgorICAgIDxp
ZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29w
ZW4uaHRtbCI+PC9pZnJhbWU+CisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQt
aWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi5odG1sIj48L2lmcmFtZT4KKworICAgIDxwIGlk
PSd0ZXN0U3RhdHVzJz5GQUlMOiBTY3JpcHQgZGlkbid0IHJ1bjwvcD4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lu
cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2Fu
ZGJveGVkLWlmcmFtZS1wbHVnaW5zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTcgQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHNh
bmRib3hpbmcgb2YgcGx1Z2lucyB3b3JrcyBhcyBpbnRlbmRlZC4gVGhyZWUgdGVzdHMgYXJlIG1h
ZGUsIGVhY2ggaW4gb25lIHNhbmRib3hlZCBhbmQgb25lIG5vbi1zYW5kYm94ZWQgSUZyYW1lOiBh
cHBsZXRzLCBlbWJlZHMsIGFuZCBvYmplY3RzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworTk9URTogVGhlIGZpcnN0IHN1Yi10ZXN0IHdpbGwgZmFpbCBpbiBEdW1wUmVuZGVyVHJl
ZSwgc2luY2UgRHVtcFJlbmRlclRyZWUgZG9lcyBub3Qgc3VwcG9ydCBhcHBsZXRzLiBUaGF0IHN1
Yi10ZXN0IG11c3QgYmUgcnVuIGluIFNhZmFyaSBpbnN0ZWFkLgorCitGQUlMIChzZWxmLmFwcGxl
dEZyYW1lMS5kb2N1bWVudFsnYXBwJ10uaW5pdCkgIT0gdW5kZWZpbmVkIHNob3VsZCBiZSB0cnVl
LiBXYXMgZmFsc2UuCitQQVNTIChzZWxmLmFwcGxldEZyYW1lMi5kb2N1bWVudFsnYXBwJ10uaW5p
dCkgPT0gdW5kZWZpbmVkIGlzIHRydWUKK1BBU1MgKHNlbGYuZW1iZWRGcmFtZTEuZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3BsdWdpbicpLmRlc3Ryb3lTdHJlYW0pICE9IHVuZGVmaW5lZCBpcyB0
cnVlCitQQVNTIChzZWxmLmVtYmVkRnJhbWUyLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbHVn
aW4nKS5kZXN0cm95U3RyZWFtKSA9PSB1bmRlZmluZWQgaXMgdHJ1ZQorUEFTUyAoc2VsZi5vYmpl
Y3RGcmFtZTEuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BsdWdpbicpLmRlc3Ryb3lTdHJlYW0p
ICE9IHVuZGVmaW5lZCBpcyB0cnVlCitQQVNTIChzZWxmLm9iamVjdEZyYW1lMi5kb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgncGx1Z2luJykuZGVzdHJveVN0cmVhbSkgPT0gdW5kZWZpbmVkIGlzIHRy
dWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorICAg
ICAgICAgCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXBs
dWdpbnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94
ZWQtaWZyYW1lLXBsdWdpbnMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDc0IEBACis8aHRtbD4gCis8aGVhZD4gCis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+IAor
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgCisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOyAKKyAKK3dpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsgCisgICAg
c2hvdWxkQmVUcnVlKCIoc2VsZi5hcHBsZXRGcmFtZTEuZG9jdW1lbnRbJ2FwcCddLmluaXQpICE9
IHVuZGVmaW5lZCIpOworICAgIHNob3VsZEJlVHJ1ZSgiKHNlbGYuYXBwbGV0RnJhbWUyLmRvY3Vt
ZW50WydhcHAnXS5pbml0KSA9PSB1bmRlZmluZWQiKTsKKworICAgIHNob3VsZEJlVHJ1ZSgiKHNl
bGYuZW1iZWRGcmFtZTEuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BsdWdpbicpLmRlc3Ryb3lT
dHJlYW0pICE9IHVuZGVmaW5lZCIpOworICAgIHNob3VsZEJlVHJ1ZSgiKHNlbGYuZW1iZWRGcmFt
ZTIuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BsdWdpbicpLmRlc3Ryb3lTdHJlYW0pID09IHVu
ZGVmaW5lZCIpOworCisgICAgc2hvdWxkQmVUcnVlKCIoc2VsZi5vYmplY3RGcmFtZTEuZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3BsdWdpbicpLmRlc3Ryb3lTdHJlYW0pICE9IHVuZGVmaW5lZCIp
OworICAgIHNob3VsZEJlVHJ1ZSgiKHNlbGYub2JqZWN0RnJhbWUyLmRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdwbHVnaW4nKS5kZXN0cm95U3RyZWFtKSA9PSB1bmRlZmluZWQiKTsKKworICAgIGlz
U3VjY2Vzc2Z1bGx5UGFyc2VkKCk7Cit9IAorPC9zY3JpcHQ+IAorPC9oZWFkPiAKKyAKKzxib2R5
PiAKKyAgICA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKyAKKyAgICA8cD5OT1RFOiBUaGUgZmly
c3Qgc3ViLXRlc3Qgd2lsbCBmYWlsIGluIER1bXBSZW5kZXJUcmVlLCBzaW5jZSBEdW1wUmVuZGVy
VHJlZQorICAgIGRvZXMgbm90IHN1cHBvcnQgYXBwbGV0cy4gVGhhdCBzdWItdGVzdCBtdXN0IGJl
IHJ1biBpbiBTYWZhcmkgaW5zdGVhZC48L3A+IAorCisgICAgPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+CisKKyAgICA8IS0tIEFwcGxldHMgLS0+CisgICAgCisgICAgPGlmcmFtZSBpZD0iYXBwbGV0
RnJhbWUxIiAKKyAgICAgICAgICAgIHN0eWxlPSJ3aWR0aDogMjAwcHg7IGhlaWdodDogMTAwcHg7
IiAKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1m
cmFtZS1hcHBsZXQuaHRtbCI+IAorICAgIDwvaWZyYW1lPiAKKyAgICA8aWZyYW1lIGlkPSJhcHBs
ZXRGcmFtZTIiIAorICAgICAgICAgICAgc3R5bGU9IndpZHRoOiAyMDBweDsgaGVpZ2h0OiAxMDBw
eDsiIAorICAgICAgICAgICAgc2FuZGJveD0iYWxsb3ctc2FtZS1vcmlnaW4gYWxsb3ctc2NyaXB0
cyIgCisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMt
ZnJhbWUtYXBwbGV0Lmh0bWwiPiAKKyAgICA8L2lmcmFtZT4gCisKKyAgICA8IS0tIEVtYmVkcyAt
LT4KKyAgICAKKyAgICA8aWZyYW1lIGlkPSJlbWJlZEZyYW1lMSIKKyAgICAgICAgICAgIHN0eWxl
PSJ3aWR0aDogMjAwcHg7IGhlaWdodDogMTAwcHg7IgorICAgICAgICAgICAgc3JjPSJyZXNvdXJj
ZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLWZyYW1lLWVtYmVkLmh0bWwiPgorICAgIDwvaWZy
YW1lPgorICAgIDxpZnJhbWUgaWQ9ImVtYmVkRnJhbWUyIgorICAgICAgICAgICAgc3R5bGU9Indp
ZHRoOiAyMDBweDsgaGVpZ2h0OiAxMDBweDsiCisgICAgICAgICAgICBzYW5kYm94PSJhbGxvdy1z
YW1lLW9yaWdpbiIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUt
cGx1Z2lucy1mcmFtZS1lbWJlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKworICAgIDwhLS0gT2Jq
ZWN0cyAtLT4KKyAgICAKKyAgICA8aWZyYW1lIGlkPSJvYmplY3RGcmFtZTEiCisgICAgICAgICAg
ICBzdHlsZT0id2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDEwMHB4OyIKKyAgICAgICAgICAgIHNyYz0i
cmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1vYmplY3QuaHRtbCI+Cisg
ICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBpZD0ib2JqZWN0RnJhbWUyIgorICAgICAgICAgICAg
c3R5bGU9IndpZHRoOiAyMDBweDsgaGVpZ2h0OiAxMDBweDsiCisgICAgICAgICAgICBzYW5kYm94
PSJhbGxvdy1zYW1lLW9yaWdpbiIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hl
ZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1vYmplY3QuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAg
ICA8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBzYW5k
Ym94aW5nIG9mIHBsdWdpbnMgd29ya3MgYXMgaW50ZW5kZWQuIFRocmVlIHRlc3RzIGFyZSBtYWRl
LCBlYWNoIGluIG9uZSBzYW5kYm94ZWQgYW5kIG9uZSBub24tc2FuZGJveGVkIElGcmFtZTogYXBw
bGV0cywgZW1iZWRzLCBhbmQgb2JqZWN0cy4iKTsKKyAgICB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4gCis8L2h0bWw+IApJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1zY3JpcHRpbmctZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUt
c2NyaXB0aW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtc2NyaXB0aW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxMSBAQAorVmVyaWZ5IHRoYXQgc2FuZGJveGVkIGZyYW1lcyB3aXRoIHNh
bmRib3g9ImFsbG93LXNjcmlwdHMiIGNhbiBleGVjdXRlIHNjcmlwdHMsIGJ1dCBvdGhlciBzYW5k
Ym94ZWQgZnJhbWVzIGNhbm5vdC4gQWxzbyB2ZXJpZnkgdGhhdCByZW1vdmluZyB0aGUgc2FuZGJv
eD0iYWxsb3ctc2NyaXB0cyIgYXR0cmlidXRlIGF0IHJ1bnRpbWUgcHJldmVudHMgbmV3IHNjcmlw
dHMgZnJvbSBsYXVuY2hpbmcsIGJ1dCBleGlzdGluZyBvbmVzIGtlZXAgcnVubmluZy4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZGlzYWxsb3dlZEV4ZWN1dGVkIGlzIDAK
K1BBU1MgYWxsb3dlZEV4ZWN1dGVkIGlzIDIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorICAgCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9z
YW5kYm94ZWQtaWZyYW1lLXNjcmlwdGluZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtc2NyaXB0aW5nLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXNjcmlwdGluZy5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCit2YXIgZGlzYWxs
b3dlZEV4ZWN1dGVkID0gMDsKK3ZhciBhbGxvd2VkRXhlY3V0ZWQgPSAwOworCit3aW5kb3cub25s
b2FkID0gZnVuY3Rpb24oKQoreworICAgIHNob3VsZEJlKCJkaXNhbGxvd2VkRXhlY3V0ZWQiLCAi
MCIpOworICAgIHNob3VsZEJlKCJhbGxvd2VkRXhlY3V0ZWQiLCAiMiIpOworCisgICAgaXNTdWNj
ZXNzZnVsbHlQYXJzZWQoKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKyAgICA8
cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKyAKKyAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KyAKKyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93LXNhbWUtb3JpZ2luIGFsbG93LXNjcmlwdHMi
CisgICAgICAgICAgICBzcmM9ImphdmFzY3JpcHQ6ICsrd2luZG93LnRvcC5hbGxvd2VkRXhlY3V0
ZWQ7Ij4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93LXNhbWUtb3Jp
Z2luIgorICAgICAgICAgICAgc3JjPSJqYXZhc2NyaXB0OiArK3dpbmRvdy50b3AuZGlzYWxsb3dl
ZEV4ZWN1dGVkOyI+CisgICAgPC9pZnJhbWU+CisgICAgCisgICAgPGlmcmFtZSBpZD0iZnJhbWUi
IHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtc2NyaXB0LWR5bmFtaWMuaHRtbCI+Cisg
ICAgPC9pZnJhbWU+CisKKyAgICA8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJWZXJpZnkgdGhh
dCBzYW5kYm94ZWQgZnJhbWVzIHdpdGggc2FuZGJveD0mcXVvdDthbGxvdy1zY3JpcHRzJnF1b3Q7
IGNhbiBleGVjdXRlIHNjcmlwdHMsICIKKyAgICAgICAgICAgICAgICAgKyAiYnV0IG90aGVyIHNh
bmRib3hlZCBmcmFtZXMgY2Fubm90LiBBbHNvIHZlcmlmeSB0aGF0IHJlbW92aW5nIHRoZSAiCisg
ICAgICAgICAgICAgICAgICsgInNhbmRib3g9JnF1b3Q7YWxsb3ctc2NyaXB0cyZxdW90OyBhdHRy
aWJ1dGUgYXQgcnVudGltZSBwcmV2ZW50cyBuZXcgc2NyaXB0cyBmcm9tIGxhdW5jaGluZywgIgor
ICAgICAgICAgICAgICAgICArICJidXQgZXhpc3Rpbmcgb25lcyBrZWVwIHJ1bm5pbmcuIik7Cisg
ICAgdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvbm9uLXNh
bmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9ub24tc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvbm9u
LXNhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDUgQEAKKzxodG1sPgorPGJvZHk+CisgIDxpZnJhbWUgc3JjPSJzYW5kYm94ZWQtaWZyYW1lLW5h
dmlnYXRpb24tc291cmNlLmh0bWwiPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmli
dXRlLXBhcnNpbmctYWxsb3dlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWFsbG93
ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNl
cy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWFsbG93ZWQuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxMiBAQAorPGh0bWw+Cis8c2NyaXB0PgorCit0b3AuYWxsb3dlZENh
bGxGcm9tU2FuZGJveCgpOworCis8L3NjcmlwdD4KKzxib2R5IG9ubG9hZD0iZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2YnKS5zdWJtaXQoKTsiPgorICAgIDxmb3JtIGlkPSdmJyBhY3Rpb249Imph
dmFzY3JpcHQ6dG9wLmRpc2FsbG93ZWRGb3JtU3VibWl0dGVkKCk7Ij4KKyAgICAgICAgPGlucHV0
IG5hbWU9IngiIHZhbHVlPSJ5IiB0eXBlPSJjaGVja2JveCIgY2hlY2tlZD0ieWVzIiAvPgorICAg
IDwvZm9ybT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWRpc2FsbG93ZWQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2Fu
ZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1kaXNhbGxvd2VkLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFt
ZS1hdHRyaWJ1dGUtcGFyc2luZy1kaXNhbGxvd2VkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNSBAQAorPGh0bWw+Cis8c2NyaXB0PgordG9wLmRpc2FsbG93ZWRDYWxsRnJvbVNhbmRib3go
KTsKKzwvc2NyaXB0PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVz
b3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1hbGxvd2VkLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1h
bGxvd2VkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNv
dXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWFsbG93ZWQuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw1IEBACis8Ym9keSBvbmxvYWQ9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmb3Jt
Jykuc3VibWl0KCk7Ij4KKzxmb3JtIGlkPSJmb3JtIiBhY3Rpb249ImphdmFzY3JpcHQ6d2luZG93
LnRvcC5hbGxvd2VkRm9ybVN1Ym1pdHRlZCgpOyI+CisgICAgPGlucHV0IG5hbWU9eCB2YWx1ZT15
IHR5cGU9ImNoZWNrYm94IiBjaGVja2VkPSJ5ZXMiLz4KKzwvZm9ybT4KKzwvYm9keT4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0t
ZGlzYWxsb3dlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jl
c291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tZGlzYWxsb3dlZC5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUt
Zm9ybS1kaXNhbGxvd2VkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNiBAQAorPGJvZHkg
b25sb2FkPSJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZm9ybScpLnN1Ym1pdCgpOyIKKyAgICAg
IGJnY29sb3I9J3llbGxvdyc+Cis8Zm9ybSBpZD0iZm9ybSIgYWN0aW9uPSJqYXZhc2NyaXB0Ondp
bmRvdy50b3AuZGlzYWxsb3dlZEZvcm1TdWJtaXR0ZWQoKTsiPgorICAgIDxpbnB1dCBuYW1lPXgg
dmFsdWU9eSB0eXBlPSJjaGVja2JveCIgY2hlY2tlZD0ieWVzIi8+Cis8L2Zvcm0+Cis8L2JvZHk+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFt
ZS1uYXZpZ2F0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9y
ZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0ZWQuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmln
YXRlZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUgQEAKKzxodG1sPgorPGJvZHkgb25s
b2FkPSdzZWxmLnRvcC5jb3VudEZyYW1lKCk7Jz4KK25hdmlnYXRlZAorPC9ib2R5PgorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJh
bWUtbmF2aWdhdGlvbi1jaGlsZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tY2hpbGQuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94
ZWQtaWZyYW1lLW5hdmlnYXRpb24tY2hpbGQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
OCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBtb2RpZnkoKQoreworICAg
IHNlbGYubmF2aWdhdGVkLmxvY2F0aW9uLmFzc2lnbigiamF2YXNjcmlwdDogdG9wLmNoaWxkRnJh
bWVXYXNOYXZpZ2F0ZWQoKTsiKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2Fk
PSJtb2RpZnkoKTsiPgorICAgIDxpZnJhbWUgbmFtZT0ibmF2aWdhdGVkIgorICAgICAgICAgICAg
c3JjPSJzYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tbmF2aWdhdGVkLmh0bWwiPgorICAgIDwv
aWZyYW1lPgorICAgIDxpZnJhbWUgbmFtZT0iZnJhbWVXaXRoUGx1Z2luIgorICAgICAgICAgICAg
c3JjPSJzYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtb2JqZWN0Lmh0bWwiPgorICAgIDwv
aWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMv
cmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1uYXZpZ2F0ZWQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlm
cmFtZS1uYXZpZ2F0aW9uLW5hdmlnYXRlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1uYXZp
Z2F0ZWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5IEBACis8aHRtbD4KKzxoZWFkPgor
PC9oZWFkPgorPGJvZHk+Cis8IS0tIFRoaXMgZmlsZSBpcyBpbiBhIHNlcGFyYXRlIGRvY3VtZW50
IGluIG9yZGVyIHRvIHNoYXJlIG9yaWdpbiB3aXRoIHRoZQorcGFyZW50IGRvY3VtZW50LiAtLT4K
K2lubm9jZW50IGNvbnRlbnQKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRi
b3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24t
cGFyZW50Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOCBAQAorPGh0bWw+Cis8Ym9keT4K
KyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctc2FtZS1vcmlnaW4iCisg
ICAgICAgICAgICBzcmM9InNhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1zb3VyY2UuaHRtbCI+
CisgICAgPC9pZnJhbWU+CisgICAgPHAgaWQ9J2lubm9jZW50X2NvbnRlbnQnPmlubm9jZW50IGNv
bnRlbnQ8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1l
cy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXNvdXJjZS5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZy
YW1lLW5hdmlnYXRpb24tc291cmNlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXNvdXJjZS5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dD4KK2Z1bmN0aW9uIG1vZGlmeSgpCit7CisgICAgc2VsZi5wYXJlbnQubG9jYXRpb24uYXNzaWdu
KCdzYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRlZC5odG1sJyk7Cit9Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IG9ubG9hZD0nbW9kaWZ5KCk7Jz4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRp
b24tdGFyZ2V0bGluay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hl
ZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRsaW5rLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMzEgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorCisvKgorICogU2V0IHRoZSB0YXJn
ZXQgb2YgdGhlIGxpbmsgdG8gJ1hfdGFyZ2V0Jywgd2hlcmUgWCBpcyB0aGUgbmFtZSBvZgorICog
dGhpcyBmcmFtZS4KKyAqCisgKiBUaGVuIGNsaWNrIHRoZSBsaW5rLgorICovCisKK2Z1bmN0aW9u
IGNsaWNrX2xpbmsoKQoreworICAgIHZhciBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdN
b3VzZUV2ZW50Jyk7CisgICAgZXZlbnQuaW5pdEV2ZW50KCdjbGljaycsIHRydWUsIHRydWUpOwor
ICAgIHZhciBsaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xpbmsnKTsKKyAgICBsaW5r
LnRhcmdldCA9IHNlbGYubmFtZSArICdfdGFyZ2V0JzsKKyAgICBsaW5rLmRpc3BhdGNoRXZlbnQo
ZXZlbnQpOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSdjbGlja19s
aW5rKCk7Jz4KKworICAgIDxhIGhyZWY9InNhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGVkLmh0bWwi
IGlkPSJsaW5rIj4KKyAgICAgICAgKGxpbmsgdHJpZ2dlcmVkIGJ5IHNjcmlwdCkKKyAgICA8L2E+
CisKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291
cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1l
LW5hdmlnYXRpb24td2luZG93b3Blbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dv
cGVuLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorPHNjcmlwdD4KKyAgICB3aW5k
b3cub3BlbigiamF2YXNjcmlwdDogb3BlbmVyLnBhcmVudC53aW5kb3dPcGVuZWQob3BlbmVyKTsi
KTsKKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3Nh
bmRib3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1hcHBsZXQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5z
LWZyYW1lLWFwcGxldC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFt
ZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1hcHBsZXQuaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAorPGh0bWw+Cis8aGVhZD4KKzwvaGVhZD4KKwor
PGJvZHk+CisgICAgPGFwcGxldCBuYW1lPSJhcHAiCisgICAgICAgICAgICBjb2RlYmFzZT0iLi4v
Li4vZG9tL3Jlc291cmNlcyIKKyAgICAgICAgICAgIGNvZGU9IlRlc3RBcHBsZXQiCisgICAgPC9h
cHBsZXQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9y
ZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLWZyYW1lLWVtYmVkLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJh
bWUtcGx1Z2lucy1mcmFtZS1lbWJlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1lbWJl
ZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyIEBACis8aHRtbD4KKzxoZWFkPgorPC9o
ZWFkPgorCis8Ym9keT4KKyAgICA8ZW1iZWQgaWQ9InBsdWdpbiIgCisgICAgICAgICAgIHR5cGU9
ImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiCisgICAgICAgICAgIHNyYz0iZGF0
YTp0ZXh0L3BsYWluLCIKKyAgICAgICAgICAgc3R5bGU9IndpZHRoOjA7IGhlaWdodDowIj4KKyAg
ICA8L2VtYmVkPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFt
ZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1vYmplY3QuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVk
LWlmcmFtZS1wbHVnaW5zLWZyYW1lLW9iamVjdC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFt
ZS1vYmplY3QuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAorPGh0bWw+Cis8aGVh
ZD4KKzwvaGVhZD4KKworPGJvZHk+CisgICAgPG9iamVjdCBpZD0icGx1Z2luIiAKKyAgICAgICAg
ICAgIHR5cGU9ImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiCisgICAgICAgICAg
ICBzdHlsZT0id2lkdGg6MDsgaGVpZ2h0OjAiPgorICAgIDwvb2JqZWN0PgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1p
ZnJhbWUtc2NyaXB0LWR5bmFtaWMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1zY3JpcHQtZHluYW1pYy5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hl
ZC1pZnJhbWUtc2NyaXB0LWR5bmFtaWMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNiBA
QAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisKKyAgICBmcmFtZSA9IHdpbmRvdy50b3AuZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZyYW1lJyk7CisKKyAgICAvLyBzZXR0aW5nIHRoZSBzYW5k
Ym94IGZsYWcgYXQgcnVudGltZSBzaG91bGQgbm90IHRlcm1pbmF0ZSBhbHJlYWR5CisgICAgLy8g
cnVubmluZyBzY3JpcHRzIChlLmcuLCB0aGlzIG9uZSkKKworICAgIGZyYW1lLnNhbmRib3ggPSAn
YWxsb3ctc2FtZS1vcmlnaW4nOyAgIC8vIE5PIGFsbG93LXNjcmlwdHMKKworICAgICsrd2luZG93
LnRvcC5hbGxvd2VkRXhlY3V0ZWQ7CisKKyAgICAvLyBob3dldmVyLCBuZXcgc2NyaXB0cyAoc3Vj
aCBhcyB0aGUgb25sb2FkIG9uZSBiZWxvdykgc2hvdWxkCisgICAgLy8gbm90IHJ1bgorCisgICAg
ZnVuY3Rpb24gb25sb2FkX2hvb2soKQorICAgIHsKKyAgICAgICAgKyt3aW5kb3cudG9wLmRpc2Fs
bG93ZWRFeGVjdXRlZDsKKyAgICB9OworCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25s
b2FkPSdvbmxvYWRfaG9vaygpOyc+PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLWRvY3VtZW50LWNvb2tpZS1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9z
YW5kYm94ZWQtaWZyYW1lLWRvY3VtZW50LWNvb2tpZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtZG9j
dW1lbnQtY29va2llLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACitU
aGlzIHRlc3QgY2hlY2tzIHRoYXQgYSBTRUNVUklUWV9FUlIgZXhjZXB0aW9uIGlzIHJhaXNlZCB3
aGlsZSBhY2Nlc3NpbmcgZG9jdW1lbnQuZG9tYWluIGluIGEgc2FuZGJveGVkIGlmcmFtZSAod2l0
aG91dCAiYWxsb3ctb3JpZ2luIiBzZXQpLiBUaGlzIHRlc3Qgd2lsbCBwcmludCAiUEFTUyIgb24g
c3VjY2Vzcy4KKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJh
bWUwLS0+LS0+JworLS0tLS0tLS0KK1BBU1MKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvc2FuZGJveGVkLWlmcmFtZS1kb2N1bWVudC1jb29raWUuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtZG9j
dW1lbnQtY29va2llLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtZG9jdW1lbnQtY29va2llLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMjUgQEAKKzxodG1sPgorPGhlYWQ+CisKKzxzY3JpcHQ+CisKK2lmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENoaWxkRnJhbWVzQXNU
ZXh0KCk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKworICAgIDxwPlRoaXMg
dGVzdCBjaGVja3MgdGhhdCBhIFNFQ1VSSVRZX0VSUiBleGNlcHRpb24gaXMgcmFpc2VkIHdoaWxl
IGFjY2Vzc2luZyBkb2N1bWVudC5kb21haW4KKyAgICBpbiBhIHNhbmRib3hlZCBpZnJhbWUgKHdp
dGhvdXQgJnF1b3Q7YWxsb3ctb3JpZ2luJnF1b3Q7IHNldCkuIFRoaXMgdGVzdCB3aWxsIHByaW50
CisgICAgJnF1b3Q7UEFTUyZxdW90OyBvbiBzdWNjZXNzLjwvcD4KKworICAgIDxpZnJhbWUgc2Fu
ZGJveD0iYWxsb3ctc2NyaXB0cyIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hl
ZC1pZnJhbWUtZG9jdW1lbnQtY29va2llLXJlYWQtZGVuaWVkLmh0bWwiPgorICAgIDwvaWZyYW1l
PgorPC9ib2R5PgorCis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3NhbmRib3hlZC1pZnJhbWUtbW9kaWZ5LXNlbGYtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc2FuZGJveGVkLWlmcmFtZS1tb2Rp
Znktc2VsZi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtbW9kaWZ5LXNlbGYtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogVW5z
YWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nlc3MgZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtbW9kaWZ5LXNlbGYuaHRtbCBm
cm9tIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJj
ZXMvc2FuZGJveGVkLWlmcmFtZS1tb2RpZnktc2VsZi5odG1sLiBEb21haW5zLCBwcm90b2NvbHMg
YW5kIHBvcnRzIG11c3QgbWF0Y2guCisKK1RoaXMgaXMgYSAic2FuaXR5IiB0ZXN0IGNhc2UgdG8g
dmVyaWZ5IHRoYXQgYSBzYW5kYm94ZWQgZnJhbWUgY2Fubm90IGJyZWFrIG91dCBvZiBpdHMgc2Fu
ZGJveCBieSBtb2RpZnlpbmcgaXRzIG93biBzYW5kYm94IGF0dHJpYnV0ZS4gVHdvIGF0dGVtcHRz
IGFyZSBtYWRlOgorCitGaXJzdCwgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIG1vZGlmeSB0aGUgc2Fu
ZGJveCBhdHRyaWJ1dGUgb2YgdGhlICJzZWxmIiBvYmplY3QsIHJlZmVycmluZyB0byB0aGUgZnJh
bWUncyB3aW5kb3cuIFRoaXMgc2hvdWxkIG5vdCBoYXZlIGFueSBlZmZlY3QgKHRoZSBhdHRyaWJ1
dGUgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBpZnJhbWUgRE9NIG5vZGUsIG5vdCB0aGUgd2luZG93
KS4gTm8gd2FybmluZyBpcyBleHBlY3RlZC4KK1NlY29uZCwgYW4gYXR0ZW1wdCBpcyBtYWRlIHRv
IG1vZGlmeSB0aGUgaWZyYW1lIERPTSBvYmplY3QncyBzYW5kYm94IGF0dHJpYnV0ZS4gQSB3YXJu
aW5nIG1lc3NhZ2UgKGFib3V0IGNyb3NzLXNpdGUgc2NyaXB0aW5nKSBpcyBleHBlY3RlZCwgYW5k
IHRoZSBzYW5kYm94IGF0dHJpYnV0ZSBzaG91bGQgcmVtYWluIGludGFjdC4KK1RoaXMgdGVzdCB3
aWxsIHByaW50ICJQQVNTIiBvbiBzdWNjZXNzLgorCitQQVNTCisKKwpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLW1vZGlmeS1zZWxmLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQt
aWZyYW1lLW1vZGlmeS1zZWxmLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtbW9kaWZ5LXNlbGYuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw0MiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisKK2lmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgd2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MID0gKGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJmIikuc2FuZGJveCAhPSAiYWxsb3ctc2NyaXB0cyIpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICJGQUlMOiBzYW5kYm94IGF0
dHJpYnV0ZSBtb2RpZmllZCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDogIlBBU1MiOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+Cisg
ICAgPHA+VGhpcyBpcyBhICZxdW90O3Nhbml0eSZxdW90OyB0ZXN0IGNhc2UgdG8gdmVyaWZ5IHRo
YXQgYSBzYW5kYm94ZWQgCisgICAgZnJhbWUgY2Fubm90IGJyZWFrIG91dCBvZiBpdHMgc2FuZGJv
eCBieSBtb2RpZnlpbmcgaXRzIG93biBzYW5kYm94CisgICAgYXR0cmlidXRlLiBUd28gYXR0ZW1w
dHMgYXJlIG1hZGU6PC9wPgorICAgIAorICAgIDxvbD4KKyAgICAgICAgPGxpPkZpcnN0LCBhbiBh
dHRlbXB0IGlzIG1hZGUgdG8gbW9kaWZ5IHRoZSBzYW5kYm94IGF0dHJpYnV0ZSBvZiB0aGUKKyAg
ICAgICAgJnF1b3Q7c2VsZiZxdW90OyBvYmplY3QsIHJlZmVycmluZyB0byB0aGUgZnJhbWUncyB3
aW5kb3cuIFRoaXMgc2hvdWxkCisgICAgICAgIG5vdCBoYXZlIGFueSBlZmZlY3QgKHRoZSBhdHRy
aWJ1dGUgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBpZnJhbWUgRE9NCisgICAgICAgIG5vZGUsIG5v
dCB0aGUgd2luZG93KS4gTm8gd2FybmluZyBpcyBleHBlY3RlZC48L2xpPgorICAgICAgICA8bGk+
U2Vjb25kLCBhbiBhdHRlbXB0IGlzIG1hZGUgdG8gbW9kaWZ5IHRoZSBpZnJhbWUgRE9NIG9iamVj
dCdzIHNhbmRib3gKKyAgICAgICAgYXR0cmlidXRlLiBBIHdhcm5pbmcgbWVzc2FnZSAoYWJvdXQg
Y3Jvc3Mtc2l0ZSBzY3JpcHRpbmcpIGlzIGV4cGVjdGVkLAorICAgICAgICBhbmQgdGhlIHNhbmRi
b3ggYXR0cmlidXRlIHNob3VsZCByZW1haW4gaW50YWN0LjwvbGk+CisgICAgPC9vbD4KKyAgICAK
KyAgICA8cD5UaGlzIHRlc3Qgd2lsbCBwcmludCAmcXVvdDtQQVNTJnF1b3Q7IG9uIHN1Y2Nlc3Mu
PC9wPgorCisgICAgPHAgaWQ9InJlc3VsdCI+RkFJTDwvcD4KKworICAgIDxpZnJhbWUgaWQ9ImYi
CisgICAgICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIgorICAgICAgICAgICAgc3JjPSJy
ZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1tb2RpZnktc2VsZi5odG1sIj4KKyAgICA8L2lmcmFt
ZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkveHNzLURFTklFRC1zYW5kYm94ZWQtaWZyYW1lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQtc2FuZGJveGVkLWlm
cmFtZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3hzcy1ERU5JRUQtc2FuZGJveGVkLWlmcmFtZS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsOCBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFVuc2FmZSBK
YXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9zZWN1cml0eS94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUuaHRtbCBmcm9tIGZy
YW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMveHNz
LURFTklFRC1zYW5kYm94ZWQtaWZyYW1lLWF0dGFja2VyLmh0bWwuIERvbWFpbnMsIHByb3RvY29s
cyBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KKworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFVuc2Fm
ZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9zZWN1cml0eS94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUuaHRtbCBmcm9t
IGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMv
eHNzLURFTklFRC1zYW5kYm94ZWQtaWZyYW1lLWF0dGFja2VyLmh0bWwuIERvbWFpbnMsIHByb3Rv
Y29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KKworVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgc2Fu
ZGJveGVkIGlmcmFtZSBwcmV2ZW50cyBjcm9zcy1kb21haW4gc2NyaXB0IGFjY2Vzcy4gSXQgd2ls
bCBwcmludCAiUEFTUyIgb24gc3VjY2Vzcy4KKworCitQQVNTOiBjcm9zcy1kb21haW4gc2NyaXB0
IGFjY2VzcyBkaXNhbGxvd2VkIGZyb20gc2FuZGJveGVkIGlmcmFtZQpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQt
c2FuZGJveGVkLWlmcmFtZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwyOSBAQAorPGh0bWw+Cis8c2NyaXB0PgorCitpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KwordmFyIGRvY1JlZiA9IHVuZGVmaW5lZDsKKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkK
K3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCA9Cisg
ICAgICAgIChkb2NSZWYgPyAiRkFJTDogY3Jvc3MtZG9tYWluIHNjcmlwdCBhY2Nlc3MgYWxsb3dl
ZCBmcm9tIHNhbmRib3hlZCBpZnJhbWUiCisgICAgICAgICAgICAgICAgOiAiUEFTUzogY3Jvc3Mt
ZG9tYWluIHNjcmlwdCBhY2Nlc3MgZGlzYWxsb3dlZCBmcm9tIHNhbmRib3hlZCBpZnJhbWUiKTsK
K30KKworPC9zY3JpcHQ+Cis8Ym9keT4KKworICAgIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0
IHNhbmRib3hlZCBpZnJhbWUgcHJldmVudHMgY3Jvc3MtZG9tYWluCisgICAgc2NyaXB0IGFjY2Vz
cy4gSXQgd2lsbCBwcmludCAmcXVvdDtQQVNTJnF1b3Q7IG9uIHN1Y2Nlc3MuPC9wPgorCisgICAg
PGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIgorICAgICAgICAgICAgc3JjPSJodHRwOi8v
MTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL3hzcy1ERU5JRUQtc2FuZGJveGVkLWlm
cmFtZS1hdHRhY2tlci5odG1sIj4KKyAgICA8L2lmcmFtZT4KKyAgICAKKyAgICA8ZGl2IGlkPSJj
b25zb2xlIj5GQUlMOiBTY3JpcHQgZGlkbid0IHJ1bjwvZGl2PgorICAgIAorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvc2Fu
ZGJveGVkLWlmcmFtZS1kb2N1bWVudC1jb29raWUtcmVhZC1kZW5pZWQuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9zYW5kYm94ZWQt
aWZyYW1lLWRvY3VtZW50LWNvb2tpZS1yZWFkLWRlbmllZC5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFt
ZS1kb2N1bWVudC1jb29raWUtcmVhZC1kZW5pZWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwyNSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQor
eworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0UmVzdWx0IikuaW5uZXJIVE1MID0g
KGZ1bmN0aW9uKCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgdmFyIGNvb2tpZSA9IGRv
Y3VtZW50LmNvb2tpZTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoZXJyKSB7CisgICAgICAg
ICAgICBpZiAoZXJyLm5hbWUuaW5kZXhPZigiU0VDVVJJVFlfRVJSIikgIT0gLTEpCisgICAgICAg
ICAgICAgICAgcmV0dXJuICJQQVNTIjsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiAiRkFJ
TDogU0VDVVJJVFlfRVJSIG5vdCByYWlzZWQiOworICAgIH0pKCk7Cit9CisKKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCk7Ij4KKyAgICA8cCBpZD0idGVzdFJlc3Vs
dCI+RkFJTDogU2NyaXB0IGRpZG4ndCBydW48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1l
LW1vZGlmeS1zZWxmLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1tb2RpZnktc2VsZi5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvc2Fu
ZGJveGVkLWlmcmFtZS1tb2RpZnktc2VsZi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0
IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKworLy8gdGhpcyBhc3NpZ25tZW50IHNob3Vs
ZCBoYXZlIG5vIGVmZmVjdCBvbiBzYW5kYm94IHN0YXR1cworc2VsZi5zYW5kYm94ID0gJ2FsbG93
LXNjcmlwdHMgYWxsb3ctc2FtZS1vcmlnaW4gaGFja2VkLXZpYS13aW5kb3ctb2JqZWN0JzsKKwor
Ly8gdGhpcyBzaG91bGQgYmUgcHJldmVudGVkIGJ5IHRoZSBzYW5kYm94ICdvcmlnaW4nIGZsYWcK
K2lmICh0b3AuZG9jdW1lbnQpCisgICAgdG9wLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmJyku
c2FuZGJveCA9ICdhbGxvdy1zY3JpcHRzIGFsbG93LXNhbWUtb3JpZ2luIGhhY2tlZC12aWEtZG9t
JzsKKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUtYXR0
YWNrZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3Jlc291cmNlcy94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUtYXR0YWNrZXIuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL3hz
cy1ERU5JRUQtc2FuZGJveGVkLWlmcmFtZS1hdHRhY2tlci5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDcgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorICAgIHRvcC5kb2NSZWYgPSBw
YXJlbnQuZG9jdW1lbnQ7ICAvLyBhY2Nlc3MgcGFyZW50J3MgRE9NIHRyZWU6IHNob3VsZCBub3Qg
YmUgYWxsb3dlZAorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJh
bWUtYWxsb3ctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1hbGxvdy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtYWxsb3ctZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkgQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0
IHNhbmRib3hlZCBpZnJhbWUgaGFzIFhtbEh0dHBSZXF1ZXN0IGFjY2VzcyB0byB0aGUgc2VydmVy
IHRoYXQgYWNjZXB0cyBhbGwgZG9tYWlucy4gSXQgd2lsbCBwcmludCAiUEFTUyIgb24gc3VjY2Vz
cy4KKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+
LS0+JworLS0tLS0tLS0KK1BBU1M6IFNhbmRib3hlZCBpZnJhbWUgWEhSIGFjY2VzcyBhbGxvd2Vk
LgorCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1j
b250cm9sLXNhbmRib3hlZC1pZnJhbWUtYWxsb3cuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1p
ZnJhbWUtYWxsb3cuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1hbGxvdy5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4IEBACis8aHRtbD4KKzxzY3JpcHQ+CisKK2lmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENoaWxkRnJhbWVzQXNU
ZXh0KCk7Cit9CisKKzwvc2NyaXB0PgorPGJvZHk+CisgICAgPHA+VGhpcyB0ZXN0IHZlcmlmaWVz
IHRoYXQgc2FuZGJveGVkIGlmcmFtZSBoYXMgWG1sSHR0cFJlcXVlc3QgYWNjZXNzCisgICAgdG8g
dGhlIHNlcnZlciB0aGF0IGFjY2VwdHMgYWxsIGRvbWFpbnMuIEl0IHdpbGwgcHJpbnQgJnF1b3Q7
UEFTUyZxdW90OyBvbiBzdWNjZXNzLjwvcD4KKyAgICAKKyAgICA8aWZyYW1lIHNhbmRib3g9ImFs
bG93LXNjcmlwdHMiIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3htbGh0dHByZXF1ZXN0L3Jl
c291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93LWlmcmFtZS5odG1s
IiBzdHlsZT0id2lkdGg6IDUwMHB4OyI+CisgICAgPC9pZnJhbWU+IAorICAgIAorPC9ib2R5PiAK
KzwvaHRtbD4gCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Fj
Y2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250
cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2Fu
ZGJveGVkLWlmcmFtZS1kZW5pZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDggQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHNhbmRib3hlZCBpZnJhbWUgZG9lcyBub3Qg
aGF2ZSBYbWxIdHRwUmVxdWVzdCBhY2Nlc3MgdG8gaXRzIHNlcnZlci4gSXQgd2lsbCBwcmludCAi
UEFTUyIgb24gc3VjY2Vzcy4KKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGgg
Ly88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK1BBU1M6IEV4Y2VwdGlvbiB0aHJvd24uIFNh
bmRib3hlZCBpZnJhbWUgWEhSIGFjY2VzcyB3YXMgZGVuaWVkIGluICdzZW5kJy4gW05FVFdPUktf
RVJSOiBYTUxIdHRwUmVxdWVzdCBFeGNlcHRpb24gMTAxXS4KSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1k
ZW5pZWQtd2l0aG91dC13aWxkY2FyZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQt
aWZyYW1lLWRlbmllZC13aXRob3V0LXdpbGRjYXJkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wt
c2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtd2l0aG91dC13aWxkY2FyZC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHNhbmRi
b3hlZCBpZnJhbWUgZG9lcyBub3QgaGF2ZSBYbWxIdHRwUmVxdWVzdCBhY2Nlc3MgdG8gaXRzIHNl
cnZlciB3aXRoICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4iIHNldCB0byBpdHMgb3duIG9y
aWdpbiAoMTI3LjAuMC4xKS4KKworVGhpcyB0ZXN0IHdpbGwgcHJpbnQgIlBBU1MiIG9uIHN1Y2Nl
c3MuCisKKworCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0t
Pi0tPicKKy0tLS0tLS0tCitQQVNTOiBFeGNlcHRpb24gdGhyb3duLiBTYW5kYm94ZWQgaWZyYW1l
IFhIUiBhY2Nlc3Mgd2FzIGRlbmllZCBpbiAnc2VuZCcuIFtORVRXT1JLX0VSUjogWE1MSHR0cFJl
cXVlc3QgRXhjZXB0aW9uIDEwMV0uCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQt
d2lsZGNhcmQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQt
d2lsZGNhcmQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtd2l0aG91
dC13aWxkY2FyZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIyIEBACis8aHRtbD4KKzxz
Y3JpcHQ+CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cENoaWxkRnJhbWVzQXNUZXh0KCk7Cit9CisKKzwvc2NyaXB0PgorPGJvZHk+CisKKyAgICA8cD5U
aGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBzYW5kYm94ZWQgaWZyYW1lIGRvZXMgbm90IGhhdmUgWG1s
SHR0cFJlcXVlc3QgYWNjZXNzIHRvCisgICAgaXRzIHNlcnZlciB3aXRoICJBY2Nlc3MtQ29udHJv
bC1BbGxvdy1PcmlnaW4iIHNldCB0byBpdHMgb3duIG9yaWdpbiAoMTI3LjAuMC4xKS48L3A+Cisg
ICAgCisgICAgPHA+VGhpcyB0ZXN0IHdpbGwgcHJpbnQgJnF1b3Q7UEFTUyZxdW90OyBvbiBzdWNj
ZXNzLjwvcD4KKworICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyIKKyAgICAgICAg
ICAgIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9h
Y2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC13aXRob3V0LXdpbGRjYXJkLWlm
cmFtZS5odG1sIiBzdHlsZT0id2lkdGg6IDUwMHB4OyI+CisgICAgPC9pZnJhbWU+CisgICAgCis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJv
bC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZy
YW1lLWRlbmllZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5IEBACis8aHRtbD4gCis8
c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworfQorCis8L3NjcmlwdD4KKworPGJvZHk+IAorICAgIDxw
PlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHNhbmRib3hlZCBpZnJhbWUgZG9lcyBub3QgaGF2ZSBY
bWxIdHRwUmVxdWVzdCBhY2Nlc3MKKyAgICB0byBpdHMgc2VydmVyLiBJdCB3aWxsIHByaW50ICZx
dW90O1BBU1MmcXVvdDsgb24gc3VjY2Vzcy48L3A+CisgICAgCisgICAgPGlmcmFtZSBzYW5kYm94
PSJhbGxvdy1zY3JpcHRzIgorICAgICAgICAgICAgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAv
eG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUt
ZGVuaWVkLWlmcmFtZS5odG1sIiBzdHlsZT0id2lkdGg6IDUwMHB4OyI+CisgICAgPC9pZnJhbWU+
IAorPC9ib2R5PiAKKzwvaHRtbD4gCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93
LWlmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtYWxsb3ct
aWZyYW1lLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93
LWlmcmFtZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI1IEBACis8aHRtbD4gCis8Ym9k
eT4gCis8cHJlIGlkPSdjb25zb2xlJz48L3ByZT4gCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCI+IAorCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9
IChmdW5jdGlvbigpIHsgCisgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdDsgCisgCisg
ICAgdHJ5IHsgCisgICAgICAgIHhoci5vcGVuKCJHRVQiLCAiaHR0cDovLzEyNy4wLjAuMTo4MDAw
L3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1l
LWFsbG93LmNnaSIsIGZhbHNlKTsgCisgICAgfSBjYXRjaChlKSB7IAorICAgICAgICByZXR1cm4g
IkZBSUw6IEV4Y2VwdGlvbiB0aHJvd24uIFNhbmRib3hlZCBpZnJhbWUgWEhSIGFjY2VzcyBpcyBu
b3QgYWxsb3dlZCBpbiAnb3BlbicuIFsiICsgZS5tZXNzYWdlICsgIl0uIjsgCisgICAgfSAKKyAK
KyAgICB0cnkgeyAKKyAgICAgICAgeGhyLnNlbmQoKTsgCisgICAgfSBjYXRjaChlKSB7IAorICAg
ICAgICByZXR1cm4gIkZBSUw6IEV4Y2VwdGlvbiB0aHJvd24uIFNhbmRib3hlZCBpZnJhbWUgWEhS
IGFjY2VzcyBpcyBub3QgYWxsb3dlZCBpbiAnc2VuZCcuIFsiICsgZS5tZXNzYWdlICsgIl0uIjsg
CisgICAgfSAKKyAKKyAgICByZXR1cm4geGhyLnJlc3BvbnNlVGV4dDsgCit9KSgpOyAKKzwvc2Ny
aXB0PiAKKzwvYm9keT4gCis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFs
bG93LmNnaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93LmNnaQko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVz
b3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtYWxsb3cuY2dpCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDggQEAKKyMhL3Vzci9iaW4vcGVybCAtd1QKK3VzZSBzdHJpY3Q7CisK
K3ByaW50ICJDb250ZW50LVR5cGU6IHRleHQvcGxhaW5cbiI7CitwcmludCAiQWNjZXNzLUNvbnRy
b2wtQWxsb3ctQ3JlZGVudGlhbHM6IHRydWVcbiI7CitwcmludCAiQWNjZXNzLUNvbnRyb2wtQWxs
b3ctT3JpZ2luOiAqXG5cbiI7CisKK3ByaW50ICJQQVNTOiBTYW5kYm94ZWQgaWZyYW1lIFhIUiBh
Y2Nlc3MgYWxsb3dlZC5cbiI7CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQt
aWZyYW1lLWFsbG93LmNnaQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQogICArICoK
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9h
Y2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC1pZnJhbWUuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9h
Y2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC1pZnJhbWUuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2Vz
L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWlmcmFtZS5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDI3IEBACis8aHRtbD4gCis8Ym9keT4gCis8cHJlIGlkPSdjb25z
b2xlJz48L3ByZT4gCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+IAorCitkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IChmdW5jdGlvbigpIHsKKyAg
ICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0OyAKKyAKKyAKKyAgICB0cnkgeyAKKyAgICAg
ICAgeGhyLm9wZW4oIkdFVCIsICJodHRwOi8vMTI3LjAuMC4xOjgwMDAveG1saHR0cHJlcXVlc3Qv
cmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLmNnaSIsIGZh
bHNlKTsgCisgICAgfSBjYXRjaChlKSB7IAorICAgICAgICByZXR1cm4gIkZBSUw6IEV4Y2VwdGlv
biB0aHJvd24uIFNhbmRib3hlZCBpZnJhbWUgWEhSIGFjY2VzcyBpcyBub3QgYWxsb3dlZCBpbiAn
b3BlbicuIFsiICsgZS5tZXNzYWdlICsgIl0uIjsgCisgICAgfSAKKyAKKyAgICB0cnkgeyAKKyAg
ICAgICAgeGhyLnNlbmQoKTsgCisgICAgfSBjYXRjaChlKSB7IAorICAgICAgICByZXR1cm4gIlBB
U1M6IEV4Y2VwdGlvbiB0aHJvd24uIFNhbmRib3hlZCBpZnJhbWUgWEhSIGFjY2VzcyB3YXMgZGVu
aWVkIGluICdzZW5kJy4gWyIgKyBlLm1lc3NhZ2UgKyAiXS4iOyAKKyAgICB9CisgCisgICAgcmV0
dXJuIHhoci5yZXNwb25zZVRleHQ7IAorfSkoKTsKKyAgCis8L3NjcmlwdD4gCis8L2JvZHk+IAor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNv
dXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtd2l0aG91dC13aWxk
Y2FyZC1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRl
bmllZC13aXRob3V0LXdpbGRjYXJkLWlmcmFtZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wt
c2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtd2l0aG91dC13aWxkY2FyZC1pZnJhbWUuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwyNiBAQAorPGh0bWw+Cis8Ym9keT4KKzxwcmUgaWQ9J2NvbnNv
bGUnPjwvcHJlPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCitkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IChmdW5jdGlvbigpIHsKKyAgICB2
YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0OworCisgICAgdHJ5IHsKKyAgICAgICAgeGhyLm9w
ZW4oIkdFVCIsICJodHRwOi8vMTI3LjAuMC4xOjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2Vz
L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQu
Y2dpIiwgZmFsc2UpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICByZXR1cm4gIkZBSUw6IEV4
Y2VwdGlvbiB0aHJvd24uIFNhbmRib3hlZCBpZnJhbWUgWEhSIGFjY2VzcyBpcyBub3QgYWxsb3dl
ZCBpbiAnb3BlbicuIFsiICsgZS5tZXNzYWdlICsgIl0uIjsKKyAgICB9CisKKyAgICB0cnkgewor
ICAgICAgICB4aHIuc2VuZCgpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICByZXR1cm4gIlBB
U1M6IEV4Y2VwdGlvbiB0aHJvd24uIFNhbmRib3hlZCBpZnJhbWUgWEhSIGFjY2VzcyB3YXMgZGVu
aWVkIGluICdzZW5kJy4gWyIgKyBlLm1lc3NhZ2UgKyAiXS4iOworICAgIH0KKworICAgIHJldHVy
biB4aHIucmVzcG9uc2VUZXh0OworfSkoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9h
Y2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC13aXRob3V0LXdpbGRjYXJkLmNn
aQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jl
c291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC13aXRob3V0LXdp
bGRjYXJkLmNnaQkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVk
LXdpdGhvdXQtd2lsZGNhcmQuY2dpCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAKKyMhL3Vz
ci9iaW4vcGVybCAtd1QKK3VzZSBzdHJpY3Q7CisKK3ByaW50ICJDb250ZW50LVR5cGU6IHRleHQv
cGxhaW5cbiI7CitwcmludCAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctQ3JlZGVudGlhbHM6IHRydWVc
biI7CitwcmludCAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luOiBodHRwOi8vMTI3LjAuMC4x
OjgwMDBcblxuIjsKKworcHJpbnQgIkZBSUw6IFNhbmRib3hlZCBpZnJhbWUgWEhSIGFjY2VzcyBh
bGxvd2VkLlxuIjsKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUt
ZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQuY2dpCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRh
YmxlCiAgICsgKgoKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
cmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLmNnaQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNl
cy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC5jZ2kJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nl
c3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC5jZ2kJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNiBAQAorIyEvdXNyL2Jpbi9wZXJsIC13VAordXNlIHN0cmljdDsKKworcHJpbnQgIkNv
bnRlbnQtVHlwZTogdGV4dC9wbGFpblxuXG4iOworCitwcmludCAiRkFJTDogU2FuZGJveGVkIGlm
cmFtZSBYSFIgYWNjZXNzIGFsbG93ZWQuXG4iOwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wt
c2FuZGJveGVkLWlmcmFtZS1kZW5pZWQuY2dpCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRh
YmxlCiAgICsgKgoKSW5kZXg6IExheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0
b3JhZ2Uvc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2Uvc2FuZGJveGVkLWlm
cmFtZS1kZW5pZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3Rv
cmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMgdGVzdCB2ZXJpZmll
cyB0aGF0IHNhbmRib3hlZCBpZnJhbWUgZG9lcyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIGxvY2Fs
IHN0b3JhZ2Ugb2YgaXRzIGNvbnRhaW5pbmcgZnJhbWUgZnJvbSB0aGUgc2FtZSBvcmlnaW4uCisK
K1RoaXMgdGVzdCB3aWxsIHByaW50ICJQQVNTIiBvbiBzdWNjZXNzLgorCisKKworLS0tLS0tLS0K
K0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4nCistLS0tLS0tLQorUEFT
UzogU2FuZGJveGVkIGlmcmFtZSBkb2VzIG5vdCBoYXZlIGFjY2VzcyB0byB0aGUgbG9jYWwgc3Rv
cmFnZSBmcm9tIHRoZSBzYW1lIG9yaWdpbi4KSW5kZXg6IExheW91dFRlc3RzL3N0b3JhZ2UvZG9t
c3RvcmFnZS9sb2NhbHN0b3JhZ2Uvc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3NhbmRi
b3hlZC1pZnJhbWUtZGVuaWVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdG9y
YWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3NhbmRib3hlZC1pZnJhbWUtZGVuaWVkLmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzkgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0Pgor
CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBDaGlsZEZy
YW1lc0FzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
K30KKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBpZiAoIXdpbmRvdy5sb2Nh
bFN0b3JhZ2UpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZ2dlciIpLmlu
bmVySFRNTCA9ICJ3aW5kb3cubG9jYWxTdG9yYWdlIERPRVMgTk9UIGV4aXN0IjsKKyAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGxv
Y2FsU3RvcmFnZS5jbGVhcigpOworICAgIGxvY2FsU3RvcmFnZS5mb28gPSAiYmFyIjsKKworICAg
IHZhciBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICBpZnJh
bWUuc2FuZGJveCA9ICJhbGxvdy1zY3JpcHRzIjsKKyAgICBpZnJhbWUuc3JjID0gInJlc291cmNl
cy9zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC1pZnJhbWUuaHRtbCI7CisgICAgZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZChpZnJhbWUpOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
ICAgIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHNhbmRib3hlZCBpZnJhbWUgZG9lcyBub3Qg
aGF2ZSBhY2Nlc3MgdG8gdGhlIGxvY2FsIHN0b3JhZ2UKKyAgICBvZiBpdHMgY29udGFpbmluZyBm
cmFtZSBmcm9tIHRoZSBzYW1lIG9yaWdpbi48L3A+CisKKyAgICA8cD5UaGlzIHRlc3Qgd2lsbCBw
cmludCAmcXVvdDtQQVNTJnF1b3Q7IG9uIHN1Y2Nlc3MuPC9wPgorCisgICAgPGRpdiBpZD0ibG9n
Z2VyIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3N0b3JhZ2Uv
ZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2UvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZGVuaWVk
LWlmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFn
ZS9sb2NhbHN0b3JhZ2UvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWlmcmFtZS5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fs
c3RvcmFnZS9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtaWZyYW1lLmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMjAgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorCit3
aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJsb2dnZXIiKS5pbm5lckhUTUwgPSAobG9jYWxTdG9yYWdlLmdldEl0ZW0oImZvbyIpID09ICJi
YXIiKQorICAgICAgICA/ICJGQUlMOiBTYW5kYm94ZWQgaWZyYW1lIGhhcyBhY2Nlc3MgdG8gdGhl
IGxvY2FsIHN0b3JhZ2UgZnJvbSB0aGUgc2FtZSBvcmlnaW4uIgorICAgICAgICA6ICJQQVNTOiBT
YW5kYm94ZWQgaWZyYW1lIGRvZXMgbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBsb2NhbCBzdG9yYWdl
IGZyb20gdGhlIHNhbWUgb3JpZ2luLiI7CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisK
Kzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJsb2dnZXIiPjwvZGl2PgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL3Nlc3Np
b25zdG9yYWdlL3NhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2Uvc2Vzc2lvbnN0b3JhZ2Uvc2FuZGJv
eGVkLWlmcmFtZS1kZW5pZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvc3RvcmFnZS9kb21zdG9yYWdlL3Nlc3Npb25zdG9yYWdlL3NhbmRib3hlZC1pZnJhbWUtZGVu
aWVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMCBAQAorVGhpcyB0ZXN0
IHZlcmlmaWVzIHRoYXQgc2FuZGJveGVkIGlmcmFtZSBkb2VzIG5vdCBoYXZlIGFjY2VzcyB0byB0
aGUgc2Vzc2lvbiBzdG9yYWdlIG9mIGl0cyBjb250YWluaW5nIGZyYW1lIGZyb20gdGhlIHNhbWUg
b3JpZ2luLgorCitUaGlzIHRlc3Qgd2lsbCBwcmludCAiUEFTUyIgb24gc3VjY2Vzcy4KKworCisK
Ky0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+JworLS0t
LS0tLS0KK1BBU1M6IFNhbmRib3hlZCBpZnJhbWUgZG9lcyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhl
IHNlc3Npb24gc3RvcmFnZSBmcm9tIHRoZSBzYW1lIG9yaWdpbi4KSW5kZXg6IExheW91dFRlc3Rz
L3N0b3JhZ2UvZG9tc3RvcmFnZS9zZXNzaW9uc3RvcmFnZS9zYW5kYm94ZWQtaWZyYW1lLWRlbmll
ZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9zZXNz
aW9uc3RvcmFnZS9zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL3Nlc3Npb25zdG9yYWdlL3NhbmRib3hlZC1p
ZnJhbWUtZGVuaWVkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzkgQEAKKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Cisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKK30KKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkKK3sKKyAg
ICBpZiAoIXdpbmRvdy5zZXNzaW9uU3RvcmFnZSkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgibG9nZ2VyIikuaW5uZXJIVE1MID0gIndpbmRvdy5zZXNzaW9uU3RvcmFnZSBET0VT
IE5PVCBleGlzdCI7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisg
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBzZXNzaW9uU3RvcmFnZS5jbGVhcigpOworICAgIHNlc3Npb25T
dG9yYWdlLmZvbyA9ICJiYXIiOworCisgICAgdmFyIGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImlmcmFtZSIpOworICAgIGlmcmFtZS5zYW5kYm94ID0gImFsbG93LXNjcmlwdHMiOwor
ICAgIGlmcmFtZS5zcmMgPSAicmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWlmcmFt
ZS5odG1sIjsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZSk7Cit9CisKKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPHA+VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQg
c2FuZGJveGVkIGlmcmFtZSBkb2VzIG5vdCBoYXZlIGFjY2VzcyB0byB0aGUgc2Vzc2lvbiBzdG9y
YWdlCisgICAgb2YgaXRzIGNvbnRhaW5pbmcgZnJhbWUgZnJvbSB0aGUgc2FtZSBvcmlnaW4uPC9w
PgorCisgICAgPHA+VGhpcyB0ZXN0IHdpbGwgcHJpbnQgJnF1b3Q7UEFTUyZxdW90OyBvbiBzdWNj
ZXNzLjwvcD4KKworICAgIDxkaXYgaWQ9ImxvZ2dlciI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2Uvc2Vzc2lvbnN0b3JhZ2UvcmVz
b3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWlmcmFtZS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9zZXNzaW9uc3RvcmFnZS9yZXNvdXJjZXMv
c2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtaWZyYW1lLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2Uvc2Vzc2lvbnN0b3JhZ2UvcmVzb3VyY2VzL3NhbmRi
b3hlZC1pZnJhbWUtZGVuaWVkLWlmcmFtZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIw
IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9u
KCkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nZ2VyIikuaW5uZXJIVE1MID0g
KHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oImZvbyIpID09ICJiYXIiKQorICAgICAgICA/ICJGQUlM
OiBTYW5kYm94ZWQgaWZyYW1lIGhhcyBhY2Nlc3MgdG8gdGhlIHNlc3Npb24gc3RvcmFnZSBmcm9t
IHRoZSBzYW1lIG9yaWdpbi4iCisgICAgICAgIDogIlBBU1M6IFNhbmRib3hlZCBpZnJhbWUgZG9l
cyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIHNlc3Npb24gc3RvcmFnZSBmcm9tIHRoZSBzYW1lIG9y
aWdpbi4iOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0ibG9nZ2VyIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="25006"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43367</attachid>
            <date>2009-11-17 10:11:08 -0800</date>
            <delta_ts>2009-11-18 06:01:14 -0800</delta_ts>
            <desc>New patch for HTML5 iframe sandboxing.</desc>
            <filename>sandbox-r51018.patch</filename>
            <type>text/plain</type>
            <size>101964</size>
            <attacher name="Patrik Persson">patrik.j.persson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTA3NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODYgQEAKKzIwMDktMTEtMTcgIFBhdHJpayBQZXJzc29uICA8cGF0cmlrLmoucGVy
c3NvbkBlcmljc3Nvbi5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wbGVtZW50IEhUTUw1IHNhbmRib3ggYXR0cmlidXRlIGZvciBpZnJhbWVz
LgorICAgICAgICBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS90ZXh0LWxldmVsLXNlbWFudGlj
cy5odG1sI2F0dHItaWZyYW1lLXNhbmRib3gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMjg4CisKKyAgICAgICAgVGVzdHM6IGZhc3QvZnJhbWVzL3Nh
bmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmcuaHRtbAorICAgICAgICAgICAgICAgZmFz
dC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1mb3Jtcy5odG1sCisgICAgICAgICAgICAgICBmYXN0
L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tYWxsb3dlZC5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50Lmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlv
bi10YXJnZXRsaW5rLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1p
ZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZnJh
bWVzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zy
YW1lcy9zYW5kYm94ZWQtaWZyYW1lLXNjcmlwdGluZy5odG1sCisgICAgICAgICAgICAgICBodHRw
L3Rlc3RzL3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtZG9jdW1lbnQtY29va2llLmh0bWwKKyAg
ICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvc2FuZGJveGVkLWlmcmFtZS1tb2RpZnkt
c2VsZi5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQt
c2FuZGJveGVkLWlmcmFtZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtYWxsb3cuaHRtbAorICAgICAg
ICAgICAgICAgaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94
ZWQtaWZyYW1lLWRlbmllZC13aXRob3V0LXdpbGRjYXJkLmh0bWwKKyAgICAgICAgICAgICAgIGh0
dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1k
ZW5pZWQuaHRtbAorICAgICAgICAgICAgICAgc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFn
ZS9zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC5odG1sCisgICAgICAgICAgICAgICBzdG9yYWdlL2Rv
bXN0b3JhZ2Uvc2Vzc2lvbnN0b3JhZ2Uvc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQuaHRtbAorCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOiBzYW5kYm94aW5nIG5h
dmlnYXRpb24KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6IHNhbmRib3hpbmcgc2NyaXB0cworICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6aXNFbmFibGVkKToKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnByb2Nlc3NIdHRwRXF1
aXYpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNvb2tpZSk6IHJhaXNlIGV4Y2VwdGlv
biB3aGVuIGFjY2Vzc2VkIGZyb20gc2FuZGJveAorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OnNldENvb2tpZSk6IHJhaXNlIGV4Y2VwdGlvbiB3aGVuIGFjY2Vzc2VkIGZyb20gc2FuZGJveAor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRleHQpOiBjb3B5IHNh
bmRib3ggc3RhdHVzIGZyb20gZnJhbWUgdG8gU2VjdXJpdHlPcmlnaW4KKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwv
SFRNTEFwcGxldEVsZW1lbnQuY3BwOiBzYW5kYm94aW5nIGFwcGxldHMKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxBcHBsZXRFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQXBwbGV0RWxlbWVudDo6cmVuZGVyV2lkZ2V0Rm9ySlNCaW5kaW5ncyk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudDo6aXNKYXZhRW5hYmxlZCk6CisgICAgICAgICog
aHRtbC9IVE1MQXBwbGV0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEF0dHJpYnV0ZU5h
bWVzLmluOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcDogbWFuYWdl
bWVudCBvZiBzYW5kYm94IGZsYWdzIGFzIHN0YXRlZCBpbiBhdHRyaWJ1dGUKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudDo6SFRNTEZyYW1lT3duZXJFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudDo6c2V0U2FuZGJveEZsYWdzKToK
KyAgICAgICAgKiBodG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50OjpzYW5kYm94RmxhZ3MpOgorICAgICAgICAqIGh0bWwv
SFRNTElGcmFtZUVsZW1lbnQuY3BwOiBzYW5kYm94IGF0dHJpYnV0ZSBwYXJzaW5nCisgICAgICAg
IChXZWJDb3JlOjpwYXJzZVNhbmRib3hBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TElGcmFtZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hU
TUxJRnJhbWVFbGVtZW50LmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpnZXRDb29r
aWVzKToKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayk6CisgICAgICAgICogbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpGcmFt
ZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c3VibWl0Rm9ybSk6IHNh
bmRib3hpbmcgZm9ybXMKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpyZXF1ZXN0T2Jq
ZWN0KTogc2FuZGJveGluZyBwbHVnaW5zCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
c2hvdWxkQWxsb3dOYXZpZ2F0aW9uKTogc2FuZGJveGluZyBuYXZpZ2F0aW9uCisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6b3duZXJFbGVtZW50U2FuZGJveEZsYWdzQ2hhbmdlZCk6IHBy
b3BhZ2F0aW9uIG9mIHNhbmRib3ggZmxhZ3MKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjppc1NhbmRib3hlZCk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c2FuZGJveEZsYWdzKToKKyAgICAgICAgKiBsb2FkZXIv
RnJhbWVMb2FkZXJUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKiBwYWdl
L0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpGcmFtZSk6CisgICAgICAgICog
cGFnZS9TZWN1cml0eU9yaWdpbi5jcHA6IGFkZGVkIHVuaXF1ZSBvcmlnaW4gZm9yIHNhbmRib3hl
ZCBmcmFtZXMKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpTZWN1cml0eU9yaWdp
bik6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjYW5SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luOjp0b1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbjo6ZXF1YWwpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nlc3NEYXRhYmFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6c2V0U2FuZGJveEZsYWdzKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luOjppc1NhbmRib3hlZCk6CisgICAgICAgICogc3RvcmFnZS9E
YXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpj
YW5Fc3RhYmxpc2hEYXRhYmFzZSk6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmRpZFJlY2VpdmVE
YXRhKToKKwogMjAwOS0xMS0xNyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkocmV2aXNpb24gNTEwMTgpCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzQ0LDYgKzc0NCwxMCBAQCBzdGF0aWMgRnJhbWUqIGNyZWF0ZVdpbmRvdyhFeGVjU3RhdGUq
IGV4CiAgICAgQVNTRVJUKGxleGljYWxGcmFtZSk7CiAgICAgQVNTRVJUKGR5bmFtaWNGcmFtZSk7
CiAKKyAgICAvLyBTYW5kYm94ZWQgaWZyYW1lcyBjYW5ub3Qgb3BlbiBuZXcgYXV4aWxpYXJ5IGJy
b3dzaW5nIGNvbnRleHRzLgorICAgIGlmIChsZXhpY2FsRnJhbWUgJiYgbGV4aWNhbEZyYW1lLT5s
b2FkZXIoKS0+aXNTYW5kYm94ZWQoU2FuZGJveE5hdmlnYXRpb24pKQorICAgICAgICByZXR1cm4g
MDsKKwogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0OwogCiAgICAgLy8gRm9yIHdoYXRldmVy
IHJlYXNvbiwgRmlyZWZveCB1c2VzIHRoZSBkeW5hbWljR2xvYmFsT2JqZWN0IHRvIGRldGVybWlu
ZQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCShyZXZpc2lv
biA1MTAxOCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI5MSw2ICsyOTEsOSBAQCBib29sIFNjcmlwdENvbnRyb2xsZXI6OmFu
eVBhZ2VJc1Byb2Nlc3NpCiAKIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6aXNFbmFibGVkKCkKIHsK
KyAgICBpZiAobV9mcmFtZS0+bG9hZGVyKCktPmlzU2FuZGJveGVkKFNhbmRib3hTY3JpcHRzKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKICAgICBTZXR0aW5ncyogc2V0dGluZ3Mg
PSBtX2ZyYW1lLT5zZXR0aW5ncygpOwogICAgIHJldHVybiBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xp
ZW50KCktPmFsbG93SmF2YVNjcmlwdChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+aXNKYXZhU2NyaXB0
RW5hYmxlZCgpKTsKIH0KSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDUxMDE4KQorKysgV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTczLDggKzIxNzMsMTAgQEAg
dm9pZCBEb2N1bWVudDo6cHJvY2Vzc0h0dHBFcXVpdihjb25zdCBTdAogICAgICAgICB9CiAgICAg
fSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShlcXVpdiwgInNldC1jb29raWUiKSkgewogICAg
ICAgICAvLyBGSVhNRTogbWFrZSBzZXRDb29raWUgd29yayBvbiBYTUwgZG9jdW1lbnRzIHRvbzsg
ZS5nLiBpbiBjYXNlIG9mIDxodG1sOm1ldGEgLi4uLi4+Ci0gICAgICAgIGlmIChpc0hUTUxEb2N1
bWVudCgpKQotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4odGhpcyktPnNl
dENvb2tpZShjb250ZW50KTsKKyAgICAgICAgaWYgKGlzSFRNTERvY3VtZW50KCkpIHsKKyAgICAg
ICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7IC8vIEV4Y2VwdGlvbiAoZm9yIHNhbmRib3hlZCBkb2N1
bWVudHMpIGlnbm9yZWQuCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPih0
aGlzKS0+c2V0Q29va2llKGNvbnRlbnQsIGVjKTsKKyAgICAgICAgfQogICAgIH0gZWxzZSBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UoZXF1aXYsICJjb250ZW50LWxhbmd1YWdlIikpCiAgICAgICAgIHNl
dENvbnRlbnRMYW5ndWFnZShjb250ZW50KTsKICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2Fz
ZShlcXVpdiwgIngtZG5zLXByZWZldGNoLWNvbnRyb2wiKSkKQEAgLTI5OTIsMTEgKzI5OTQsMjAg
QEAgRWxlbWVudCogRG9jdW1lbnQ6Om93bmVyRWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGZy
YW1lKCktPm93bmVyRWxlbWVudCgpOwogfQogCi1TdHJpbmcgRG9jdW1lbnQ6OmNvb2tpZSgpIGNv
bnN0CitTdHJpbmcgRG9jdW1lbnQ6OmNvb2tpZShFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsK
ICAgICBpZiAocGFnZSgpICYmICFwYWdlKCktPmNvb2tpZUVuYWJsZWQoKSkKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwogCisgICAgLy8gRklYTUU6IHRoZSBIVE1MNSBET00gc3BlYyBzdGF0ZXMg
dGhhdCB0aGlzIGF0dHJpYnV0ZSBjYW4gcmFpc2UgYW4KKyAgICAvLyBJTlZBTElEX1NUQVRFX0VS
UiBleGNlcHRpb24gb24gZ2V0dGluZyBpZiB0aGUgRG9jdW1lbnQgaGFzIG5vCisgICAgLy8gYnJv
d3NpbmcgY29udGV4dC4KKworICAgIGlmIChzZWN1cml0eU9yaWdpbigpLT5pc1NhbmRib3hlZChT
YW5kYm94T3JpZ2luKSkgeworICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKKyAgICAgICAgcmV0
dXJuIFN0cmluZygpOworICAgIH0KKwogICAgIEtVUkwgY29va2llVVJMID0gdGhpcy0+Y29va2ll
VVJMKCk7CiAgICAgaWYgKGNvb2tpZVVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKQEAgLTMwMDQsMTEgKzMwMTUsMjAgQEAgU3RyaW5nIERvY3VtZW50Ojpjb29raWUoKSBj
b25zdAogICAgIHJldHVybiBjb29raWVzKHRoaXMsIGNvb2tpZVVSTCk7CiB9CiAKLXZvaWQgRG9j
dW1lbnQ6OnNldENvb2tpZShjb25zdCBTdHJpbmcmIHZhbHVlKQordm9pZCBEb2N1bWVudDo6c2V0
Q29va2llKGNvbnN0IFN0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlm
IChwYWdlKCkgJiYgIXBhZ2UoKS0+Y29va2llRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
KyAgICAvLyBGSVhNRTogdGhlIEhUTUw1IERPTSBzcGVjIHN0YXRlcyB0aGF0IHRoaXMgYXR0cmli
dXRlIGNhbiByYWlzZSBhbgorICAgIC8vIElOVkFMSURfU1RBVEVfRVJSIGV4Y2VwdGlvbiBvbiBz
ZXR0aW5nIGlmIHRoZSBEb2N1bWVudCBoYXMgbm8KKyAgICAvLyBicm93c2luZyBjb250ZXh0Lgor
CisgICAgaWYgKHNlY3VyaXR5T3JpZ2luKCktPmlzU2FuZGJveGVkKFNhbmRib3hPcmlnaW4pKSB7
CisgICAgICAgIGVjID0gU0VDVVJJVFlfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCiAg
ICAgS1VSTCBjb29raWVVUkwgPSB0aGlzLT5jb29raWVVUkwoKTsKICAgICBpZiAoY29va2llVVJM
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDI1Nyw2ICs0Mjc3LDkgQEAgdm9pZCBE
b2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCgpCiAgICAgbV9jb29raWVVUkwgPSB1cmw7CiAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c2V0U2VjdXJpdHlPcmlnaW4oU2VjdXJpdHlPcmln
aW46OmNyZWF0ZSh1cmwpKTsKIAorICAgIC8vIFNldCBzYW5kYm94IGZsYWdzIGFzIGRldGVybWlu
ZWQgYnkgdGhlIGZyYW1lLgorICAgIHNlY3VyaXR5T3JpZ2luKCktPnNldFNhbmRib3hGbGFncyht
X2ZyYW1lLT5sb2FkZXIoKS0+c2FuZGJveEZsYWdzKCkpOworIAogICAgIGlmIChTZWN1cml0eU9y
aWdpbjo6YWxsb3dTdWJzdGl0dXRlRGF0YUFjY2Vzc1RvTG9jYWwoKSkgewogICAgICAgICAvLyBJ
ZiB0aGlzIGRvY3VtZW50IHdhcyBsb2FkZWQgd2l0aCBzdWJzdGl0dXRlRGF0YSwgdGhlbiB0aGUg
ZG9jdW1lbnQgY2FuCiAgICAgICAgIC8vIGxvYWQgbG9jYWwgcmVzb3VyY2VzLiAgU2VlIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjc1NgpJbmRleDogV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZp
c2lvbiA1MTAxOCkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTY3NSw4ICs2NzUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmcm
LCBFbGVtZW50KiB0aXRsZUVsZW1lbnQgPSAwKTsKICAgICB2b2lkIHJlbW92ZVRpdGxlKEVsZW1l
bnQqIHRpdGxlRWxlbWVudCk7CiAKLSAgICBTdHJpbmcgY29va2llKCkgY29uc3Q7Ci0gICAgdm9p
ZCBzZXRDb29raWUoY29uc3QgU3RyaW5nJik7CisgICAgU3RyaW5nIGNvb2tpZShFeGNlcHRpb25D
b2RlJikgY29uc3Q7CisgICAgdm9pZCBzZXRDb29raWUoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9u
Q29kZSYpOwogCiAgICAgU3RyaW5nIHJlZmVycmVyKCkgY29uc3Q7CiAKSW5kZXg6IFdlYkNvcmUv
ZG9tL0RvY3VtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwJ
KHJldmlzaW9uIDUxMDE4KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0xNjIsMTAgKzE2Miw5IEBAIG1vZHVsZSBjb3JlIHsKICNlbmRpZgogICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIFVSTDsKIAotICAgICAgICAvLyBGSVhNRTogdGhl
IERPTSBzcGVjIHN0YXRlcyB0aGF0IHRoaXMgYXR0cmlidXRlIGNhbiAKLSAgICAgICAgLy8gcmFp
c2UgYW4gZXhjZXB0aW9uIG9uIHNldHRpbmcuCiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBb
Q29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBjb29raWUKLSAgICAgICAgICAgICAg
ICAgICAgIC8qc2V0dGVyIHJhaXNlcyAoRE9NRXhjZXB0aW9uKSovOworICAgICAgICAgICAgICAg
ICAgICAgc2V0dGVyIHJhaXNlcyAoRE9NRXhjZXB0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAg
IGdldHRlciByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAKICAgICAgICAgLy8gRklYTUU6IHRoZSBE
T00gc3BlYyBkb2VzIE5PVCBoYXZlIHRoaXMgYXR0cmlidXRlCiAgICAgICAgIC8vIHJhaXNpbmcg
YW4gZXhjZXB0aW9uLgpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCShyZXZpc2lv
biA1MTAxOCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRl
ICJNYXBwZWRBdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJSZW5kZXJBcHBsZXQuaCIKKyNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTEwOCw5ICsxMDksNyBAQCBib29sIEhUTUxBcHBsZXRFbGVtZW50OjpyZW5k
ZXJlcklzTmVlZGVkCiAKIFJlbmRlck9iamVjdCogSFRNTEFwcGxldEVsZW1lbnQ6OmNyZWF0ZVJl
bmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqIHN0eWxlKQogewotICAgIFNldHRpbmdz
KiBzZXR0aW5ncyA9IGRvY3VtZW50KCktPnNldHRpbmdzKCk7Ci0KLSAgICBpZiAoc2V0dGluZ3Mg
JiYgc2V0dGluZ3MtPmlzSmF2YUVuYWJsZWQoKSkgeworICAgIGlmIChpc0phdmFFbmFibGVkKCkp
IHsKICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gYXJnczsKIAogICAgICAgICBhcmdz
LnNldCgiY29kZSIsIGdldEF0dHJpYnV0ZShjb2RlQXR0cikpOwpAQCAtMTQyLDggKzE0MSw3IEBA
IFJlbmRlck9iamVjdCogSFRNTEFwcGxldEVsZW1lbnQ6OmNyZWF0ZVIKIAogUmVuZGVyV2lkZ2V0
KiBIVE1MQXBwbGV0RWxlbWVudDo6cmVuZGVyV2lkZ2V0Rm9ySlNCaW5kaW5ncygpIGNvbnN0CiB7
Ci0gICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZG9jdW1lbnQoKS0+c2V0dGluZ3MoKTsKLSAgICBp
ZiAoIXNldHRpbmdzIHx8ICFzZXR0aW5ncy0+aXNKYXZhRW5hYmxlZCgpKQorICAgIGlmICghaXNK
YXZhRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFJlbmRlckFwcGxldCogYXBw
bGV0ID0gdG9SZW5kZXJBcHBsZXQocmVuZGVyZXIoKSk7CkBAIC0xNTMsNiArMTUxLDE1IEBAIFJl
bmRlcldpZGdldCogSFRNTEFwcGxldEVsZW1lbnQ6OnJlbmRlclcKICAgICByZXR1cm4gYXBwbGV0
OwogfQogCitib29sIEhUTUxBcHBsZXRFbGVtZW50Ojppc0phdmFFbmFibGVkKCkgY29uc3QKK3sK
KyAgICBpZiAoZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+aXNTYW5kYm94ZWQoU2FuZGJv
eFBsdWdpbnMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBTZXR0aW5ncyogc2V0dGlu
Z3MgPSBkb2N1bWVudCgpLT5zZXR0aW5ncygpOworICAgIHJldHVybiBzZXR0aW5ncyAmJiBzZXR0
aW5ncy0+aXNKYXZhRW5hYmxlZCgpOworfQorCiB2b2lkIEhUTUxBcHBsZXRFbGVtZW50OjpmaW5p
c2hQYXJzaW5nQ2hpbGRyZW4oKQogewogICAgIC8vIFRoZSBwYXJzZXIganVzdCByZWFjaGVkIDwv
YXBwbGV0Piwgc28gYWxsIHRoZSBwYXJhbXMgYXJlIGF2YWlsYWJsZSBub3cuCkluZGV4OiBXZWJD
b3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
SFRNTEFwcGxldEVsZW1lbnQuaAkocmV2aXNpb24gNTEwMTgpCisrKyBXZWJDb3JlL2h0bWwvSFRN
TEFwcGxldEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsNyBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgUmVuZGVyV2lkZ2V0KiByZW5kZXJXaWRnZXRGb3JKU0JpbmRpbmdzKCkg
Y29uc3Q7CiAKICAgICB2b2lkIHNldHVwQXBwbGV0KCkgY29uc3Q7CisgICAgYm9vbCBpc0phdmFF
bmFibGVkKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQo
KTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgpOwpJbmRleDogV2ViQ29y
ZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
SFRNTEF0dHJpYnV0ZU5hbWVzLmluCShyZXZpc2lvbiA1MTAxOCkKKysrIFdlYkNvcmUvaHRtbC9I
VE1MQXR0cmlidXRlTmFtZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIyMCw2ICsyMjAsNyBAQCBy
b2xlCiByb3dzCiByb3dzcGFuCiBydWxlcworc2FuZGJveAogc2NoZW1lCiBzY29wZQogc2Nyb2xs
YW1vdW50CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcAkocmV2aXNp
b24gNTEwMTgpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBIVE1MRnJh
bWVPd25lckVsZW1lbnQ6OkhUTUxGcmFtZU93bmVyRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCwgQ3JlYXRlRWxlbWVudCkKICAgICAsIG1fY29udGVudEZyYW1lKDApCisgICAg
LCBtX3NhbmRib3hGbGFncyhTYW5kYm94Tm9uZSkKIHsKIH0KIApAQCAtNjQsNiArNjUsMTQgQEAg
RE9NV2luZG93KiBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmNvbnRlbgogICAgIHJldHVybiBtX2Nv
bnRlbnRGcmFtZSA/IG1fY29udGVudEZyYW1lLT5kb21XaW5kb3coKSA6IDA7CiB9CiAKK3ZvaWQg
SFRNTEZyYW1lT3duZXJFbGVtZW50OjpzZXRTYW5kYm94RmxhZ3MoU2FuZGJveEZsYWdzIGZsYWdz
KQoreworICAgIG1fc2FuZGJveEZsYWdzID0gZmxhZ3M7CisgICAgCisgICAgaWYgKEZyYW1lKiBm
cmFtZSA9IGNvbnRlbnRGcmFtZSgpKQorICAgICAgICBmcmFtZS0+bG9hZGVyKCktPm93bmVyRWxl
bWVudFNhbmRib3hGbGFnc0NoYW5nZWQoKTsKK30KKwogI2lmIEVOQUJMRShTVkcpCiBTVkdEb2N1
bWVudCogSFRNTEZyYW1lT3duZXJFbGVtZW50OjpnZXRTVkdEb2N1bWVudChFeGNlcHRpb25Db2Rl
JiBlYykgY29uc3QKIHsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmgJKHJl
dmlzaW9uIDUxMDE4KQorKysgV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBACiAjaWZuZGVmIEhUTUxGcmFtZU93bmVyRWxl
bWVudF9oCiAjZGVmaW5lIEhUTUxGcmFtZU93bmVyRWxlbWVudF9oCiAKKyNpbmNsdWRlICJGcmFt
ZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNDYsOSArNDcsMTMgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBTY3JvbGxi
YXJNb2RlIHNjcm9sbGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBTY3JvbGxiYXJBdXRvOyB9CiAK
KyAgICBTYW5kYm94RmxhZ3Mgc2FuZGJveEZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9zYW5kYm94
RmxhZ3M7IH0KKyAgICAKIHByb3RlY3RlZDoKICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqKTsKIAorICAgIHZvaWQgc2V0U2Fu
ZGJveEZsYWdzKFNhbmRib3hGbGFncyk7CisgICAgCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFz
cyBGcmFtZTsKIApAQCAtNTgsNiArNjMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3
aWxsUmVtb3ZlKCk7CiAKICAgICBGcmFtZSogbV9jb250ZW50RnJhbWU7CisgICAgU2FuZGJveEZs
YWdzIG1fc2FuZGJveEZsYWdzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
V2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA1MTAxOCkKKysrIFdlYkNvcmUv
aHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQsNiArNCw3IEBA
CiAgKiAgICAgICAgICAgKEMpIDIwMDAgU2ltb24gSGF1c21hbm4gKGhhdXNtYW5uQGtkZS5vcmcp
CiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEVyaWNzc29uIEFCLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC02Niw2ICs2Nyw0MiBAQCBib29s
IEhUTUxJRnJhbWVFbGVtZW50OjptYXBUb0VudHJ5KGNvbnN0CiAgICAgcmV0dXJuIEhUTUxGcmFt
ZUVsZW1lbnRCYXNlOjptYXBUb0VudHJ5KGF0dHJOYW1lLCByZXN1bHQpOwogfQogCitzdGF0aWMg
U2FuZGJveEZsYWdzIHBhcnNlU2FuZGJveEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHJp
YnV0ZSkKK3sKKyAgICBTYW5kYm94RmxhZ3MgZmxhZ3M7CisgICAgLy8gUGFyc2UgdGhlIHVub3Jk
ZXJlZCBzZXQgb2YgdW5pcXVlIHNwYWNlLXNlcGFyYXRlZCB0b2tlbnMuCisgICAgaWYgKGF0dHJp
YnV0ZS0+aXNOdWxsKCkpCisgICAgICAgIGZsYWdzID0gU2FuZGJveE5vbmU7CisgICAgZWxzZSB7
CisgICAgICAgIGZsYWdzID0gU2FuZGJveEFsbDsKKyAgICAgICAgY29uc3QgVUNoYXIqIGNoYXJh
Y3RlcnMgPSBhdHRyaWJ1dGUtPnZhbHVlKCkuY2hhcmFjdGVycygpOworICAgICAgICB1bnNpZ25l
ZCBsZW5ndGggPSBhdHRyaWJ1dGUtPnZhbHVlKCkubGVuZ3RoKCk7CisgICAgICAgIHVuc2lnbmVk
IHN0YXJ0ID0gMDsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIHdoaWxlIChz
dGFydCA8IGxlbmd0aCAmJiBpc0FTQ0lJU3BhY2UoY2hhcmFjdGVyc1tzdGFydF0pKQorICAgICAg
ICAgICAgICAgICsrc3RhcnQ7CisgICAgICAgICAgICBpZiAoc3RhcnQgPj0gbGVuZ3RoKQorICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgdW5zaWduZWQgZW5kID0gc3RhcnQgKyAx
OworICAgICAgICAgICAgd2hpbGUgKGVuZCA8IGxlbmd0aCAmJiAhaXNBU0NJSVNwYWNlKGNoYXJh
Y3RlcnNbZW5kXSkpCisgICAgICAgICAgICAgICAgKytlbmQ7CisKKyAgICAgICAgICAgIC8vIFR1
cm4gb2ZmIHRoZSBjb3JyZXNwb25kaW5nIHNhbmRib3ggZmxhZyBpZiBpdCdzIHNldCBhcyAiYWxs
b3dlZCIuCisgICAgICAgICAgICBTdHJpbmcgc2FuZGJveFRva2VuID0gU3RyaW5nKGNoYXJhY3Rl
cnMgKyBzdGFydCwgZW5kIC0gc3RhcnQpOworICAgICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdD
YXNlKHNhbmRib3hUb2tlbiwgImFsbG93LXNhbWUtb3JpZ2luIikpCisgICAgICAgICAgICAgICAg
ZmxhZ3MgJj0gflNhbmRib3hPcmlnaW47CisgICAgICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9y
aW5nQ2FzZShzYW5kYm94VG9rZW4sICJhbGxvdy1mb3JtcyIpKQorICAgICAgICAgICAgICAgIGZs
YWdzICY9IH5TYW5kYm94Rm9ybXM7CisgICAgICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5n
Q2FzZShzYW5kYm94VG9rZW4sICJhbGxvdy1zY3JpcHRzIikpCisgICAgICAgICAgICAgICAgZmxh
Z3MgJj0gflNhbmRib3hTY3JpcHRzOworCisgICAgICAgICAgICBzdGFydCA9IGVuZCArIDE7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuIGZsYWdzOworfQorCiB2b2lkIEhUTUxJ
RnJhbWVFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIp
CiB7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSB3aWR0aEF0dHIpCkBAIC04OCw3ICsxMjUsOSBA
QCB2b2lkIEhUTUxJRnJhbWVFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpCiAgICAgICAgIGlmICgh
YXR0ci0+aXNOdWxsKCkgJiYgIWF0dHItPnZhbHVlKCkudG9JbnQoKSkKICAgICAgICAgICAgIC8v
IEFkZCBhIHJ1bGUgdGhhdCBudWxscyBvdXQgb3VyIGJvcmRlciB3aWR0aC4KICAgICAgICAgICAg
IGFkZENTU0xlbmd0aChhdHRyLCBDU1NQcm9wZXJ0eUJvcmRlcldpZHRoLCAiMCIpOwotICAgIH0g
ZWxzZQorICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHNhbmRib3hBdHRyKQorICAgICAg
ICBzZXRTYW5kYm94RmxhZ3MocGFyc2VTYW5kYm94QXR0cmlidXRlKGF0dHIpKTsKKyAgICBlbHNl
CiAgICAgICAgIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRy
KTsKIH0KIApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCShyZXZpc2lvbiA1MTAx
OCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDYgKzMzLDcgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICAgICAgICAgICBhdHRyaWJ1
dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nLCBSZWZsZWN0PW1hcmdpbmhlaWdodF0gRE9NU3Ry
aW5nICAgICAgIG1hcmdpbkhlaWdodDsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtDb252
ZXJ0TnVsbFRvTnVsbFN0cmluZywgUmVmbGVjdD1tYXJnaW53aWR0aF0gRE9NU3RyaW5nICAgICAg
IG1hcmdpbldpZHRoOwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9O
dWxsU3RyaW5nLCBSZWZsZWN0XSBET01TdHJpbmcgICAgICAgbmFtZTsKKyAgICAgICAgICAgICAg
ICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZywgUmVmbGVjdF0gRE9NU3RyaW5n
ICAgICAgIHNhbmRib3g7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxU
b051bGxTdHJpbmcsIFJlZmxlY3RdIERPTVN0cmluZyAgICAgICBzY3JvbGxpbmc7CiAgICAgICAg
ICAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmcsIEN1c3RvbVNldHRl
ciwgUmVmbGVjdF0gRE9NU3RyaW5nICAgICAgIHNyYzsKICAgICAgICAgICAgICAgICAgYXR0cmli
dXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZywgUmVmbGVjdF0gRE9NU3RyaW5nICAgICAgIHdp
ZHRoOwpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAJKHJl
dmlzaW9uIDUxMDE4KQorKysgV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMDIsMTAgKzEyMDIsMTQgQEAgdm9pZCBJbnNwZWN0b3JD
b250cm9sbGVyOjpnZXRDb29raWVzKGxvbgogICAgICAgICAgICAgVmVjdG9yPENvb2tpZT4gZG9j
Q29va2llc0xpc3Q7CiAgICAgICAgICAgICByYXdDb29raWVzSW1wbGVtZW50ZWQgPSBnZXRSYXdD
b29raWVzKGRvY3VtZW50LCBkb2N1bWVudC0+Y29va2llVVJMKCksIGRvY0Nvb2tpZXNMaXN0KTsK
ICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKCFyYXdDb29raWVzSW1wbGVtZW50ZWQpCisg
ICAgICAgICAgICBpZiAoIXJhd0Nvb2tpZXNJbXBsZW1lbnRlZCkgewogICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBXZSBuZWVkIGR1cGxpY2F0aW9uIGNoZWNraW5nIGZvciB0aGUgU3RyaW5nIHJl
cHJlc2VudGF0aW9uIG9mIGNvb2tpZXMuCi0gICAgICAgICAgICAgICAgc3RyaW5nQ29va2llc0xp
c3QgKz0gZG9jdW1lbnQtPmNvb2tpZSgpOwotICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgICAgICAgICAgICAgc3RyaW5nQ29va2ll
c0xpc3QgKz0gZG9jdW1lbnQtPmNvb2tpZShlYyk7CisgICAgICAgICAgICAgICAgLy8gRXhjZXB0
aW9ucyBhcmUgdGhyb3duIGJ5IGNvb2tpZSgpIGluIHNhbmRib3hlZCBmcmFtZXMuIFRoYXQgd29u
J3QgaGFwcGVuIGhlcmUKKyAgICAgICAgICAgICAgICAvLyBiZWNhdXNlICJkb2N1bWVudCIgaXMg
dGhlIGRvY3VtZW50IG9mIHRoZSBtYWluIGZyYW1lIG9mIHRoZSBwYWdlLgorICAgICAgICAgICAg
ICAgIEFTU0VSVCghZWMpOworICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBp
bnQgY29va2llc1NpemUgPSBkb2NDb29raWVzTGlzdC5zaXplKCk7CiAgICAgICAgICAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBjb29raWVzU2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGlmICghcmF3Q29va2llc0xpc3QuY29udGFpbnMoZG9jQ29va2llc0xpc3RbaV0pKQpJbmRl
eDogV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCShyZXZpc2lv
biA1MTAxOCkKKysrIFdlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEwMCw2ICsxMDAsMTAgQEAgYm9vbCBwYXNzZXNBY2Nlc3NDb250
cm9sQ2hlY2soY29uc3QgUmVzbwogICAgIGlmIChhY2Nlc3NDb250cm9sT3JpZ2luU3RyaW5nID09
ICIqIiAmJiAhaW5jbHVkZUNyZWRlbnRpYWxzKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAorICAg
IC8vIEEgc2FuZGJveGVkIGZyYW1lIGhhcyBhIHVuaXF1ZSBvcmlnaW4gKGZvciBzYW1lLW9yaWdp
biBwdXJwb3NlcykuCisgICAgaWYgKHNlY3VyaXR5T3JpZ2luLT5pc1NhbmRib3hlZChTYW5kYm94
T3JpZ2luKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiBhY2Nlc3NDb250cm9sT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJp
bmcoYWNjZXNzQ29udHJvbE9yaWdpblN0cmluZyk7CiAgICAgaWYgKCFhY2Nlc3NDb250cm9sT3Jp
Z2luLT5pc1NhbWVTY2hlbWVIb3N0UG9ydChzZWN1cml0eU9yaWdpbikpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDUxMDE4KQorKysg
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsNiAr
MTk2LDcgQEAgRnJhbWVMb2FkZXI6OkZyYW1lTG9hZGVyKEZyYW1lKiBmcmFtZSwgRgogICAgICwg
bV9kaWRQZXJmb3JtRmlyc3ROYXZpZ2F0aW9uKGZhbHNlKQogICAgICwgbV9sb2FkaW5nRnJvbUNh
Y2hlZFBhZ2UoZmFsc2UpCiAgICAgLCBtX3N1cHByZXNzT3BlbmVySW5OZXdGcmFtZShmYWxzZSkK
KyAgICAsIG1fc2FuZGJveEZsYWdzKFNhbmRib3hOb25lKQogI2lmbmRlZiBOREVCVUcKICAgICAs
IG1fZGlkRGlzcGF0Y2hEaWRDb21taXRMb2FkKGZhbHNlKQogI2VuZGlmCkBAIC00MzgsNiArNDM5
LDkgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c3VibWl0Rm9ybShjb25zdCBjaGFyKgogICAgIGlmICh1
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKGlzU2FuZGJveGVkKFNhbmRi
b3hGb3JtcykpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlw
dCh1KSkgewogICAgICAgICBtX2lzRXhlY3V0aW5nSmF2YVNjcmlwdEZvcm1BY3Rpb24gPSB0cnVl
OwogICAgICAgICBtX2ZyYW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTCh1LCBm
YWxzZSwgZmFsc2UpOwpAQCAtMTI1NSw2ICsxMjU5LDggQEAgYm9vbCBGcmFtZUxvYWRlcjo6cmVx
dWVzdE9iamVjdChSZW5kZXJQYQogICAgICAgICBpZiAoIXNldHRpbmdzIHx8ICFzZXR0aW5ncy0+
YXJlUGx1Z2luc0VuYWJsZWQoKSB8fCAKICAgICAgICAgICAgICghc2V0dGluZ3MtPmlzSmF2YUVu
YWJsZWQoKSAmJiBNSU1FVHlwZVJlZ2lzdHJ5Ojppc0phdmFBcHBsZXRNSU1FVHlwZShtaW1lVHlw
ZSkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoaXNTYW5kYm94ZWQo
U2FuZGJveFBsdWdpbnMpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1
cm4gbG9hZFBsdWdpbihyZW5kZXJlciwgY29tcGxldGVkVVJMLCBtaW1lVHlwZSwgcGFyYW1OYW1l
cywgcGFyYW1WYWx1ZXMsIHVzZUZhbGxiYWNrKTsKICAgICB9CiAKQEAgLTIxOTcsNiArMjIwMywx
MCBAQCBib29sIEZyYW1lTG9hZGVyOjpzaG91bGRBbGxvd05hdmlnYXRpb24oCiAgICAgaWYgKG1f
ZnJhbWUgPT0gdGFyZ2V0RnJhbWUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCisgICAgLy8gQSBz
YW5kYm94ZWQgZnJhbWUgY2FuIG9ubHkgbmF2aWdhdGUgaXRzZWxmIGFuZCBpdHMgZGVzY2VuZGFu
dHMuCisgICAgaWYgKGlzU2FuZGJveGVkKFNhbmRib3hOYXZpZ2F0aW9uKSAmJiAhdGFyZ2V0RnJh
bWUtPnRyZWUoKS0+aXNEZXNjZW5kYW50T2YobV9mcmFtZSkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKwogICAgIC8vIExldCBhIGZyYW1lIG5hdmlnYXRlIHRoZSB0b3AtbGV2ZWwgd2luZG93IHRo
YXQgY29udGFpbnMgaXQuICBUaGlzIGlzCiAgICAgLy8gaW1wb3J0YW50IHRvIGFsbG93IGJlY2F1
c2UgaXQgbGV0cyBhIHNpdGUgImZyYW1lLWJ1c3QiIChlc2NhcGUgZnJvbSBhCiAgICAgLy8gZnJh
bWUgY3JlYXRlZCBieSBhbm90aGVyIHdlYiBzaXRlKS4KQEAgLTM4OTksNiArMzkwOSwyMyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENsZWFyV2luZG93CiAjZW5kaWYKIH0KIAordm9p
ZCBGcmFtZUxvYWRlcjo6b3duZXJFbGVtZW50U2FuZGJveEZsYWdzQ2hhbmdlZCgpCit7CisgICAg
bV9zYW5kYm94RmxhZ3MgPSBTYW5kYm94Tm9uZTsKKyAgICAKKyAgICBpZiAoRnJhbWUqIHBhcmVu
dEZyYW1lID0gbV9mcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSkKKyAgICAgICAgbV9zYW5kYm94Rmxh
Z3MgfD0gcGFyZW50RnJhbWUtPmxvYWRlcigpLT5zYW5kYm94RmxhZ3MoKTsKKworICAgIGlmIChI
VE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCA9IG1fZnJhbWUtPm93bmVyRWxlbWVu
dCgpKQorICAgICAgICBtX3NhbmRib3hGbGFncyB8PSBvd25lckVsZW1lbnQtPnNhbmRib3hGbGFn
cygpOworCisgICAgaWYgKERvY3VtZW50KiBkb2MgPSBtX2ZyYW1lLT5kb2N1bWVudCgpKSAKKyAg
ICAgICAgZG9jLT5zZWN1cml0eU9yaWdpbigpLT5zZXRTYW5kYm94RmxhZ3MobV9zYW5kYm94Rmxh
Z3MpOworCisgICAgZm9yIChGcmFtZSogY2hpbGQgPSBtX2ZyYW1lLT50cmVlKCktPmZpcnN0Q2hp
bGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+bmV4dFNpYmxpbmcoKSkKKyAgICAg
ICAgY2hpbGQtPmxvYWRlcigpLT5vd25lckVsZW1lbnRTYW5kYm94RmxhZ3NDaGFuZ2VkKCk7Cit9
CisKIFBhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRlcjo6Y3JlYXRlSmF2YUFwcGxldFdpZGdl
dChjb25zdCBJbnRTaXplJiBzaXplLCBIVE1MQXBwbGV0RWxlbWVudCogZWxlbWVudCwgY29uc3Qg
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGFyZ3MpCiB7CiAgICAgU3RyaW5nIGJhc2VVUkxTdHJp
bmc7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHJldmlzaW9uIDUxMDE4KQorKysgV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjUxLDYgKzI1MSwxMSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0c0luQWxsV29ybGRz
KCk7CiAgICAgdm9pZCBkaXNwYXRjaERvY3VtZW50RWxlbWVudEF2YWlsYWJsZSgpOwogCisgICAg
dm9pZCBvd25lckVsZW1lbnRTYW5kYm94RmxhZ3NDaGFuZ2VkKCk7CisgICAgCisgICAgYm9vbCBp
c1NhbmRib3hlZChTYW5kYm94RmxhZ3MgbWFzaykgY29uc3QgeyByZXR1cm4gbV9zYW5kYm94Rmxh
Z3MgJiBtYXNrOyB9CisgICAgU2FuZGJveEZsYWdzIHNhbmRib3hGbGFncygpIGNvbnN0IHsgcmV0
dXJuIG1fc2FuZGJveEZsYWdzOyB9CisKICAgICAvLyBNaXhlZCBjb250ZW50IHJlbGF0ZWQgZnVu
Y3Rpb25zLgogICAgIHN0YXRpYyBib29sIGlzTWl4ZWRDb250ZW50KFNlY3VyaXR5T3JpZ2luKiBj
b250ZXh0LCBjb25zdCBLVVJMJik7CiAgICAgdm9pZCBjaGVja0lmRGlzcGxheUluc2VjdXJlQ29u
dGVudChTZWN1cml0eU9yaWdpbiogY29udGV4dCwgY29uc3QgS1VSTCYpOwpAQCAtNTA2LDYgKzUx
MSw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2xvYWRpbmdGcm9tQ2FjaGVkUGFnZTsKICAgICBi
b29sIG1fc3VwcHJlc3NPcGVuZXJJbk5ld0ZyYW1lOwogICAgIAorICAgIFNhbmRib3hGbGFncyBt
X3NhbmRib3hGbGFnczsKKwogI2lmbmRlZiBOREVCVUcKICAgICBib29sIG1fZGlkRGlzcGF0Y2hE
aWRDb21taXRMb2FkOwogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5
cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCShy
ZXZpc2lvbiA1MTAxOCkKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtOTIsNiArOTIsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBTZW5kUmVmZXJyZXIsCiAgICAgICAgIE5vUmVmZXJyZXIKICAgICB9OworICAgIAorICAgIGVu
dW0gU2FuZGJveEZsYWcgeworICAgICAgICBTYW5kYm94Tm9uZSA9IDAsCisgICAgICAgIFNhbmRi
b3hOYXZpZ2F0aW9uID0gMSwKKyAgICAgICAgU2FuZGJveFBsdWdpbnMgPSAxIDw8IDEsCisgICAg
ICAgIFNhbmRib3hPcmlnaW4gPSAxIDw8IDIsCisgICAgICAgIFNhbmRib3hGb3JtcyA9IDEgPDwg
MywKKyAgICAgICAgU2FuZGJveFNjcmlwdHMgPSAxIDw8IDQsCisgICAgICAgIFNhbmRib3hBbGwg
PSAtMSAvLyBNYXNrIHdpdGggYWxsIGJpdHMgc2V0IHRvIDEuCisgICAgfTsKKworICAgIHR5cGVk
ZWYgdW5zaWduZWQgU2FuZGJveEZsYWdzOwogfQogCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvcGFn
ZS9GcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkocmV2aXNp
b24gNTEwMTgpCisrKyBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NzgsNiArMTc4LDkgQEAgRnJhbWU6OkZyYW1lKFBhZ2UqIHBhZ2UsIEhUTUxGcmFtZU93bmVyRQog
ICAgICAgICAvLyBNYWtlIHN1cmUgd2Ugd2lsbCBub3QgZW5kIHVwIHdpdGggdHdvIGZyYW1lcyBy
ZWZlcmVuY2luZyB0aGUgc2FtZSBvd25lciBlbGVtZW50LgogICAgICAgICBBU1NFUlQoKCEob3du
ZXJFbGVtZW50LT5tX2NvbnRlbnRGcmFtZSkpIHx8IChvd25lckVsZW1lbnQtPm1fY29udGVudEZy
YW1lLT5vd25lckVsZW1lbnQoKSAhPSBvd25lckVsZW1lbnQpKTsKICAgICAgICAgb3duZXJFbGVt
ZW50LT5tX2NvbnRlbnRGcmFtZSA9IHRoaXM7CisgICAgICAgIAorICAgICAgICAvLyBQcm9wYWdh
dGUgc2FuZGJveCBhdHRyaWJ1dGVzIHRvIHRoZSBGcmFtZSdzIGFuZCBpdHMgZGVzY2VuZGFudHMn
IEZyYW1lTG9hZGVycy4KKyAgICAgICAgbV9sb2FkZXIub3duZXJFbGVtZW50U2FuZGJveEZsYWdz
Q2hhbmdlZCgpOwogICAgIH0KIAogI2lmbmRlZiBOREVCVUcKSW5kZXg6IFdlYkNvcmUvcGFnZS9T
ZWN1cml0eU9yaWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3Jp
Z2luLmNwcAkocmV2aXNpb24gNTEwMTgpCisrKyBXZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw2ICs5NSw3IEBAIFNlY3VyaXR5T3JpZ2luOjpTZWN1
cml0eU9yaWdpbihjb25zdCBLVVIKICAgICA6IG1fcHJvdG9jb2wodXJsLnByb3RvY29sKCkuaXNO
dWxsKCkgPyAiIiA6IHVybC5wcm90b2NvbCgpLmxvd2VyKCkpCiAgICAgLCBtX2hvc3QodXJsLmhv
c3QoKS5pc051bGwoKSA/ICIiIDogdXJsLmhvc3QoKS5sb3dlcigpKQogICAgICwgbV9wb3J0KHVy
bC5wb3J0KCkpCisgICAgLCBtX3NhbmRib3hGbGFncyhTYW5kYm94Tm9uZSkKICAgICAsIG1fbm9B
Y2Nlc3MoZmFsc2UpCiAgICAgLCBtX3VuaXZlcnNhbEFjY2VzcyhmYWxzZSkKICAgICAsIG1fZG9t
YWluV2FzU2V0SW5ET00oZmFsc2UpCkBAIC0xMjIsNiArMTIzLDcgQEAgU2VjdXJpdHlPcmlnaW46
OlNlY3VyaXR5T3JpZ2luKGNvbnN0IFNlYwogICAgICwgbV9ob3N0KG90aGVyLT5tX2hvc3QudGhy
ZWFkc2FmZUNvcHkoKSkKICAgICAsIG1fZG9tYWluKG90aGVyLT5tX2RvbWFpbi50aHJlYWRzYWZl
Q29weSgpKQogICAgICwgbV9wb3J0KG90aGVyLT5tX3BvcnQpCisgICAgLCBtX3NhbmRib3hGbGFn
cyhvdGhlci0+bV9zYW5kYm94RmxhZ3MpCiAgICAgLCBtX25vQWNjZXNzKG90aGVyLT5tX25vQWNj
ZXNzKQogICAgICwgbV91bml2ZXJzYWxBY2Nlc3Mob3RoZXItPm1fdW5pdmVyc2FsQWNjZXNzKQog
ICAgICwgbV9kb21haW5XYXNTZXRJbkRPTShvdGhlci0+bV9kb21haW5XYXNTZXRJbkRPTSkKQEAg
LTE2Miw3ICsxNjQsNyBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nlc3MoY29uc3QgU2Vj
CiAgICAgaWYgKG1fdW5pdmVyc2FsQWNjZXNzKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAg
IGlmIChtX25vQWNjZXNzIHx8IG90aGVyLT5tX25vQWNjZXNzKQorICAgIGlmIChtX25vQWNjZXNz
IHx8IG90aGVyLT5tX25vQWNjZXNzIHx8IGlzU2FuZGJveGVkKFNhbmRib3hPcmlnaW4pIHx8IG90
aGVyLT5pc1NhbmRib3hlZChTYW5kYm94T3JpZ2luKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgLy8gSGVyZSBhcmUgdHdvIGNhc2VzIHdoZXJlIHdlIHNob3VsZCBwZXJtaXQgYWNjZXNz
OgpAQCAtMjAzLDcgKzIwNSw3IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhblJlcXVlc3QoY29u
c3QgS1UKICAgICBpZiAobV91bml2ZXJzYWxBY2Nlc3MpCiAgICAgICAgIHJldHVybiB0cnVlOwog
Ci0gICAgaWYgKG1fbm9BY2Nlc3MpCisgICAgaWYgKG1fbm9BY2Nlc3MgfHwgaXNTYW5kYm94ZWQo
U2FuZGJveE9yaWdpbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4gdGFyZ2V0T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpOwpA
QCAtMjg5LDcgKzI5MSw3IEBAIFN0cmluZyBTZWN1cml0eU9yaWdpbjo6dG9TdHJpbmcoKSBjb25z
dAogICAgIGlmIChpc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAibnVsbCI7CiAKLSAgICBpZiAo
bV9ub0FjY2VzcykKKyAgICBpZiAobV9ub0FjY2VzcyB8fCBpc1NhbmRib3hlZChTYW5kYm94T3Jp
Z2luKSkKICAgICAgICAgcmV0dXJuICJudWxsIjsKIAogICAgIGlmIChtX3Byb3RvY29sID09ICJm
aWxlIikKQEAgLTM2OSw2ICszNzEsOSBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjplcXVhbChjb25z
dCBTZWN1cml0CiAgICAgaWYgKG1fZG9tYWluV2FzU2V0SW5ET00gJiYgbV9kb21haW4gIT0gb3Ro
ZXItPm1fZG9tYWluKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBpZiAoaXNTYW5kYm94
ZWQoU2FuZGJveE9yaWdpbikgfHwgb3RoZXItPmlzU2FuZGJveGVkKFNhbmRib3hPcmlnaW4pKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5T3JpZ2luLmgJKHJldmlzaW9uIDUxMDE4KQorKysgV2ViQ29yZS9wYWdlL1NlY3VyaXR5
T3JpZ2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAorI2luY2x1ZGUgIkZy
YW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUg
IlN0cmluZ0hhc2guaCIKIApAQCAtODIsNiArODMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIC8vIGRyYXdpbmcgYW4gaW1hZ2Ugb250byBhbiBIVE1MIGNhbnZhcyBlbGVtZW50IHdp
dGggdGhlIGRyYXdJbWFnZSBBUEkuCiAgICAgICAgIGJvb2wgdGFpbnRzQ2FudmFzKGNvbnN0IEtV
UkwmKSBjb25zdDsKIAorICAgICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBTZWN1cml0eU9y
aWdpbiBhbGxvd3MgZm9yIGRhdGFiYXNlIGFjY2Vzcy4KKyAgICAgICAgYm9vbCBjYW5BY2Nlc3NE
YXRhYmFzZSgpIGNvbnN0IHsgcmV0dXJuICFpc1NhbmRib3hlZChTYW5kYm94T3JpZ2luKTsgfQor
CiAgICAgICAgIC8vIFJldHVybnMgdHJ1ZSBmb3IgYW55IG5vbi1sb2NhbCBVUkwuIElmIGRvY3Vt
ZW50IHBhcmFtZXRlciBpcyBzdXBwbGllZCwKICAgICAgICAgLy8gaXRzIGxvY2FsIGxvYWQgcG9s
aWN5IGRpY3RhdGVzLCBvdGhlcndpc2UgaWYgcmVmZXJyZXIgaXMgbm9uLWVtcHR5IGFuZAogICAg
ICAgICAvLyByZXByZXNlbnRzIGEgbG9jYWwgZmlsZSwgdGhlbiB0aGUgbG9jYWwgbG9hZCBpcyBh
bGxvd2VkLgpAQCAtMTEwLDYgKzExNCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IC8vIFdBUk5JTkc6IFRoaXMgaXMgYW4gZXh0cmVtZWx5IHBvd2VyZnVsIGFiaWxpdHkuICBVc2Ug
d2l0aCBjYXV0aW9uIQogICAgICAgICB2b2lkIGdyYW50VW5pdmVyc2FsQWNjZXNzKCk7CiAKKyAg
ICAgICAgLy8gU2FuZGJveGluZyBzdGF0dXMgYXMgZGV0ZXJtaW5lZCBieSB0aGUgZnJhbWUuCisg
ICAgICAgIHZvaWQgc2V0U2FuZGJveEZsYWdzKFNhbmRib3hGbGFncyBmbGFncykgeyBtX3NhbmRi
b3hGbGFncyA9IGZsYWdzOyB9CisgICAgICAgIGJvb2wgaXNTYW5kYm94ZWQoU2FuZGJveEZsYWdz
IG1hc2spIGNvbnN0IHsgcmV0dXJuIG1fc2FuZGJveEZsYWdzICYgbWFzazsgfQorCiAgICAgICAg
IGJvb2wgaXNTZWN1cmVUcmFuc2l0aW9uVG8oY29uc3QgS1VSTCYpIGNvbnN0OwogCiAgICAgICAg
IC8vIFRoZSBsb2NhbCBTZWN1cml0eU9yaWdpbiBpcyB0aGUgbW9zdCBwcml2aWxlZ2VkIFNlY3Vy
aXR5T3JpZ2luLgpAQCAtMTgxLDYgKzE4OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgU3RyaW5nIG1faG9zdDsKICAgICAgICAgU3RyaW5nIG1fZG9tYWluOwogICAgICAgICB1bnNp
Z25lZCBzaG9ydCBtX3BvcnQ7CisgICAgICAgIFNhbmRib3hGbGFncyBtX3NhbmRib3hGbGFnczsK
ICAgICAgICAgYm9vbCBtX25vQWNjZXNzOwogICAgICAgICBib29sIG1fdW5pdmVyc2FsQWNjZXNz
OwogICAgICAgICBib29sIG1fZG9tYWluV2FzU2V0SW5ET007CkluZGV4OiBXZWJDb3JlL3N0b3Jh
Z2UvRGF0YWJhc2VUcmFja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvRGF0
YWJhc2VUcmFja2VyLmNwcAkocmV2aXNpb24gNTEwMTgpCisrKyBXZWJDb3JlL3N0b3JhZ2UvRGF0
YWJhc2VUcmFja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDYgKzEyOCw5IEBAIGJvb2wg
RGF0YWJhc2VUcmFja2VyOjpjYW5Fc3RhYmxpc2hEYXRhYmEKICAgICBwb3B1bGF0ZU9yaWdpbnMo
KTsKIAogICAgIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSBkb2N1bWVudC0+c2VjdXJpdHlPcmln
aW4oKTsKKyAgICAKKyAgICBpZiAoIW9yaWdpbi0+Y2FuQWNjZXNzRGF0YWJhc2UoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gU2luY2Ugd2UncmUgaW1taW5lbnRseSBvcGVuaW5n
IGEgZGF0YWJhc2Ugd2l0aGluIHRoaXMgRG9jdW1lbnQncyBvcmlnaW4sIG1ha2Ugc3VyZSB0aGlz
IG9yaWdpbiBpcyBiZWluZyB0cmFja2VkIGJ5IHRoZSBRdW90YVRyYWNrZXIKICAgICAvLyBieSBm
ZXRjaGluZyBpdCdzIGN1cnJlbnQgdXNhZ2Ugbm93CkluZGV4OiBXZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0Q2hhbm5lbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuY3BwCShyZXZpc2lvbiA1MTAxOCkKKysrIFdlYkNvcmUvd2Vic29ja2V0
cy9XZWJTb2NrZXRDaGFubmVsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDggKzE1OSwxMCBA
QCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZFJlY2VpdmVEYXRhKFNvCiAgICAgICAgICAgICBp
ZiAoIW1faGFuZHNoYWtlLnNlcnZlclNldENvb2tpZSgpLmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgICAgIGlmIChtX2NvbnRleHQtPmlzRG9jdW1lbnQoKSkgewogICAgICAgICAgICAgICAgICAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG1fY29udGV4dCk7
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjb29raWVzRW5hYmxlZChkb2N1bWVudCkpCi0gICAg
ICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC0+c2V0Q29va2llKG1faGFuZHNoYWtlLnNlcnZl
clNldENvb2tpZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNvb2tpZXNFbmFibGVkKGRv
Y3VtZW50KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsgLy8g
RXhjZXB0aW9uIChmb3Igc2FuZGJveGVkIGRvY3VtZW50cykgaWdub3JlZC4KKyAgICAgICAgICAg
ICAgICAgICAgICAgIGRvY3VtZW50LT5zZXRDb29raWUobV9oYW5kc2hha2Uuc2VydmVyU2V0Q29v
a2llKCksIGVjKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIEZJWE1FOiBoYW5kbGUgc2V0LWNvb2tpZTIuCklu
ZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiA1MTA3NikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDcxIEBACisyMDA5LTExLTE3ICBQYXRyaWsgUGVyc3NvbiAgPHBh
dHJpay5qLnBlcnNzb25AZXJpY3Nzb24uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBIVE1MNSBzYW5kYm94IGF0dHJpYnV0ZSBm
b3IgaWZyYW1lcy4KKyAgICAgICAgaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvdGV4dC1sZXZl
bC1zZW1hbnRpY3MuaHRtbCNhdHRyLWlmcmFtZS1zYW5kYm94CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI4OAorCisgICAgICAgICogZmFzdC9mcmFt
ZXMvcmVzb3VyY2VzL25vbi1zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24uaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmli
dXRlLXBhcnNpbmctYWxsb3dlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9y
ZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1kaXNhbGxvd2VkLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZy
YW1lLWZvcm0tYWxsb3dlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNv
dXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWRpc2FsbG93ZWQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGVkLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZy
YW1lLW5hdmlnYXRpb24tY2hpbGQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMv
cmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1uYXZpZ2F0ZWQuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2
aWdhdGlvbi1wYXJlbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3Vy
Y2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1zb3VyY2UuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10
YXJnZXRsaW5rLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNlcy9z
YW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLWZyYW1l
LWFwcGxldC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2Fu
ZGJveGVkLWlmcmFtZS1wbHVnaW5zLWZyYW1lLWVtYmVkLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtb2Jq
ZWN0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94
ZWQtaWZyYW1lLXNjcmlwdC1keW5hbWljLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJh
bWVzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmctZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJz
aW5nLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUt
Zm9ybXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94
ZWQtaWZyYW1lLWZvcm1zLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NhbmRi
b3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1hbGxvd2VkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLWFsbG93ZWQuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0
aW9uLXBhcmVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Nh
bmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmstZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5h
dmlnYXRpb24tdGFyZ2V0bGluay5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9z
YW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5k
b3dvcGVuLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJh
bWUtcGx1Z2lucy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Nh
bmRib3hlZC1pZnJhbWUtcGx1Z2lucy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1l
cy9zYW5kYm94ZWQtaWZyYW1lLXNjcmlwdGluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtc2NyaXB0aW5nLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUt
ZG9jdW1lbnQtY29va2llLXJlYWQtZGVuaWVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbW9kaWZ5LXNlbGYuaHRt
bDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMveHNzLURF
TklFRC1zYW5kYm94ZWQtaWZyYW1lLWF0dGFja2VyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvc2VjdXJpdHkvc2FuZGJveGVkLWlmcmFtZS1kb2N1bWVudC1jb29raWUtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3NhbmRib3hlZC1p
ZnJhbWUtZG9jdW1lbnQtY29va2llLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
c2VjdXJpdHkvc2FuZGJveGVkLWlmcmFtZS1tb2RpZnktc2VsZi1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvc2FuZGJveGVkLWlmcmFtZS1tb2RpZnkt
c2VsZi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5J
RUQtc2FuZGJveGVkLWlmcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC1zYW5kYm94ZWQtaWZyYW1lLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJv
eGVkLWlmcmFtZS1hbGxvdy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1hbGxvdy5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1j
b250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQt
aWZyYW1lLWRlbmllZC13aXRob3V0LXdpbGRjYXJkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQt
aWZyYW1lLWRlbmllZC13aXRob3V0LXdpbGRjYXJkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1k
ZW5pZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9y
ZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1hbGxvdy1pZnJhbWUuaHRt
bDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMv
YWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1hbGxvdy5jZ2k6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNh
bmRib3hlZC1pZnJhbWUtZGVuaWVkLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQt
aWZyYW1lLWRlbmllZC13aXRob3V0LXdpbGRjYXJkLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1z
YW5kYm94ZWQtaWZyYW1lLWRlbmllZC13aXRob3V0LXdpbGRjYXJkLmNnaTogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wt
c2FuZGJveGVkLWlmcmFtZS1kZW5pZWQuY2dpOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2Rv
bXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC1p
ZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3Rv
cmFnZS9zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHN0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2Uvc2FuZGJveGVkLWlmcmFtZS1kZW5p
ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9kb21zdG9yYWdlL3Nlc3Npb25zdG9y
YWdlL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC1pZnJhbWUuaHRtbDogQWRkZWQu
CisgICAgICAgICogc3RvcmFnZS9kb21zdG9yYWdlL3Nlc3Npb25zdG9yYWdlL3NhbmRib3hlZC1p
ZnJhbWUtZGVuaWVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9kb21z
dG9yYWdlL3Nlc3Npb25zdG9yYWdlL3NhbmRib3hlZC1pZnJhbWUtZGVuaWVkLmh0bWw6IEFkZGVk
LgorCiAyMDA5LTExLTE3ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIE5vdCByZXZpZXdlZCwgdGVzdHMgZml4LiBGb2xsb3cgdXAgdG8gcjUxMDcyOiBt
b3ZlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJp
YnV0ZS1wYXJzaW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUt
YXR0cmlidXRlLXBhcnNpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQg
QEAKK1RoaXMgdGVzdCBjYXNlIHZlcmlmaWVzIHRoZSBwYXJzaW5nIG9mIHRoZSBpZnJhbWUgc2Fu
ZGJveCBhdHRyaWJ1dGUuIFR3byBzZXRzIG9mIGlmcmFtZXMgYXJlIHVzZWQ6IG9uZSB3aGVyZSBz
Y3JpcHRpbmcgaXMgYWxsb3dlZCwgYW5kIGFub3RoZXIgb25lIHdoZXJlIGl0IGlzIGRpc2FsbG93
ZWQuIFRoZSB0ZXN0IHZlcmlmaWVzIHRoYXQgdGhlIGFsbG93ZWQgZnJhbWVzIGV4ZWN1dGUgc2Ny
aXB0cyAoYnV0IG90aGVyIHNhbmRib3hlZCBwcm9wZXJ0aWVzIHN0aWxsIGFwcGx5IC0tIHNwZWNp
ZmljYWxseSwgZm9ybXMgYXJlIGRpc2FibGVkKSwgYW5kIHRoZSBkaXNhbGxvd2VkIG9uZXMgZG8g
bm90LiBJZiBzdWNjZXNzZnVsIHRoZSB0ZXN0IHByaW50cyAiUEFTUyIuCisKKyAgICAgICAgICAg
ICAgICAgIAorUEFTUwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlm
cmFtZS1hdHRyaWJ1dGUtcGFyc2luZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmcuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmli
dXRlLXBhcnNpbmcuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNjUgQEAKKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
IHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKK3ZhciBmYWlsZWQg
PSBmYWxzZTsKK3ZhciBmcmFtZXMgPSAwOyAgICAgICAgIC8qIG51bWJlciBvZiBhbGxvd2VkIGZy
YW1lcyB0aGF0IGNhbGxlZCBiYWNrICovCisKK2Z1bmN0aW9uIGZhaWwobWVzc2FnZSkKK3sKKyAg
ICBzZXRTdGF0dXMoIkZBSUw6ICIgKyBtZXNzYWdlKTsKKyAgICBmYWlsZWQgPSB0cnVlOworfQor
CitmdW5jdGlvbiBzZXRTdGF0dXMoc3RhdHVzKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ0ZXN0U3RhdHVzIikuaW5uZXJIVE1MID0gc3RhdHVzOworfQorCitmdW5jdGlvbiBhbGxv
d2VkQ2FsbEZyb21TYW5kYm94KCkKK3sKKyAgICArK2ZyYW1lczsKK30KKworZnVuY3Rpb24gZGlz
YWxsb3dlZENhbGxGcm9tU2FuZGJveCgpCit7CisgICAgZmFpbCgiZGlzYWxsb3dlZCBzY3JpcHQg
ZXhlY3V0ZWQiKTsKK30KKworZnVuY3Rpb24gZGlzYWxsb3dlZEZvcm1TdWJtaXR0ZWQoKQorewor
ICAgIGZhaWwoInNhbmRib3hpbmcgZmFpbGVkOiBmb3JtIHN1Ym1pdHRlZCBpbiBzYW5kYm94ZWQg
ZnJhbWUiKTsKK30KKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBpZiAoZnJh
bWVzID09IDUgJiYgIWZhaWxlZCkKKyAgICAgICAgc2V0U3RhdHVzKCJQQVNTIik7CisgICAgZWxz
ZSBpZiAoIWZhaWxlZCkKKyAgICAgICAgZmFpbCgic2NyaXB0aW5nIGRpc2FibGVkIGluIG9uZSBv
ciBtb3JlIGZyYW1lcyB3aGVyZSBpdCBzaG91bGQgYmUgZW5hYmxlZCIpOworfQorCis8L3Njcmlw
dD4KKzwvaGVhZD4KKworPGJvZHk+CisKKyAgICA8cD5UaGlzIHRlc3QgY2FzZSB2ZXJpZmllcyB0
aGUgcGFyc2luZyBvZiB0aGUgaWZyYW1lIHNhbmRib3ggYXR0cmlidXRlLiBUd28gc2V0cyBvZiBp
ZnJhbWVzCisgICAgYXJlIHVzZWQ6IG9uZSB3aGVyZSBzY3JpcHRpbmcgaXMgYWxsb3dlZCwgYW5k
IGFub3RoZXIgb25lIHdoZXJlIGl0IGlzIGRpc2FsbG93ZWQuIFRoZSB0ZXN0CisgICAgdmVyaWZp
ZXMgdGhhdCB0aGUgYWxsb3dlZCBmcmFtZXMgZXhlY3V0ZSBzY3JpcHRzIChidXQgb3RoZXIgc2Fu
ZGJveGVkIHByb3BlcnRpZXMgc3RpbGwKKyAgICBhcHBseSAtLSBzcGVjaWZpY2FsbHksIGZvcm1z
IGFyZSBkaXNhYmxlZCksIGFuZCB0aGUgZGlzYWxsb3dlZCBvbmVzIGRvIG5vdC4gSWYgc3VjY2Vz
c2Z1bAorICAgIHRoZSB0ZXN0IHByaW50cyAmcXVvdDtQQVNTJnF1b3Q7LjwvcD4KKyAgICAKKyAg
ICA8IS0tIGlmcmFtZXMgd2hlcmUgc2NyaXB0IGV4ZWN1dGlvbiBpcyBhbGxvd2VkLCBidXQgb3Jp
Z2luIGlzIG5vdCBzaGFyZWQgLS0+CisKKyAgICA8IS0tIHBsYWluLCBwcm9wZXIgYXR0cmlidXRl
IHZhbHVlIC0tPgorICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyIKKyAgICAgICAg
ICAgIG5hbWU9ImYxIgorICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFt
ZS1hdHRyaWJ1dGUtcGFyc2luZy1hbGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorICAgIAor
ICAgIDwhLS0gbGluZSBmZWVkIGNoYXJhY3RlcnMgYmVmb3JlIGFuZCBhZnRlciBhdHRyaWJ1dGUg
dmFsdWUgLS0+CisgICAgPGlmcmFtZSBzYW5kYm94PSIKKworYWxsb3ctc2NyaXB0cworCisiCisg
ICAgICAgICAgICBuYW1lPSJmMiIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hl
ZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmctYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4K
KworICAgIDwhLS0gcmlkaWN1bG91c2x5IGxvbmcsIGludmFsaWQgdGV4dCAod2VsbCwgZm9yIHRo
ZXNlIHB1cnBvc2VzIGF0IGxlYXN0KQorICAgICAgICAgd2l0aCBub24tQVNDSUkgY2hhcmFjdGVy
cyBzdXJyb3VuZGluZyBhdHRyaWJ1dGUgdmFsdWUgLS0+CisgICAgPGlmcmFtZSBzYW5kYm94PSIK
KyAgICAgICAgRsO2ciB2YXIgdmVycywgamFnIGfDtnIsCisgICAgICAgIExvdmFyIGR1IGVuIGt5
c3MgbWlnIGdpdmE7CisgICAgICAgIEFya2V0IGZ1bGx0IGphZyBib3JkZSBza3JpdmEsCisgICAg
ICAgIE1pbmRyZSBoYXIgamFnIHNrcml2aXQgZsO2ci4KKyAgICAgICAgTWVuIG1hbiBtw6VzdGUg
aMOlbGxhIG3DpXR0YSwKKyAgICAgICAgSmFnIG1lZCB2ZXJzLCBtZWQga3lzc2FyIGR1LgorICAg
ICAgICBMw6V0IG1pZyByw6RrbmE6IETDpHIgw6RyIHNqdSEKKyAgICAgICAgRW4gZMOkcnRpbGwg
ZGV0IGfDtnIgbWlnIMOldHRhLgorCisgICAgICAgIE51bXJvIMOldHRhIMOkciBmYXRhbCwKKyAg
ICAgICAgR3Jla2xhbmRzIHPDpW5nbcO2ciB2b3JvIG5pbywKKyAgICAgICAgT2NoIGVuIHN2ZW5z
ayBkw6RydGlsbCBnw7ZyIHRpby4g4oCUCisgICAgICAgIEVsdmEgdmFyIGFwb3N0ZWxucyB0YWws
CisgICAgICAgIFR5IGphZyByw6RrbmFyIGlja2UgSnVkYXMsCisgICAgICAgIEhvbm9tLCBzb20g
aSB2w6RubmVycyBsYWcKKyAgICAgICAgS3lzc3RlIGZhbHNrdDsgZGV0IGfDtnIgZWogamFnLAor
ICAgICAgICBIZWxzdCBuw6RyIHZhY2tyYSBsw6RwcGFyIGJqdWRhcy4KKworICAgICAgICBIdXJ1
IHN0w6VyIG1pbiByw6RrbmluZyBow6RyPworICAgICAgICBBZGVydG9uOyBkZXQgw6RyIGRvY2sg
bsOlZ290LgorICAgICAgICBOaXR0b24g4oCUIHJpbW1ldCBnw7ZyIGJlc3bDpHIsCisgICAgICAg
IETDpHJmw7ZyZSBqYWcgZnlsbGVyIHRqb2dldC4KKyAgICAgICAgU3Ryb2ZlbiDDpHIgZWogZnVs
bCBzb20gamFnLAorICAgICAgICBJbiBpIGhhbW5lbiB2aWxsIGphZyBzdHlyYSwKKyAgICAgICAg
RMOkcmbDtnJlIHRpbGwgZ29kbyB0YWcKKyAgICAgICAgRGVubmEgZ8OlbmcgbWVkIHRqdWdvZnly
YS4KKyAgICAgICAgCisgICAgICAgICdLeXNzYXJuYScgKCdUaGUga2lzc2VzJyksIEVzYWlhcyBU
ZWduw6lyLCAxNzgyLTE4NDYKKworICAgIGFsbG93LXNjcmlwdHMKKyAgICAKKyAgICAgICAgaW50
IG1haW4odm9pZCkKKyAgICAgICAgeworICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9Igor
ICAgICAgICAgICAgbmFtZT0iZjMiCisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94
ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWFsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+
CisKKyAgICA8IS0tIHRhYiBjaGFyYWN0ZXJzIGJlZm9yZSBhbmQgYWZ0ZXIgYXR0cmlidXRlIHZh
bHVlIC0tPgorICAgIDxpZnJhbWUgc2FuZGJveD0iCQlhbGxvdy1zY3JpcHRzCQkiCisgICAgICAg
ICAgICBuYW1lPSJmNCIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJh
bWUtYXR0cmlidXRlLXBhcnNpbmctYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKworICAg
IDwhLS0gbWl4ZWQgY2FzZSAtLT4KKyAgICA8aWZyYW1lIHNhbmRib3g9IkFsTG9XLXNDcklwVHMi
CisgICAgICAgICAgICBuYW1lPSJmNSIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRi
b3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmctYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFt
ZT4KKworICAgIDwhLS0gaWZyYW1lcyB3aGVyZSBzY3JpcHQgZXhlY3V0aW9uIGlzIGRpc2FsbG93
ZWQgLS0+CisKKyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93c2NyaXB0cyIKKyAgICAgICAgICAg
IHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmctZGlzYWxs
b3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKworICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3dz
LWNyaXB0cyIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtYXR0
cmlidXRlLXBhcnNpbmctZGlzYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKworICAgIDxp
ZnJhbWUgc2FuZGJveD0iLWFsbG93LXNjcmlwdHMiCisgICAgICAgICAgICBzcmM9InJlc291cmNl
cy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWRpc2FsbG93ZWQuaHRtbCI+Cisg
ICAgPC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93X3NjcmlwdHMiCisgICAg
ICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5n
LWRpc2FsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNhbmRib3g9
ImFsbG93U2NyaXB0cyIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJh
bWUtYXR0cmlidXRlLXBhcnNpbmctZGlzYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKwor
ICAgIDxpZnJhbWUgc2FuZGJveD0iYWFsbG93LXNjcmlwdHMiCisgICAgICAgICAgICBzcmM9InJl
c291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWRpc2FsbG93ZWQuaHRt
bCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93LXNjcmlwdHNz
IgorICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUt
cGFyc2luZy1kaXNhbGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorCisgICAgPGlmcmFtZSBz
YW5kYm94CisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJp
YnV0ZS1wYXJzaW5nLWRpc2FsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8cCBp
ZD0ndGVzdFN0YXR1cyc+RkFJTDogU2NyaXB0IGRpZG4ndCBydW48L3A+CisKKzwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtZm9y
bXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Nh
bmRib3hlZC1pZnJhbWUtZm9ybXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1mb3Jtcy1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorVGhpcyB0ZXN0IHJ1bnMgZml2ZSBJRnJhbWVzIHdp
dGggZm9ybXMgYWxsb3dlZCwgb25lIElGcmFtZSB3aXRoIGZvcm1zIGRpc2FsbG93ZWQsIHRoZW4g
Zml2ZSBtb3JlIElGcmFtZXMgd2l0aCBmb3JtcyBhbGxvd2VkLiBJZiB0ZW4gZm9ybSBzdWJtaXNz
aW9ucyBhcmUgbWFkZSwgYW5kIHRoZSBkaXNhbGxvd2VkIHN1Ym1pc3Npb24gaXMgbm90IG9uZSBv
ZiB0aGVtLCB3ZSBjb25zaWRlciB0aGUgdGVzdCB0byBoYXZlIHBhc3NlZC4gVGhpcyB0ZXN0IHdp
bGwgcHJpbnQgIlBBU1MiIG9uIHN1Y2Nlc3MuCisKKyAgICAgICAgICAgICAgICAgICAgCitQQVNT
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm1zLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFt
ZS1mb3Jtcy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2Fu
ZGJveGVkLWlmcmFtZS1mb3Jtcy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk2IEBACis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgeworICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKwordmFyIHN1
Ym1pc3Npb25Db3VudCAgICAgID0gMDsKK3ZhciBkaXNhbGxvd2VkU3VibWlzc2lvbiA9IGZhbHNl
OworCitmdW5jdGlvbiBhbGxvd2VkRm9ybVN1Ym1pdHRlZCgpCit7CisgICAgKytzdWJtaXNzaW9u
Q291bnQ7CisKKyAgICBpZiAoc3VibWlzc2lvbkNvdW50ID09IDEwKSB7CisgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0X3N0YXR1cyIpLmlubmVySFRNTCA9IChkaXNhbGxvd2Vk
U3VibWlzc2lvbiA/ICJGQUlMIiA6ICJQQVNTIik7CisgICAgICAKKyAgICAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgfQorfQorCitmdW5jdGlvbiBkaXNhbGxvd2VkRm9y
bVN1Ym1pdHRlZCgpCit7CisgICAgZGlzYWxsb3dlZFN1Ym1pc3Npb24gPSB0cnVlOworfQorCis8
L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+CisKKyAgICA8cD5UaGlzIHRlc3QgcnVucyBmaXZl
IElGcmFtZXMgd2l0aCBmb3JtcyBhbGxvd2VkLCBvbmUgSUZyYW1lIHdpdGggZm9ybXMKKyAgICBk
aXNhbGxvd2VkLCB0aGVuIGZpdmUgbW9yZSBJRnJhbWVzIHdpdGggZm9ybXMgYWxsb3dlZC4gSWYg
dGVuIGZvcm0KKyAgICBzdWJtaXNzaW9ucyBhcmUgbWFkZSwgYW5kIHRoZSBkaXNhbGxvd2VkIHN1
Ym1pc3Npb24gaXMgbm90IG9uZSBvZiB0aGVtLAorICAgIHdlIGNvbnNpZGVyIHRoZSB0ZXN0IHRv
IGhhdmUgcGFzc2VkLiBUaGlzIHRlc3Qgd2lsbCBwcmludAorICAgICZxdW90O1BBU1MmcXVvdDsg
b24gc3VjY2Vzcy48L3A+CisKKyAgICA8IS0tIGZpdmUgSUZyYW1lcyB3aXRoIGZvcm1zIGFsbG93
ZWQgLS0+CisKKyAgICA8aWZyYW1lIHN0eWxlPSJ3aWR0aDogNjBweDsgaGVpZ2h0OiA2MHB4OyIK
KyAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyIKKyAgICAgICAgc3Jj
PSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWFsbG93ZWQuaHRtbCI+CisgICAgPC9p
ZnJhbWU+CisgICAgPGlmcmFtZSBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsiCisg
ICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMiCisgICAgICAgIHNyYz0i
cmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1hbGxvd2VkLmh0bWwiPgorICAgIDwvaWZy
YW1lPgorICAgIDxpZnJhbWUgc3R5bGU9IndpZHRoOiA2MHB4OyBoZWlnaHQ6IDYwcHg7IgorICAg
ICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1zIgorICAgICAgICBzcmM9InJl
c291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFt
ZT4KKyAgICA8aWZyYW1lIHN0eWxlPSJ3aWR0aDogNjBweDsgaGVpZ2h0OiA2MHB4OyIKKyAgICAg
ICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyIKKyAgICAgICAgc3JjPSJyZXNv
dXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWFsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+
CisgICAgPGlmcmFtZSBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsiCisgICAgICAg
IHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMiCisgICAgICAgIHNyYz0icmVzb3Vy
Y2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1hbGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgor
CisgICAgPCEtLSBvbmUgSUZyYW1lIHdpdGggZm9ybXMgZGlzYWxsb3dlZCAtLT4KKworICAgIDxp
ZnJhbWUgc3R5bGU9IndpZHRoOiA2MHB4OyBoZWlnaHQ6IDYwcHg7IgorICAgICAgICBzYW5kYm94
PSJhbGxvdy1zY3JpcHRzIgorICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1l
LWZvcm0tZGlzYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKworICAgIDwhLS0gZml2ZSBt
b3JlIElGcmFtZXMgd2l0aCBmb3JtcyBhbGxvd2VkIC0tPgorCisgICAgPGlmcmFtZSBzdHlsZT0i
d2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsiCisgICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlw
dHMgYWxsb3ctZm9ybXMiCisgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUt
Zm9ybS1hbGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorICAgIDxpZnJhbWUgc3R5bGU9Indp
ZHRoOiA2MHB4OyBoZWlnaHQ6IDYwcHg7IgorICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRz
IGFsbG93LWZvcm1zIgorICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZv
cm0tYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIHN0eWxlPSJ3aWR0
aDogNjBweDsgaGVpZ2h0OiA2MHB4OyIKKyAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBh
bGxvdy1mb3JtcyIKKyAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3Jt
LWFsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBzdHlsZT0id2lkdGg6
IDYwcHg7IGhlaWdodDogNjBweDsiCisgICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxs
b3ctZm9ybXMiCisgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1h
bGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorICAgIDxpZnJhbWUgc3R5bGU9IndpZHRoOiA2
MHB4OyBoZWlnaHQ6IDYwcHg7IgorICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93
LWZvcm1zIgorICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tYWxs
b3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKyAgICAKKyAgICA8cCBpZD0ndGVzdF9zdGF0dXMn
PkZBSUw6IFNjcmlwdCBkaWRuJ3QgcnVuPC9wPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLWFsbG93ZWQt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRi
b3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1hbGxvd2VkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1h
bGxvd2VkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMiBAQAorVGhpcyB0
ZXN0IHZlcmlmaWVzIHRoYXQgYSBzYW5kYm94ZWQgaWZyYW1lIENBTiBuYXZpZ2F0ZSBib3RoIGl0
c2VsZiBhbmQgYSBjaGlsZCBpbiB0aGUgZnJhbWUgdHJlZS4gSXQgYWxzbyB2ZXJpZmllcyB0aGF0
IHRoZSBzYW5kYm94IGF0dHJpYnV0ZSByZW1haW5zIGludGFjdCBhZnRlciBhIGZyYW1lIGhhcyBi
ZWVuIG5hdmlnYXRlZCwgYW5kIHRoYXQgc2FuZGJveCBhdHRyaWJ1dGVzIGFyZSBwcm9wYWdhdGVk
IHRocm91Z2ggdGhlIGZyYW1lIGhpZXJhcmNoeS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1MgKHNlbGYuc2FuZGJveGVkRnJhbWUuZnJhbWVXaXRoUGx1Z2luLmRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdwbHVnaW4nKS5kZXN0cm95U3RyZWFtKSA9PSB1bmRlZmluZWQgaXMg
dHJ1ZQorUEFTUyAoc2VsZi5mcmFtZVdpdGhQbHVnaW4uZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3BsdWdpbicpLmRlc3Ryb3lTdHJlYW0pICE9IHVuZGVmaW5lZCBpcyB0cnVlCitQQVNTIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94ZWRGcmFtZUlkJykuc2FuZGJveCBpcyAnYWxsb3ct
c2NyaXB0cyBhbGxvdy1zYW1lLW9yaWdpbicKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorICAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Nh
bmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1hbGxvd2VkLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLWFsbG93ZWQu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1p
ZnJhbWUtbmF2aWdhdGlvbi1hbGxvd2VkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjAg
QEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2lmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGNoaWxkRnJhbWVXYXNOYXZpZ2F0ZWQoKQoreworICAg
IC8vIENoZWNrIHRoYXQgdGhlIGNoaWxkIGZyYW1lIHdhcyB1bmFibGUgdG8gbG9hZCBhIHBsdWdp
biwgc2luY2UgaXRzIHBhcmVudCBpcyBzYW5kYm94ZWQuCisgICAgc2hvdWxkQmVUcnVlKCIoc2Vs
Zi5zYW5kYm94ZWRGcmFtZS5mcmFtZVdpdGhQbHVnaW4uZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3BsdWdpbicpLmRlc3Ryb3lTdHJlYW0pID09IHVuZGVmaW5lZCIpOworICAgIAorICAgIC8vIENo
ZWNrIGEgbm9uLXNhbmRib3hlZCBmcmFtZSBhcyB3ZWxsLCB0byBlbnN1cmUgdGhhdCB0aGUgcGx1
Z2luIGlzIGRpc2FibGVkIGJ5IHNhbmRib3hpbmcKKyAgICAvLyBhbmQgbm90IHNvbWUgb3RoZXIg
ZmFpbHVyZQorICAgIHNob3VsZEJlVHJ1ZSgiKHNlbGYuZnJhbWVXaXRoUGx1Z2luLmRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdwbHVnaW4nKS5kZXN0cm95U3RyZWFtKSAhPSB1bmRlZmluZWQiKTsK
KworICAgIC8vIFdoZW4gdGhlIGNoaWxkIGZyYW1lIChncmFuZGNoaWxkIG9mIHRoZSBtYWluIHdp
bmRvdykgaGFzIGJlZW4gbmF2aWdhdGVkLAorICAgIC8vIG1ha2UgdGhlIHNhbmRib3hlZCBmcmFt
ZSBuYXZpZ2F0ZSBpdHNlbGYKKyAgICBzZWxmLnNhbmRib3hlZEZyYW1lLmxvY2F0aW9uLmFzc2ln
bigiamF2YXNjcmlwdDogdG9wLnNhbmRib3hXYXNOYXZpZ2F0ZWQoKTsiKTsKK30KKworZnVuY3Rp
b24gc2FuZGJveFdhc05hdmlnYXRlZCgpCit7CisgICAgc2hvdWxkQmUoImRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdzYW5kYm94ZWRGcmFtZUlkJykuc2FuZGJveCIsICInYWxsb3ctc2NyaXB0cyBh
bGxvdy1zYW1lLW9yaWdpbiciKTsKKyAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOworCisgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgd2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxi
b2R5PgorICAgIDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorICAgIDxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorCisgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LXNhbWUt
b3JpZ2luIgorICAgICAgICAgICAgbmFtZT0ic2FuZGJveGVkRnJhbWUiCisgICAgICAgICAgICBp
ZD0ic2FuZGJveGVkRnJhbWVJZCIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hl
ZC1pZnJhbWUtbmF2aWdhdGlvbi1jaGlsZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKworICAgIDxp
ZnJhbWUgbmFtZT0iZnJhbWVXaXRoUGx1Z2luIgorICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMv
c2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLWZyYW1lLW9iamVjdC5odG1sIj4KKyAgICA8L2lmcmFt
ZT4KKworICAgIDxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdCB2ZXJpZmllcyB0
aGF0IGEgc2FuZGJveGVkIGlmcmFtZSBDQU4gbmF2aWdhdGUgYm90aCBpdHNlbGYgYW5kIGEgY2hp
bGQgaW4gdGhlIGZyYW1lIHRyZWUuICIKKyAgICAgICAgICAgICAgICArICJJdCBhbHNvIHZlcmlm
aWVzIHRoYXQgdGhlIHNhbmRib3ggYXR0cmlidXRlIHJlbWFpbnMgaW50YWN0IGFmdGVyIGEgZnJh
bWUgaGFzIGJlZW4gbmF2aWdhdGVkLCAiCisgICAgICAgICAgICAgICAgKyAiYW5kIHRoYXQgc2Fu
ZGJveCBhdHRyaWJ1dGVzIGFyZSBwcm9wYWdhdGVkIHRocm91Z2ggdGhlIGZyYW1lIGhpZXJhcmNo
eS4iKTsKKyAgICB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKyAgICA8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hl
ZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2Fu
ZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXBhcmVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsOCBAQAorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYSBzYW5kYm94ZWQgSUZy
YW1lIGNhbm5vdCBuYXZpZ2F0ZSBhbiBhbmNlc3RvciBpbiB0aGUgZnJhbWUgdHJlZSBieSBhc3Np
Z25pbmcgdGhlIGxvY2F0aW9uIGF0dHJpYnV0ZS4KKworVGhpcyBpcyBkb25lIGJ5IGxvYWRpbmcg
dGVuIG5vbi1zYW5kYm94ZWQgSUZyYW1lcywgYW5kIGEgc2luZ2xlIHNhbmRib3hlZCBvbmUuIEV4
cGVjdCB0ZW4gZnJhbWVzIHRvIGJlIG5hdmlnYXRlZCwgYnV0IHRoZSBzYW5kYm94ZWQgb25lIHRv
IG5vdCBiZSBvbmUgb2YgdGhlbS4KKworVGhpcyB0ZXN0IHdpbGwgcHJpbnQgIlBBU1MiIG9uIHN1
Y2Nlc3MuCisKKyAgICAgICAgICAgICAgIAorUEFTUwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9m
cmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXBhcmVudC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1w
YXJlbnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRi
b3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw2OCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9
CisKK3ZhciBuYXZpZ2F0ZWRGcmFtZXMgPSAwOworCitmdW5jdGlvbiBjaGVja1Jlc3VsdHMoKQor
eworICAgIHZhciB0ZXN0U3RhdHVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3RTdGF0
dXMnKTsKKworICAgIGlmIChzZWxmLm5hdmlnYXRlZC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoJ3Bh
cmVudC5odG1sJykgPT0gLTEpCisgICAgICAgIHRlc3RTdGF0dXMuaW5uZXJIVE1MID0gJ0ZBSUw6
IGRpc2FsbG93ZWQgZnJhbWUgbmF2aWdhdGVkJzsKKyAgICBlbHNlIGlmIChuYXZpZ2F0ZWRGcmFt
ZXMgPT0gMTApCisgICAgICAgIHRlc3RTdGF0dXMuaW5uZXJIVE1MID0gJ1BBU1MnOworICAgIGVs
c2UKKyAgICAgICAgdGVzdFN0YXR1cy5pbm5lckhUTUwgPSAnRkFJTDogZnJhbWVzIG5vdCBuYXZp
Z2F0ZWQgcHJvcGVybHknOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
KyAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKwor
ZnVuY3Rpb24gY291bnRGcmFtZSgpCit7CisgICAgKytuYXZpZ2F0ZWRGcmFtZXM7CisKKyAgICBp
ZiAobmF2aWdhdGVkRnJhbWVzID09IDEwKQorICAgICAgICBjaGVja1Jlc3VsdHMoKTsKK30KKwor
PC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorCisgICAgPHA+VGhpcyB0ZXN0IHZlcmlmaWVz
IHRoYXQgYSBzYW5kYm94ZWQgSUZyYW1lIGNhbm5vdCBuYXZpZ2F0ZSBhbiBhbmNlc3RvcgorICAg
IGluIHRoZSBmcmFtZSB0cmVlIGJ5IGFzc2lnbmluZyB0aGUgbG9jYXRpb24gYXR0cmlidXRlLjwv
cD4KKworICAgIDxwPlRoaXMgaXMgZG9uZSBieSBsb2FkaW5nIHRlbiBub24tc2FuZGJveGVkIElG
cmFtZXMsIGFuZCBhIHNpbmdsZQorICAgIHNhbmRib3hlZCBvbmUuIEV4cGVjdCB0ZW4gZnJhbWVz
IHRvIGJlIG5hdmlnYXRlZCwgYnV0IHRoZSBzYW5kYm94ZWQKKyAgICBvbmUgdG8gPGI+bm90PC9i
PiBiZSBvbmUgb2YgdGhlbS48L3A+CisgICAgCisgICAgPHA+VGhpcyB0ZXN0IHdpbGwgcHJpbnQg
JnF1b3Q7UEFTUyZxdW90OyBvbiBzdWNjZXNzLjwvcD4KKworICAgIDxpZnJhbWUgc3JjPSJyZXNv
dXJjZXMvbm9uLXNhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi5odG1sIj48L2lmcmFtZT4KKyAg
ICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL25vbi1zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24u
aHRtbCI+PC9pZnJhbWU+CisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9ub24tc2FuZGJveGVk
LWlmcmFtZS1uYXZpZ2F0aW9uLmh0bWwiPjwvaWZyYW1lPgorICAgIDxpZnJhbWUgc3JjPSJyZXNv
dXJjZXMvbm9uLXNhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi5odG1sIj48L2lmcmFtZT4KKyAg
ICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL25vbi1zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24u
aHRtbCI+PC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIG5hbWU9J25hdmlnYXRlZCcKKyAgICAgICAg
ICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQuaHRt
bCIKKyAgICA8L2lmcmFtZT4KKworICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvbm9uLXNhbmRi
b3hlZC1pZnJhbWUtbmF2aWdhdGlvbi5odG1sIj48L2lmcmFtZT4KKyAgICA8aWZyYW1lIHNyYz0i
cmVzb3VyY2VzL25vbi1zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24uaHRtbCI+PC9pZnJhbWU+
CisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9ub24tc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0
aW9uLmh0bWwiPjwvaWZyYW1lPgorICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvbm9uLXNhbmRi
b3hlZC1pZnJhbWUtbmF2aWdhdGlvbi5odG1sIj48L2lmcmFtZT4KKyAgICA8aWZyYW1lIHNyYz0i
cmVzb3VyY2VzL25vbi1zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24uaHRtbCI+PC9pZnJhbWU+
CisKKyAgICA8cCBpZD0ndGVzdFN0YXR1cyc+RkFJTDogU2NyaXB0IGRpZG4ndCBydW48L3A+Cisg
ICAgCis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5k
Ym94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9u
LXRhcmdldGxpbmstZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmstZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0
IGEgc2FuZGJveGVkIElGcmFtZSBjYW5ub3Qgb3BlbiBhIGxpbmsgaW4gYW5vdGhlciBmcmFtZSB1
c2luZyB0aGUgdGFyZ2V0IGF0dHJpYnV0ZSBvZiBhIGxpbmsuCisKK1RoaXMgaXMgZG9uZSBieSBs
b2FkaW5nIHRlbiBub24tc2FuZGJveGVkIElGcmFtZXMsIGFuZCBhIHNpbmdsZSBzYW5kYm94ZWQg
b25lLiBJbiBhZGRpdGlvbiBlYWNoIG9mIHRoZXNlIGZyYW1lcyBoYXZlIGEgdGFyZ2V0IGZyYW1l
IChzbywgMjIgZnJhbWVzIGluIHRvdGFsKS4gRXhwZWN0IHRlbiBmcmFtZXMgdG8gYmUgYWJsZSB0
byBvcGVuIGEgbGluayBpbiB0aGVpciBjb3JyZXNwb25kaW5nIHRhcmdldCBmcmFtZSwgYnV0IHRo
ZSBzYW5kYm94ZWQgb25lIHRvIG5vdCBiZSBvbmUgb2YgdGhlbS4KKworVGhpcyB0ZXN0IHdpbGwg
cHJpbnQgIlBBU1MiIG9uIHN1Y2Nlc3MuCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgCitQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1l
LW5hdmlnYXRpb24tdGFyZ2V0bGluay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRsaW5rLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5h
dmlnYXRpb24tdGFyZ2V0bGluay5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwOSBAQAor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKKyAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAg
IHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK3ZhciBu
YXZpZ2F0ZWRGcmFtZXMgPSAwOworCitmdW5jdGlvbiBjaGVja1Jlc3VsdHMoKQoreworICAgIHZh
ciB0ZXN0U3RhdHVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3RTdGF0dXMnKTsKKwor
ICAgIGlmIChzZWxmLnNhbmRib3hlZF90YXJnZXQubG9jYXRpb24uaHJlZi5pbmRleE9mKCcuaHRt
bCcpICE9IC0xKQorICAgICAgICB0ZXN0U3RhdHVzLmlubmVySFRNTCA9ICdGQUlMOiBkaXNhbGxv
d2VkIGZyYW1lIG5hdmlnYXRlZCc7CisgICAgZWxzZSBpZiAobmF2aWdhdGVkRnJhbWVzID09IDEw
KQorICAgICAgICB0ZXN0U3RhdHVzLmlubmVySFRNTCA9ICdQQVNTJzsKKyAgICBlbHNlCisgICAg
ICAgIHRlc3RTdGF0dXMuaW5uZXJIVE1MID0gJ0ZBSUw6IGZyYW1lcyBub3QgbmF2aWdhdGVkIHBy
b3Blcmx5JzsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAg
IHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9u
IGNvdW50RnJhbWUoKQoreworICAgICsrbmF2aWdhdGVkRnJhbWVzOworCisgICAgaWYgKG5hdmln
YXRlZEZyYW1lcyA9PSAxMCkKKyAgICAgICAgY2hlY2tSZXN1bHRzKCk7Cit9CisKKzwvc2NyaXB0
PgorPC9oZWFkPgorCis8Ym9keT4KKworICAgIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGEg
c2FuZGJveGVkIElGcmFtZSBjYW5ub3Qgb3BlbiBhIGxpbmsgaW4KKyAgICBhbm90aGVyIGZyYW1l
IHVzaW5nIHRoZSA8Y29kZT50YXJnZXQ8L2NvZGU+IGF0dHJpYnV0ZSBvZiBhIGxpbmsuPC9wPgor
CisgICAgPHA+VGhpcyBpcyBkb25lIGJ5IGxvYWRpbmcgdGVuIG5vbi1zYW5kYm94ZWQgSUZyYW1l
cywgYW5kIGEgc2luZ2xlCisgICAgc2FuZGJveGVkIG9uZS4gSW4gYWRkaXRpb24gZWFjaCBvZiB0
aGVzZSBmcmFtZXMgaGF2ZSBhIHRhcmdldCBmcmFtZQorICAgIChzbywgMjIgZnJhbWVzIGluIHRv
dGFsKS4gRXhwZWN0IHRlbiBmcmFtZXMgdG8gYmUgYWJsZSB0byBvcGVuIGEgbGluaworICAgIGlu
IHRoZWlyIGNvcnJlc3BvbmRpbmcgdGFyZ2V0IGZyYW1lLCBidXQgdGhlIHNhbmRib3hlZCBvbmUK
KyAgICB0byA8Yj5ub3Q8L2I+IGJlIG9uZSBvZiB0aGVtLjwvcD4KKyAgICAKKyAgICA8cD5UaGlz
IHRlc3Qgd2lsbCBwcmludCAmcXVvdDtQQVNTJnF1b3Q7IG9uIHN1Y2Nlc3MuPC9wPgorCisgICAg
PGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0
bGluay5odG1sIgorICAgICAgICAgICAgbmFtZT0iZjEiPgorICAgIDwvaWZyYW1lPgorICAgIDxp
ZnJhbWUgbmFtZT0iZjFfdGFyZ2V0IiBzcmM9ImFib3V0OmJsYW5rIj48L2lmcmFtZT4KKworICAg
IDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdl
dGxpbmsuaHRtbCIKKyAgICAgICAgICAgIG5hbWU9ImYyIj4KKyAgICA8L2lmcmFtZT4KKyAgICA8
aWZyYW1lIG5hbWU9ImYyX3RhcmdldCIgc3JjPSJhYm91dDpibGFuayI+PC9pZnJhbWU+CisKKyAg
ICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJn
ZXRsaW5rLmh0bWwiCisgICAgICAgICAgICBuYW1lPSJmMyI+CisgICAgPC9pZnJhbWU+CisgICAg
PGlmcmFtZSBuYW1lPSJmM190YXJnZXQiIHNyYz0iYWJvdXQ6YmxhbmsiPjwvaWZyYW1lPgorCisg
ICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFy
Z2V0bGluay5odG1sIgorICAgICAgICAgICAgbmFtZT0iZjQiPgorICAgIDwvaWZyYW1lPgorICAg
IDxpZnJhbWUgbmFtZT0iZjRfdGFyZ2V0IiBzcmM9ImFib3V0OmJsYW5rIj48L2lmcmFtZT4KKwor
ICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRh
cmdldGxpbmsuaHRtbCIKKyAgICAgICAgICAgIG5hbWU9ImY1Ij4KKyAgICA8L2lmcmFtZT4KKyAg
ICA8aWZyYW1lIG5hbWU9ImY1X3RhcmdldCIgc3JjPSJhYm91dDpibGFuayI+PC9pZnJhbWU+CisK
KyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10
YXJnZXRsaW5rLmh0bWwiCisgICAgICAgICAgICBuYW1lPSJzYW5kYm94ZWQiCisgICAgICAgICAg
ICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LXNhbWUtb3JpZ2luIj4KKyAgICA8L2lmcmFt
ZT4KKyAgICA8aWZyYW1lIG5hbWU9InNhbmRib3hlZF90YXJnZXQiIHNyYz0iYWJvdXQ6Ymxhbmsi
PjwvaWZyYW1lPgorCisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1l
LW5hdmlnYXRpb24tdGFyZ2V0bGluay5odG1sIgorICAgICAgICAgICAgbmFtZT0iZjYiPgorICAg
IDwvaWZyYW1lPgorICAgIDxpZnJhbWUgbmFtZT0iZjZfdGFyZ2V0IiBzcmM9ImFib3V0OmJsYW5r
Ij48L2lmcmFtZT4KKworICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFt
ZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbCIKKyAgICAgICAgICAgIG5hbWU9ImY3Ij4KKyAg
ICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIG5hbWU9ImY3X3RhcmdldCIgc3JjPSJhYm91dDpibGFu
ayI+PC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJh
bWUtbmF2aWdhdGlvbi10YXJnZXRsaW5rLmh0bWwiCisgICAgICAgICAgICBuYW1lPSJmOCI+Cisg
ICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBuYW1lPSJmOF90YXJnZXQiIHNyYz0iYWJvdXQ6Ymxh
bmsiPjwvaWZyYW1lPgorCisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZy
YW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay5odG1sIgorICAgICAgICAgICAgbmFtZT0iZjkiPgor
ICAgIDwvaWZyYW1lPgorICAgIDxpZnJhbWUgbmFtZT0iZjlfdGFyZ2V0IiBzcmM9ImFib3V0OmJs
YW5rIj48L2lmcmFtZT4KKworICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlm
cmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbCIKKyAgICAgICAgICAgIG5hbWU9ImYxMCI+
CisgICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBuYW1lPSJmMTBfdGFyZ2V0IiBzcmM9ImFib3V0
OmJsYW5rIj48L2lmcmFtZT4KKworICAgIDxwIGlkPSd0ZXN0U3RhdHVzJz5GQUlMOiBTY3JpcHQg
ZGlkbid0IHJ1bjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1l
LW5hdmlnYXRpb24td2luZG93b3Blbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Bl
bi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNiBAQAorVmVyaWZpZXMgdGhh
dCBhIHNhbmRib3hlZCBJRnJhbWUgY2Fubm90IG9wZW4gbmV3IHdpbmRvd3MgdXNpbmcgd2luZG93
Lm9wZW4oKS4gRXhwZWN0IHRlbiB3aW5kb3dzIHRvIGJlIG9wZW5lZCwgYnV0IHRoZSBzYW5kYm94
ZWQgSUZyYW1lIG5vdCB0byBiZSB0aGUgb3BlbmVyIG9mIGFueSBvZiB0aGVtLgorCitUaGlzIHRl
c3Qgd2lsbCBwcmludCAiUEFTUyIgb24gc3VjY2Vzcy4KKworICAgICAgICAgICAgICAgCitQQVNT
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRp
b24td2luZG93b3Blbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24t
d2luZG93b3Blbi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcyIEBACis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2FuT3Bl
bldpbmRvd3ModHJ1ZSk7Cit9CisKK3ZhciB0ZXN0U3RhdHVzICAgICAgID0gIkZBSUw6IG5vdCBj
b21wbGV0ZWQiOwordmFyIHdpbmRvd3NPcGVuZWQgICAgPSAwOwordmFyIG1haW5XaW5kb3dMb2Fk
ZWQgPSBmYWxzZTsKK3ZhciB0ZXN0Q29tcGxldGVkICAgID0gZmFsc2U7CisKK2Z1bmN0aW9uIHVw
ZGF0ZVN0YXR1cyhsb2FkZWQsIGRvbmUpCit7CisgICAgbWFpbldpbmRvd0xvYWRlZCB8PSBsb2Fk
ZWQ7CisgICAgdGVzdENvbXBsZXRlZCB8PSBkb25lOworCisgICAgaWYgKG1haW5XaW5kb3dMb2Fk
ZWQgJiYgdGVzdENvbXBsZXRlZCkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
dGVzdFN0YXR1cyIpLmlubmVySFRNTCA9IHRlc3RTdGF0dXM7CisgICAgICAgIGlmICh0ZXN0Q29t
cGxldGVkICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHdpbmRv
d09wZW5lZCh3aW5kb3dPcGVuZXIpCit7CisgICAgaWYgKHdpbmRvd09wZW5lciA9PSBzZWxmLnNh
bmRib3hlZCkgeworICAgICAgICB0ZXN0U3RhdHVzID0gIkZBSUw6IHNhbmRib3hlZCBmcmFtZSBv
cGVuZWQgd2luZG93IjsKKyAgICAgICAgdXBkYXRlU3RhdHVzKGZhbHNlLCB0cnVlKTsKKyAgICB9
IGVsc2UgeworICAgICAgICArK3dpbmRvd3NPcGVuZWQ7CisgICAgICAgIGlmICh3aW5kb3dzT3Bl
bmVkID09IDEwICYmICF0ZXN0Q29tcGxldGVkKSB7CisgICAgICAgICAgICB0ZXN0U3RhdHVzID0g
IlBBU1MiOworICAgICAgICAgICAgdXBkYXRlU3RhdHVzKGZhbHNlLCB0cnVlKTsKKyAgICAgICAg
fQorICAgIH0KK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0idXBkYXRl
U3RhdHVzKHRydWUsIGZhbHNlKTsiPgorCisgICAgPHA+VmVyaWZpZXMgdGhhdCBhIHNhbmRib3hl
ZCBJRnJhbWUgY2Fubm90IG9wZW4gbmV3IHdpbmRvd3MKKyAgICB1c2luZyA8Y29kZT53aW5kb3cu
b3BlbigpPC9jb2RlPi4gRXhwZWN0IHRlbiB3aW5kb3dzIHRvIGJlIG9wZW5lZCwKKyAgICBidXQg
dGhlIHNhbmRib3hlZCBJRnJhbWUgbm90IHRvIGJlIHRoZSBvcGVuZXIgb2YgYW55IG9mIHRoZW0u
PC9wPgorICAgIAorICAgIDxwPlRoaXMgdGVzdCB3aWxsIHByaW50ICZxdW90O1BBU1MmcXVvdDsg
b24gc3VjY2Vzcy48L3A+CisKKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1p
ZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0bWwiPjwvaWZyYW1lPgorICAgIDxpZnJhbWUg
c3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4uaHRt
bCI+PC9pZnJhbWU+CisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1l
LW5hdmlnYXRpb24td2luZG93b3Blbi5odG1sIj48L2lmcmFtZT4KKyAgICA8aWZyYW1lIHNyYz0i
cmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0bWwiPjwv
aWZyYW1lPgorICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZp
Z2F0aW9uLXdpbmRvd29wZW4uaHRtbCI+PC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNyYz0icmVz
b3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0bWwiCisgICAg
ICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIgorICAgICAgICAgICAgbmFtZT0ic2FuZGJv
eGVkIj4KKyAgICA8L2lmcmFtZT4KKworICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJv
eGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4uaHRtbCI+PC9pZnJhbWU+CisgICAgPGlm
cmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Bl
bi5odG1sIj48L2lmcmFtZT4KKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1p
ZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0bWwiPjwvaWZyYW1lPgorICAgIDxpZnJhbWUg
c3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4uaHRt
bCI+PC9pZnJhbWU+CisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1l
LW5hdmlnYXRpb24td2luZG93b3Blbi5odG1sIj48L2lmcmFtZT4KKworICAgIDxwIGlkPSd0ZXN0
U3RhdHVzJz5GQUlMOiBTY3JpcHQgZGlkbid0IHJ1bjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVk
LWlmcmFtZS1wbHVnaW5zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTcgQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHNhbmRib3hp
bmcgb2YgcGx1Z2lucyB3b3JrcyBhcyBpbnRlbmRlZC4gVGhyZWUgdGVzdHMgYXJlIG1hZGUsIGVh
Y2ggaW4gb25lIHNhbmRib3hlZCBhbmQgb25lIG5vbi1zYW5kYm94ZWQgSUZyYW1lOiBhcHBsZXRz
LCBlbWJlZHMsIGFuZCBvYmplY3RzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
Tk9URTogVGhlIGZpcnN0IHN1Yi10ZXN0IHdpbGwgZmFpbCBpbiBEdW1wUmVuZGVyVHJlZSwgc2lu
Y2UgRHVtcFJlbmRlclRyZWUgZG9lcyBub3Qgc3VwcG9ydCBhcHBsZXRzLiBUaGF0IHN1Yi10ZXN0
IG11c3QgYmUgcnVuIGluIFNhZmFyaSBpbnN0ZWFkLgorCitGQUlMIChzZWxmLmFwcGxldEZyYW1l
MS5kb2N1bWVudFsnYXBwJ10uaW5pdCkgIT0gdW5kZWZpbmVkIHNob3VsZCBiZSB0cnVlLiBXYXMg
ZmFsc2UuCitQQVNTIChzZWxmLmFwcGxldEZyYW1lMi5kb2N1bWVudFsnYXBwJ10uaW5pdCkgPT0g
dW5kZWZpbmVkIGlzIHRydWUKK1BBU1MgKHNlbGYuZW1iZWRGcmFtZTEuZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3BsdWdpbicpLmRlc3Ryb3lTdHJlYW0pICE9IHVuZGVmaW5lZCBpcyB0cnVlCitQ
QVNTIChzZWxmLmVtYmVkRnJhbWUyLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbHVnaW4nKS5k
ZXN0cm95U3RyZWFtKSA9PSB1bmRlZmluZWQgaXMgdHJ1ZQorUEFTUyAoc2VsZi5vYmplY3RGcmFt
ZTEuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BsdWdpbicpLmRlc3Ryb3lTdHJlYW0pICE9IHVu
ZGVmaW5lZCBpcyB0cnVlCitQQVNTIChzZWxmLm9iamVjdEZyYW1lMi5kb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgncGx1Z2luJykuZGVzdHJveVN0cmVhbSkgPT0gdW5kZWZpbmVkIGlzIHRydWUKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorICAgICAgICAg
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZy
YW1lLXBsdWdpbnMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc0
IEBACis8aHRtbD4gCis8aGVhZD4gCis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+IAoraWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOyAKKyAKK3dpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsgCisgICAgc2hvdWxk
QmVUcnVlKCIoc2VsZi5hcHBsZXRGcmFtZTEuZG9jdW1lbnRbJ2FwcCddLmluaXQpICE9IHVuZGVm
aW5lZCIpOworICAgIHNob3VsZEJlVHJ1ZSgiKHNlbGYuYXBwbGV0RnJhbWUyLmRvY3VtZW50Wydh
cHAnXS5pbml0KSA9PSB1bmRlZmluZWQiKTsKKworICAgIHNob3VsZEJlVHJ1ZSgiKHNlbGYuZW1i
ZWRGcmFtZTEuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BsdWdpbicpLmRlc3Ryb3lTdHJlYW0p
ICE9IHVuZGVmaW5lZCIpOworICAgIHNob3VsZEJlVHJ1ZSgiKHNlbGYuZW1iZWRGcmFtZTIuZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BsdWdpbicpLmRlc3Ryb3lTdHJlYW0pID09IHVuZGVmaW5l
ZCIpOworCisgICAgc2hvdWxkQmVUcnVlKCIoc2VsZi5vYmplY3RGcmFtZTEuZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3BsdWdpbicpLmRlc3Ryb3lTdHJlYW0pICE9IHVuZGVmaW5lZCIpOworICAg
IHNob3VsZEJlVHJ1ZSgiKHNlbGYub2JqZWN0RnJhbWUyLmRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdwbHVnaW4nKS5kZXN0cm95U3RyZWFtKSA9PSB1bmRlZmluZWQiKTsKKworICAgIGlzU3VjY2Vz
c2Z1bGx5UGFyc2VkKCk7Cit9IAorPC9zY3JpcHQ+IAorPC9oZWFkPiAKKyAKKzxib2R5PiAKKyAg
ICA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKyAKKyAgICA8cD5OT1RFOiBUaGUgZmlyc3Qgc3Vi
LXRlc3Qgd2lsbCBmYWlsIGluIER1bXBSZW5kZXJUcmVlLCBzaW5jZSBEdW1wUmVuZGVyVHJlZQor
ICAgIGRvZXMgbm90IHN1cHBvcnQgYXBwbGV0cy4gVGhhdCBzdWItdGVzdCBtdXN0IGJlIHJ1biBp
biBTYWZhcmkgaW5zdGVhZC48L3A+IAorCisgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisK
KyAgICA8IS0tIEFwcGxldHMgLS0+CisgICAgCisgICAgPGlmcmFtZSBpZD0iYXBwbGV0RnJhbWUx
IiAKKyAgICAgICAgICAgIHN0eWxlPSJ3aWR0aDogMjAwcHg7IGhlaWdodDogMTAwcHg7IiAKKyAg
ICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1h
cHBsZXQuaHRtbCI+IAorICAgIDwvaWZyYW1lPiAKKyAgICA8aWZyYW1lIGlkPSJhcHBsZXRGcmFt
ZTIiIAorICAgICAgICAgICAgc3R5bGU9IndpZHRoOiAyMDBweDsgaGVpZ2h0OiAxMDBweDsiIAor
ICAgICAgICAgICAgc2FuZGJveD0iYWxsb3ctc2FtZS1vcmlnaW4gYWxsb3ctc2NyaXB0cyIgCisg
ICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUt
YXBwbGV0Lmh0bWwiPiAKKyAgICA8L2lmcmFtZT4gCisKKyAgICA8IS0tIEVtYmVkcyAtLT4KKyAg
ICAKKyAgICA8aWZyYW1lIGlkPSJlbWJlZEZyYW1lMSIKKyAgICAgICAgICAgIHN0eWxlPSJ3aWR0
aDogMjAwcHg7IGhlaWdodDogMTAwcHg7IgorICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2Fu
ZGJveGVkLWlmcmFtZS1wbHVnaW5zLWZyYW1lLWVtYmVkLmh0bWwiPgorICAgIDwvaWZyYW1lPgor
ICAgIDxpZnJhbWUgaWQ9ImVtYmVkRnJhbWUyIgorICAgICAgICAgICAgc3R5bGU9IndpZHRoOiAy
MDBweDsgaGVpZ2h0OiAxMDBweDsiCisgICAgICAgICAgICBzYW5kYm94PSJhbGxvdy1zYW1lLW9y
aWdpbiIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lu
cy1mcmFtZS1lbWJlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKworICAgIDwhLS0gT2JqZWN0cyAt
LT4KKyAgICAKKyAgICA8aWZyYW1lIGlkPSJvYmplY3RGcmFtZTEiCisgICAgICAgICAgICBzdHls
ZT0id2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDEwMHB4OyIKKyAgICAgICAgICAgIHNyYz0icmVzb3Vy
Y2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1vYmplY3QuaHRtbCI+CisgICAgPC9p
ZnJhbWU+CisgICAgPGlmcmFtZSBpZD0ib2JqZWN0RnJhbWUyIgorICAgICAgICAgICAgc3R5bGU9
IndpZHRoOiAyMDBweDsgaGVpZ2h0OiAxMDBweDsiCisgICAgICAgICAgICBzYW5kYm94PSJhbGxv
dy1zYW1lLW9yaWdpbiIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJh
bWUtcGx1Z2lucy1mcmFtZS1vYmplY3QuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8c2Ny
aXB0PgorICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBzYW5kYm94aW5n
IG9mIHBsdWdpbnMgd29ya3MgYXMgaW50ZW5kZWQuIFRocmVlIHRlc3RzIGFyZSBtYWRlLCBlYWNo
IGluIG9uZSBzYW5kYm94ZWQgYW5kIG9uZSBub24tc2FuZGJveGVkIElGcmFtZTogYXBwbGV0cywg
ZW1iZWRzLCBhbmQgb2JqZWN0cy4iKTsKKyAgICB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4gCis8L2h0bWw+IApJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1zY3JpcHRpbmctZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtc2NyaXB0
aW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3NhbmRib3hlZC1pZnJhbWUtc2NyaXB0aW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxMSBAQAorVmVyaWZ5IHRoYXQgc2FuZGJveGVkIGZyYW1lcyB3aXRoIHNhbmRib3g9
ImFsbG93LXNjcmlwdHMiIGNhbiBleGVjdXRlIHNjcmlwdHMsIGJ1dCBvdGhlciBzYW5kYm94ZWQg
ZnJhbWVzIGNhbm5vdC4gQWxzbyB2ZXJpZnkgdGhhdCByZW1vdmluZyB0aGUgc2FuZGJveD0iYWxs
b3ctc2NyaXB0cyIgYXR0cmlidXRlIGF0IHJ1bnRpbWUgcHJldmVudHMgbmV3IHNjcmlwdHMgZnJv
bSBsYXVuY2hpbmcsIGJ1dCBleGlzdGluZyBvbmVzIGtlZXAgcnVubmluZy4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZGlzYWxsb3dlZEV4ZWN1dGVkIGlzIDAKK1BBU1Mg
YWxsb3dlZEV4ZWN1dGVkIGlzIDIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorICAgCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94
ZWQtaWZyYW1lLXNjcmlwdGluZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtc2NyaXB0aW5nLmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXNjcmlwdGluZy5odG1sCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNj
cmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICB3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCit2YXIgZGlzYWxsb3dlZEV4
ZWN1dGVkID0gMDsKK3ZhciBhbGxvd2VkRXhlY3V0ZWQgPSAwOworCit3aW5kb3cub25sb2FkID0g
ZnVuY3Rpb24oKQoreworICAgIHNob3VsZEJlKCJkaXNhbGxvd2VkRXhlY3V0ZWQiLCAiMCIpOwor
ICAgIHNob3VsZEJlKCJhbGxvd2VkRXhlY3V0ZWQiLCAiMiIpOworCisgICAgaXNTdWNjZXNzZnVs
bHlQYXJzZWQoKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKyAgICA8cCBpZD0i
ZGVzY3JpcHRpb24iPjwvcD4KKyAKKyAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAKKyAg
ICA8aWZyYW1lIHNhbmRib3g9ImFsbG93LXNhbWUtb3JpZ2luIGFsbG93LXNjcmlwdHMiCisgICAg
ICAgICAgICBzcmM9ImphdmFzY3JpcHQ6ICsrd2luZG93LnRvcC5hbGxvd2VkRXhlY3V0ZWQ7Ij4K
KyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93LXNhbWUtb3JpZ2luIgor
ICAgICAgICAgICAgc3JjPSJqYXZhc2NyaXB0OiArK3dpbmRvdy50b3AuZGlzYWxsb3dlZEV4ZWN1
dGVkOyI+CisgICAgPC9pZnJhbWU+CisgICAgCisgICAgPGlmcmFtZSBpZD0iZnJhbWUiIHNyYz0i
cmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtc2NyaXB0LWR5bmFtaWMuaHRtbCI+CisgICAgPC9p
ZnJhbWU+CisKKyAgICA8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJWZXJpZnkgdGhhdCBzYW5k
Ym94ZWQgZnJhbWVzIHdpdGggc2FuZGJveD0mcXVvdDthbGxvdy1zY3JpcHRzJnF1b3Q7IGNhbiBl
eGVjdXRlIHNjcmlwdHMsICIKKyAgICAgICAgICAgICAgICAgKyAiYnV0IG90aGVyIHNhbmRib3hl
ZCBmcmFtZXMgY2Fubm90LiBBbHNvIHZlcmlmeSB0aGF0IHJlbW92aW5nIHRoZSAiCisgICAgICAg
ICAgICAgICAgICsgInNhbmRib3g9JnF1b3Q7YWxsb3ctc2NyaXB0cyZxdW90OyBhdHRyaWJ1dGUg
YXQgcnVudGltZSBwcmV2ZW50cyBuZXcgc2NyaXB0cyBmcm9tIGxhdW5jaGluZywgIgorICAgICAg
ICAgICAgICAgICArICJidXQgZXhpc3Rpbmcgb25lcyBrZWVwIHJ1bm5pbmcuIik7CisgICAgdmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvbm9uLXNhbmRib3hl
ZC1pZnJhbWUtbmF2aWdhdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL3Jlc291cmNlcy9ub24tc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvbm9uLXNhbmRi
b3hlZC1pZnJhbWUtbmF2aWdhdGlvbi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUgQEAK
KzxodG1sPgorPGJvZHk+CisgIDxpZnJhbWUgc3JjPSJzYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRp
b24tc291cmNlLmh0bWwiPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBh
cnNpbmctYWxsb3dlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWFsbG93ZWQuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5k
Ym94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWFsbG93ZWQuaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxMiBAQAorPGh0bWw+Cis8c2NyaXB0PgorCit0b3AuYWxsb3dlZENhbGxGcm9t
U2FuZGJveCgpOworCis8L3NjcmlwdD4KKzxib2R5IG9ubG9hZD0iZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2YnKS5zdWJtaXQoKTsiPgorICAgIDxmb3JtIGlkPSdmJyBhY3Rpb249ImphdmFzY3Jp
cHQ6dG9wLmRpc2FsbG93ZWRGb3JtU3VibWl0dGVkKCk7Ij4KKyAgICAgICAgPGlucHV0IG5hbWU9
IngiIHZhbHVlPSJ5IiB0eXBlPSJjaGVja2JveCIgY2hlY2tlZD0ieWVzIiAvPgorICAgIDwvZm9y
bT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291
cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWRpc2FsbG93ZWQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVk
LWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1kaXNhbGxvd2VkLmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRy
aWJ1dGUtcGFyc2luZy1kaXNhbGxvd2VkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNSBA
QAorPGh0bWw+Cis8c2NyaXB0PgordG9wLmRpc2FsbG93ZWRDYWxsRnJvbVNhbmRib3goKTsKKzwv
c2NyaXB0PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2Vz
L3NhbmRib3hlZC1pZnJhbWUtZm9ybS1hbGxvd2VkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1hbGxvd2Vk
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMv
c2FuZGJveGVkLWlmcmFtZS1mb3JtLWFsbG93ZWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw1IEBACis8Ym9keSBvbmxvYWQ9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmb3JtJykuc3Vi
bWl0KCk7Ij4KKzxmb3JtIGlkPSJmb3JtIiBhY3Rpb249ImphdmFzY3JpcHQ6d2luZG93LnRvcC5h
bGxvd2VkRm9ybVN1Ym1pdHRlZCgpOyI+CisgICAgPGlucHV0IG5hbWU9eCB2YWx1ZT15IHR5cGU9
ImNoZWNrYm94IiBjaGVja2VkPSJ5ZXMiLz4KKzwvZm9ybT4KKzwvYm9keT4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tZGlzYWxs
b3dlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNl
cy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tZGlzYWxsb3dlZC5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1k
aXNhbGxvd2VkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNiBAQAorPGJvZHkgb25sb2Fk
PSJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZm9ybScpLnN1Ym1pdCgpOyIKKyAgICAgIGJnY29s
b3I9J3llbGxvdyc+Cis8Zm9ybSBpZD0iZm9ybSIgYWN0aW9uPSJqYXZhc2NyaXB0OndpbmRvdy50
b3AuZGlzYWxsb3dlZEZvcm1TdWJtaXR0ZWQoKTsiPgorICAgIDxpbnB1dCBuYW1lPXggdmFsdWU9
eSB0eXBlPSJjaGVja2JveCIgY2hlY2tlZD0ieWVzIi8+Cis8L2Zvcm0+Cis8L2JvZHk+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZp
Z2F0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJj
ZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRlZC5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUgQEAKKzxodG1sPgorPGJvZHkgb25sb2FkPSdz
ZWxmLnRvcC5jb3VudEZyYW1lKCk7Jz4KK25hdmlnYXRlZAorPC9ib2R5PgorPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2
aWdhdGlvbi1jaGlsZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tY2hpbGQuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZy
YW1lLW5hdmlnYXRpb24tY2hpbGQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOCBAQAor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBtb2RpZnkoKQoreworICAgIHNlbGYu
bmF2aWdhdGVkLmxvY2F0aW9uLmFzc2lnbigiamF2YXNjcmlwdDogdG9wLmNoaWxkRnJhbWVXYXNO
YXZpZ2F0ZWQoKTsiKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJtb2Rp
ZnkoKTsiPgorICAgIDxpZnJhbWUgbmFtZT0ibmF2aWdhdGVkIgorICAgICAgICAgICAgc3JjPSJz
YW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tbmF2aWdhdGVkLmh0bWwiPgorICAgIDwvaWZyYW1l
PgorICAgIDxpZnJhbWUgbmFtZT0iZnJhbWVXaXRoUGx1Z2luIgorICAgICAgICAgICAgc3JjPSJz
YW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtb2JqZWN0Lmh0bWwiPgorICAgIDwvaWZyYW1l
PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3Vy
Y2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1uYXZpZ2F0ZWQuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1u
YXZpZ2F0aW9uLW5hdmlnYXRlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1uYXZpZ2F0ZWQu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5IEBACis8aHRtbD4KKzxoZWFkPgorPC9oZWFk
PgorPGJvZHk+Cis8IS0tIFRoaXMgZmlsZSBpcyBpbiBhIHNlcGFyYXRlIGRvY3VtZW50IGluIG9y
ZGVyIHRvIHNoYXJlIG9yaWdpbiB3aXRoIHRoZQorcGFyZW50IGRvY3VtZW50LiAtLT4KK2lubm9j
ZW50IGNvbnRlbnQKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50Lmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1p
ZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOCBAQAorPGh0bWw+Cis8Ym9keT4KKyAgICA8
aWZyYW1lIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctc2FtZS1vcmlnaW4iCisgICAgICAg
ICAgICBzcmM9InNhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1zb3VyY2UuaHRtbCI+CisgICAg
PC9pZnJhbWU+CisgICAgPHAgaWQ9J2lubm9jZW50X2NvbnRlbnQnPmlubm9jZW50IGNvbnRlbnQ8
L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNv
dXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXNvdXJjZS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5h
dmlnYXRpb24tc291cmNlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXNvdXJjZS5odG1sCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2Z1
bmN0aW9uIG1vZGlmeSgpCit7CisgICAgc2VsZi5wYXJlbnQubG9jYXRpb24uYXNzaWduKCdzYW5k
Ym94ZWQtaWZyYW1lLW5hdmlnYXRlZC5odG1sJyk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5IG9ubG9hZD0nbW9kaWZ5KCk7Jz4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFy
Z2V0bGluay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291
cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJh
bWUtbmF2aWdhdGlvbi10YXJnZXRsaW5rLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzEg
QEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorCisvKgorICogU2V0IHRoZSB0YXJnZXQgb2Yg
dGhlIGxpbmsgdG8gJ1hfdGFyZ2V0Jywgd2hlcmUgWCBpcyB0aGUgbmFtZSBvZgorICogdGhpcyBm
cmFtZS4KKyAqCisgKiBUaGVuIGNsaWNrIHRoZSBsaW5rLgorICovCisKK2Z1bmN0aW9uIGNsaWNr
X2xpbmsoKQoreworICAgIHZhciBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdNb3VzZUV2
ZW50Jyk7CisgICAgZXZlbnQuaW5pdEV2ZW50KCdjbGljaycsIHRydWUsIHRydWUpOworICAgIHZh
ciBsaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xpbmsnKTsKKyAgICBsaW5rLnRhcmdl
dCA9IHNlbGYubmFtZSArICdfdGFyZ2V0JzsKKyAgICBsaW5rLmRpc3BhdGNoRXZlbnQoZXZlbnQp
OworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSdjbGlja19saW5rKCk7
Jz4KKworICAgIDxhIGhyZWY9InNhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGVkLmh0bWwiIGlkPSJs
aW5rIj4KKyAgICAgICAgKGxpbmsgdHJpZ2dlcmVkIGJ5IHNjcmlwdCkKKyAgICA8L2E+CisKKzwv
Ym9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9z
YW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmln
YXRpb24td2luZG93b3Blbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9m
cmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorPHNjcmlwdD4KKyAgICB3aW5kb3cub3Bl
bigiamF2YXNjcmlwdDogb3BlbmVyLnBhcmVudC53aW5kb3dPcGVuZWQob3BlbmVyKTsiKTsKKzwv
c2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hl
ZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1hcHBsZXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLWZyYW1l
LWFwcGxldC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVz
b3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1hcHBsZXQuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxMSBAQAorPGh0bWw+Cis8aGVhZD4KKzwvaGVhZD4KKworPGJvZHk+
CisgICAgPGFwcGxldCBuYW1lPSJhcHAiCisgICAgICAgICAgICBjb2RlYmFzZT0iLi4vLi4vZG9t
L3Jlc291cmNlcyIKKyAgICAgICAgICAgIGNvZGU9IlRlc3RBcHBsZXQiCisgICAgPC9hcHBsZXQ+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJj
ZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLWZyYW1lLWVtYmVkLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1
Z2lucy1mcmFtZS1lbWJlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9m
cmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1lbWJlZC5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyIEBACis8aHRtbD4KKzxoZWFkPgorPC9oZWFkPgor
Cis8Ym9keT4KKyAgICA8ZW1iZWQgaWQ9InBsdWdpbiIgCisgICAgICAgICAgIHR5cGU9ImFwcGxp
Y2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiCisgICAgICAgICAgIHNyYz0iZGF0YTp0ZXh0
L3BsYWluLCIKKyAgICAgICAgICAgc3R5bGU9IndpZHRoOjA7IGhlaWdodDowIj4KKyAgICA8L2Vt
YmVkPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVz
b3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1vYmplY3QuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFt
ZS1wbHVnaW5zLWZyYW1lLW9iamVjdC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1vYmpl
Y3QuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAorPGh0bWw+Cis8aGVhZD4KKzwv
aGVhZD4KKworPGJvZHk+CisgICAgPG9iamVjdCBpZD0icGx1Z2luIiAKKyAgICAgICAgICAgIHR5
cGU9ImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiCisgICAgICAgICAgICBzdHls
ZT0id2lkdGg6MDsgaGVpZ2h0OjAiPgorICAgIDwvb2JqZWN0PgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUt
c2NyaXB0LWR5bmFtaWMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1l
cy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1zY3JpcHQtZHluYW1pYy5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJh
bWUtc2NyaXB0LWR5bmFtaWMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNiBAQAorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisKKyAgICBmcmFtZSA9IHdpbmRvdy50b3AuZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2ZyYW1lJyk7CisKKyAgICAvLyBzZXR0aW5nIHRoZSBzYW5kYm94IGZs
YWcgYXQgcnVudGltZSBzaG91bGQgbm90IHRlcm1pbmF0ZSBhbHJlYWR5CisgICAgLy8gcnVubmlu
ZyBzY3JpcHRzIChlLmcuLCB0aGlzIG9uZSkKKworICAgIGZyYW1lLnNhbmRib3ggPSAnYWxsb3ct
c2FtZS1vcmlnaW4nOyAgIC8vIE5PIGFsbG93LXNjcmlwdHMKKworICAgICsrd2luZG93LnRvcC5h
bGxvd2VkRXhlY3V0ZWQ7CisKKyAgICAvLyBob3dldmVyLCBuZXcgc2NyaXB0cyAoc3VjaCBhcyB0
aGUgb25sb2FkIG9uZSBiZWxvdykgc2hvdWxkCisgICAgLy8gbm90IHJ1bgorCisgICAgZnVuY3Rp
b24gb25sb2FkX2hvb2soKQorICAgIHsKKyAgICAgICAgKyt3aW5kb3cudG9wLmRpc2FsbG93ZWRF
eGVjdXRlZDsKKyAgICB9OworCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSdv
bmxvYWRfaG9vaygpOyc+PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLWRvY3VtZW50LWNvb2tpZS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94
ZWQtaWZyYW1lLWRvY3VtZW50LWNvb2tpZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtZG9jdW1lbnQt
Y29va2llLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACitUaGlzIHRl
c3QgY2hlY2tzIHRoYXQgYSBTRUNVUklUWV9FUlIgZXhjZXB0aW9uIGlzIHJhaXNlZCB3aGlsZSBh
Y2Nlc3NpbmcgZG9jdW1lbnQuZG9tYWluIGluIGEgc2FuZGJveGVkIGlmcmFtZSAod2l0aG91dCAi
YWxsb3ctb3JpZ2luIiBzZXQpLiBUaGlzIHRlc3Qgd2lsbCBwcmludCAiUEFTUyIgb24gc3VjY2Vz
cy4KKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+
LS0+JworLS0tLS0tLS0KK1BBU1MKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvc2FuZGJveGVkLWlmcmFtZS1kb2N1bWVudC1jb29raWUuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtZG9jdW1lbnQt
Y29va2llLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3NhbmRib3hlZC1pZnJhbWUtZG9jdW1lbnQtY29va2llLmh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMjUgQEAKKzxodG1sPgorPGhlYWQ+CisKKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7
Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKworICAgIDxwPlRoaXMgdGVzdCBj
aGVja3MgdGhhdCBhIFNFQ1VSSVRZX0VSUiBleGNlcHRpb24gaXMgcmFpc2VkIHdoaWxlIGFjY2Vz
c2luZyBkb2N1bWVudC5kb21haW4KKyAgICBpbiBhIHNhbmRib3hlZCBpZnJhbWUgKHdpdGhvdXQg
JnF1b3Q7YWxsb3ctb3JpZ2luJnF1b3Q7IHNldCkuIFRoaXMgdGVzdCB3aWxsIHByaW50CisgICAg
JnF1b3Q7UEFTUyZxdW90OyBvbiBzdWNjZXNzLjwvcD4KKworICAgIDxpZnJhbWUgc2FuZGJveD0i
YWxsb3ctc2NyaXB0cyIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJh
bWUtZG9jdW1lbnQtY29va2llLXJlYWQtZGVuaWVkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorPC9i
b2R5PgorCis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Nh
bmRib3hlZC1pZnJhbWUtbW9kaWZ5LXNlbGYtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc2FuZGJveGVkLWlmcmFtZS1tb2RpZnktc2Vs
Zi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtbW9kaWZ5LXNlbGYtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDExIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogVW5zYWZlIEph
dmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nlc3MgZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEyNy4wLjAu
MTo4MDAwL3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtbW9kaWZ5LXNlbGYuaHRtbCBmcm9tIGZy
YW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvc2Fu
ZGJveGVkLWlmcmFtZS1tb2RpZnktc2VsZi5odG1sLiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBv
cnRzIG11c3QgbWF0Y2guCisKK1RoaXMgaXMgYSAic2FuaXR5IiB0ZXN0IGNhc2UgdG8gdmVyaWZ5
IHRoYXQgYSBzYW5kYm94ZWQgZnJhbWUgY2Fubm90IGJyZWFrIG91dCBvZiBpdHMgc2FuZGJveCBi
eSBtb2RpZnlpbmcgaXRzIG93biBzYW5kYm94IGF0dHJpYnV0ZS4gVHdvIGF0dGVtcHRzIGFyZSBt
YWRlOgorCitGaXJzdCwgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIG1vZGlmeSB0aGUgc2FuZGJveCBh
dHRyaWJ1dGUgb2YgdGhlICJzZWxmIiBvYmplY3QsIHJlZmVycmluZyB0byB0aGUgZnJhbWUncyB3
aW5kb3cuIFRoaXMgc2hvdWxkIG5vdCBoYXZlIGFueSBlZmZlY3QgKHRoZSBhdHRyaWJ1dGUgaXMg
YXNzb2NpYXRlZCB3aXRoIHRoZSBpZnJhbWUgRE9NIG5vZGUsIG5vdCB0aGUgd2luZG93KS4gTm8g
d2FybmluZyBpcyBleHBlY3RlZC4KK1NlY29uZCwgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIG1vZGlm
eSB0aGUgaWZyYW1lIERPTSBvYmplY3QncyBzYW5kYm94IGF0dHJpYnV0ZS4gQSB3YXJuaW5nIG1l
c3NhZ2UgKGFib3V0IGNyb3NzLXNpdGUgc2NyaXB0aW5nKSBpcyBleHBlY3RlZCwgYW5kIHRoZSBz
YW5kYm94IGF0dHJpYnV0ZSBzaG91bGQgcmVtYWluIGludGFjdC4KK1RoaXMgdGVzdCB3aWxsIHBy
aW50ICJQQVNTIiBvbiBzdWNjZXNzLgorCitQQVNTCisKKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLW1vZGlmeS1zZWxmLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1l
LW1vZGlmeS1zZWxmLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtbW9kaWZ5LXNlbGYuaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw0MiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MID0gKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJmIikuc2FuZGJveCAhPSAiYWxsb3ctc2NyaXB0cyIpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICJGQUlMOiBzYW5kYm94IGF0dHJpYnV0
ZSBtb2RpZmllZCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDogIlBBU1MiOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+CisgICAgPHA+
VGhpcyBpcyBhICZxdW90O3Nhbml0eSZxdW90OyB0ZXN0IGNhc2UgdG8gdmVyaWZ5IHRoYXQgYSBz
YW5kYm94ZWQgCisgICAgZnJhbWUgY2Fubm90IGJyZWFrIG91dCBvZiBpdHMgc2FuZGJveCBieSBt
b2RpZnlpbmcgaXRzIG93biBzYW5kYm94CisgICAgYXR0cmlidXRlLiBUd28gYXR0ZW1wdHMgYXJl
IG1hZGU6PC9wPgorICAgIAorICAgIDxvbD4KKyAgICAgICAgPGxpPkZpcnN0LCBhbiBhdHRlbXB0
IGlzIG1hZGUgdG8gbW9kaWZ5IHRoZSBzYW5kYm94IGF0dHJpYnV0ZSBvZiB0aGUKKyAgICAgICAg
JnF1b3Q7c2VsZiZxdW90OyBvYmplY3QsIHJlZmVycmluZyB0byB0aGUgZnJhbWUncyB3aW5kb3cu
IFRoaXMgc2hvdWxkCisgICAgICAgIG5vdCBoYXZlIGFueSBlZmZlY3QgKHRoZSBhdHRyaWJ1dGUg
aXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBpZnJhbWUgRE9NCisgICAgICAgIG5vZGUsIG5vdCB0aGUg
d2luZG93KS4gTm8gd2FybmluZyBpcyBleHBlY3RlZC48L2xpPgorICAgICAgICA8bGk+U2Vjb25k
LCBhbiBhdHRlbXB0IGlzIG1hZGUgdG8gbW9kaWZ5IHRoZSBpZnJhbWUgRE9NIG9iamVjdCdzIHNh
bmRib3gKKyAgICAgICAgYXR0cmlidXRlLiBBIHdhcm5pbmcgbWVzc2FnZSAoYWJvdXQgY3Jvc3Mt
c2l0ZSBzY3JpcHRpbmcpIGlzIGV4cGVjdGVkLAorICAgICAgICBhbmQgdGhlIHNhbmRib3ggYXR0
cmlidXRlIHNob3VsZCByZW1haW4gaW50YWN0LjwvbGk+CisgICAgPC9vbD4KKyAgICAKKyAgICA8
cD5UaGlzIHRlc3Qgd2lsbCBwcmludCAmcXVvdDtQQVNTJnF1b3Q7IG9uIHN1Y2Nlc3MuPC9wPgor
CisgICAgPHAgaWQ9InJlc3VsdCI+RkFJTDwvcD4KKworICAgIDxpZnJhbWUgaWQ9ImYiCisgICAg
ICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIgorICAgICAgICAgICAgc3JjPSJyZXNvdXJj
ZXMvc2FuZGJveGVkLWlmcmFtZS1tb2RpZnktc2VsZi5odG1sIj4KKyAgICA8L2lmcmFtZT4KKzwv
Ym9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNz
LURFTklFRC1zYW5kYm94ZWQtaWZyYW1lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQtc2FuZGJveGVkLWlmcmFtZS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3hzcy1ERU5JRUQtc2FuZGJveGVkLWlmcmFtZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsOCBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFVuc2FmZSBKYXZhU2Ny
aXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9zZWN1cml0eS94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUuaHRtbCBmcm9tIGZyYW1lIHdp
dGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMveHNzLURFTklF
RC1zYW5kYm94ZWQtaWZyYW1lLWF0dGFja2VyLmh0bWwuIERvbWFpbnMsIHByb3RvY29scyBhbmQg
cG9ydHMgbXVzdCBtYXRjaC4KKworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFVuc2FmZSBKYXZh
U2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9zZWN1cml0eS94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUuaHRtbCBmcm9tIGZyYW1l
IHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMveHNzLURF
TklFRC1zYW5kYm94ZWQtaWZyYW1lLWF0dGFja2VyLmh0bWwuIERvbWFpbnMsIHByb3RvY29scyBh
bmQgcG9ydHMgbXVzdCBtYXRjaC4KKworVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgc2FuZGJveGVk
IGlmcmFtZSBwcmV2ZW50cyBjcm9zcy1kb21haW4gc2NyaXB0IGFjY2Vzcy4gSXQgd2lsbCBwcmlu
dCAiUEFTUyIgb24gc3VjY2Vzcy4KKworCitQQVNTOiBjcm9zcy1kb21haW4gc2NyaXB0IGFjY2Vz
cyBkaXNhbGxvd2VkIGZyb20gc2FuZGJveGVkIGlmcmFtZQpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQtc2FuZGJv
eGVkLWlmcmFtZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwyOSBAQAorPGh0bWw+Cis8c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKwordmFy
IGRvY1JlZiA9IHVuZGVmaW5lZDsKKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkKK3sKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCA9CisgICAgICAg
IChkb2NSZWYgPyAiRkFJTDogY3Jvc3MtZG9tYWluIHNjcmlwdCBhY2Nlc3MgYWxsb3dlZCBmcm9t
IHNhbmRib3hlZCBpZnJhbWUiCisgICAgICAgICAgICAgICAgOiAiUEFTUzogY3Jvc3MtZG9tYWlu
IHNjcmlwdCBhY2Nlc3MgZGlzYWxsb3dlZCBmcm9tIHNhbmRib3hlZCBpZnJhbWUiKTsKK30KKwor
PC9zY3JpcHQ+Cis8Ym9keT4KKworICAgIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHNhbmRi
b3hlZCBpZnJhbWUgcHJldmVudHMgY3Jvc3MtZG9tYWluCisgICAgc2NyaXB0IGFjY2Vzcy4gSXQg
d2lsbCBwcmludCAmcXVvdDtQQVNTJnF1b3Q7IG9uIHN1Y2Nlc3MuPC9wPgorCisgICAgPGlmcmFt
ZSBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIgorICAgICAgICAgICAgc3JjPSJodHRwOi8vMTI3LjAu
MC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL3hzcy1ERU5JRUQtc2FuZGJveGVkLWlmcmFtZS1h
dHRhY2tlci5odG1sIj4KKyAgICA8L2lmcmFtZT4KKyAgICAKKyAgICA8ZGl2IGlkPSJjb25zb2xl
Ij5GQUlMOiBTY3JpcHQgZGlkbid0IHJ1bjwvZGl2PgorICAgIAorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvc2FuZGJveGVk
LWlmcmFtZS1kb2N1bWVudC1jb29raWUtcmVhZC1kZW5pZWQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1l
LWRvY3VtZW50LWNvb2tpZS1yZWFkLWRlbmllZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1kb2N1
bWVudC1jb29raWUtcmVhZC1kZW5pZWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNSBA
QAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0UmVzdWx0IikuaW5uZXJIVE1MID0gKGZ1bmN0
aW9uKCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgdmFyIGNvb2tpZSA9IGRvY3VtZW50
LmNvb2tpZTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoZXJyKSB7CisgICAgICAgICAgICBp
ZiAoZXJyLm5hbWUuaW5kZXhPZigiU0VDVVJJVFlfRVJSIikgIT0gLTEpCisgICAgICAgICAgICAg
ICAgcmV0dXJuICJQQVNTIjsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiAiRkFJTDogU0VD
VVJJVFlfRVJSIG5vdCByYWlzZWQiOworICAgIH0pKCk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCk7Ij4KKyAgICA8cCBpZD0idGVzdFJlc3VsdCI+RkFJ
TDogU2NyaXB0IGRpZG4ndCBydW48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW1vZGlm
eS1zZWxmLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1tb2RpZnktc2VsZi5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvc2FuZGJveGVk
LWlmcmFtZS1tb2RpZnktc2VsZi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKworLy8gdGhpcyBhc3NpZ25tZW50IHNob3VsZCBoYXZl
IG5vIGVmZmVjdCBvbiBzYW5kYm94IHN0YXR1cworc2VsZi5zYW5kYm94ID0gJ2FsbG93LXNjcmlw
dHMgYWxsb3ctc2FtZS1vcmlnaW4gaGFja2VkLXZpYS13aW5kb3ctb2JqZWN0JzsKKworLy8gdGhp
cyBzaG91bGQgYmUgcHJldmVudGVkIGJ5IHRoZSBzYW5kYm94ICdvcmlnaW4nIGZsYWcKK2lmICh0
b3AuZG9jdW1lbnQpCisgICAgdG9wLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmJykuc2FuZGJv
eCA9ICdhbGxvdy1zY3JpcHRzIGFsbG93LXNhbWUtb3JpZ2luIGhhY2tlZC12aWEtZG9tJzsKKwor
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3Jlc291cmNlcy94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUtYXR0YWNrZXIu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291
cmNlcy94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUtYXR0YWNrZXIuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL3hzcy1ERU5J
RUQtc2FuZGJveGVkLWlmcmFtZS1hdHRhY2tlci5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDcgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorICAgIHRvcC5kb2NSZWYgPSBwYXJlbnQu
ZG9jdW1lbnQ7ICAvLyBhY2Nlc3MgcGFyZW50J3MgRE9NIHRyZWU6IHNob3VsZCBub3QgYmUgYWxs
b3dlZAorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtYWxs
b3ctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1hbGxvdy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtYWxsb3ctZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkgQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHNhbmRi
b3hlZCBpZnJhbWUgaGFzIFhtbEh0dHBSZXF1ZXN0IGFjY2VzcyB0byB0aGUgc2VydmVyIHRoYXQg
YWNjZXB0cyBhbGwgZG9tYWlucy4gSXQgd2lsbCBwcmludCAiUEFTUyIgb24gc3VjY2Vzcy4KKwor
CisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+Jwor
LS0tLS0tLS0KK1BBU1M6IFNhbmRib3hlZCBpZnJhbWUgWEhSIGFjY2VzcyBhbGxvd2VkLgorCklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9s
LXNhbmRib3hlZC1pZnJhbWUtYWxsb3cuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUt
YWxsb3cuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1hbGxvdy5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDE4IEBACis8aHRtbD4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7
Cit9CisKKzwvc2NyaXB0PgorPGJvZHk+CisgICAgPHA+VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQg
c2FuZGJveGVkIGlmcmFtZSBoYXMgWG1sSHR0cFJlcXVlc3QgYWNjZXNzCisgICAgdG8gdGhlIHNl
cnZlciB0aGF0IGFjY2VwdHMgYWxsIGRvbWFpbnMuIEl0IHdpbGwgcHJpbnQgJnF1b3Q7UEFTUyZx
dW90OyBvbiBzdWNjZXNzLjwvcD4KKyAgICAKKyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93LXNj
cmlwdHMiIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNl
cy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93LWlmcmFtZS5odG1sIiBzdHls
ZT0id2lkdGg6IDUwMHB4OyI+CisgICAgPC9pZnJhbWU+IAorICAgIAorPC9ib2R5PiAKKzwvaHRt
bD4gCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1j
b250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNh
bmRib3hlZC1pZnJhbWUtZGVuaWVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVk
LWlmcmFtZS1kZW5pZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAK
K1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHNhbmRib3hlZCBpZnJhbWUgZG9lcyBub3QgaGF2ZSBY
bWxIdHRwUmVxdWVzdCBhY2Nlc3MgdG8gaXRzIHNlcnZlci4gSXQgd2lsbCBwcmludCAiUEFTUyIg
b24gc3VjY2Vzcy4KKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0t
ZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK1BBU1M6IEV4Y2VwdGlvbiB0aHJvd24uIFNhbmRib3hl
ZCBpZnJhbWUgWEhSIGFjY2VzcyB3YXMgZGVuaWVkIGluICdzZW5kJy4gW05FVFdPUktfRVJSOiBY
TUxIdHRwUmVxdWVzdCBFeGNlcHRpb24gMTAxXS4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQt
d2l0aG91dC13aWxkY2FyZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1l
LWRlbmllZC13aXRob3V0LXdpbGRjYXJkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJv
eGVkLWlmcmFtZS1kZW5pZWQtd2l0aG91dC13aWxkY2FyZC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHNhbmRib3hlZCBp
ZnJhbWUgZG9lcyBub3QgaGF2ZSBYbWxIdHRwUmVxdWVzdCBhY2Nlc3MgdG8gaXRzIHNlcnZlciB3
aXRoICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4iIHNldCB0byBpdHMgb3duIG9yaWdpbiAo
MTI3LjAuMC4xKS4KKworVGhpcyB0ZXN0IHdpbGwgcHJpbnQgIlBBU1MiIG9uIHN1Y2Nlc3MuCisK
KworCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicK
Ky0tLS0tLS0tCitQQVNTOiBFeGNlcHRpb24gdGhyb3duLiBTYW5kYm94ZWQgaWZyYW1lIFhIUiBh
Y2Nlc3Mgd2FzIGRlbmllZCBpbiAnc2VuZCcuIFtORVRXT1JLX0VSUjogWE1MSHR0cFJlcXVlc3Qg
RXhjZXB0aW9uIDEwMV0uCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNh
cmQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNh
cmQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtd2l0aG91dC13aWxk
Y2FyZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIyIEBACis8aHRtbD4KKzxzY3JpcHQ+
CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENoaWxk
RnJhbWVzQXNUZXh0KCk7Cit9CisKKzwvc2NyaXB0PgorPGJvZHk+CisKKyAgICA8cD5UaGlzIHRl
c3QgdmVyaWZpZXMgdGhhdCBzYW5kYm94ZWQgaWZyYW1lIGRvZXMgbm90IGhhdmUgWG1sSHR0cFJl
cXVlc3QgYWNjZXNzIHRvCisgICAgaXRzIHNlcnZlciB3aXRoICJBY2Nlc3MtQ29udHJvbC1BbGxv
dy1PcmlnaW4iIHNldCB0byBpdHMgb3duIG9yaWdpbiAoMTI3LjAuMC4xKS48L3A+CisgICAgCisg
ICAgPHA+VGhpcyB0ZXN0IHdpbGwgcHJpbnQgJnF1b3Q7UEFTUyZxdW90OyBvbiBzdWNjZXNzLjwv
cD4KKworICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyIKKyAgICAgICAgICAgIHNy
Yz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3Mt
Y29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC13aXRob3V0LXdpbGRjYXJkLWlmcmFtZS5o
dG1sIiBzdHlsZT0id2lkdGg6IDUwMHB4OyI+CisgICAgPC9pZnJhbWU+CisgICAgCis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Fj
Y2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5k
Ym94ZWQtaWZyYW1lLWRlbmllZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRl
bmllZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5IEBACis8aHRtbD4gCis8c2NyaXB0
PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBDaGls
ZEZyYW1lc0FzVGV4dCgpOworfQorCis8L3NjcmlwdD4KKworPGJvZHk+IAorICAgIDxwPlRoaXMg
dGVzdCB2ZXJpZmllcyB0aGF0IHNhbmRib3hlZCBpZnJhbWUgZG9lcyBub3QgaGF2ZSBYbWxIdHRw
UmVxdWVzdCBhY2Nlc3MKKyAgICB0byBpdHMgc2VydmVyLiBJdCB3aWxsIHByaW50ICZxdW90O1BB
U1MmcXVvdDsgb24gc3VjY2Vzcy48L3A+CisgICAgCisgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxv
dy1zY3JpcHRzIgorICAgICAgICAgICAgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAveG1saHR0
cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVk
LWlmcmFtZS5odG1sIiBzdHlsZT0id2lkdGg6IDUwMHB4OyI+CisgICAgPC9pZnJhbWU+IAorPC9i
b2R5PiAKKzwvaHRtbD4gCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93LWlmcmFt
ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVl
c3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtYWxsb3ctaWZyYW1l
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93LWlmcmFt
ZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI1IEBACis8aHRtbD4gCis8Ym9keT4gCis8
cHJlIGlkPSdjb25zb2xlJz48L3ByZT4gCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+
IAorCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IChmdW5j
dGlvbigpIHsgCisgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdDsgCisgCisgICAgdHJ5
IHsgCisgICAgICAgIHhoci5vcGVuKCJHRVQiLCAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL3htbGh0
dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93
LmNnaSIsIGZhbHNlKTsgCisgICAgfSBjYXRjaChlKSB7IAorICAgICAgICByZXR1cm4gIkZBSUw6
IEV4Y2VwdGlvbiB0aHJvd24uIFNhbmRib3hlZCBpZnJhbWUgWEhSIGFjY2VzcyBpcyBub3QgYWxs
b3dlZCBpbiAnb3BlbicuIFsiICsgZS5tZXNzYWdlICsgIl0uIjsgCisgICAgfSAKKyAKKyAgICB0
cnkgeyAKKyAgICAgICAgeGhyLnNlbmQoKTsgCisgICAgfSBjYXRjaChlKSB7IAorICAgICAgICBy
ZXR1cm4gIkZBSUw6IEV4Y2VwdGlvbiB0aHJvd24uIFNhbmRib3hlZCBpZnJhbWUgWEhSIGFjY2Vz
cyBpcyBub3QgYWxsb3dlZCBpbiAnc2VuZCcuIFsiICsgZS5tZXNzYWdlICsgIl0uIjsgCisgICAg
fSAKKyAKKyAgICByZXR1cm4geGhyLnJlc3BvbnNlVGV4dDsgCit9KSgpOyAKKzwvc2NyaXB0PiAK
KzwvYm9keT4gCis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93LmNn
aQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jl
c291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93LmNnaQkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2Vz
L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtYWxsb3cuY2dpCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDggQEAKKyMhL3Vzci9iaW4vcGVybCAtd1QKK3VzZSBzdHJpY3Q7CisKK3ByaW50
ICJDb250ZW50LVR5cGU6IHRleHQvcGxhaW5cbiI7CitwcmludCAiQWNjZXNzLUNvbnRyb2wtQWxs
b3ctQ3JlZGVudGlhbHM6IHRydWVcbiI7CitwcmludCAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3Jp
Z2luOiAqXG5cbiI7CisKK3ByaW50ICJQQVNTOiBTYW5kYm94ZWQgaWZyYW1lIFhIUiBhY2Nlc3Mg
YWxsb3dlZC5cbiI7CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1l
LWFsbG93LmNnaQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQogICArICoKCkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3Mt
Y29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3Mt
Y29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC1pZnJhbWUuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vz
cy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWlmcmFtZS5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDI3IEBACis8aHRtbD4gCis8Ym9keT4gCis8cHJlIGlkPSdjb25zb2xlJz48
L3ByZT4gCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+IAorCitkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IChmdW5jdGlvbigpIHsKKyAgICB2YXIg
eGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0OyAKKyAKKyAKKyAgICB0cnkgeyAKKyAgICAgICAgeGhy
Lm9wZW4oIkdFVCIsICJodHRwOi8vMTI3LjAuMC4xOjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3Vy
Y2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLmNnaSIsIGZhbHNlKTsg
CisgICAgfSBjYXRjaChlKSB7IAorICAgICAgICByZXR1cm4gIkZBSUw6IEV4Y2VwdGlvbiB0aHJv
d24uIFNhbmRib3hlZCBpZnJhbWUgWEhSIGFjY2VzcyBpcyBub3QgYWxsb3dlZCBpbiAnb3Blbicu
IFsiICsgZS5tZXNzYWdlICsgIl0uIjsgCisgICAgfSAKKyAKKyAgICB0cnkgeyAKKyAgICAgICAg
eGhyLnNlbmQoKTsgCisgICAgfSBjYXRjaChlKSB7IAorICAgICAgICByZXR1cm4gIlBBU1M6IEV4
Y2VwdGlvbiB0aHJvd24uIFNhbmRib3hlZCBpZnJhbWUgWEhSIGFjY2VzcyB3YXMgZGVuaWVkIGlu
ICdzZW5kJy4gWyIgKyBlLm1lc3NhZ2UgKyAiXS4iOyAKKyAgICB9CisgCisgICAgcmV0dXJuIHho
ci5yZXNwb25zZVRleHQ7IAorfSkoKTsKKyAgCis8L3NjcmlwdD4gCis8L2JvZHk+IAorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMv
YWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtd2l0aG91dC13aWxkY2FyZC1p
ZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC13
aXRob3V0LXdpbGRjYXJkLWlmcmFtZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJv
eGVkLWlmcmFtZS1kZW5pZWQtd2l0aG91dC13aWxkY2FyZC1pZnJhbWUuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwyNiBAQAorPGh0bWw+Cis8Ym9keT4KKzxwcmUgaWQ9J2NvbnNvbGUnPjwv
cHJlPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCitkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IChmdW5jdGlvbigpIHsKKyAgICB2YXIgeGhy
ID0gbmV3IFhNTEh0dHBSZXF1ZXN0OworCisgICAgdHJ5IHsKKyAgICAgICAgeGhyLm9wZW4oIkdF
VCIsICJodHRwOi8vMTI3LjAuMC4xOjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vz
cy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQuY2dpIiwg
ZmFsc2UpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICByZXR1cm4gIkZBSUw6IEV4Y2VwdGlv
biB0aHJvd24uIFNhbmRib3hlZCBpZnJhbWUgWEhSIGFjY2VzcyBpcyBub3QgYWxsb3dlZCBpbiAn
b3BlbicuIFsiICsgZS5tZXNzYWdlICsgIl0uIjsKKyAgICB9CisKKyAgICB0cnkgeworICAgICAg
ICB4aHIuc2VuZCgpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICByZXR1cm4gIlBBU1M6IEV4
Y2VwdGlvbiB0aHJvd24uIFNhbmRib3hlZCBpZnJhbWUgWEhSIGFjY2VzcyB3YXMgZGVuaWVkIGlu
ICdzZW5kJy4gWyIgKyBlLm1lc3NhZ2UgKyAiXS4iOworICAgIH0KKworICAgIHJldHVybiB4aHIu
cmVzcG9uc2VUZXh0OworfSkoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3Mt
Y29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC13aXRob3V0LXdpbGRjYXJkLmNnaQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNl
cy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC13aXRob3V0LXdpbGRjYXJk
LmNnaQkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVl
c3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhv
dXQtd2lsZGNhcmQuY2dpCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAKKyMhL3Vzci9iaW4v
cGVybCAtd1QKK3VzZSBzdHJpY3Q7CisKK3ByaW50ICJDb250ZW50LVR5cGU6IHRleHQvcGxhaW5c
biI7CitwcmludCAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctQ3JlZGVudGlhbHM6IHRydWVcbiI7Citw
cmludCAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luOiBodHRwOi8vMTI3LjAuMC4xOjgwMDBc
blxuIjsKKworcHJpbnQgIkZBSUw6IFNhbmRib3hlZCBpZnJhbWUgWEhSIGFjY2VzcyBhbGxvd2Vk
LlxuIjsKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVk
LXdpdGhvdXQtd2lsZGNhcmQuY2dpCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiAg
ICsgKgoKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3Vy
Y2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLmNnaQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nl
c3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC5jZ2kJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29u
dHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC5jZ2kJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NiBAQAorIyEvdXNyL2Jpbi9wZXJsIC13VAordXNlIHN0cmljdDsKKworcHJpbnQgIkNvbnRlbnQt
VHlwZTogdGV4dC9wbGFpblxuXG4iOworCitwcmludCAiRkFJTDogU2FuZGJveGVkIGlmcmFtZSBY
SFIgYWNjZXNzIGFsbG93ZWQuXG4iOwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJv
eGVkLWlmcmFtZS1kZW5pZWQuY2dpCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiAg
ICsgKgoKSW5kZXg6IExheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2Uv
c2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2Uvc2FuZGJveGVkLWlmcmFtZS1k
ZW5pZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3RvcmFnZS9k
b21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0
IHNhbmRib3hlZCBpZnJhbWUgZG9lcyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIGxvY2FsIHN0b3Jh
Z2Ugb2YgaXRzIGNvbnRhaW5pbmcgZnJhbWUgZnJvbSB0aGUgc2FtZSBvcmlnaW4uCisKK1RoaXMg
dGVzdCB3aWxsIHByaW50ICJQQVNTIiBvbiBzdWNjZXNzLgorCisKKworLS0tLS0tLS0KK0ZyYW1l
OiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4nCistLS0tLS0tLQorUEFTUzogU2Fu
ZGJveGVkIGlmcmFtZSBkb2VzIG5vdCBoYXZlIGFjY2VzcyB0byB0aGUgbG9jYWwgc3RvcmFnZSBm
cm9tIHRoZSBzYW1lIG9yaWdpbi4KSW5kZXg6IExheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFn
ZS9sb2NhbHN0b3JhZ2Uvc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3NhbmRib3hlZC1p
ZnJhbWUtZGVuaWVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdG9yYWdlL2Rv
bXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3NhbmRib3hlZC1pZnJhbWUtZGVuaWVkLmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMzkgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorCitpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBDaGlsZEZyYW1lc0Fz
VGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKwor
d2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBpZiAoIXdpbmRvdy5sb2NhbFN0b3Jh
Z2UpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZ2dlciIpLmlubmVySFRN
TCA9ICJ3aW5kb3cubG9jYWxTdG9yYWdlIERPRVMgTk9UIGV4aXN0IjsKKyAgICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGxvY2FsU3Rv
cmFnZS5jbGVhcigpOworICAgIGxvY2FsU3RvcmFnZS5mb28gPSAiYmFyIjsKKworICAgIHZhciBp
ZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICBpZnJhbWUuc2Fu
ZGJveCA9ICJhbGxvdy1zY3JpcHRzIjsKKyAgICBpZnJhbWUuc3JjID0gInJlc291cmNlcy9zYW5k
Ym94ZWQtaWZyYW1lLWRlbmllZC1pZnJhbWUuaHRtbCI7CisgICAgZG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZChpZnJhbWUpOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxw
PlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHNhbmRib3hlZCBpZnJhbWUgZG9lcyBub3QgaGF2ZSBh
Y2Nlc3MgdG8gdGhlIGxvY2FsIHN0b3JhZ2UKKyAgICBvZiBpdHMgY29udGFpbmluZyBmcmFtZSBm
cm9tIHRoZSBzYW1lIG9yaWdpbi48L3A+CisKKyAgICA8cD5UaGlzIHRlc3Qgd2lsbCBwcmludCAm
cXVvdDtQQVNTJnF1b3Q7IG9uIHN1Y2Nlc3MuPC9wPgorCisgICAgPGRpdiBpZD0ibG9nZ2VyIj48
L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3Rv
cmFnZS9sb2NhbHN0b3JhZ2UvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWlmcmFt
ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9sb2Nh
bHN0b3JhZ2UvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWlmcmFtZS5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFn
ZS9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtaWZyYW1lLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMjAgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorCit3aW5kb3cu
b25sb2FkID0gZnVuY3Rpb24oKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2dn
ZXIiKS5pbm5lckhUTUwgPSAobG9jYWxTdG9yYWdlLmdldEl0ZW0oImZvbyIpID09ICJiYXIiKQor
ICAgICAgICA/ICJGQUlMOiBTYW5kYm94ZWQgaWZyYW1lIGhhcyBhY2Nlc3MgdG8gdGhlIGxvY2Fs
IHN0b3JhZ2UgZnJvbSB0aGUgc2FtZSBvcmlnaW4uIgorICAgICAgICA6ICJQQVNTOiBTYW5kYm94
ZWQgaWZyYW1lIGRvZXMgbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBsb2NhbCBzdG9yYWdlIGZyb20g
dGhlIHNhbWUgb3JpZ2luLiI7CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKKzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJsb2dnZXIiPjwvZGl2PgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL3Nlc3Npb25zdG9y
YWdlL3NhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2Uvc2Vzc2lvbnN0b3JhZ2Uvc2FuZGJveGVkLWlm
cmFtZS1kZW5pZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3Rv
cmFnZS9kb21zdG9yYWdlL3Nlc3Npb25zdG9yYWdlL3NhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMCBAQAorVGhpcyB0ZXN0IHZlcmlm
aWVzIHRoYXQgc2FuZGJveGVkIGlmcmFtZSBkb2VzIG5vdCBoYXZlIGFjY2VzcyB0byB0aGUgc2Vz
c2lvbiBzdG9yYWdlIG9mIGl0cyBjb250YWluaW5nIGZyYW1lIGZyb20gdGhlIHNhbWUgb3JpZ2lu
LgorCitUaGlzIHRlc3Qgd2lsbCBwcmludCAiUEFTUyIgb24gc3VjY2Vzcy4KKworCisKKy0tLS0t
LS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0K
K1BBU1M6IFNhbmRib3hlZCBpZnJhbWUgZG9lcyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIHNlc3Np
b24gc3RvcmFnZSBmcm9tIHRoZSBzYW1lIG9yaWdpbi4KSW5kZXg6IExheW91dFRlc3RzL3N0b3Jh
Z2UvZG9tc3RvcmFnZS9zZXNzaW9uc3RvcmFnZS9zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9zZXNzaW9uc3Rv
cmFnZS9zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL3Nlc3Npb25zdG9yYWdlL3NhbmRib3hlZC1pZnJhbWUt
ZGVuaWVkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzkgQEAKKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKK30KKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBpZiAo
IXdpbmRvdy5zZXNzaW9uU3RvcmFnZSkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgibG9nZ2VyIikuaW5uZXJIVE1MID0gIndpbmRvdy5zZXNzaW9uU3RvcmFnZSBET0VTIE5PVCBl
eGlzdCI7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBzZXNzaW9uU3RvcmFnZS5jbGVhcigpOworICAgIHNlc3Npb25TdG9yYWdl
LmZvbyA9ICJiYXIiOworCisgICAgdmFyIGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImlmcmFtZSIpOworICAgIGlmcmFtZS5zYW5kYm94ID0gImFsbG93LXNjcmlwdHMiOworICAgIGlm
cmFtZS5zcmMgPSAicmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWlmcmFtZS5odG1s
IjsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZSk7Cit9CisKKzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+CisgICAgPHA+VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgc2FuZGJv
eGVkIGlmcmFtZSBkb2VzIG5vdCBoYXZlIGFjY2VzcyB0byB0aGUgc2Vzc2lvbiBzdG9yYWdlCisg
ICAgb2YgaXRzIGNvbnRhaW5pbmcgZnJhbWUgZnJvbSB0aGUgc2FtZSBvcmlnaW4uPC9wPgorCisg
ICAgPHA+VGhpcyB0ZXN0IHdpbGwgcHJpbnQgJnF1b3Q7UEFTUyZxdW90OyBvbiBzdWNjZXNzLjwv
cD4KKworICAgIDxkaXYgaWQ9ImxvZ2dlciI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2Uvc2Vzc2lvbnN0b3JhZ2UvcmVzb3VyY2Vz
L3NhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWlmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9zZXNzaW9uc3RvcmFnZS9yZXNvdXJjZXMvc2FuZGJv
eGVkLWlmcmFtZS1kZW5pZWQtaWZyYW1lLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9zdG9yYWdlL2RvbXN0b3JhZ2Uvc2Vzc2lvbnN0b3JhZ2UvcmVzb3VyY2VzL3NhbmRib3hlZC1p
ZnJhbWUtZGVuaWVkLWlmcmFtZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIwIEBACis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkKK3sK
KyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nZ2VyIikuaW5uZXJIVE1MID0gKHNlc3Np
b25TdG9yYWdlLmdldEl0ZW0oImZvbyIpID09ICJiYXIiKQorICAgICAgICA/ICJGQUlMOiBTYW5k
Ym94ZWQgaWZyYW1lIGhhcyBhY2Nlc3MgdG8gdGhlIHNlc3Npb24gc3RvcmFnZSBmcm9tIHRoZSBz
YW1lIG9yaWdpbi4iCisgICAgICAgIDogIlBBU1M6IFNhbmRib3hlZCBpZnJhbWUgZG9lcyBub3Qg
aGF2ZSBhY2Nlc3MgdG8gdGhlIHNlc3Npb24gc3RvcmFnZSBmcm9tIHRoZSBzYW1lIG9yaWdpbi4i
OworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0ibG9nZ2VyIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="25068"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43431</attachid>
            <date>2009-11-18 06:01:14 -0800</date>
            <delta_ts>2009-11-19 08:53:12 -0800</delta_ts>
            <desc>Revised patch in response to comment #38 and comment #39.</desc>
            <filename>sandbox-r51076.patch</filename>
            <type>text/plain</type>
            <size>103540</size>
            <attacher name="Patrik Persson">patrik.j.persson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTExMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODggQEAKKzIwMDktMTEtMTggIFBhdHJpayBQZXJzc29uICA8cGF0cmlrLmoucGVy
c3NvbkBlcmljc3Nvbi5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wbGVtZW50IEhUTUw1IHNhbmRib3ggYXR0cmlidXRlIGZvciBpZnJhbWVz
LgorICAgICAgICBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS90ZXh0LWxldmVsLXNlbWFudGlj
cy5odG1sI2F0dHItaWZyYW1lLXNhbmRib3gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMjg4CisKKyAgICAgICAgVGVzdHM6IGZhc3QvZnJhbWVzL3Nh
bmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmcuaHRtbAorICAgICAgICAgICAgICAgZmFz
dC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1mb3Jtcy5odG1sCisgICAgICAgICAgICAgICBmYXN0
L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tYWxsb3dlZC5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50Lmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlv
bi10YXJnZXRsaW5rLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1p
ZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZnJh
bWVzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zy
YW1lcy9zYW5kYm94ZWQtaWZyYW1lLXNjcmlwdGluZy5odG1sCisgICAgICAgICAgICAgICBodHRw
L3Rlc3RzL3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtZG9jdW1lbnQtY29va2llLmh0bWwKKyAg
ICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvc2FuZGJveGVkLWlmcmFtZS1tb2RpZnkt
c2VsZi5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQt
c2FuZGJveGVkLWlmcmFtZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtYWxsb3cuaHRtbAorICAgICAg
ICAgICAgICAgaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94
ZWQtaWZyYW1lLWRlbmllZC13aXRob3V0LXdpbGRjYXJkLmh0bWwKKyAgICAgICAgICAgICAgIGh0
dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1k
ZW5pZWQuaHRtbAorICAgICAgICAgICAgICAgc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFn
ZS9zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC5odG1sCisgICAgICAgICAgICAgICBzdG9yYWdlL2Rv
bXN0b3JhZ2Uvc2Vzc2lvbnN0b3JhZ2Uvc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQuaHRtbAorCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOiBzYW5kYm94aW5nIG5h
dmlnYXRpb24KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6IHNhbmRib3hpbmcgc2NyaXB0cworICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6aXNFbmFibGVkKToKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnByb2Nlc3NIdHRwRXF1
aXYpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNvb2tpZSk6IHJhaXNlIGV4Y2VwdGlv
biB3aGVuIGFjY2Vzc2VkIGZyb20gc2FuZGJveAorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OnNldENvb2tpZSk6IHJhaXNlIGV4Y2VwdGlvbiB3aGVuIGFjY2Vzc2VkIGZyb20gc2FuZGJveAor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRleHQpOiBjb3B5IHNh
bmRib3ggc3RhdHVzIGZyb20gZnJhbWUgdG8gU2VjdXJpdHlPcmlnaW4KKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwv
SFRNTEFwcGxldEVsZW1lbnQuY3BwOiBzYW5kYm94aW5nIGFwcGxldHMKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxBcHBsZXRFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQXBwbGV0RWxlbWVudDo6cmVuZGVyV2lkZ2V0Rm9ySlNCaW5kaW5ncyk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudDo6aXNKYXZhRW5hYmxlZCk6CisgICAgICAgICog
aHRtbC9IVE1MQXBwbGV0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEF0dHJpYnV0ZU5h
bWVzLmluOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcDogbWFuYWdl
bWVudCBvZiBzYW5kYm94IGZsYWdzIGFzIHN0YXRlZCBpbiBhdHRyaWJ1dGUKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudDo6SFRNTEZyYW1lT3duZXJFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudDo6c2V0U2FuZGJveEZsYWdzKToK
KyAgICAgICAgKiBodG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50OjpzYW5kYm94RmxhZ3MpOgorICAgICAgICAqIGh0bWwv
SFRNTElGcmFtZUVsZW1lbnQuY3BwOiBzYW5kYm94IGF0dHJpYnV0ZSBwYXJzaW5nCisgICAgICAg
IChXZWJDb3JlOjpwYXJzZVNhbmRib3hBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TElGcmFtZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hU
TUxJRnJhbWVFbGVtZW50LmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpnZXRDb29r
aWVzKToKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayk6CisgICAgICAgICogbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpGcmFt
ZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6aW5pdCk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c3VibWl0Rm9ybSk6IHNhbmRib3hpbmcgZm9ybXMKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpyZXF1ZXN0T2JqZWN0KTogc2FuZGJveGluZyBw
bHVnaW5zCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c2hvdWxkQWxsb3dOYXZpZ2F0
aW9uKTogc2FuZGJveGluZyBuYXZpZ2F0aW9uCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6b3duZXJFbGVtZW50U2FuZGJveEZsYWdzQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6dXBkYXRlU2FuZGJveEZsYWdzKTogcHJvcGFnYXRpb24gb2Ygc2FuZGJveCBm
bGFncworICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnVwZGF0ZVNhbmRib3hGbGFnc0Zv
clNpbmdsZUZyYW1lKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjppc1NhbmRib3hlZCk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6c2FuZGJveEZsYWdzKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJU
eXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3Jp
Z2luLmNwcDogYWRkZWQgdW5pcXVlIG9yaWdpbiBmb3Igc2FuZGJveGVkIGZyYW1lcworICAgICAg
ICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW46OmNhblJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW46OnRvU3RyaW5nKToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luLmg6CisgICAgICAg
IChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNzRGF0YWJhc2UpOgorICAgICAgICAo
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OnNldFNhbmRib3hGbGFncyk6CisgICAgICAgIChXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbjo6aXNTYW5kYm94ZWQpOgorICAgICAgICAqIHBhZ2UvU2VjdXJp
dHlPcmlnaW5IYXNoLmg6IGFkZGVkIHVuaXF1ZSBvcmlnaW4gZm9yIHNhbmRib3hlZCBmcmFtZXMK
KyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luSGFzaDo6ZXF1YWwpOgorICAgICAgICAq
IHN0b3JhZ2UvRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
VHJhY2tlcjo6Y2FuRXN0YWJsaXNoRGF0YWJhc2UpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpk
aWRSZWNlaXZlRGF0YSk6CisKIDIwMDktMTEtMTggIEdpcmlzaCBSYW1ha3Jpc2huYW4gIDxnaXJp
c2hAZm9yd2FyZGJpYXMuaW4+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVG9yIEFybmUgVmVzdGLD
LiwKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCShyZXZp
c2lvbiA1MTA3NikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03NDQsNiArNzQ0LDEwIEBAIHN0YXRpYyBGcmFtZSogY3JlYXRl
V2luZG93KEV4ZWNTdGF0ZSogZXgKICAgICBBU1NFUlQobGV4aWNhbEZyYW1lKTsKICAgICBBU1NF
UlQoZHluYW1pY0ZyYW1lKTsKIAorICAgIC8vIFNhbmRib3hlZCBpZnJhbWVzIGNhbm5vdCBvcGVu
IG5ldyBhdXhpbGlhcnkgYnJvd3NpbmcgY29udGV4dHMuCisgICAgaWYgKGxleGljYWxGcmFtZSAm
JiBsZXhpY2FsRnJhbWUtPmxvYWRlcigpLT5pc1NhbmRib3hlZChTYW5kYm94TmF2aWdhdGlvbikp
CisgICAgICAgIHJldHVybiAwOworCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Q7CiAKICAg
ICAvLyBGb3Igd2hhdGV2ZXIgcmVhc29uLCBGaXJlZm94IHVzZXMgdGhlIGR5bmFtaWNHbG9iYWxP
YmplY3QgdG8gZGV0ZXJtaW5lCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRy
b2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5jcHAJKHJldmlzaW9uIDUxMDc2KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkyLDcgKzI5Miw3IEBAIGJvb2wgU2Ny
aXB0Q29udHJvbGxlcjo6YW55UGFnZUlzUHJvY2Vzc2kKIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6
aXNFbmFibGVkKCkKIHsKICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBtX2ZyYW1lLT5zZXR0aW5n
cygpOwotICAgIHJldHVybiBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmFsbG93SmF2YVNj
cmlwdChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+aXNKYXZhU2NyaXB0RW5hYmxlZCgpKTsKKyAgICBy
ZXR1cm4gbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5hbGxvd0phdmFTY3JpcHQoc2V0dGlu
Z3MgJiYgc2V0dGluZ3MtPmlzSmF2YVNjcmlwdEVuYWJsZWQoKSAmJiAhbV9mcmFtZS0+bG9hZGVy
KCktPmlzU2FuZGJveGVkKFNhbmRib3hTY3JpcHRzKSk7CiB9CiAKIHZvaWQgU2NyaXB0Q29udHJv
bGxlcjo6YXR0YWNoRGVidWdnZXIoSlNDOjpEZWJ1Z2dlciogZGVidWdnZXIpCkluZGV4OiBXZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCShyZXZpc2lvbiA1MTA3NikKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjE3Myw4ICsyMTczLDEwIEBAIHZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NIdHRw
RXF1aXYoY29uc3QgU3QKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UoZXF1aXYsICJzZXQtY29va2llIikpIHsKICAgICAgICAgLy8gRklYTUU6IG1ha2Ugc2V0Q29v
a2llIHdvcmsgb24gWE1MIGRvY3VtZW50cyB0b287IGUuZy4gaW4gY2FzZSBvZiA8aHRtbDptZXRh
IC4uLi4uPgotICAgICAgICBpZiAoaXNIVE1MRG9jdW1lbnQoKSkKLSAgICAgICAgICAgIHN0YXRp
Y19jYXN0PEhUTUxEb2N1bWVudCo+KHRoaXMpLT5zZXRDb29raWUoY29udGVudCk7CisgICAgICAg
IGlmIChpc0hUTUxEb2N1bWVudCgpKSB7CisgICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjOyAv
LyBFeGNlcHRpb24gKGZvciBzYW5kYm94ZWQgZG9jdW1lbnRzKSBpZ25vcmVkLgorICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4odGhpcyktPnNldENvb2tpZShjb250ZW50LCBl
Yyk7CisgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGVxdWl2LCAi
Y29udGVudC1sYW5ndWFnZSIpKQogICAgICAgICBzZXRDb250ZW50TGFuZ3VhZ2UoY29udGVudCk7
CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZXF1aXYsICJ4LWRucy1wcmVmZXRjaC1j
b250cm9sIikpCkBAIC0yOTkyLDExICsyOTk0LDIwIEBAIEVsZW1lbnQqIERvY3VtZW50Ojpvd25l
ckVsZW1lbnQoKSBjb25zdAogICAgIHJldHVybiBmcmFtZSgpLT5vd25lckVsZW1lbnQoKTsKIH0K
IAotU3RyaW5nIERvY3VtZW50Ojpjb29raWUoKSBjb25zdAorU3RyaW5nIERvY3VtZW50Ojpjb29r
aWUoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7CiAgICAgaWYgKHBhZ2UoKSAmJiAhcGFnZSgp
LT5jb29raWVFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAorICAgIC8vIEZJ
WE1FOiBUaGUgSFRNTDUgRE9NIHNwZWMgc3RhdGVzIHRoYXQgdGhpcyBhdHRyaWJ1dGUgY2FuIHJh
aXNlIGFuCisgICAgLy8gSU5WQUxJRF9TVEFURV9FUlIgZXhjZXB0aW9uIG9uIGdldHRpbmcgaWYg
dGhlIERvY3VtZW50IGhhcyBubworICAgIC8vIGJyb3dzaW5nIGNvbnRleHQuCisKKyAgICBpZiAo
c2VjdXJpdHlPcmlnaW4oKS0+aXNTYW5kYm94ZWQoU2FuZGJveE9yaWdpbikpIHsKKyAgICAgICAg
ZWMgPSBTRUNVUklUWV9FUlI7CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICB9CisKICAg
ICBLVVJMIGNvb2tpZVVSTCA9IHRoaXMtPmNvb2tpZVVSTCgpOwogICAgIGlmIChjb29raWVVUkwu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CkBAIC0zMDA0LDExICszMDE1LDIw
IEBAIFN0cmluZyBEb2N1bWVudDo6Y29va2llKCkgY29uc3QKICAgICByZXR1cm4gY29va2llcyh0
aGlzLCBjb29raWVVUkwpOwogfQogCi12b2lkIERvY3VtZW50OjpzZXRDb29raWUoY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKK3ZvaWQgRG9jdW1lbnQ6OnNldENvb2tpZShjb25zdCBTdHJpbmcmIHZhbHVl
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAocGFnZSgpICYmICFwYWdlKCktPmNvb2tp
ZUVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgLy8gRklYTUU6IFRoZSBIVE1MNSBE
T00gc3BlYyBzdGF0ZXMgdGhhdCB0aGlzIGF0dHJpYnV0ZSBjYW4gcmFpc2UgYW4KKyAgICAvLyBJ
TlZBTElEX1NUQVRFX0VSUiBleGNlcHRpb24gb24gc2V0dGluZyBpZiB0aGUgRG9jdW1lbnQgaGFz
IG5vCisgICAgLy8gYnJvd3NpbmcgY29udGV4dC4KKworICAgIGlmIChzZWN1cml0eU9yaWdpbigp
LT5pc1NhbmRib3hlZChTYW5kYm94T3JpZ2luKSkgeworICAgICAgICBlYyA9IFNFQ1VSSVRZX0VS
UjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIEtVUkwgY29va2llVVJMID0gdGhpcy0+
Y29va2llVVJMKCk7CiAgICAgaWYgKGNvb2tpZVVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTQyNTcsNiArNDI3Nyw5IEBAIHZvaWQgRG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRl
eHQoKQogICAgIG1fY29va2llVVJMID0gdXJsOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OnNldFNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKSk7CiAKKyAgICAv
LyBTZXQgc2FuZGJveCBmbGFncyBhcyBkZXRlcm1pbmVkIGJ5IHRoZSBmcmFtZS4KKyAgICBzZWN1
cml0eU9yaWdpbigpLT5zZXRTYW5kYm94RmxhZ3MobV9mcmFtZS0+bG9hZGVyKCktPnNhbmRib3hG
bGFncygpKTsKKyAKICAgICBpZiAoU2VjdXJpdHlPcmlnaW46OmFsbG93U3Vic3RpdHV0ZURhdGFB
Y2Nlc3NUb0xvY2FsKCkpIHsKICAgICAgICAgLy8gSWYgdGhpcyBkb2N1bWVudCB3YXMgbG9hZGVk
IHdpdGggc3Vic3RpdHV0ZURhdGEsIHRoZW4gdGhlIGRvY3VtZW50IGNhbgogICAgICAgICAvLyBs
b2FkIGxvY2FsIHJlc291cmNlcy4gIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY3NTYKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gNTEwNzYpCisrKyBXZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NzUsOCArNjc1LDggQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nJiwgRWxlbWVudCogdGl0bGVFbGVtZW50ID0g
MCk7CiAgICAgdm9pZCByZW1vdmVUaXRsZShFbGVtZW50KiB0aXRsZUVsZW1lbnQpOwogCi0gICAg
U3RyaW5nIGNvb2tpZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0Q29va2llKGNvbnN0IFN0cmluZyYp
OworICAgIFN0cmluZyBjb29raWUoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OworICAgIHZvaWQgc2V0
Q29va2llKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIFN0cmluZyByZWZl
cnJlcigpIGNvbnN0OwogCkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCShyZXZpc2lvbiA1MTA3NikKKysrIFdlYkNv
cmUvZG9tL0RvY3VtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTYyLDEwICsxNjIsOSBAQCBt
b2R1bGUgY29yZSB7CiAjZW5kaWYKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
ZyBVUkw7CiAKLSAgICAgICAgLy8gRklYTUU6IHRoZSBET00gc3BlYyBzdGF0ZXMgdGhhdCB0aGlz
IGF0dHJpYnV0ZSBjYW4gCi0gICAgICAgIC8vIHJhaXNlIGFuIGV4Y2VwdGlvbiBvbiBzZXR0aW5n
LgogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBE
T01TdHJpbmcgY29va2llCi0gICAgICAgICAgICAgICAgICAgICAvKnNldHRlciByYWlzZXMgKERP
TUV4Y2VwdGlvbikqLzsKKyAgICAgICAgICAgICAgICAgICAgIHNldHRlciByYWlzZXMgKERPTUV4
Y2VwdGlvbiksCisgICAgICAgICAgICAgICAgICAgICBnZXR0ZXIgcmFpc2VzIChET01FeGNlcHRp
b24pOwogCiAgICAgICAgIC8vIEZJWE1FOiB0aGUgRE9NIHNwZWMgZG9lcyBOT1QgaGF2ZSB0aGlz
IGF0dHJpYnV0ZQogICAgICAgICAvLyByYWlzaW5nIGFuIGV4Y2VwdGlvbi4KSW5kZXg6IFdlYkNv
cmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1s
L0hUTUxBcHBsZXRFbGVtZW50LmNwcAkocmV2aXNpb24gNTEwNzYpCisrKyBXZWJDb3JlL2h0bWwv
SFRNTEFwcGxldEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiTWFwcGVkQXR0cmlidXRlLmgiCiAjaW5j
bHVkZSAiUmVuZGVyQXBwbGV0LmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNs
dWRlICJTZXR0aW5ncy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMDgsOSArMTA5LDcg
QEAgYm9vbCBIVE1MQXBwbGV0RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZAogCiBSZW5kZXJPYmpl
Y3QqIEhUTUxBcHBsZXRFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRl
clN0eWxlKiBzdHlsZSkKIHsKLSAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudCgpLT5z
ZXR0aW5ncygpOwotCi0gICAgaWYgKHNldHRpbmdzICYmIHNldHRpbmdzLT5pc0phdmFFbmFibGVk
KCkpIHsKKyAgICBpZiAoaXNKYXZhRW5hYmxlZCgpKSB7CiAgICAgICAgIEhhc2hNYXA8U3RyaW5n
LCBTdHJpbmc+IGFyZ3M7CiAKICAgICAgICAgYXJncy5zZXQoImNvZGUiLCBnZXRBdHRyaWJ1dGUo
Y29kZUF0dHIpKTsKQEAgLTE0Miw4ICsxNDEsNyBAQCBSZW5kZXJPYmplY3QqIEhUTUxBcHBsZXRF
bGVtZW50OjpjcmVhdGVSCiAKIFJlbmRlcldpZGdldCogSFRNTEFwcGxldEVsZW1lbnQ6OnJlbmRl
cldpZGdldEZvckpTQmluZGluZ3MoKSBjb25zdAogewotICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9
IGRvY3VtZW50KCktPnNldHRpbmdzKCk7Ci0gICAgaWYgKCFzZXR0aW5ncyB8fCAhc2V0dGluZ3Mt
PmlzSmF2YUVuYWJsZWQoKSkKKyAgICBpZiAoIWlzSmF2YUVuYWJsZWQoKSkKICAgICAgICAgcmV0
dXJuIDA7CiAKICAgICBSZW5kZXJBcHBsZXQqIGFwcGxldCA9IHRvUmVuZGVyQXBwbGV0KHJlbmRl
cmVyKCkpOwpAQCAtMTUzLDYgKzE1MSwxNSBAQCBSZW5kZXJXaWRnZXQqIEhUTUxBcHBsZXRFbGVt
ZW50OjpyZW5kZXJXCiAgICAgcmV0dXJuIGFwcGxldDsKIH0KIAorYm9vbCBIVE1MQXBwbGV0RWxl
bWVudDo6aXNKYXZhRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgaWYgKGRvY3VtZW50KCktPnNlY3Vy
aXR5T3JpZ2luKCktPmlzU2FuZGJveGVkKFNhbmRib3hQbHVnaW5zKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZG9jdW1lbnQoKS0+c2V0dGluZ3Mo
KTsKKyAgICByZXR1cm4gc2V0dGluZ3MgJiYgc2V0dGluZ3MtPmlzSmF2YUVuYWJsZWQoKTsKK30K
Kwogdm9pZCBIVE1MQXBwbGV0RWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkKIHsKICAg
ICAvLyBUaGUgcGFyc2VyIGp1c3QgcmVhY2hlZCA8L2FwcGxldD4sIHNvIGFsbCB0aGUgcGFyYW1z
IGFyZSBhdmFpbGFibGUgbm93LgpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmgJKHJldmlz
aW9uIDUxMDc2KQorKysgV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUxLDYgKzUxLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFJlbmRlcldpZGdl
dCogcmVuZGVyV2lkZ2V0Rm9ySlNCaW5kaW5ncygpIGNvbnN0OwogCiAgICAgdm9pZCBzZXR1cEFw
cGxldCgpIGNvbnN0OworICAgIGJvb2wgaXNKYXZhRW5hYmxlZCgpIGNvbnN0OwogCiAgICAgdmly
dHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92
ZWRGcm9tRG9jdW1lbnQoKTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMu
aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgkocmV2
aXNpb24gNTEwNzYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMjAsNiArMjIwLDcgQEAgcm9sZQogcm93cwogcm93c3BhbgogcnVsZXMK
K3NhbmRib3gKIHNjaGVtZQogc2NvcGUKIHNjcm9sbGFtb3VudApJbmRleDogV2ViQ29yZS9odG1s
L0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hU
TUxGcmFtZU93bmVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDUxMDc2KQorKysgV2ViQ29yZS9odG1s
L0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogSFRNTEZyYW1lT3duZXJFbGVtZW50OjpIVE1MRnJhbWVP
d25lckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3Vt
ZW50KQogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIENyZWF0ZUVsZW1lbnQp
CiAgICAgLCBtX2NvbnRlbnRGcmFtZSgwKQorICAgICwgbV9zYW5kYm94RmxhZ3MoU2FuZGJveE5v
bmUpCiB7CiB9CiAKQEAgLTY0LDYgKzY1LDE3IEBAIERPTVdpbmRvdyogSFRNTEZyYW1lT3duZXJF
bGVtZW50Ojpjb250ZW4KICAgICByZXR1cm4gbV9jb250ZW50RnJhbWUgPyBtX2NvbnRlbnRGcmFt
ZS0+ZG9tV2luZG93KCkgOiAwOwogfQogCit2b2lkIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6c2V0
U2FuZGJveEZsYWdzKFNhbmRib3hGbGFncyBmbGFncykKK3sKKyAgICBpZiAobV9zYW5kYm94Rmxh
Z3MgPT0gZmxhZ3MpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc2FuZGJveEZsYWdzID0gZmxh
Z3M7CisgICAgCisgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGNvbnRlbnRGcmFtZSgpKQorICAgICAg
ICBmcmFtZS0+bG9hZGVyKCktPm93bmVyRWxlbWVudFNhbmRib3hGbGFnc0NoYW5nZWQoKTsKK30K
KwogI2lmIEVOQUJMRShTVkcpCiBTVkdEb2N1bWVudCogSFRNTEZyYW1lT3duZXJFbGVtZW50Ojpn
ZXRTVkdEb2N1bWVudChFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsKSW5kZXg6IFdlYkNvcmUv
aHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
SFRNTEZyYW1lT3duZXJFbGVtZW50LmgJKHJldmlzaW9uIDUxMDc2KQorKysgV2ViQ29yZS9odG1s
L0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBA
CiAjaWZuZGVmIEhUTUxGcmFtZU93bmVyRWxlbWVudF9oCiAjZGVmaW5lIEhUTUxGcmFtZU93bmVy
RWxlbWVudF9oCiAKKyNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiSFRN
TEVsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDYsOSArNDcsMTMgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCBTY3JvbGxiYXJNb2RlIHNjcm9sbGluZ01vZGUoKSBjb25zdCB7
IHJldHVybiBTY3JvbGxiYXJBdXRvOyB9CiAKKyAgICBTYW5kYm94RmxhZ3Mgc2FuZGJveEZsYWdz
KCkgY29uc3QgeyByZXR1cm4gbV9zYW5kYm94RmxhZ3M7IH0KKyAgICAKIHByb3RlY3RlZDoKICAg
ICBIVE1MRnJhbWVPd25lckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqKTsKIAorICAgIHZvaWQgc2V0U2FuZGJveEZsYWdzKFNhbmRib3hGbGFncyk7CisgICAg
CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBGcmFtZTsKIApAQCAtNTgsNiArNjMsNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVtb3ZlKCk7CiAKICAgICBGcmFtZSogbV9j
b250ZW50RnJhbWU7CisgICAgU2FuZGJveEZsYWdzIG1fc2FuZGJveEZsYWdzOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCShy
ZXZpc2lvbiA1MTA3NikKKysrIFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQsNiArNCw3IEBACiAgKiAgICAgICAgICAgKEMpIDIwMDAgU2ltb24g
SGF1c21hbm4gKGhhdXNtYW5uQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBN
dWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYsIDIw
MDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA5IEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCkBAIC02Niw2ICs2Nyw0MiBAQCBib29sIEhUTUxJRnJhbWVFbGVtZW50OjptYXBUb0VudHJ5
KGNvbnN0CiAgICAgcmV0dXJuIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjptYXBUb0VudHJ5KGF0dHJO
YW1lLCByZXN1bHQpOwogfQogCitzdGF0aWMgU2FuZGJveEZsYWdzIHBhcnNlU2FuZGJveEF0dHJp
YnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHJpYnV0ZSkKK3sKKyAgICBTYW5kYm94RmxhZ3MgZmxh
Z3M7CisgICAgLy8gUGFyc2UgdGhlIHVub3JkZXJlZCBzZXQgb2YgdW5pcXVlIHNwYWNlLXNlcGFy
YXRlZCB0b2tlbnMuCisgICAgaWYgKGF0dHJpYnV0ZS0+aXNOdWxsKCkpCisgICAgICAgIGZsYWdz
ID0gU2FuZGJveE5vbmU7CisgICAgZWxzZSB7CisgICAgICAgIGZsYWdzID0gU2FuZGJveEFsbDsK
KyAgICAgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSBhdHRyaWJ1dGUtPnZhbHVlKCkuY2hh
cmFjdGVycygpOworICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBhdHRyaWJ1dGUtPnZhbHVlKCku
bGVuZ3RoKCk7CisgICAgICAgIHVuc2lnbmVkIHN0YXJ0ID0gMDsKKyAgICAgICAgd2hpbGUgKHRy
dWUpIHsKKyAgICAgICAgICAgIHdoaWxlIChzdGFydCA8IGxlbmd0aCAmJiBpc0FTQ0lJU3BhY2Uo
Y2hhcmFjdGVyc1tzdGFydF0pKQorICAgICAgICAgICAgICAgICsrc3RhcnQ7CisgICAgICAgICAg
ICBpZiAoc3RhcnQgPj0gbGVuZ3RoKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgdW5zaWduZWQgZW5kID0gc3RhcnQgKyAxOworICAgICAgICAgICAgd2hpbGUgKGVuZCA8IGxl
bmd0aCAmJiAhaXNBU0NJSVNwYWNlKGNoYXJhY3RlcnNbZW5kXSkpCisgICAgICAgICAgICAgICAg
KytlbmQ7CisKKyAgICAgICAgICAgIC8vIFR1cm4gb2ZmIHRoZSBjb3JyZXNwb25kaW5nIHNhbmRi
b3ggZmxhZyBpZiBpdCdzIHNldCBhcyAiYWxsb3dlZCIuCisgICAgICAgICAgICBTdHJpbmcgc2Fu
ZGJveFRva2VuID0gU3RyaW5nKGNoYXJhY3RlcnMgKyBzdGFydCwgZW5kIC0gc3RhcnQpOworICAg
ICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHNhbmRib3hUb2tlbiwgImFsbG93LXNhbWUt
b3JpZ2luIikpCisgICAgICAgICAgICAgICAgZmxhZ3MgJj0gflNhbmRib3hPcmlnaW47CisgICAg
ICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShzYW5kYm94VG9rZW4sICJhbGxvdy1m
b3JtcyIpKQorICAgICAgICAgICAgICAgIGZsYWdzICY9IH5TYW5kYm94Rm9ybXM7CisgICAgICAg
ICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShzYW5kYm94VG9rZW4sICJhbGxvdy1zY3Jp
cHRzIikpCisgICAgICAgICAgICAgICAgZmxhZ3MgJj0gflNhbmRib3hTY3JpcHRzOworCisgICAg
ICAgICAgICBzdGFydCA9IGVuZCArIDE7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0
dXJuIGZsYWdzOworfQorCiB2b2lkIEhUTUxJRnJhbWVFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJp
YnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSB3
aWR0aEF0dHIpCkBAIC04OCw3ICsxMjUsOSBAQCB2b2lkIEhUTUxJRnJhbWVFbGVtZW50OjpwYXJz
ZU1hcHBlZEF0dHJpCiAgICAgICAgIGlmICghYXR0ci0+aXNOdWxsKCkgJiYgIWF0dHItPnZhbHVl
KCkudG9JbnQoKSkKICAgICAgICAgICAgIC8vIEFkZCBhIHJ1bGUgdGhhdCBudWxscyBvdXQgb3Vy
IGJvcmRlciB3aWR0aC4KICAgICAgICAgICAgIGFkZENTU0xlbmd0aChhdHRyLCBDU1NQcm9wZXJ0
eUJvcmRlcldpZHRoLCAiMCIpOwotICAgIH0gZWxzZQorICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpID09IHNhbmRib3hBdHRyKQorICAgICAgICBzZXRTYW5kYm94RmxhZ3MocGFyc2VTYW5kYm94
QXR0cmlidXRlKGF0dHIpKTsKKyAgICBlbHNlCiAgICAgICAgIEhUTUxGcmFtZUVsZW1lbnRCYXNl
OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIApJbmRleDogV2ViQ29yZS9odG1sL0hU
TUxJRnJhbWVFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTElGcmFt
ZUVsZW1lbnQuaWRsCShyZXZpc2lvbiA1MTA3NikKKysrIFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1l
RWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAgbW9kdWxlIGh0bWwg
ewogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nLCBS
ZWZsZWN0PW1hcmdpbmhlaWdodF0gRE9NU3RyaW5nICAgICAgIG1hcmdpbkhlaWdodDsKICAgICAg
ICAgICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZywgUmVmbGVjdD1t
YXJnaW53aWR0aF0gRE9NU3RyaW5nICAgICAgIG1hcmdpbldpZHRoOwogICAgICAgICAgICAgICAg
ICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nLCBSZWZsZWN0XSBET01TdHJpbmcg
ICAgICAgbmFtZTsKKyAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVs
bFN0cmluZywgUmVmbGVjdF0gRE9NU3RyaW5nICAgICAgIHNhbmRib3g7CiAgICAgICAgICAgICAg
ICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmcsIFJlZmxlY3RdIERPTVN0cmlu
ZyAgICAgICBzY3JvbGxpbmc7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51
bGxUb051bGxTdHJpbmcsIEN1c3RvbVNldHRlciwgUmVmbGVjdF0gRE9NU3RyaW5nICAgICAgIHNy
YzsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZywg
UmVmbGVjdF0gRE9NU3RyaW5nICAgICAgIHdpZHRoOwpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDUxMDc2KQorKysgV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMDIsMTAg
KzEyMDIsMTQgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpnZXRDb29raWVzKGxvbgogICAg
ICAgICAgICAgVmVjdG9yPENvb2tpZT4gZG9jQ29va2llc0xpc3Q7CiAgICAgICAgICAgICByYXdD
b29raWVzSW1wbGVtZW50ZWQgPSBnZXRSYXdDb29raWVzKGRvY3VtZW50LCBkb2N1bWVudC0+Y29v
a2llVVJMKCksIGRvY0Nvb2tpZXNMaXN0KTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYg
KCFyYXdDb29raWVzSW1wbGVtZW50ZWQpCisgICAgICAgICAgICBpZiAoIXJhd0Nvb2tpZXNJbXBs
ZW1lbnRlZCkgewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIGR1cGxpY2F0aW9u
IGNoZWNraW5nIGZvciB0aGUgU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGNvb2tpZXMuCi0gICAg
ICAgICAgICAgICAgc3RyaW5nQ29va2llc0xpc3QgKz0gZG9jdW1lbnQtPmNvb2tpZSgpOwotICAg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Cisg
ICAgICAgICAgICAgICAgc3RyaW5nQ29va2llc0xpc3QgKz0gZG9jdW1lbnQtPmNvb2tpZShlYyk7
CisgICAgICAgICAgICAgICAgLy8gRXhjZXB0aW9ucyBhcmUgdGhyb3duIGJ5IGNvb2tpZSgpIGlu
IHNhbmRib3hlZCBmcmFtZXMuIFRoYXQgd29uJ3QgaGFwcGVuIGhlcmUKKyAgICAgICAgICAgICAg
ICAvLyBiZWNhdXNlICJkb2N1bWVudCIgaXMgdGhlIGRvY3VtZW50IG9mIHRoZSBtYWluIGZyYW1l
IG9mIHRoZSBwYWdlLgorICAgICAgICAgICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICBpbnQgY29va2llc1NpemUgPSBkb2NDb29raWVzTGlz
dC5zaXplKCk7CiAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb29raWVzU2l6
ZTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghcmF3Q29va2llc0xpc3QuY29udGFp
bnMoZG9jQ29va2llc0xpc3RbaV0pKQpJbmRleDogV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdp
bkFjY2Vzc0NvbnRyb2wuY3BwCShyZXZpc2lvbiA1MTA3NikKKysrIFdlYkNvcmUvbG9hZGVyL0Ny
b3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw2ICsxMDAs
MTAgQEAgYm9vbCBwYXNzZXNBY2Nlc3NDb250cm9sQ2hlY2soY29uc3QgUmVzbwogICAgIGlmIChh
Y2Nlc3NDb250cm9sT3JpZ2luU3RyaW5nID09ICIqIiAmJiAhaW5jbHVkZUNyZWRlbnRpYWxzKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAorICAgIC8vIEEgc2FuZGJveGVkIGZyYW1lIGhhcyBhIHVu
aXF1ZSBvcmlnaW4gKGZvciBzYW1lLW9yaWdpbiBwdXJwb3NlcykuCisgICAgaWYgKHNlY3VyaXR5
T3JpZ2luLT5pc1NhbmRib3hlZChTYW5kYm94T3JpZ2luKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBhY2Nlc3NDb250cm9sT3JpZ2luID0gU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoYWNjZXNzQ29udHJvbE9yaWdpblN0cmluZyk7
CiAgICAgaWYgKCFhY2Nlc3NDb250cm9sT3JpZ2luLT5pc1NhbWVTY2hlbWVIb3N0UG9ydChzZWN1
cml0eU9yaWdpbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAJKHJldmlzaW9uIDUxMDc2KQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsNiArMTk2LDcgQEAgRnJhbWVMb2FkZXI6OkZyYW1lTG9h
ZGVyKEZyYW1lKiBmcmFtZSwgRgogICAgICwgbV9kaWRQZXJmb3JtRmlyc3ROYXZpZ2F0aW9uKGZh
bHNlKQogICAgICwgbV9sb2FkaW5nRnJvbUNhY2hlZFBhZ2UoZmFsc2UpCiAgICAgLCBtX3N1cHBy
ZXNzT3BlbmVySW5OZXdGcmFtZShmYWxzZSkKKyAgICAsIG1fc2FuZGJveEZsYWdzKFNhbmRib3hO
b25lKQogI2lmbmRlZiBOREVCVUcKICAgICAsIG1fZGlkRGlzcGF0Y2hEaWRDb21taXRMb2FkKGZh
bHNlKQogI2VuZGlmCkBAIC0yMjgsNiArMjI5LDkgQEAgdm9pZCBGcmFtZUxvYWRlcjo6aW5pdCgp
CiAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y2FuY2VsUGFyc2luZygpOwogICAgIG1fY3JlYXRp
bmdJbml0aWFsRW1wdHlEb2N1bWVudCA9IGZhbHNlOwogICAgIG1fZGlkQ2FsbEltcGxpY2l0Q2xv
c2UgPSB0cnVlOworCisgICAgLy8gUHJvcGFnYXRlIHNhbmRib3ggYXR0cmlidXRlcyB0byB0aGlz
IEZyYW1lbG9hZGVyIGFuZCBpdHMgZGVzY2VuZGFudHMuCisgICAgdXBkYXRlU2FuZGJveEZsYWdz
KCk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OnNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlcnMp
CkBAIC00MzgsNiArNDQyLDkgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c3VibWl0Rm9ybShjb25zdCBj
aGFyKgogICAgIGlmICh1LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKGlz
U2FuZGJveGVkKFNhbmRib3hGb3JtcykpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChwcm90
b2NvbElzSmF2YVNjcmlwdCh1KSkgewogICAgICAgICBtX2lzRXhlY3V0aW5nSmF2YVNjcmlwdEZv
cm1BY3Rpb24gPSB0cnVlOwogICAgICAgICBtX2ZyYW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZUlmSmF2
YVNjcmlwdFVSTCh1LCBmYWxzZSwgZmFsc2UpOwpAQCAtMTI1NSw2ICsxMjYyLDggQEAgYm9vbCBG
cmFtZUxvYWRlcjo6cmVxdWVzdE9iamVjdChSZW5kZXJQYQogICAgICAgICBpZiAoIXNldHRpbmdz
IHx8ICFzZXR0aW5ncy0+YXJlUGx1Z2luc0VuYWJsZWQoKSB8fCAKICAgICAgICAgICAgICghc2V0
dGluZ3MtPmlzSmF2YUVuYWJsZWQoKSAmJiBNSU1FVHlwZVJlZ2lzdHJ5Ojppc0phdmFBcHBsZXRN
SU1FVHlwZShtaW1lVHlwZSkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBp
ZiAoaXNTYW5kYm94ZWQoU2FuZGJveFBsdWdpbnMpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICByZXR1cm4gbG9hZFBsdWdpbihyZW5kZXJlciwgY29tcGxldGVkVVJMLCBtaW1l
VHlwZSwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMsIHVzZUZhbGxiYWNrKTsKICAgICB9CiAKQEAg
LTIxOTcsNiArMjIwNiwxMCBAQCBib29sIEZyYW1lTG9hZGVyOjpzaG91bGRBbGxvd05hdmlnYXRp
b24oCiAgICAgaWYgKG1fZnJhbWUgPT0gdGFyZ2V0RnJhbWUpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCisgICAgLy8gQSBzYW5kYm94ZWQgZnJhbWUgY2FuIG9ubHkgbmF2aWdhdGUgaXRzZWxmIGFu
ZCBpdHMgZGVzY2VuZGFudHMuCisgICAgaWYgKGlzU2FuZGJveGVkKFNhbmRib3hOYXZpZ2F0aW9u
KSAmJiAhdGFyZ2V0RnJhbWUtPnRyZWUoKS0+aXNEZXNjZW5kYW50T2YobV9mcmFtZSkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKwogICAgIC8vIExldCBhIGZyYW1lIG5hdmlnYXRlIHRoZSB0b3At
bGV2ZWwgd2luZG93IHRoYXQgY29udGFpbnMgaXQuICBUaGlzIGlzCiAgICAgLy8gaW1wb3J0YW50
IHRvIGFsbG93IGJlY2F1c2UgaXQgbGV0cyBhIHNpdGUgImZyYW1lLWJ1c3QiIChlc2NhcGUgZnJv
bSBhCiAgICAgLy8gZnJhbWUgY3JlYXRlZCBieSBhbm90aGVyIHdlYiBzaXRlKS4KQEAgLTM4OTks
NiArMzkxMiwzNSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENsZWFyV2luZG93CiAj
ZW5kaWYKIH0KIAordm9pZCBGcmFtZUxvYWRlcjo6b3duZXJFbGVtZW50U2FuZGJveEZsYWdzQ2hh
bmdlZCgpCit7CisgICAgdXBkYXRlU2FuZGJveEZsYWdzKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2Fk
ZXI6OnVwZGF0ZVNhbmRib3hGbGFncygpCit7CisgICAgdXBkYXRlU2FuZGJveEZsYWdzRm9yU2lu
Z2xlRnJhbWUoKTsKKworICAgIGZvciAoRnJhbWUqIGFmZmVjdGVkRnJhbWUgPSBtX2ZyYW1lOyBh
ZmZlY3RlZEZyYW1lOyBhZmZlY3RlZEZyYW1lID0gYWZmZWN0ZWRGcmFtZS0+dHJlZSgpLT50cmF2
ZXJzZU5leHQobV9mcmFtZSkpCisgICAgICAgIGFmZmVjdGVkRnJhbWUtPmxvYWRlcigpLT51cGRh
dGVTYW5kYm94RmxhZ3NGb3JTaW5nbGVGcmFtZSgpOworfQorCit2b2lkIEZyYW1lTG9hZGVyOjp1
cGRhdGVTYW5kYm94RmxhZ3NGb3JTaW5nbGVGcmFtZSgpCit7CisgICAgU2FuZGJveEZsYWdzIGZs
YWdzID0gU2FuZGJveE5vbmU7CisgICAgaWYgKEZyYW1lKiBwYXJlbnRGcmFtZSA9IG1fZnJhbWUt
PnRyZWUoKS0+cGFyZW50KCkpCisgICAgICAgIGZsYWdzIHw9IHBhcmVudEZyYW1lLT5sb2FkZXIo
KS0+c2FuZGJveEZsYWdzKCk7CisgICAgaWYgKEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJF
bGVtZW50ID0gbV9mcmFtZS0+b3duZXJFbGVtZW50KCkpCisgICAgICAgIGZsYWdzIHw9IG93bmVy
RWxlbWVudC0+c2FuZGJveEZsYWdzKCk7CisKKyAgICBpZiAobV9zYW5kYm94RmxhZ3MgPT0gZmxh
Z3MpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc2FuZGJveEZsYWdzID0gZmxhZ3M7CisKKyAg
ICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5zZXRTYW5kYm94RmxhZ3Mo
bV9zYW5kYm94RmxhZ3MpOworfQorCiBQYXNzUmVmUHRyPFdpZGdldD4gRnJhbWVMb2FkZXI6OmNy
ZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYgc2l6ZSwgSFRNTEFwcGxldEVsZW1l
bnQqIGVsZW1lbnQsIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBhcmdzKQogewogICAg
IFN0cmluZyBiYXNlVVJMU3RyaW5nOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCShyZXZpc2lvbiA1
MTA3NikKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI1MSw2ICsyNTEsMTEgQEAgcHVibGljOgogICAgIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRv
d09iamVjdHNJbkFsbFdvcmxkcygpOwogICAgIHZvaWQgZGlzcGF0Y2hEb2N1bWVudEVsZW1lbnRB
dmFpbGFibGUoKTsKIAorICAgIHZvaWQgb3duZXJFbGVtZW50U2FuZGJveEZsYWdzQ2hhbmdlZCgp
OworICAgIAorICAgIGJvb2wgaXNTYW5kYm94ZWQoU2FuZGJveEZsYWdzIG1hc2spIGNvbnN0IHsg
cmV0dXJuIG1fc2FuZGJveEZsYWdzICYgbWFzazsgfQorICAgIFNhbmRib3hGbGFncyBzYW5kYm94
RmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX3NhbmRib3hGbGFnczsgfQorCiAgICAgLy8gTWl4ZWQg
Y29udGVudCByZWxhdGVkIGZ1bmN0aW9ucy4KICAgICBzdGF0aWMgYm9vbCBpc01peGVkQ29udGVu
dChTZWN1cml0eU9yaWdpbiogY29udGV4dCwgY29uc3QgS1VSTCYpOwogICAgIHZvaWQgY2hlY2tJ
ZkRpc3BsYXlJbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIGNvbnRleHQsIGNvbnN0IEtV
UkwmKTsKQEAgLTQzNSw2ICs0NDAsOSBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBzaG91bGRUcmVh
dFVSTEFzU2FtZUFzQ3VycmVudChjb25zdCBLVVJMJikgY29uc3Q7CiAKKyAgICB2b2lkIHVwZGF0
ZVNhbmRib3hGbGFncygpOworICAgIHZvaWQgdXBkYXRlU2FuZGJveEZsYWdzRm9yU2luZ2xlRnJh
bWUoKTsKKyAgICAKICAgICBGcmFtZSogbV9mcmFtZTsKICAgICBGcmFtZUxvYWRlckNsaWVudCog
bV9jbGllbnQ7CiAKQEAgLTUwNiw2ICs1MTQsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9sb2Fk
aW5nRnJvbUNhY2hlZFBhZ2U7CiAgICAgYm9vbCBtX3N1cHByZXNzT3BlbmVySW5OZXdGcmFtZTsK
ICAgICAKKyAgICBTYW5kYm94RmxhZ3MgbV9zYW5kYm94RmxhZ3M7CisKICNpZm5kZWYgTkRFQlVH
CiAgICAgYm9vbCBtX2RpZERpc3BhdGNoRGlkQ29tbWl0TG9hZDsKICNlbmRpZgpJbmRleDogV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAkocmV2aXNpb24gNTEwNzYpCisrKyBXZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlclR5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTkyLDYgKzkyLDE4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU2VuZFJlZmVycmVyLAogICAgICAgICBOb1JlZmVy
cmVyCiAgICAgfTsKKyAgICAKKyAgICBlbnVtIFNhbmRib3hGbGFnIHsKKyAgICAgICAgU2FuZGJv
eE5vbmUgPSAwLAorICAgICAgICBTYW5kYm94TmF2aWdhdGlvbiA9IDEsCisgICAgICAgIFNhbmRi
b3hQbHVnaW5zID0gMSA8PCAxLAorICAgICAgICBTYW5kYm94T3JpZ2luID0gMSA8PCAyLAorICAg
ICAgICBTYW5kYm94Rm9ybXMgPSAxIDw8IDMsCisgICAgICAgIFNhbmRib3hTY3JpcHRzID0gMSA8
PCA0LAorICAgICAgICBTYW5kYm94QWxsID0gLTEgLy8gTWFzayB3aXRoIGFsbCBiaXRzIHNldCB0
byAxLgorICAgIH07CisKKyAgICB0eXBlZGVmIHVuc2lnbmVkIFNhbmRib3hGbGFnczsKIH0KIAog
I2VuZGlmCkluZGV4OiBXZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAJKHJldmlzaW9uIDUxMDc2KQorKysg
V2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsNiAr
OTUsNyBAQCBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgS1VSCiAgICAgOiBt
X3Byb3RvY29sKHVybC5wcm90b2NvbCgpLmlzTnVsbCgpID8gIiIgOiB1cmwucHJvdG9jb2woKS5s
b3dlcigpKQogICAgICwgbV9ob3N0KHVybC5ob3N0KCkuaXNOdWxsKCkgPyAiIiA6IHVybC5ob3N0
KCkubG93ZXIoKSkKICAgICAsIG1fcG9ydCh1cmwucG9ydCgpKQorICAgICwgbV9zYW5kYm94Rmxh
Z3MoU2FuZGJveE5vbmUpCiAgICAgLCBtX25vQWNjZXNzKGZhbHNlKQogICAgICwgbV91bml2ZXJz
YWxBY2Nlc3MoZmFsc2UpCiAgICAgLCBtX2RvbWFpbldhc1NldEluRE9NKGZhbHNlKQpAQCAtMTIy
LDYgKzEyMyw3IEBAIFNlY3VyaXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbihjb25zdCBTZWMKICAg
ICAsIG1faG9zdChvdGhlci0+bV9ob3N0LnRocmVhZHNhZmVDb3B5KCkpCiAgICAgLCBtX2RvbWFp
bihvdGhlci0+bV9kb21haW4udGhyZWFkc2FmZUNvcHkoKSkKICAgICAsIG1fcG9ydChvdGhlci0+
bV9wb3J0KQorICAgICwgbV9zYW5kYm94RmxhZ3Mob3RoZXItPm1fc2FuZGJveEZsYWdzKQogICAg
ICwgbV9ub0FjY2VzcyhvdGhlci0+bV9ub0FjY2VzcykKICAgICAsIG1fdW5pdmVyc2FsQWNjZXNz
KG90aGVyLT5tX3VuaXZlcnNhbEFjY2VzcykKICAgICAsIG1fZG9tYWluV2FzU2V0SW5ET00ob3Ro
ZXItPm1fZG9tYWluV2FzU2V0SW5ET00pCkBAIC0xNjIsNyArMTY0LDcgQEAgYm9vbCBTZWN1cml0
eU9yaWdpbjo6Y2FuQWNjZXNzKGNvbnN0IFNlYwogICAgIGlmIChtX3VuaXZlcnNhbEFjY2VzcykK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAobV9ub0FjY2VzcyB8fCBvdGhlci0+bV9u
b0FjY2VzcykKKyAgICBpZiAobV9ub0FjY2VzcyB8fCBvdGhlci0+bV9ub0FjY2VzcyB8fCBpc1Nh
bmRib3hlZChTYW5kYm94T3JpZ2luKSB8fCBvdGhlci0+aXNTYW5kYm94ZWQoU2FuZGJveE9yaWdp
bikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIEhlcmUgYXJlIHR3byBjYXNlcyB3
aGVyZSB3ZSBzaG91bGQgcGVybWl0IGFjY2VzczoKQEAgLTIwMyw3ICsyMDUsNyBAQCBib29sIFNl
Y3VyaXR5T3JpZ2luOjpjYW5SZXF1ZXN0KGNvbnN0IEtVCiAgICAgaWYgKG1fdW5pdmVyc2FsQWNj
ZXNzKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChtX25vQWNjZXNzKQorICAgIGlm
IChtX25vQWNjZXNzIHx8IGlzU2FuZGJveGVkKFNhbmRib3hPcmlnaW4pKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRhcmdldE9yaWdpbiA9IFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKTsKQEAgLTI4OSw3ICsyOTEsNyBAQCBTdHJpbmcgU2Vj
dXJpdHlPcmlnaW46OnRvU3RyaW5nKCkgY29uc3QKICAgICBpZiAoaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gIm51bGwiOwogCi0gICAgaWYgKG1fbm9BY2Nlc3MpCisgICAgaWYgKG1fbm9BY2Nl
c3MgfHwgaXNTYW5kYm94ZWQoU2FuZGJveE9yaWdpbikpCiAgICAgICAgIHJldHVybiAibnVsbCI7
CiAKICAgICBpZiAobV9wcm90b2NvbCA9PSAiZmlsZSIpCkluZGV4OiBXZWJDb3JlL3BhZ2UvU2Vj
dXJpdHlPcmlnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4u
aAkocmV2aXNpb24gNTEwNzYpCisrKyBXZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAkod29y
a2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCisjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBl
cy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU3RyaW5nSGFzaC5o
IgogCkBAIC04Miw2ICs4Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gZHJh
d2luZyBhbiBpbWFnZSBvbnRvIGFuIEhUTUwgY2FudmFzIGVsZW1lbnQgd2l0aCB0aGUgZHJhd0lt
YWdlIEFQSS4KICAgICAgICAgYm9vbCB0YWludHNDYW52YXMoY29uc3QgS1VSTCYpIGNvbnN0Owog
CisgICAgICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIFNlY3VyaXR5T3JpZ2luIGFsbG93cyBm
b3IgZGF0YWJhc2UgYWNjZXNzLgorICAgICAgICBib29sIGNhbkFjY2Vzc0RhdGFiYXNlKCkgY29u
c3QgeyByZXR1cm4gIWlzU2FuZGJveGVkKFNhbmRib3hPcmlnaW4pOyB9CisKICAgICAgICAgLy8g
UmV0dXJucyB0cnVlIGZvciBhbnkgbm9uLWxvY2FsIFVSTC4gSWYgZG9jdW1lbnQgcGFyYW1ldGVy
IGlzIHN1cHBsaWVkLAogICAgICAgICAvLyBpdHMgbG9jYWwgbG9hZCBwb2xpY3kgZGljdGF0ZXMs
IG90aGVyd2lzZSBpZiByZWZlcnJlciBpcyBub24tZW1wdHkgYW5kCiAgICAgICAgIC8vIHJlcHJl
c2VudHMgYSBsb2NhbCBmaWxlLCB0aGVuIHRoZSBsb2NhbCBsb2FkIGlzIGFsbG93ZWQuCkBAIC0x
MTAsNiArMTE0LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gV0FSTklORzog
VGhpcyBpcyBhbiBleHRyZW1lbHkgcG93ZXJmdWwgYWJpbGl0eS4gIFVzZSB3aXRoIGNhdXRpb24h
CiAgICAgICAgIHZvaWQgZ3JhbnRVbml2ZXJzYWxBY2Nlc3MoKTsKIAorICAgICAgICAvLyBTYW5k
Ym94aW5nIHN0YXR1cyBhcyBkZXRlcm1pbmVkIGJ5IHRoZSBmcmFtZS4KKyAgICAgICAgdm9pZCBz
ZXRTYW5kYm94RmxhZ3MoU2FuZGJveEZsYWdzIGZsYWdzKSB7IG1fc2FuZGJveEZsYWdzID0gZmxh
Z3M7IH0KKyAgICAgICAgYm9vbCBpc1NhbmRib3hlZChTYW5kYm94RmxhZ3MgbWFzaykgY29uc3Qg
eyByZXR1cm4gbV9zYW5kYm94RmxhZ3MgJiBtYXNrOyB9CisKICAgICAgICAgYm9vbCBpc1NlY3Vy
ZVRyYW5zaXRpb25Ubyhjb25zdCBLVVJMJikgY29uc3Q7CiAKICAgICAgICAgLy8gVGhlIGxvY2Fs
IFNlY3VyaXR5T3JpZ2luIGlzIHRoZSBtb3N0IHByaXZpbGVnZWQgU2VjdXJpdHlPcmlnaW4uCkBA
IC0xODEsNiArMTg5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTdHJpbmcgbV9o
b3N0OwogICAgICAgICBTdHJpbmcgbV9kb21haW47CiAgICAgICAgIHVuc2lnbmVkIHNob3J0IG1f
cG9ydDsKKyAgICAgICAgU2FuZGJveEZsYWdzIG1fc2FuZGJveEZsYWdzOwogICAgICAgICBib29s
IG1fbm9BY2Nlc3M7CiAgICAgICAgIGJvb2wgbV91bml2ZXJzYWxBY2Nlc3M7CiAgICAgICAgIGJv
b2wgbV9kb21haW5XYXNTZXRJbkRPTTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdp
bkhhc2guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5IYXNoLmgJ
KHJldmlzaW9uIDUxMDc2KQorKysgV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luSGFzaC5oCSh3
b3JraW5nIGNvcHkpCkBAIC01MiwxMyArNTIsMjYgQEAgc3RydWN0IFNlY3VyaXR5T3JpZ2luSGFz
aCB7CiAKICAgICBzdGF0aWMgYm9vbCBlcXVhbChTZWN1cml0eU9yaWdpbiogYSwgU2VjdXJpdHlP
cmlnaW4qIGIpCiAgICAgewotICAgICAgICAvLyBGSVhNRTogVGhlIGhhc2ggZnVuY3Rpb24gYWJv
dmUgY29tcGFyZXMgdGhyZWUgc3BlY2lmaWMgZmllbGRzLgotICAgICAgICAvLyBUaGlzIGNvZGUg
dG8gY29tcGFyZSB0aG9zZSB0aHJlZSBzcGVjaWZpYyBmaWVsZHMgc2hvdWxkIGJlIG1vdmVkIGhl
cmUgZnJvbQotICAgICAgICAvLyBTZWN1cml0eU9yaWdpbiBhcyBtZW50aW9uZWQgaW4gU2VjdXJp
dHlPcmlnaW4uaCBzbyB3ZSBkb24ndCBhY2NpZGVudGFsbHkgY2hhbmdlCi0gICAgICAgIC8vIGVx
dWFsIHdpdGhvdXQgY2hhbmdpbmcgaGFzaCB0byBtYXRjaCBpdC4KKyAgICAgICAgaWYgKGEgPT0g
YikKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAKICAgICAgICAgaWYgKCFhIHx8
ICFiKQotICAgICAgICAgICAgcmV0dXJuIGEgPT0gYjsKLSAgICAgICAgcmV0dXJuIGEtPmVxdWFs
KGIpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmICghYS0+aXNTYW1l
U2NoZW1lSG9zdFBvcnQoYikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
Ly8gRm9yIHNhbWUtb3JpZ2luIHB1cnBvc2VzLCBhIHNhbmRib3hlZCBvcmlnaW4gaXMgYWx3YXlz
IHVuaXF1ZS4KKyAgICAgICAgaWYgKGEtPmlzU2FuZGJveGVkKFNhbmRib3hPcmlnaW4pIHx8IGIt
PmlzU2FuZGJveGVkKFNhbmRib3hPcmlnaW4pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgCisgICAgICAgIGlmIChhLT5kb21haW5XYXNTZXRJbkRPTSgpICE9IGItPmRv
bWFpbldhc1NldEluRE9NKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
aWYgKGEtPmRvbWFpbldhc1NldEluRE9NKCkgJiYgYS0+ZG9tYWluKCkgIT0gYi0+ZG9tYWluKCkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogICAgIHN0YXRpYyBib29sIGVxdWFsKFNlY3VyaXR5T3JpZ2luKiBhLCBjb25zdCBSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+JiBiKQogICAgIHsKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFz
ZVRyYWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRyYWNr
ZXIuY3BwCShyZXZpc2lvbiA1MTA3NikKKysrIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRyYWNr
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNiArMTI4LDkgQEAgYm9vbCBEYXRhYmFzZVRy
YWNrZXI6OmNhbkVzdGFibGlzaERhdGFiYQogICAgIHBvcHVsYXRlT3JpZ2lucygpOwogCiAgICAg
U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpOworICAg
IAorICAgIGlmICghb3JpZ2luLT5jYW5BY2Nlc3NEYXRhYmFzZSgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICAvLyBTaW5jZSB3ZSdyZSBpbW1pbmVudGx5IG9wZW5pbmcgYSBkYXRhYmFz
ZSB3aXRoaW4gdGhpcyBEb2N1bWVudCdzIG9yaWdpbiwgbWFrZSBzdXJlIHRoaXMgb3JpZ2luIGlz
IGJlaW5nIHRyYWNrZWQgYnkgdGhlIFF1b3RhVHJhY2tlcgogICAgIC8vIGJ5IGZldGNoaW5nIGl0
J3MgY3VycmVudCB1c2FnZSBub3cKSW5kZXg6IFdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hh
bm5lbC5jcHAJKHJldmlzaW9uIDUxMDc2KQorKysgV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tl
dENoYW5uZWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksOCArMTU5LDEwIEBAIHZvaWQgV2Vi
U29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2ZURhdGEoU28KICAgICAgICAgICAgIGlmICghbV9oYW5k
c2hha2Uuc2VydmVyU2V0Q29va2llKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgaWYg
KG1fY29udGV4dC0+aXNEb2N1bWVudCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIERvY3VtZW50
KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9jb250ZXh0KTsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKGNvb2tpZXNFbmFibGVkKGRvY3VtZW50KSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGRvY3VtZW50LT5zZXRDb29raWUobV9oYW5kc2hha2Uuc2VydmVyU2V0Q29va2ll
KCkpOworICAgICAgICAgICAgICAgICAgICBpZiAoY29va2llc0VuYWJsZWQoZG9jdW1lbnQpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjOyAvLyBFeGNlcHRpb24g
KGZvciBzYW5kYm94ZWQgZG9jdW1lbnRzKSBpZ25vcmVkLgorICAgICAgICAgICAgICAgICAgICAg
ICAgZG9jdW1lbnQtPnNldENvb2tpZShtX2hhbmRzaGFrZS5zZXJ2ZXJTZXRDb29raWUoKSwgZWMp
OworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQogICAgICAgICAgICAgLy8gRklYTUU6IGhhbmRsZSBzZXQtY29va2llMi4KSW5kZXg6IExheW91
dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDUxMTEwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzEgQEAKKzIwMDktMTEtMTggIFBhdHJpayBQZXJzc29uICA8cGF0cmlrLmoucGVy
c3NvbkBlcmljc3Nvbi5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wbGVtZW50IEhUTUw1IHNhbmRib3ggYXR0cmlidXRlIGZvciBpZnJhbWVz
LgorICAgICAgICBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS90ZXh0LWxldmVsLXNlbWFudGlj
cy5odG1sI2F0dHItaWZyYW1lLXNhbmRib3gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMjg4CisKKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJj
ZXMvbm9uLXNhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2lu
Zy1hbGxvd2VkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNlcy9z
YW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWRpc2FsbG93ZWQuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1h
bGxvd2VkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5k
Ym94ZWQtaWZyYW1lLWZvcm0tZGlzYWxsb3dlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0ZWQuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdh
dGlvbi1jaGlsZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMv
c2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLW5hdmlnYXRlZC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXBh
cmVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJv
eGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXNvdXJjZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1p
ZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtYXBwbGV0Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZy
YW1lLXBsdWdpbnMtZnJhbWUtZW1iZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFt
ZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1vYmplY3QuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUt
c2NyaXB0LWR5bmFtaWMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJv
eGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmcuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1mb3Jtcy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUt
Zm9ybXMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFt
ZS1uYXZpZ2F0aW9uLWFsbG93ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tYWxsb3dlZC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlm
cmFtZS1uYXZpZ2F0aW9uLXBhcmVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1l
cy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10
YXJnZXRsaW5rLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1p
ZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4uaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5z
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlm
cmFtZS1wbHVnaW5zLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NhbmRib3hl
ZC1pZnJhbWUtc2NyaXB0aW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9m
cmFtZXMvc2FuZGJveGVkLWlmcmFtZS1zY3JpcHRpbmcuaHRtbDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1kb2N1bWVudC1j
b29raWUtcmVhZC1kZW5pZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1
cml0eS9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1tb2RpZnktc2VsZi5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy94c3MtREVOSUVELXNhbmRi
b3hlZC1pZnJhbWUtYXR0YWNrZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9z
ZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLWRvY3VtZW50LWNvb2tpZS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvc2FuZGJveGVkLWlmcmFtZS1kb2N1
bWVudC1jb29raWUuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9z
YW5kYm94ZWQtaWZyYW1lLW1vZGlmeS1zZWxmLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLW1vZGlmeS1zZWxmLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC1zYW5kYm94
ZWQtaWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1
cml0eS94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1l
LWFsbG93LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRw
cmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2Fu
ZGJveGVkLWlmcmFtZS1kZW5pZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVu
aWVkLXdpdGhvdXQtd2lsZGNhcmQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVu
aWVkLXdpdGhvdXQtd2lsZGNhcmQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9h
Y2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93LWlmcmFtZS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29u
dHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93LmNnaTogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlm
cmFtZS1kZW5pZWQtaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVu
aWVkLXdpdGhvdXQtd2lsZGNhcmQtaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1p
ZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQuY2dpOiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQt
aWZyYW1lLWRlbmllZC5jZ2k6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvZG9tc3RvcmFnZS9s
b2NhbHN0b3JhZ2UvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWlmcmFtZS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3NhbmRi
b3hlZC1pZnJhbWUtZGVuaWVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFn
ZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2RvbXN0b3JhZ2Uvc2Vzc2lvbnN0b3JhZ2UvcmVzb3Vy
Y2VzL3NhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBzdG9yYWdlL2RvbXN0b3JhZ2Uvc2Vzc2lvbnN0b3JhZ2Uvc2FuZGJveGVkLWlmcmFtZS1kZW5p
ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2RvbXN0b3JhZ2Uvc2Vz
c2lvbnN0b3JhZ2Uvc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQuaHRtbDogQWRkZWQuCisKIDIwMDkt
MTEtMTggIE1hcnRpbiBSb2JpbnNvbiAgPG1hcnRpbi5qYW1lcy5yb2JpbnNvbkBnbWFpbC5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR3VzdGF2byBOb3JvbmhhLgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlm
cmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACitUaGlzIHRlc3QgY2FzZSB2
ZXJpZmllcyB0aGUgcGFyc2luZyBvZiB0aGUgaWZyYW1lIHNhbmRib3ggYXR0cmlidXRlLiBUd28g
c2V0cyBvZiBpZnJhbWVzIGFyZSB1c2VkOiBvbmUgd2hlcmUgc2NyaXB0aW5nIGlzIGFsbG93ZWQs
IGFuZCBhbm90aGVyIG9uZSB3aGVyZSBpdCBpcyBkaXNhbGxvd2VkLiBUaGUgdGVzdCB2ZXJpZmll
cyB0aGF0IHRoZSBhbGxvd2VkIGZyYW1lcyBleGVjdXRlIHNjcmlwdHMgKGJ1dCBvdGhlciBzYW5k
Ym94ZWQgcHJvcGVydGllcyBzdGlsbCBhcHBseSAtLSBzcGVjaWZpY2FsbHksIGZvcm1zIGFyZSBk
aXNhYmxlZCksIGFuZCB0aGUgZGlzYWxsb3dlZCBvbmVzIGRvIG5vdC4gSWYgc3VjY2Vzc2Z1bCB0
aGUgdGVzdCBwcmludHMgIlBBU1MiLgorCisgICAgICAgICAgICAgICAgICAKK1BBU1MKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNp
bmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQt
aWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTY1IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKwor
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICB3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCit2YXIgZmFpbGVkID0gZmFsc2U7Cit2YXIgZnJhbWVz
ID0gMDsgICAgICAgICAvKiBudW1iZXIgb2YgYWxsb3dlZCBmcmFtZXMgdGhhdCBjYWxsZWQgYmFj
ayAqLworCitmdW5jdGlvbiBmYWlsKG1lc3NhZ2UpCit7CisgICAgc2V0U3RhdHVzKCJGQUlMOiAi
ICsgbWVzc2FnZSk7CisgICAgZmFpbGVkID0gdHJ1ZTsKK30KKworZnVuY3Rpb24gc2V0U3RhdHVz
KHN0YXR1cykKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdFN0YXR1cyIpLmlu
bmVySFRNTCA9IHN0YXR1czsKK30KKworZnVuY3Rpb24gYWxsb3dlZENhbGxGcm9tU2FuZGJveCgp
Cit7CisgICAgKytmcmFtZXM7Cit9CisKK2Z1bmN0aW9uIGRpc2FsbG93ZWRDYWxsRnJvbVNhbmRi
b3goKQoreworICAgIGZhaWwoImRpc2FsbG93ZWQgc2NyaXB0IGV4ZWN1dGVkIik7Cit9CisKK2Z1
bmN0aW9uIGRpc2FsbG93ZWRGb3JtU3VibWl0dGVkKCkKK3sKKyAgICBmYWlsKCJzYW5kYm94aW5n
IGZhaWxlZDogZm9ybSBzdWJtaXR0ZWQgaW4gc2FuZGJveGVkIGZyYW1lIik7Cit9CisKK3dpbmRv
dy5vbmxvYWQgPSBmdW5jdGlvbigpCit7CisgICAgaWYgKGZyYW1lcyA9PSA1ICYmICFmYWlsZWQp
CisgICAgICAgIHNldFN0YXR1cygiUEFTUyIpOworICAgIGVsc2UgaWYgKCFmYWlsZWQpCisgICAg
ICAgIGZhaWwoInNjcmlwdGluZyBkaXNhYmxlZCBpbiBvbmUgb3IgbW9yZSBmcmFtZXMgd2hlcmUg
aXQgc2hvdWxkIGJlIGVuYWJsZWQiKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5
PgorCisgICAgPHA+VGhpcyB0ZXN0IGNhc2UgdmVyaWZpZXMgdGhlIHBhcnNpbmcgb2YgdGhlIGlm
cmFtZSBzYW5kYm94IGF0dHJpYnV0ZS4gVHdvIHNldHMgb2YgaWZyYW1lcworICAgIGFyZSB1c2Vk
OiBvbmUgd2hlcmUgc2NyaXB0aW5nIGlzIGFsbG93ZWQsIGFuZCBhbm90aGVyIG9uZSB3aGVyZSBp
dCBpcyBkaXNhbGxvd2VkLiBUaGUgdGVzdAorICAgIHZlcmlmaWVzIHRoYXQgdGhlIGFsbG93ZWQg
ZnJhbWVzIGV4ZWN1dGUgc2NyaXB0cyAoYnV0IG90aGVyIHNhbmRib3hlZCBwcm9wZXJ0aWVzIHN0
aWxsCisgICAgYXBwbHkgLS0gc3BlY2lmaWNhbGx5LCBmb3JtcyBhcmUgZGlzYWJsZWQpLCBhbmQg
dGhlIGRpc2FsbG93ZWQgb25lcyBkbyBub3QuIElmIHN1Y2Nlc3NmdWwKKyAgICB0aGUgdGVzdCBw
cmludHMgJnF1b3Q7UEFTUyZxdW90Oy48L3A+CisgICAgCisgICAgPCEtLSBpZnJhbWVzIHdoZXJl
IHNjcmlwdCBleGVjdXRpb24gaXMgYWxsb3dlZCwgYnV0IG9yaWdpbiBpcyBub3Qgc2hhcmVkIC0t
PgorCisgICAgPCEtLSBwbGFpbiwgcHJvcGVyIGF0dHJpYnV0ZSB2YWx1ZSAtLT4KKyAgICA8aWZy
YW1lIHNhbmRib3g9ImFsbG93LXNjcmlwdHMiCisgICAgICAgICAgICBuYW1lPSJmMSIKKyAgICAg
ICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmct
YWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKyAgICAKKyAgICA8IS0tIGxpbmUgZmVlZCBj
aGFyYWN0ZXJzIGJlZm9yZSBhbmQgYWZ0ZXIgYXR0cmlidXRlIHZhbHVlIC0tPgorICAgIDxpZnJh
bWUgc2FuZGJveD0iCisKK2FsbG93LXNjcmlwdHMKKworIgorICAgICAgICAgICAgbmFtZT0iZjIi
CisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1w
YXJzaW5nLWFsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8IS0tIHJpZGljdWxv
dXNseSBsb25nLCBpbnZhbGlkIHRleHQgKHdlbGwsIGZvciB0aGVzZSBwdXJwb3NlcyBhdCBsZWFz
dCkKKyAgICAgICAgIHdpdGggbm9uLUFTQ0lJIGNoYXJhY3RlcnMgc3Vycm91bmRpbmcgYXR0cmli
dXRlIHZhbHVlIC0tPgorICAgIDxpZnJhbWUgc2FuZGJveD0iCisgICAgICAgIEbDtnIgdmFyIHZl
cnMsIGphZyBnw7ZyLAorICAgICAgICBMb3ZhciBkdSBlbiBreXNzIG1pZyBnaXZhOworICAgICAg
ICBBcmtldCBmdWxsdCBqYWcgYm9yZGUgc2tyaXZhLAorICAgICAgICBNaW5kcmUgaGFyIGphZyBz
a3Jpdml0IGbDtnIuCisgICAgICAgIE1lbiBtYW4gbcOlc3RlIGjDpWxsYSBtw6V0dGEsCisgICAg
ICAgIEphZyBtZWQgdmVycywgbWVkIGt5c3NhciBkdS4KKyAgICAgICAgTMOldCBtaWcgcsOka25h
OiBEw6RyIMOkciBzanUhCisgICAgICAgIEVuIGTDpHJ0aWxsIGRldCBnw7ZyIG1pZyDDpXR0YS4K
KworICAgICAgICBOdW1ybyDDpXR0YSDDpHIgZmF0YWwsCisgICAgICAgIEdyZWtsYW5kcyBzw6Vu
Z23DtnIgdm9ybyBuaW8sCisgICAgICAgIE9jaCBlbiBzdmVuc2sgZMOkcnRpbGwgZ8O2ciB0aW8u
IOKAlAorICAgICAgICBFbHZhIHZhciBhcG9zdGVsbnMgdGFsLAorICAgICAgICBUeSBqYWcgcsOk
a25hciBpY2tlIEp1ZGFzLAorICAgICAgICBIb25vbSwgc29tIGkgdsOkbm5lcnMgbGFnCisgICAg
ICAgIEt5c3N0ZSBmYWxza3Q7IGRldCBnw7ZyIGVqIGphZywKKyAgICAgICAgSGVsc3QgbsOkciB2
YWNrcmEgbMOkcHBhciBianVkYXMuCisKKyAgICAgICAgSHVydSBzdMOlciBtaW4gcsOka25pbmcg
aMOkcj8KKyAgICAgICAgQWRlcnRvbjsgZGV0IMOkciBkb2NrIG7DpWdvdC4KKyAgICAgICAgTml0
dG9uIOKAlCByaW1tZXQgZ8O2ciBiZXN2w6RyLAorICAgICAgICBEw6RyZsO2cmUgamFnIGZ5bGxl
ciB0am9nZXQuCisgICAgICAgIFN0cm9mZW4gw6RyIGVqIGZ1bGwgc29tIGphZywKKyAgICAgICAg
SW4gaSBoYW1uZW4gdmlsbCBqYWcgc3R5cmEsCisgICAgICAgIETDpHJmw7ZyZSB0aWxsIGdvZG8g
dGFnCisgICAgICAgIERlbm5hIGfDpW5nIG1lZCB0anVnb2Z5cmEuCisgICAgICAgIAorICAgICAg
ICAnS3lzc2FybmEnICgnVGhlIGtpc3NlcycpLCBFc2FpYXMgVGVnbsOpciwgMTc4Mi0xODQ2CisK
KyAgICBhbGxvdy1zY3JpcHRzCisgICAgCisgICAgICAgIGludCBtYWluKHZvaWQpCisgICAgICAg
IHsKKyAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfSIKKyAgICAgICAgICAgIG5hbWU9ImYz
IgorICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUt
cGFyc2luZy1hbGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorCisgICAgPCEtLSB0YWIgY2hh
cmFjdGVycyBiZWZvcmUgYW5kIGFmdGVyIGF0dHJpYnV0ZSB2YWx1ZSAtLT4KKyAgICA8aWZyYW1l
IHNhbmRib3g9IgkJYWxsb3ctc2NyaXB0cwkJIgorICAgICAgICAgICAgbmFtZT0iZjQiCisgICAg
ICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5n
LWFsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8IS0tIG1peGVkIGNhc2UgLS0+
CisgICAgPGlmcmFtZSBzYW5kYm94PSJBbExvVy1zQ3JJcFRzIgorICAgICAgICAgICAgbmFtZT0i
ZjUiCisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0
ZS1wYXJzaW5nLWFsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8IS0tIGlmcmFt
ZXMgd2hlcmUgc2NyaXB0IGV4ZWN1dGlvbiBpcyBkaXNhbGxvd2VkIC0tPgorCisgICAgPGlmcmFt
ZSBzYW5kYm94PSJhbGxvd3NjcmlwdHMiCisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5k
Ym94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWRpc2FsbG93ZWQuaHRtbCI+CisgICAgPC9p
ZnJhbWU+CisKKyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93cy1jcmlwdHMiCisgICAgICAgICAg
ICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWRpc2Fs
bG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNhbmRib3g9Ii1hbGxv
dy1zY3JpcHRzIgorICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1h
dHRyaWJ1dGUtcGFyc2luZy1kaXNhbGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorCisgICAg
PGlmcmFtZSBzYW5kYm94PSJhbGxvd19zY3JpcHRzIgorICAgICAgICAgICAgc3JjPSJyZXNvdXJj
ZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1kaXNhbGxvd2VkLmh0bWwiPgor
ICAgIDwvaWZyYW1lPgorCisgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvd1NjcmlwdHMiCisgICAg
ICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5n
LWRpc2FsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNhbmRib3g9
ImFhbGxvdy1zY3JpcHRzIgorICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlm
cmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1kaXNhbGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgor
CisgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zY3JpcHRzcyIKKyAgICAgICAgICAgIHNyYz0i
cmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmctZGlzYWxsb3dlZC5o
dG1sIj4KKyAgICA8L2lmcmFtZT4KKworICAgIDxpZnJhbWUgc2FuZGJveAorICAgICAgICAgICAg
c3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1kaXNhbGxv
d2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorCisgICAgPHAgaWQ9J3Rlc3RTdGF0dXMnPkZBSUw6
IFNjcmlwdCBkaWRuJ3QgcnVuPC9wPgorCis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm1zLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm1z
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Nh
bmRib3hlZC1pZnJhbWUtZm9ybXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDQgQEAKK1RoaXMgdGVzdCBydW5zIGZpdmUgSUZyYW1lcyB3aXRoIGZvcm1zIGFsbG93ZWQsIG9u
ZSBJRnJhbWUgd2l0aCBmb3JtcyBkaXNhbGxvd2VkLCB0aGVuIGZpdmUgbW9yZSBJRnJhbWVzIHdp
dGggZm9ybXMgYWxsb3dlZC4gSWYgdGVuIGZvcm0gc3VibWlzc2lvbnMgYXJlIG1hZGUsIGFuZCB0
aGUgZGlzYWxsb3dlZCBzdWJtaXNzaW9uIGlzIG5vdCBvbmUgb2YgdGhlbSwgd2UgY29uc2lkZXIg
dGhlIHRlc3QgdG8gaGF2ZSBwYXNzZWQuIFRoaXMgdGVzdCB3aWxsIHByaW50ICJQQVNTIiBvbiBz
dWNjZXNzLgorCisgICAgICAgICAgICAgICAgICAgIAorUEFTUwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1mb3Jtcy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtZm9ybXMuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtZm9ybXMu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5NiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQ+CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK3ZhciBzdWJtaXNzaW9uQ291bnQgICAgICA9
IDA7Cit2YXIgZGlzYWxsb3dlZFN1Ym1pc3Npb24gPSBmYWxzZTsKKworZnVuY3Rpb24gYWxsb3dl
ZEZvcm1TdWJtaXR0ZWQoKQoreworICAgICsrc3VibWlzc2lvbkNvdW50OworCisgICAgaWYgKHN1
Ym1pc3Npb25Db3VudCA9PSAxMCkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
dGVzdF9zdGF0dXMiKS5pbm5lckhUTUwgPSAoZGlzYWxsb3dlZFN1Ym1pc3Npb24gPyAiRkFJTCIg
OiAiUEFTUyIpOworICAgICAgCisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworICAgIH0KK30KKworZnVuY3Rpb24gZGlzYWxsb3dlZEZvcm1TdWJtaXR0ZWQoKQoreworICAg
IGRpc2FsbG93ZWRTdWJtaXNzaW9uID0gdHJ1ZTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisK
Kzxib2R5PgorCisgICAgPHA+VGhpcyB0ZXN0IHJ1bnMgZml2ZSBJRnJhbWVzIHdpdGggZm9ybXMg
YWxsb3dlZCwgb25lIElGcmFtZSB3aXRoIGZvcm1zCisgICAgZGlzYWxsb3dlZCwgdGhlbiBmaXZl
IG1vcmUgSUZyYW1lcyB3aXRoIGZvcm1zIGFsbG93ZWQuIElmIHRlbiBmb3JtCisgICAgc3VibWlz
c2lvbnMgYXJlIG1hZGUsIGFuZCB0aGUgZGlzYWxsb3dlZCBzdWJtaXNzaW9uIGlzIG5vdCBvbmUg
b2YgdGhlbSwKKyAgICB3ZSBjb25zaWRlciB0aGUgdGVzdCB0byBoYXZlIHBhc3NlZC4gVGhpcyB0
ZXN0IHdpbGwgcHJpbnQKKyAgICAmcXVvdDtQQVNTJnF1b3Q7IG9uIHN1Y2Nlc3MuPC9wPgorCisg
ICAgPCEtLSBmaXZlIElGcmFtZXMgd2l0aCBmb3JtcyBhbGxvd2VkIC0tPgorCisgICAgPGlmcmFt
ZSBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsiCisgICAgICAgIHNhbmRib3g9ImFs
bG93LXNjcmlwdHMgYWxsb3ctZm9ybXMiCisgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hl
ZC1pZnJhbWUtZm9ybS1hbGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorICAgIDxpZnJhbWUg
c3R5bGU9IndpZHRoOiA2MHB4OyBoZWlnaHQ6IDYwcHg7IgorICAgICAgICBzYW5kYm94PSJhbGxv
dy1zY3JpcHRzIGFsbG93LWZvcm1zIgorICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQt
aWZyYW1lLWZvcm0tYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIHN0
eWxlPSJ3aWR0aDogNjBweDsgaGVpZ2h0OiA2MHB4OyIKKyAgICAgICAgc2FuZGJveD0iYWxsb3ct
c2NyaXB0cyBhbGxvdy1mb3JtcyIKKyAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlm
cmFtZS1mb3JtLWFsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBzdHls
ZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsiCisgICAgICAgIHNhbmRib3g9ImFsbG93LXNj
cmlwdHMgYWxsb3ctZm9ybXMiCisgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJh
bWUtZm9ybS1hbGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorICAgIDxpZnJhbWUgc3R5bGU9
IndpZHRoOiA2MHB4OyBoZWlnaHQ6IDYwcHg7IgorICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3Jp
cHRzIGFsbG93LWZvcm1zIgorICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1l
LWZvcm0tYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKworICAgIDwhLS0gb25lIElGcmFt
ZSB3aXRoIGZvcm1zIGRpc2FsbG93ZWQgLS0+CisKKyAgICA8aWZyYW1lIHN0eWxlPSJ3aWR0aDog
NjBweDsgaGVpZ2h0OiA2MHB4OyIKKyAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyIKKyAg
ICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWRpc2FsbG93ZWQuaHRt
bCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8IS0tIGZpdmUgbW9yZSBJRnJhbWVzIHdpdGggZm9y
bXMgYWxsb3dlZCAtLT4KKworICAgIDxpZnJhbWUgc3R5bGU9IndpZHRoOiA2MHB4OyBoZWlnaHQ6
IDYwcHg7IgorICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1zIgorICAg
ICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tYWxsb3dlZC5odG1sIj4K
KyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIHN0eWxlPSJ3aWR0aDogNjBweDsgaGVpZ2h0OiA2
MHB4OyIKKyAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyIKKyAgICAg
ICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWFsbG93ZWQuaHRtbCI+Cisg
ICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBw
eDsiCisgICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMiCisgICAgICAg
IHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1hbGxvd2VkLmh0bWwiPgorICAg
IDwvaWZyYW1lPgorICAgIDxpZnJhbWUgc3R5bGU9IndpZHRoOiA2MHB4OyBoZWlnaHQ6IDYwcHg7
IgorICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1zIgorICAgICAgICBz
cmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tYWxsb3dlZC5odG1sIj4KKyAgICA8
L2lmcmFtZT4KKyAgICA8aWZyYW1lIHN0eWxlPSJ3aWR0aDogNjBweDsgaGVpZ2h0OiA2MHB4OyIK
KyAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyIKKyAgICAgICAgc3Jj
PSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWFsbG93ZWQuaHRtbCI+CisgICAgPC9p
ZnJhbWU+CisgICAgCisgICAgPHAgaWQ9J3Rlc3Rfc3RhdHVzJz5GQUlMOiBTY3JpcHQgZGlkbid0
IHJ1bjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1hbGxvd2VkLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRp
b24tYWxsb3dlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tYWxsb3dlZC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIgQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGEg
c2FuZGJveGVkIGlmcmFtZSBDQU4gbmF2aWdhdGUgYm90aCBpdHNlbGYgYW5kIGEgY2hpbGQgaW4g
dGhlIGZyYW1lIHRyZWUuIEl0IGFsc28gdmVyaWZpZXMgdGhhdCB0aGUgc2FuZGJveCBhdHRyaWJ1
dGUgcmVtYWlucyBpbnRhY3QgYWZ0ZXIgYSBmcmFtZSBoYXMgYmVlbiBuYXZpZ2F0ZWQsIGFuZCB0
aGF0IHNhbmRib3ggYXR0cmlidXRlcyBhcmUgcHJvcGFnYXRlZCB0aHJvdWdoIHRoZSBmcmFtZSBo
aWVyYXJjaHkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIChzZWxmLnNh
bmRib3hlZEZyYW1lLmZyYW1lV2l0aFBsdWdpbi5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGx1
Z2luJykuZGVzdHJveVN0cmVhbSkgPT0gdW5kZWZpbmVkIGlzIHRydWUKK1BBU1MgKHNlbGYuZnJh
bWVXaXRoUGx1Z2luLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbHVnaW4nKS5kZXN0cm95U3Ry
ZWFtKSAhPSB1bmRlZmluZWQgaXMgdHJ1ZQorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
c2FuZGJveGVkRnJhbWVJZCcpLnNhbmRib3ggaXMgJ2FsbG93LXNjcmlwdHMgYWxsb3ctc2FtZS1v
cmlnaW4nCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KyAgCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmln
YXRpb24tYWxsb3dlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1hbGxvd2VkLmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tYWxs
b3dlZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYwIEBACis8aHRtbD4KKzxoZWFkPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlv
bi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7CisgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5j
dGlvbiBjaGlsZEZyYW1lV2FzTmF2aWdhdGVkKCkKK3sKKyAgICAvLyBDaGVjayB0aGF0IHRoZSBj
aGlsZCBmcmFtZSB3YXMgdW5hYmxlIHRvIGxvYWQgYSBwbHVnaW4sIHNpbmNlIGl0cyBwYXJlbnQg
aXMgc2FuZGJveGVkLgorICAgIHNob3VsZEJlVHJ1ZSgiKHNlbGYuc2FuZGJveGVkRnJhbWUuZnJh
bWVXaXRoUGx1Z2luLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbHVnaW4nKS5kZXN0cm95U3Ry
ZWFtKSA9PSB1bmRlZmluZWQiKTsKKyAgICAKKyAgICAvLyBDaGVjayBhIG5vbi1zYW5kYm94ZWQg
ZnJhbWUgYXMgd2VsbCwgdG8gZW5zdXJlIHRoYXQgdGhlIHBsdWdpbiBpcyBkaXNhYmxlZCBieSBz
YW5kYm94aW5nCisgICAgLy8gYW5kIG5vdCBzb21lIG90aGVyIGZhaWx1cmUKKyAgICBzaG91bGRC
ZVRydWUoIihzZWxmLmZyYW1lV2l0aFBsdWdpbi5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGx1
Z2luJykuZGVzdHJveVN0cmVhbSkgIT0gdW5kZWZpbmVkIik7CisKKyAgICAvLyBXaGVuIHRoZSBj
aGlsZCBmcmFtZSAoZ3JhbmRjaGlsZCBvZiB0aGUgbWFpbiB3aW5kb3cpIGhhcyBiZWVuIG5hdmln
YXRlZCwKKyAgICAvLyBtYWtlIHRoZSBzYW5kYm94ZWQgZnJhbWUgbmF2aWdhdGUgaXRzZWxmCisg
ICAgc2VsZi5zYW5kYm94ZWRGcmFtZS5sb2NhdGlvbi5hc3NpZ24oImphdmFzY3JpcHQ6IHRvcC5z
YW5kYm94V2FzTmF2aWdhdGVkKCk7Iik7Cit9CisKK2Z1bmN0aW9uIHNhbmRib3hXYXNOYXZpZ2F0
ZWQoKQoreworICAgIHNob3VsZEJlKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJveGVk
RnJhbWVJZCcpLnNhbmRib3giLCAiJ2FsbG93LXNjcmlwdHMgYWxsb3ctc2FtZS1vcmlnaW4nIik7
CisgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKyAgICA8cCBpZD0iZGVz
Y3JpcHRpb24iPjwvcD4KKyAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworICAgIDxpZnJh
bWUgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1zYW1lLW9yaWdpbiIKKyAgICAgICAgICAg
IG5hbWU9InNhbmRib3hlZEZyYW1lIgorICAgICAgICAgICAgaWQ9InNhbmRib3hlZEZyYW1lSWQi
CisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24t
Y2hpbGQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIG5hbWU9ImZyYW1lV2l0
aFBsdWdpbiIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1
Z2lucy1mcmFtZS1vYmplY3QuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8c2NyaXB0Pgor
ICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhIHNhbmRib3hlZCBpZnJh
bWUgQ0FOIG5hdmlnYXRlIGJvdGggaXRzZWxmIGFuZCBhIGNoaWxkIGluIHRoZSBmcmFtZSB0cmVl
LiAiCisgICAgICAgICAgICAgICAgKyAiSXQgYWxzbyB2ZXJpZmllcyB0aGF0IHRoZSBzYW5kYm94
IGF0dHJpYnV0ZSByZW1haW5zIGludGFjdCBhZnRlciBhIGZyYW1lIGhhcyBiZWVuIG5hdmlnYXRl
ZCwgIgorICAgICAgICAgICAgICAgICsgImFuZCB0aGF0IHNhbmRib3ggYXR0cmlidXRlcyBhcmUg
cHJvcGFnYXRlZCB0aHJvdWdoIHRoZSBmcmFtZSBoaWVyYXJjaHkuIik7CisgICAgdmFyIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24t
cGFyZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1l
cy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50LWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdh
dGlvbi1wYXJlbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAKK1Ro
aXMgdGVzdCB2ZXJpZmllcyB0aGF0IGEgc2FuZGJveGVkIElGcmFtZSBjYW5ub3QgbmF2aWdhdGUg
YW4gYW5jZXN0b3IgaW4gdGhlIGZyYW1lIHRyZWUgYnkgYXNzaWduaW5nIHRoZSBsb2NhdGlvbiBh
dHRyaWJ1dGUuCisKK1RoaXMgaXMgZG9uZSBieSBsb2FkaW5nIHRlbiBub24tc2FuZGJveGVkIElG
cmFtZXMsIGFuZCBhIHNpbmdsZSBzYW5kYm94ZWQgb25lLiBFeHBlY3QgdGVuIGZyYW1lcyB0byBi
ZSBuYXZpZ2F0ZWQsIGJ1dCB0aGUgc2FuZGJveGVkIG9uZSB0byBub3QgYmUgb25lIG9mIHRoZW0u
CisKK1RoaXMgdGVzdCB3aWxsIHByaW50ICJQQVNTIiBvbiBzdWNjZXNzLgorCisgICAgICAgICAg
ICAgICAKK1BBU1MKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJh
bWUtbmF2aWdhdGlvbi1wYXJlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50Lmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRp
b24tcGFyZW50Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjggQEAKKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAg
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICB3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCit2YXIgbmF2aWdhdGVkRnJh
bWVzID0gMDsKKworZnVuY3Rpb24gY2hlY2tSZXN1bHRzKCkKK3sKKyAgICB2YXIgdGVzdFN0YXR1
cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0U3RhdHVzJyk7CisKKyAgICBpZiAoc2Vs
Zi5uYXZpZ2F0ZWQubG9jYXRpb24uaHJlZi5pbmRleE9mKCdwYXJlbnQuaHRtbCcpID09IC0xKQor
ICAgICAgICB0ZXN0U3RhdHVzLmlubmVySFRNTCA9ICdGQUlMOiBkaXNhbGxvd2VkIGZyYW1lIG5h
dmlnYXRlZCc7CisgICAgZWxzZSBpZiAobmF2aWdhdGVkRnJhbWVzID09IDEwKQorICAgICAgICB0
ZXN0U3RhdHVzLmlubmVySFRNTCA9ICdQQVNTJzsKKyAgICBlbHNlCisgICAgICAgIHRlc3RTdGF0
dXMuaW5uZXJIVE1MID0gJ0ZBSUw6IGZyYW1lcyBub3QgbmF2aWdhdGVkIHByb3Blcmx5JzsKKwor
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGNvdW50RnJhbWUo
KQoreworICAgICsrbmF2aWdhdGVkRnJhbWVzOworCisgICAgaWYgKG5hdmlnYXRlZEZyYW1lcyA9
PSAxMCkKKyAgICAgICAgY2hlY2tSZXN1bHRzKCk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgor
Cis8Ym9keT4KKworICAgIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGEgc2FuZGJveGVkIElG
cmFtZSBjYW5ub3QgbmF2aWdhdGUgYW4gYW5jZXN0b3IKKyAgICBpbiB0aGUgZnJhbWUgdHJlZSBi
eSBhc3NpZ25pbmcgdGhlIGxvY2F0aW9uIGF0dHJpYnV0ZS48L3A+CisKKyAgICA8cD5UaGlzIGlz
IGRvbmUgYnkgbG9hZGluZyB0ZW4gbm9uLXNhbmRib3hlZCBJRnJhbWVzLCBhbmQgYSBzaW5nbGUK
KyAgICBzYW5kYm94ZWQgb25lLiBFeHBlY3QgdGVuIGZyYW1lcyB0byBiZSBuYXZpZ2F0ZWQsIGJ1
dCB0aGUgc2FuZGJveGVkCisgICAgb25lIHRvIDxiPm5vdDwvYj4gYmUgb25lIG9mIHRoZW0uPC9w
PgorICAgIAorICAgIDxwPlRoaXMgdGVzdCB3aWxsIHByaW50ICZxdW90O1BBU1MmcXVvdDsgb24g
c3VjY2Vzcy48L3A+CisKKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL25vbi1zYW5kYm94ZWQt
aWZyYW1lLW5hdmlnYXRpb24uaHRtbCI+PC9pZnJhbWU+CisgICAgPGlmcmFtZSBzcmM9InJlc291
cmNlcy9ub24tc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLmh0bWwiPjwvaWZyYW1lPgorICAg
IDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvbm9uLXNhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi5o
dG1sIj48L2lmcmFtZT4KKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL25vbi1zYW5kYm94ZWQt
aWZyYW1lLW5hdmlnYXRpb24uaHRtbCI+PC9pZnJhbWU+CisgICAgPGlmcmFtZSBzcmM9InJlc291
cmNlcy9ub24tc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLmh0bWwiPjwvaWZyYW1lPgorCisg
ICAgPGlmcmFtZSBuYW1lPSduYXZpZ2F0ZWQnCisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9z
YW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50Lmh0bWwiCisgICAgPC9pZnJhbWU+CisK
KyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL25vbi1zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRp
b24uaHRtbCI+PC9pZnJhbWU+CisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9ub24tc2FuZGJv
eGVkLWlmcmFtZS1uYXZpZ2F0aW9uLmh0bWwiPjwvaWZyYW1lPgorICAgIDxpZnJhbWUgc3JjPSJy
ZXNvdXJjZXMvbm9uLXNhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi5odG1sIj48L2lmcmFtZT4K
KyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL25vbi1zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRp
b24uaHRtbCI+PC9pZnJhbWU+CisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9ub24tc2FuZGJv
eGVkLWlmcmFtZS1uYXZpZ2F0aW9uLmh0bWwiPjwvaWZyYW1lPgorCisgICAgPHAgaWQ9J3Rlc3RT
dGF0dXMnPkZBSUw6IFNjcmlwdCBkaWRuJ3QgcnVuPC9wPgorICAgIAorPC9ib2R5PgorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0
aW9uLXRhcmdldGxpbmstZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRsaW5rLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1p
ZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRsaW5rLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw4IEBACitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhIHNhbmRib3hlZCBJRnJhbWUg
Y2Fubm90IG9wZW4gYSBsaW5rIGluIGFub3RoZXIgZnJhbWUgdXNpbmcgdGhlIHRhcmdldCBhdHRy
aWJ1dGUgb2YgYSBsaW5rLgorCitUaGlzIGlzIGRvbmUgYnkgbG9hZGluZyB0ZW4gbm9uLXNhbmRi
b3hlZCBJRnJhbWVzLCBhbmQgYSBzaW5nbGUgc2FuZGJveGVkIG9uZS4gSW4gYWRkaXRpb24gZWFj
aCBvZiB0aGVzZSBmcmFtZXMgaGF2ZSBhIHRhcmdldCBmcmFtZSAoc28sIDIyIGZyYW1lcyBpbiB0
b3RhbCkuIEV4cGVjdCB0ZW4gZnJhbWVzIHRvIGJlIGFibGUgdG8gb3BlbiBhIGxpbmsgaW4gdGhl
aXIgY29ycmVzcG9uZGluZyB0YXJnZXQgZnJhbWUsIGJ1dCB0aGUgc2FuZGJveGVkIG9uZSB0byBu
b3QgYmUgb25lIG9mIHRoZW0uCisKK1RoaXMgdGVzdCB3aWxsIHByaW50ICJQQVNTIiBvbiBzdWNj
ZXNzLgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorUEFTUwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxp
bmsuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQt
aWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDkgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgd2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICB3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCit2YXIgbmF2aWdhdGVkRnJhbWVzID0gMDsK
KworZnVuY3Rpb24gY2hlY2tSZXN1bHRzKCkKK3sKKyAgICB2YXIgdGVzdFN0YXR1cyA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0U3RhdHVzJyk7CisKKyAgICBpZiAoc2VsZi5zYW5kYm94
ZWRfdGFyZ2V0LmxvY2F0aW9uLmhyZWYuaW5kZXhPZignLmh0bWwnKSAhPSAtMSkKKyAgICAgICAg
dGVzdFN0YXR1cy5pbm5lckhUTUwgPSAnRkFJTDogZGlzYWxsb3dlZCBmcmFtZSBuYXZpZ2F0ZWQn
OworICAgIGVsc2UgaWYgKG5hdmlnYXRlZEZyYW1lcyA9PSAxMCkKKyAgICAgICAgdGVzdFN0YXR1
cy5pbm5lckhUTUwgPSAnUEFTUyc7CisgICAgZWxzZQorICAgICAgICB0ZXN0U3RhdHVzLmlubmVy
SFRNTCA9ICdGQUlMOiBmcmFtZXMgbm90IG5hdmlnYXRlZCBwcm9wZXJseSc7CisKKyAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBjb3VudEZyYW1lKCkKK3sKKyAg
ICArK25hdmlnYXRlZEZyYW1lczsKKworICAgIGlmIChuYXZpZ2F0ZWRGcmFtZXMgPT0gMTApCisg
ICAgICAgIGNoZWNrUmVzdWx0cygpOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+
CisKKyAgICA8cD5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhIHNhbmRib3hlZCBJRnJhbWUgY2Fu
bm90IG9wZW4gYSBsaW5rIGluCisgICAgYW5vdGhlciBmcmFtZSB1c2luZyB0aGUgPGNvZGU+dGFy
Z2V0PC9jb2RlPiBhdHRyaWJ1dGUgb2YgYSBsaW5rLjwvcD4KKworICAgIDxwPlRoaXMgaXMgZG9u
ZSBieSBsb2FkaW5nIHRlbiBub24tc2FuZGJveGVkIElGcmFtZXMsIGFuZCBhIHNpbmdsZQorICAg
IHNhbmRib3hlZCBvbmUuIEluIGFkZGl0aW9uIGVhY2ggb2YgdGhlc2UgZnJhbWVzIGhhdmUgYSB0
YXJnZXQgZnJhbWUKKyAgICAoc28sIDIyIGZyYW1lcyBpbiB0b3RhbCkuIEV4cGVjdCB0ZW4gZnJh
bWVzIHRvIGJlIGFibGUgdG8gb3BlbiBhIGxpbmsKKyAgICBpbiB0aGVpciBjb3JyZXNwb25kaW5n
IHRhcmdldCBmcmFtZSwgYnV0IHRoZSBzYW5kYm94ZWQgb25lCisgICAgdG8gPGI+bm90PC9iPiBi
ZSBvbmUgb2YgdGhlbS48L3A+CisgICAgCisgICAgPHA+VGhpcyB0ZXN0IHdpbGwgcHJpbnQgJnF1
b3Q7UEFTUyZxdW90OyBvbiBzdWNjZXNzLjwvcD4KKworICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJj
ZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbCIKKyAgICAgICAg
ICAgIG5hbWU9ImYxIj4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIG5hbWU9ImYxX3Rhcmdl
dCIgc3JjPSJhYm91dDpibGFuayI+PC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNyYz0icmVzb3Vy
Y2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRsaW5rLmh0bWwiCisgICAgICAg
ICAgICBuYW1lPSJmMiI+CisgICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBuYW1lPSJmMl90YXJn
ZXQiIHNyYz0iYWJvdXQ6YmxhbmsiPjwvaWZyYW1lPgorCisgICAgPGlmcmFtZSBzcmM9InJlc291
cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay5odG1sIgorICAgICAg
ICAgICAgbmFtZT0iZjMiPgorICAgIDwvaWZyYW1lPgorICAgIDxpZnJhbWUgbmFtZT0iZjNfdGFy
Z2V0IiBzcmM9ImFib3V0OmJsYW5rIj48L2lmcmFtZT4KKworICAgIDxpZnJhbWUgc3JjPSJyZXNv
dXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbCIKKyAgICAg
ICAgICAgIG5hbWU9ImY0Ij4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIG5hbWU9ImY0X3Rh
cmdldCIgc3JjPSJhYm91dDpibGFuayI+PC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNyYz0icmVz
b3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRsaW5rLmh0bWwiCisgICAg
ICAgICAgICBuYW1lPSJmNSI+CisgICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBuYW1lPSJmNV90
YXJnZXQiIHNyYz0iYWJvdXQ6YmxhbmsiPjwvaWZyYW1lPgorCisgICAgPGlmcmFtZSBzcmM9InJl
c291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay5odG1sIgorICAg
ICAgICAgICAgbmFtZT0ic2FuZGJveGVkIgorICAgICAgICAgICAgc2FuZGJveD0iYWxsb3ctc2Ny
aXB0cyBhbGxvdy1zYW1lLW9yaWdpbiI+CisgICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBuYW1l
PSJzYW5kYm94ZWRfdGFyZ2V0IiBzcmM9ImFib3V0OmJsYW5rIj48L2lmcmFtZT4KKworICAgIDxp
ZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxp
bmsuaHRtbCIKKyAgICAgICAgICAgIG5hbWU9ImY2Ij4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZy
YW1lIG5hbWU9ImY2X3RhcmdldCIgc3JjPSJhYm91dDpibGFuayI+PC9pZnJhbWU+CisKKyAgICA8
aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRs
aW5rLmh0bWwiCisgICAgICAgICAgICBuYW1lPSJmNyI+CisgICAgPC9pZnJhbWU+CisgICAgPGlm
cmFtZSBuYW1lPSJmN190YXJnZXQiIHNyYz0iYWJvdXQ6YmxhbmsiPjwvaWZyYW1lPgorCisgICAg
PGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0
bGluay5odG1sIgorICAgICAgICAgICAgbmFtZT0iZjgiPgorICAgIDwvaWZyYW1lPgorICAgIDxp
ZnJhbWUgbmFtZT0iZjhfdGFyZ2V0IiBzcmM9ImFib3V0OmJsYW5rIj48L2lmcmFtZT4KKworICAg
IDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdl
dGxpbmsuaHRtbCIKKyAgICAgICAgICAgIG5hbWU9ImY5Ij4KKyAgICA8L2lmcmFtZT4KKyAgICA8
aWZyYW1lIG5hbWU9ImY5X3RhcmdldCIgc3JjPSJhYm91dDpibGFuayI+PC9pZnJhbWU+CisKKyAg
ICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJn
ZXRsaW5rLmh0bWwiCisgICAgICAgICAgICBuYW1lPSJmMTAiPgorICAgIDwvaWZyYW1lPgorICAg
IDxpZnJhbWUgbmFtZT0iZjEwX3RhcmdldCIgc3JjPSJhYm91dDpibGFuayI+PC9pZnJhbWU+CisK
KyAgICA8cCBpZD0ndGVzdFN0YXR1cyc+RkFJTDogU2NyaXB0IGRpZG4ndCBydW48L3A+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZy
YW1lLW5hdmlnYXRpb24td2luZG93b3Blbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29w
ZW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMv
c2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4tZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDYgQEAKK1ZlcmlmaWVzIHRoYXQgYSBzYW5kYm94ZWQgSUZyYW1l
IGNhbm5vdCBvcGVuIG5ldyB3aW5kb3dzIHVzaW5nIHdpbmRvdy5vcGVuKCkuIEV4cGVjdCB0ZW4g
d2luZG93cyB0byBiZSBvcGVuZWQsIGJ1dCB0aGUgc2FuZGJveGVkIElGcmFtZSBub3QgdG8gYmUg
dGhlIG9wZW5lciBvZiBhbnkgb2YgdGhlbS4KKworVGhpcyB0ZXN0IHdpbGwgcHJpbnQgIlBBU1Mi
IG9uIHN1Y2Nlc3MuCisKKyAgICAgICAgICAgICAgIAorUEFTUwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4uaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5h
dmlnYXRpb24td2luZG93b3Blbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4uaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw3MiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisKK2lm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldENhbk9wZW5XaW5kb3dzKHRydWUpOworfQor
Cit2YXIgdGVzdFN0YXR1cyAgICAgICA9ICJGQUlMOiBub3QgY29tcGxldGVkIjsKK3ZhciB3aW5k
b3dzT3BlbmVkICAgID0gMDsKK3ZhciBtYWluV2luZG93TG9hZGVkID0gZmFsc2U7Cit2YXIgdGVz
dENvbXBsZXRlZCAgICA9IGZhbHNlOworCitmdW5jdGlvbiB1cGRhdGVTdGF0dXMobG9hZGVkLCBk
b25lKQoreworICAgIG1haW5XaW5kb3dMb2FkZWQgfD0gbG9hZGVkOworICAgIHRlc3RDb21wbGV0
ZWQgfD0gZG9uZTsKKworICAgIGlmIChtYWluV2luZG93TG9hZGVkICYmIHRlc3RDb21wbGV0ZWQp
IHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RTdGF0dXMiKS5pbm5lckhU
TUwgPSB0ZXN0U3RhdHVzOworICAgICAgICBpZiAodGVzdENvbXBsZXRlZCAmJiB3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7CisgICAgfQorfQorCitmdW5jdGlvbiB3aW5kb3dPcGVuZWQod2luZG93T3BlbmVy
KQoreworICAgIGlmICh3aW5kb3dPcGVuZXIgPT0gc2VsZi5zYW5kYm94ZWQpIHsKKyAgICAgICAg
dGVzdFN0YXR1cyA9ICJGQUlMOiBzYW5kYm94ZWQgZnJhbWUgb3BlbmVkIHdpbmRvdyI7CisgICAg
ICAgIHVwZGF0ZVN0YXR1cyhmYWxzZSwgdHJ1ZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgKyt3
aW5kb3dzT3BlbmVkOworICAgICAgICBpZiAod2luZG93c09wZW5lZCA9PSAxMCAmJiAhdGVzdENv
bXBsZXRlZCkgeworICAgICAgICAgICAgdGVzdFN0YXR1cyA9ICJQQVNTIjsKKyAgICAgICAgICAg
IHVwZGF0ZVN0YXR1cyhmYWxzZSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKzwvc2Ny
aXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InVwZGF0ZVN0YXR1cyh0cnVlLCBmYWxzZSk7
Ij4KKworICAgIDxwPlZlcmlmaWVzIHRoYXQgYSBzYW5kYm94ZWQgSUZyYW1lIGNhbm5vdCBvcGVu
IG5ldyB3aW5kb3dzCisgICAgdXNpbmcgPGNvZGU+d2luZG93Lm9wZW4oKTwvY29kZT4uIEV4cGVj
dCB0ZW4gd2luZG93cyB0byBiZSBvcGVuZWQsCisgICAgYnV0IHRoZSBzYW5kYm94ZWQgSUZyYW1l
IG5vdCB0byBiZSB0aGUgb3BlbmVyIG9mIGFueSBvZiB0aGVtLjwvcD4KKyAgICAKKyAgICA8cD5U
aGlzIHRlc3Qgd2lsbCBwcmludCAmcXVvdDtQQVNTJnF1b3Q7IG9uIHN1Y2Nlc3MuPC9wPgorCisg
ICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24td2lu
ZG93b3Blbi5odG1sIj48L2lmcmFtZT4KKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRi
b3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0bWwiPjwvaWZyYW1lPgorICAgIDxp
ZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29w
ZW4uaHRtbCI+PC9pZnJhbWU+CisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQt
aWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi5odG1sIj48L2lmcmFtZT4KKyAgICA8aWZyYW1l
IHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0
bWwiPjwvaWZyYW1lPgorCisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZy
YW1lLW5hdmlnYXRpb24td2luZG93b3Blbi5odG1sIgorICAgICAgICAgICAgc2FuZGJveD0iYWxs
b3ctc2NyaXB0cyIKKyAgICAgICAgICAgIG5hbWU9InNhbmRib3hlZCI+CisgICAgPC9pZnJhbWU+
CisKKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlv
bi13aW5kb3dvcGVuLmh0bWwiPjwvaWZyYW1lPgorICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMv
c2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4uaHRtbCI+PC9pZnJhbWU+Cisg
ICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24td2lu
ZG93b3Blbi5odG1sIj48L2lmcmFtZT4KKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRi
b3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0bWwiPjwvaWZyYW1lPgorICAgIDxp
ZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29w
ZW4uaHRtbCI+PC9pZnJhbWU+CisKKyAgICA8cCBpZD0ndGVzdFN0YXR1cyc+RkFJTDogU2NyaXB0
IGRpZG4ndCBydW48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94
ZWQtaWZyYW1lLXBsdWdpbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3
IEBACitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBzYW5kYm94aW5nIG9mIHBsdWdpbnMgd29ya3Mg
YXMgaW50ZW5kZWQuIFRocmVlIHRlc3RzIGFyZSBtYWRlLCBlYWNoIGluIG9uZSBzYW5kYm94ZWQg
YW5kIG9uZSBub24tc2FuZGJveGVkIElGcmFtZTogYXBwbGV0cywgZW1iZWRzLCBhbmQgb2JqZWN0
cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK05PVEU6IFRoZSBmaXJzdCBzdWIt
dGVzdCB3aWxsIGZhaWwgaW4gRHVtcFJlbmRlclRyZWUsIHNpbmNlIER1bXBSZW5kZXJUcmVlIGRv
ZXMgbm90IHN1cHBvcnQgYXBwbGV0cy4gVGhhdCBzdWItdGVzdCBtdXN0IGJlIHJ1biBpbiBTYWZh
cmkgaW5zdGVhZC4KKworRkFJTCAoc2VsZi5hcHBsZXRGcmFtZTEuZG9jdW1lbnRbJ2FwcCddLmlu
aXQpICE9IHVuZGVmaW5lZCBzaG91bGQgYmUgdHJ1ZS4gV2FzIGZhbHNlLgorUEFTUyAoc2VsZi5h
cHBsZXRGcmFtZTIuZG9jdW1lbnRbJ2FwcCddLmluaXQpID09IHVuZGVmaW5lZCBpcyB0cnVlCitQ
QVNTIChzZWxmLmVtYmVkRnJhbWUxLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbHVnaW4nKS5k
ZXN0cm95U3RyZWFtKSAhPSB1bmRlZmluZWQgaXMgdHJ1ZQorUEFTUyAoc2VsZi5lbWJlZEZyYW1l
Mi5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGx1Z2luJykuZGVzdHJveVN0cmVhbSkgPT0gdW5k
ZWZpbmVkIGlzIHRydWUKK1BBU1MgKHNlbGYub2JqZWN0RnJhbWUxLmRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdwbHVnaW4nKS5kZXN0cm95U3RyZWFtKSAhPSB1bmRlZmluZWQgaXMgdHJ1ZQorUEFT
UyAoc2VsZi5vYmplY3RGcmFtZTIuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BsdWdpbicpLmRl
c3Ryb3lTdHJlYW0pID09IHVuZGVmaW5lZCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKyAgICAgICAgIApJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXBs
dWdpbnMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NCBAQAorPGh0bWw+IAorPGhlYWQ+
IAorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5j
dGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PiAKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIAorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsgCisgCit3aW5k
b3cub25sb2FkID0gZnVuY3Rpb24oKSB7IAorICAgIHNob3VsZEJlVHJ1ZSgiKHNlbGYuYXBwbGV0
RnJhbWUxLmRvY3VtZW50WydhcHAnXS5pbml0KSAhPSB1bmRlZmluZWQiKTsKKyAgICBzaG91bGRC
ZVRydWUoIihzZWxmLmFwcGxldEZyYW1lMi5kb2N1bWVudFsnYXBwJ10uaW5pdCkgPT0gdW5kZWZp
bmVkIik7CisKKyAgICBzaG91bGRCZVRydWUoIihzZWxmLmVtYmVkRnJhbWUxLmRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdwbHVnaW4nKS5kZXN0cm95U3RyZWFtKSAhPSB1bmRlZmluZWQiKTsKKyAg
ICBzaG91bGRCZVRydWUoIihzZWxmLmVtYmVkRnJhbWUyLmRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdwbHVnaW4nKS5kZXN0cm95U3RyZWFtKSA9PSB1bmRlZmluZWQiKTsKKworICAgIHNob3VsZEJl
VHJ1ZSgiKHNlbGYub2JqZWN0RnJhbWUxLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbHVnaW4n
KS5kZXN0cm95U3RyZWFtKSAhPSB1bmRlZmluZWQiKTsKKyAgICBzaG91bGRCZVRydWUoIihzZWxm
Lm9iamVjdEZyYW1lMi5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGx1Z2luJykuZGVzdHJveVN0
cmVhbSkgPT0gdW5kZWZpbmVkIik7CisKKyAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOworfSAK
Kzwvc2NyaXB0PiAKKzwvaGVhZD4gCisgCis8Ym9keT4gCisgICAgPHAgaWQ9ImRlc2NyaXB0aW9u
Ij48L3A+CisgCisgICAgPHA+Tk9URTogVGhlIGZpcnN0IHN1Yi10ZXN0IHdpbGwgZmFpbCBpbiBE
dW1wUmVuZGVyVHJlZSwgc2luY2UgRHVtcFJlbmRlclRyZWUKKyAgICBkb2VzIG5vdCBzdXBwb3J0
IGFwcGxldHMuIFRoYXQgc3ViLXRlc3QgbXVzdCBiZSBydW4gaW4gU2FmYXJpIGluc3RlYWQuPC9w
PiAKKworICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCisgICAgPCEtLSBBcHBsZXRzIC0t
PgorICAgIAorICAgIDxpZnJhbWUgaWQ9ImFwcGxldEZyYW1lMSIgCisgICAgICAgICAgICBzdHls
ZT0id2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDEwMHB4OyIgCisgICAgICAgICAgICBzcmM9InJlc291
cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtYXBwbGV0Lmh0bWwiPiAKKyAgICA8
L2lmcmFtZT4gCisgICAgPGlmcmFtZSBpZD0iYXBwbGV0RnJhbWUyIiAKKyAgICAgICAgICAgIHN0
eWxlPSJ3aWR0aDogMjAwcHg7IGhlaWdodDogMTAwcHg7IiAKKyAgICAgICAgICAgIHNhbmRib3g9
ImFsbG93LXNhbWUtb3JpZ2luIGFsbG93LXNjcmlwdHMiIAorICAgICAgICAgICAgc3JjPSJyZXNv
dXJjZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLWZyYW1lLWFwcGxldC5odG1sIj4gCisgICAg
PC9pZnJhbWU+IAorCisgICAgPCEtLSBFbWJlZHMgLS0+CisgICAgCisgICAgPGlmcmFtZSBpZD0i
ZW1iZWRGcmFtZTEiCisgICAgICAgICAgICBzdHlsZT0id2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDEw
MHB4OyIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lu
cy1mcmFtZS1lbWJlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIGlkPSJlbWJl
ZEZyYW1lMiIKKyAgICAgICAgICAgIHN0eWxlPSJ3aWR0aDogMjAwcHg7IGhlaWdodDogMTAwcHg7
IgorICAgICAgICAgICAgc2FuZGJveD0iYWxsb3ctc2FtZS1vcmlnaW4iCisgICAgICAgICAgICBz
cmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtZW1iZWQuaHRtbCI+
CisgICAgPC9pZnJhbWU+CisKKyAgICA8IS0tIE9iamVjdHMgLS0+CisgICAgCisgICAgPGlmcmFt
ZSBpZD0ib2JqZWN0RnJhbWUxIgorICAgICAgICAgICAgc3R5bGU9IndpZHRoOiAyMDBweDsgaGVp
Z2h0OiAxMDBweDsiCisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1l
LXBsdWdpbnMtZnJhbWUtb2JqZWN0Lmh0bWwiPgorICAgIDwvaWZyYW1lPgorICAgIDxpZnJhbWUg
aWQ9Im9iamVjdEZyYW1lMiIKKyAgICAgICAgICAgIHN0eWxlPSJ3aWR0aDogMjAwcHg7IGhlaWdo
dDogMTAwcHg7IgorICAgICAgICAgICAgc2FuZGJveD0iYWxsb3ctc2FtZS1vcmlnaW4iCisgICAg
ICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtb2Jq
ZWN0Lmh0bWwiPgorICAgIDwvaWZyYW1lPgorCisgICAgPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlv
bigiVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgc2FuZGJveGluZyBvZiBwbHVnaW5zIHdvcmtzIGFz
IGludGVuZGVkLiBUaHJlZSB0ZXN0cyBhcmUgbWFkZSwgZWFjaCBpbiBvbmUgc2FuZGJveGVkIGFu
ZCBvbmUgbm9uLXNhbmRib3hlZCBJRnJhbWU6IGFwcGxldHMsIGVtYmVkcywgYW5kIG9iamVjdHMu
Iik7CisgICAgdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgICAgPC9zY3JpcHQ+Cis8
L2JvZHk+IAorPC9odG1sPiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hl
ZC1pZnJhbWUtc2NyaXB0aW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXNjcmlwdGluZy1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXNj
cmlwdGluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKK1Zlcmlm
eSB0aGF0IHNhbmRib3hlZCBmcmFtZXMgd2l0aCBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIiBjYW4g
ZXhlY3V0ZSBzY3JpcHRzLCBidXQgb3RoZXIgc2FuZGJveGVkIGZyYW1lcyBjYW5ub3QuIEFsc28g
dmVyaWZ5IHRoYXQgcmVtb3ZpbmcgdGhlIHNhbmRib3g9ImFsbG93LXNjcmlwdHMiIGF0dHJpYnV0
ZSBhdCBydW50aW1lIHByZXZlbnRzIG5ldyBzY3JpcHRzIGZyb20gbGF1bmNoaW5nLCBidXQgZXhp
c3Rpbmcgb25lcyBrZWVwIHJ1bm5pbmcuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIGRpc2FsbG93ZWRFeGVjdXRlZCBpcyAwCitQQVNTIGFsbG93ZWRFeGVjdXRlZCBpcyAy
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKyAgIApJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1zY3JpcHRpbmcu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZy
YW1lLXNjcmlwdGluZy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFt
ZXMvc2FuZGJveGVkLWlmcmFtZS1zY3JpcHRpbmcuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw0NiBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2lmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgd2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKwordmFyIGRpc2FsbG93ZWRFeGVjdXRlZCA9IDA7Cit2YXIgYWxs
b3dlZEV4ZWN1dGVkID0gMDsKKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBz
aG91bGRCZSgiZGlzYWxsb3dlZEV4ZWN1dGVkIiwgIjAiKTsKKyAgICBzaG91bGRCZSgiYWxsb3dl
ZEV4ZWN1dGVkIiwgIjIiKTsKKworICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7Cit9Cis8L3Nj
cmlwdD4KKzwvaGVhZD4KKworPGJvZHk+CisgICAgPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cisg
CisgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgCisgICAgPGlmcmFtZSBzYW5kYm94PSJh
bGxvdy1zYW1lLW9yaWdpbiBhbGxvdy1zY3JpcHRzIgorICAgICAgICAgICAgc3JjPSJqYXZhc2Ny
aXB0OiArK3dpbmRvdy50b3AuYWxsb3dlZEV4ZWN1dGVkOyI+CisgICAgPC9pZnJhbWU+CisgICAg
PGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zYW1lLW9yaWdpbiIKKyAgICAgICAgICAgIHNyYz0iamF2
YXNjcmlwdDogKyt3aW5kb3cudG9wLmRpc2FsbG93ZWRFeGVjdXRlZDsiPgorICAgIDwvaWZyYW1l
PgorICAgIAorICAgIDxpZnJhbWUgaWQ9ImZyYW1lIiBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQt
aWZyYW1lLXNjcmlwdC1keW5hbWljLmh0bWwiPgorICAgIDwvaWZyYW1lPgorCisgICAgPHNjcmlw
dD4KKyAgICBkZXNjcmlwdGlvbigiVmVyaWZ5IHRoYXQgc2FuZGJveGVkIGZyYW1lcyB3aXRoIHNh
bmRib3g9JnF1b3Q7YWxsb3ctc2NyaXB0cyZxdW90OyBjYW4gZXhlY3V0ZSBzY3JpcHRzLCAiCisg
ICAgICAgICAgICAgICAgICsgImJ1dCBvdGhlciBzYW5kYm94ZWQgZnJhbWVzIGNhbm5vdC4gQWxz
byB2ZXJpZnkgdGhhdCByZW1vdmluZyB0aGUgIgorICAgICAgICAgICAgICAgICArICJzYW5kYm94
PSZxdW90O2FsbG93LXNjcmlwdHMmcXVvdDsgYXR0cmlidXRlIGF0IHJ1bnRpbWUgcHJldmVudHMg
bmV3IHNjcmlwdHMgZnJvbSBsYXVuY2hpbmcsICIKKyAgICAgICAgICAgICAgICAgKyAiYnV0IGV4
aXN0aW5nIG9uZXMga2VlcCBydW5uaW5nLiIpOworICAgIHZhciBzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOworICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL25vbi1zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24u
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvbm9u
LXNhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL25vbi1zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRp
b24uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1IEBACis8aHRtbD4KKzxib2R5PgorICA8
aWZyYW1lIHNyYz0ic2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXNvdXJjZS5odG1sIj48L2lm
cmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jl
c291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWFsbG93ZWQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVk
LWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1hbGxvd2VkLmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1
dGUtcGFyc2luZy1hbGxvd2VkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIgQEAKKzxo
dG1sPgorPHNjcmlwdD4KKwordG9wLmFsbG93ZWRDYWxsRnJvbVNhbmRib3goKTsKKworPC9zY3Jp
cHQ+Cis8Ym9keSBvbmxvYWQ9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmJykuc3VibWl0KCk7
Ij4KKyAgICA8Zm9ybSBpZD0nZicgYWN0aW9uPSJqYXZhc2NyaXB0OnRvcC5kaXNhbGxvd2VkRm9y
bVN1Ym1pdHRlZCgpOyI+CisgICAgICAgIDxpbnB1dCBuYW1lPSJ4IiB2YWx1ZT0ieSIgdHlwZT0i
Y2hlY2tib3giIGNoZWNrZWQ9InllcyIgLz4KKyAgICA8L2Zvcm0+Cis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFt
ZS1hdHRyaWJ1dGUtcGFyc2luZy1kaXNhbGxvd2VkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBh
cnNpbmctZGlzYWxsb3dlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9m
cmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmctZGlzYWxs
b3dlZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUgQEAKKzxodG1sPgorPHNjcmlwdD4K
K3RvcC5kaXNhbGxvd2VkQ2FsbEZyb21TYW5kYm94KCk7Cis8L3NjcmlwdD4KKzwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZv
cm0tYWxsb3dlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jl
c291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tYWxsb3dlZC5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9y
bS1hbGxvd2VkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNSBAQAorPGJvZHkgb25sb2Fk
PSJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZm9ybScpLnN1Ym1pdCgpOyI+Cis8Zm9ybSBpZD0i
Zm9ybSIgYWN0aW9uPSJqYXZhc2NyaXB0OndpbmRvdy50b3AuYWxsb3dlZEZvcm1TdWJtaXR0ZWQo
KTsiPgorICAgIDxpbnB1dCBuYW1lPXggdmFsdWU9eSB0eXBlPSJjaGVja2JveCIgY2hlY2tlZD0i
eWVzIi8+Cis8L2Zvcm0+Cis8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9y
ZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWRpc2FsbG93ZWQuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1m
b3JtLWRpc2FsbG93ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tZGlzYWxsb3dlZC5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDYgQEAKKzxib2R5IG9ubG9hZD0iZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2Zvcm0nKS5zdWJtaXQoKTsiCisgICAgICBiZ2NvbG9yPSd5ZWxsb3cnPgorPGZvcm0g
aWQ9ImZvcm0iIGFjdGlvbj0iamF2YXNjcmlwdDp3aW5kb3cudG9wLmRpc2FsbG93ZWRGb3JtU3Vi
bWl0dGVkKCk7Ij4KKyAgICA8aW5wdXQgbmFtZT14IHZhbHVlPXkgdHlwZT0iY2hlY2tib3giIGNo
ZWNrZWQ9InllcyIvPgorPC9mb3JtPgorPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9m
cmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGVkLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUt
bmF2aWdhdGVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9y
ZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0ZWQuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw1IEBACis8aHRtbD4KKzxib2R5IG9ubG9hZD0nc2VsZi50b3AuY291bnRGcmFtZSgp
Oyc+CituYXZpZ2F0ZWQKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tY2hpbGQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVk
LWlmcmFtZS1uYXZpZ2F0aW9uLWNoaWxkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLWNoaWxk
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTggQEAKKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0PgorZnVuY3Rpb24gbW9kaWZ5KCkKK3sKKyAgICBzZWxmLm5hdmlnYXRlZC5sb2NhdGlvbi5h
c3NpZ24oImphdmFzY3JpcHQ6IHRvcC5jaGlsZEZyYW1lV2FzTmF2aWdhdGVkKCk7Iik7Cit9Cis8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ibW9kaWZ5KCk7Ij4KKyAgICA8aWZyYW1l
IG5hbWU9Im5hdmlnYXRlZCIKKyAgICAgICAgICAgIHNyYz0ic2FuZGJveGVkLWlmcmFtZS1uYXZp
Z2F0aW9uLW5hdmlnYXRlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIG5hbWU9
ImZyYW1lV2l0aFBsdWdpbiIKKyAgICAgICAgICAgIHNyYz0ic2FuZGJveGVkLWlmcmFtZS1wbHVn
aW5zLWZyYW1lLW9iamVjdC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1l
LW5hdmlnYXRpb24tbmF2aWdhdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1uYXZpZ2F0ZWQu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9z
YW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tbmF2aWdhdGVkLmh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsOSBAQAorPGh0bWw+Cis8aGVhZD4KKzwvaGVhZD4KKzxib2R5PgorPCEtLSBUaGlz
IGZpbGUgaXMgaW4gYSBzZXBhcmF0ZSBkb2N1bWVudCBpbiBvcmRlciB0byBzaGFyZSBvcmlnaW4g
d2l0aCB0aGUKK3BhcmVudCBkb2N1bWVudC4gLS0+Citpbm5vY2VudCBjb250ZW50Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJv
eGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXBhcmVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFy
ZW50Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJj
ZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXBhcmVudC5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDggQEAKKzxodG1sPgorPGJvZHk+CisgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxv
dy1zY3JpcHRzIGFsbG93LXNhbWUtb3JpZ2luIgorICAgICAgICAgICAgc3JjPSJzYW5kYm94ZWQt
aWZyYW1lLW5hdmlnYXRpb24tc291cmNlLmh0bWwiPgorICAgIDwvaWZyYW1lPgorICAgIDxwIGlk
PSdpbm5vY2VudF9jb250ZW50Jz5pbm5vY2VudCBjb250ZW50PC9wPgorPC9ib2R5PgorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJh
bWUtbmF2aWdhdGlvbi1zb3VyY2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXNvdXJjZS5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRi
b3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1zb3VyY2UuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxMiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBtb2RpZnkoKQorewor
ICAgIHNlbGYucGFyZW50LmxvY2F0aW9uLmFzc2lnbignc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0
ZWQuaHRtbCcpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9J21vZGlmeSgp
Oyc+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNv
dXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFt
ZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0
bGluay5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMxIEBACis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdD4KKworLyoKKyAqIFNldCB0aGUgdGFyZ2V0IG9mIHRoZSBsaW5rIHRvICdYX3Rhcmdl
dCcsIHdoZXJlIFggaXMgdGhlIG5hbWUgb2YKKyAqIHRoaXMgZnJhbWUuCisgKgorICogVGhlbiBj
bGljayB0aGUgbGluay4KKyAqLworCitmdW5jdGlvbiBjbGlja19saW5rKCkKK3sKKyAgICB2YXIg
ZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnTW91c2VFdmVudCcpOworICAgIGV2ZW50Lmlu
aXRFdmVudCgnY2xpY2snLCB0cnVlLCB0cnVlKTsKKyAgICB2YXIgbGluayA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdsaW5rJyk7CisgICAgbGluay50YXJnZXQgPSBzZWxmLm5hbWUgKyAnX3Rh
cmdldCc7CisgICAgbGluay5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKK30KKworPC9zY3JpcHQ+Cis8
L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0nY2xpY2tfbGluaygpOyc+CisKKyAgICA8YSBocmVmPSJz
YW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRlZC5odG1sIiBpZD0ibGluayI+CisgICAgICAgIChsaW5r
IHRyaWdnZXJlZCBieSBzY3JpcHQpCisgICAgPC9hPgorCis8L2JvZHk+Cis8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZp
Z2F0aW9uLXdpbmRvd29wZW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4uaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5k
Ym94ZWQtaWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDMgQEAKKzxzY3JpcHQ+CisgICAgd2luZG93Lm9wZW4oImphdmFzY3JpcHQ6IG9wZW5l
ci5wYXJlbnQud2luZG93T3BlbmVkKG9wZW5lcik7Iik7Cis8L3NjcmlwdD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJh
bWUtYXBwbGV0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVz
b3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1hcHBsZXQuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZy
YW1lLXBsdWdpbnMtZnJhbWUtYXBwbGV0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEg
QEAKKzxodG1sPgorPGhlYWQ+Cis8L2hlYWQ+CisKKzxib2R5PgorICAgIDxhcHBsZXQgbmFtZT0i
YXBwIgorICAgICAgICAgICAgY29kZWJhc2U9Ii4uLy4uL2RvbS9yZXNvdXJjZXMiCisgICAgICAg
ICAgICBjb2RlPSJUZXN0QXBwbGV0IgorICAgIDwvYXBwbGV0PgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUt
cGx1Z2lucy1mcmFtZS1lbWJlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtZW1iZWQuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5k
Ym94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtZW1iZWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxMiBAQAorPGh0bWw+Cis8aGVhZD4KKzwvaGVhZD4KKworPGJvZHk+CisgICAgPGVtYmVk
IGlkPSJwbHVnaW4iIAorICAgICAgICAgICB0eXBlPSJhcHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0
LW5ldHNjYXBlIgorICAgICAgICAgICBzcmM9ImRhdGE6dGV4dC9wbGFpbiwiCisgICAgICAgICAg
IHN0eWxlPSJ3aWR0aDowOyBoZWlnaHQ6MCI+CisgICAgPC9lbWJlZD4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZy
YW1lLXBsdWdpbnMtZnJhbWUtb2JqZWN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1vYmpl
Y3QuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNl
cy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtb2JqZWN0Lmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTEgQEAKKzxodG1sPgorPGhlYWQ+Cis8L2hlYWQ+CisKKzxib2R5PgorICAg
IDxvYmplY3QgaWQ9InBsdWdpbiIgCisgICAgICAgICAgICB0eXBlPSJhcHBsaWNhdGlvbi94LXdl
YmtpdC10ZXN0LW5ldHNjYXBlIgorICAgICAgICAgICAgc3R5bGU9IndpZHRoOjA7IGhlaWdodDow
Ij4KKyAgICA8L29iamVjdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXNjcmlwdC1keW5hbWljLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hl
ZC1pZnJhbWUtc2NyaXB0LWR5bmFtaWMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXNjcmlwdC1keW5hbWljLmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjYgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
PgorCisgICAgZnJhbWUgPSB3aW5kb3cudG9wLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmcmFt
ZScpOworCisgICAgLy8gc2V0dGluZyB0aGUgc2FuZGJveCBmbGFnIGF0IHJ1bnRpbWUgc2hvdWxk
IG5vdCB0ZXJtaW5hdGUgYWxyZWFkeQorICAgIC8vIHJ1bm5pbmcgc2NyaXB0cyAoZS5nLiwgdGhp
cyBvbmUpCisKKyAgICBmcmFtZS5zYW5kYm94ID0gJ2FsbG93LXNhbWUtb3JpZ2luJzsgICAvLyBO
TyBhbGxvdy1zY3JpcHRzCisKKyAgICArK3dpbmRvdy50b3AuYWxsb3dlZEV4ZWN1dGVkOworCisg
ICAgLy8gaG93ZXZlciwgbmV3IHNjcmlwdHMgKHN1Y2ggYXMgdGhlIG9ubG9hZCBvbmUgYmVsb3cp
IHNob3VsZAorICAgIC8vIG5vdCBydW4KKworICAgIGZ1bmN0aW9uIG9ubG9hZF9ob29rKCkKKyAg
ICB7CisgICAgICAgICsrd2luZG93LnRvcC5kaXNhbGxvd2VkRXhlY3V0ZWQ7CisgICAgfTsKKwor
PC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0nb25sb2FkX2hvb2soKTsnPjwvYm9k
eT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc2FuZGJv
eGVkLWlmcmFtZS1kb2N1bWVudC1jb29raWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc2FuZGJveGVkLWlmcmFtZS1kb2N1bWVudC1j
b29raWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLWRvY3VtZW50LWNvb2tpZS1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOCBAQAorVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGEgU0VD
VVJJVFlfRVJSIGV4Y2VwdGlvbiBpcyByYWlzZWQgd2hpbGUgYWNjZXNzaW5nIGRvY3VtZW50LmRv
bWFpbiBpbiBhIHNhbmRib3hlZCBpZnJhbWUgKHdpdGhvdXQgImFsbG93LW9yaWdpbiIgc2V0KS4g
VGhpcyB0ZXN0IHdpbGwgcHJpbnQgIlBBU1MiIG9uIHN1Y2Nlc3MuCisKKworCistLS0tLS0tLQor
RnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0tLS0tCitQQVNT
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUt
ZG9jdW1lbnQtY29va2llLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLWRvY3VtZW50LWNvb2tpZS5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1l
LWRvY3VtZW50LWNvb2tpZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI1IEBACis8aHRt
bD4KKzxoZWFkPgorCis8c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworfQorCis8L3NjcmlwdD4KKzwv
aGVhZD4KKworPGJvZHk+CisKKyAgICA8cD5UaGlzIHRlc3QgY2hlY2tzIHRoYXQgYSBTRUNVUklU
WV9FUlIgZXhjZXB0aW9uIGlzIHJhaXNlZCB3aGlsZSBhY2Nlc3NpbmcgZG9jdW1lbnQuZG9tYWlu
CisgICAgaW4gYSBzYW5kYm94ZWQgaWZyYW1lICh3aXRob3V0ICZxdW90O2FsbG93LW9yaWdpbiZx
dW90OyBzZXQpLiBUaGlzIHRlc3Qgd2lsbCBwcmludAorICAgICZxdW90O1BBU1MmcXVvdDsgb24g
c3VjY2Vzcy48L3A+CisKKyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93LXNjcmlwdHMiCisgICAg
ICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWRvY3VtZW50LWNvb2tpZS1y
ZWFkLWRlbmllZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKzwvYm9keT4KKworPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLW1vZGlm
eS1zZWxmLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtbW9kaWZ5LXNlbGYtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZy
YW1lLW1vZGlmeS1zZWxmLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMSBA
QAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8g
YWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9zYW5k
Ym94ZWQtaWZyYW1lLW1vZGlmeS1zZWxmLmh0bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRwOi8v
MTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbW9kaWZ5
LXNlbGYuaHRtbC4gRG9tYWlucywgcHJvdG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgorCitU
aGlzIGlzIGEgInNhbml0eSIgdGVzdCBjYXNlIHRvIHZlcmlmeSB0aGF0IGEgc2FuZGJveGVkIGZy
YW1lIGNhbm5vdCBicmVhayBvdXQgb2YgaXRzIHNhbmRib3ggYnkgbW9kaWZ5aW5nIGl0cyBvd24g
c2FuZGJveCBhdHRyaWJ1dGUuIFR3byBhdHRlbXB0cyBhcmUgbWFkZToKKworRmlyc3QsIGFuIGF0
dGVtcHQgaXMgbWFkZSB0byBtb2RpZnkgdGhlIHNhbmRib3ggYXR0cmlidXRlIG9mIHRoZSAic2Vs
ZiIgb2JqZWN0LCByZWZlcnJpbmcgdG8gdGhlIGZyYW1lJ3Mgd2luZG93LiBUaGlzIHNob3VsZCBu
b3QgaGF2ZSBhbnkgZWZmZWN0ICh0aGUgYXR0cmlidXRlIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUg
aWZyYW1lIERPTSBub2RlLCBub3QgdGhlIHdpbmRvdykuIE5vIHdhcm5pbmcgaXMgZXhwZWN0ZWQu
CitTZWNvbmQsIGFuIGF0dGVtcHQgaXMgbWFkZSB0byBtb2RpZnkgdGhlIGlmcmFtZSBET00gb2Jq
ZWN0J3Mgc2FuZGJveCBhdHRyaWJ1dGUuIEEgd2FybmluZyBtZXNzYWdlIChhYm91dCBjcm9zcy1z
aXRlIHNjcmlwdGluZykgaXMgZXhwZWN0ZWQsIGFuZCB0aGUgc2FuZGJveCBhdHRyaWJ1dGUgc2hv
dWxkIHJlbWFpbiBpbnRhY3QuCitUaGlzIHRlc3Qgd2lsbCBwcmludCAiUEFTUyIgb24gc3VjY2Vz
cy4KKworUEFTUworCisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc2Fu
ZGJveGVkLWlmcmFtZS1tb2RpZnktc2VsZi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvc2FuZGJveGVkLWlmcmFtZS1tb2RpZnktc2VsZi5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQt
aWZyYW1lLW1vZGlmeS1zZWxmLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDIgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKK3dpbmRv
dy5vbmxvYWQgPSBmdW5jdGlvbigpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJl
c3VsdCIpLmlubmVySFRNTCA9IChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZiIpLnNhbmRib3gg
IT0gImFsbG93LXNjcmlwdHMiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPyAiRkFJTDogc2FuZGJveCBhdHRyaWJ1dGUgbW9kaWZpZWQiCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJQQVNTIjsKK30KKwor
PC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorICAgIDxwPlRoaXMgaXMgYSAmcXVvdDtzYW5p
dHkmcXVvdDsgdGVzdCBjYXNlIHRvIHZlcmlmeSB0aGF0IGEgc2FuZGJveGVkIAorICAgIGZyYW1l
IGNhbm5vdCBicmVhayBvdXQgb2YgaXRzIHNhbmRib3ggYnkgbW9kaWZ5aW5nIGl0cyBvd24gc2Fu
ZGJveAorICAgIGF0dHJpYnV0ZS4gVHdvIGF0dGVtcHRzIGFyZSBtYWRlOjwvcD4KKyAgICAKKyAg
ICA8b2w+CisgICAgICAgIDxsaT5GaXJzdCwgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIG1vZGlmeSB0
aGUgc2FuZGJveCBhdHRyaWJ1dGUgb2YgdGhlCisgICAgICAgICZxdW90O3NlbGYmcXVvdDsgb2Jq
ZWN0LCByZWZlcnJpbmcgdG8gdGhlIGZyYW1lJ3Mgd2luZG93LiBUaGlzIHNob3VsZAorICAgICAg
ICBub3QgaGF2ZSBhbnkgZWZmZWN0ICh0aGUgYXR0cmlidXRlIGlzIGFzc29jaWF0ZWQgd2l0aCB0
aGUgaWZyYW1lIERPTQorICAgICAgICBub2RlLCBub3QgdGhlIHdpbmRvdykuIE5vIHdhcm5pbmcg
aXMgZXhwZWN0ZWQuPC9saT4KKyAgICAgICAgPGxpPlNlY29uZCwgYW4gYXR0ZW1wdCBpcyBtYWRl
IHRvIG1vZGlmeSB0aGUgaWZyYW1lIERPTSBvYmplY3QncyBzYW5kYm94CisgICAgICAgIGF0dHJp
YnV0ZS4gQSB3YXJuaW5nIG1lc3NhZ2UgKGFib3V0IGNyb3NzLXNpdGUgc2NyaXB0aW5nKSBpcyBl
eHBlY3RlZCwKKyAgICAgICAgYW5kIHRoZSBzYW5kYm94IGF0dHJpYnV0ZSBzaG91bGQgcmVtYWlu
IGludGFjdC48L2xpPgorICAgIDwvb2w+CisgICAgCisgICAgPHA+VGhpcyB0ZXN0IHdpbGwgcHJp
bnQgJnF1b3Q7UEFTUyZxdW90OyBvbiBzdWNjZXNzLjwvcD4KKworICAgIDxwIGlkPSJyZXN1bHQi
PkZBSUw8L3A+CisKKyAgICA8aWZyYW1lIGlkPSJmIgorICAgICAgICAgICAgc2FuZGJveD0iYWxs
b3ctc2NyaXB0cyIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUt
bW9kaWZ5LXNlbGYuaHRtbCI+CisgICAgPC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQtc2FuZGJveGVkLWlm
cmFtZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXNhbmRi
b3hlZC1pZnJhbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAKK0NP
TlNPTEUgTUVTU0FHRTogbGluZSAxOiBVbnNhZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRvIGFjY2Vz
cyBmcmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkveHNzLURFTklF
RC1zYW5kYm94ZWQtaWZyYW1lLmh0bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAu
MC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL3hzcy1ERU5JRUQtc2FuZGJveGVkLWlmcmFtZS1h
dHRhY2tlci5odG1sLiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0Y2guCisK
K0NPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBVbnNhZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRvIGFj
Y2VzcyBmcmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkveHNzLURF
TklFRC1zYW5kYm94ZWQtaWZyYW1lLmh0bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3
LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL3hzcy1ERU5JRUQtc2FuZGJveGVkLWlmcmFt
ZS1hdHRhY2tlci5odG1sLiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0Y2gu
CisKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHNhbmRib3hlZCBpZnJhbWUgcHJldmVudHMgY3Jv
c3MtZG9tYWluIHNjcmlwdCBhY2Nlc3MuIEl0IHdpbGwgcHJpbnQgIlBBU1MiIG9uIHN1Y2Nlc3Mu
CisKKworUEFTUzogY3Jvc3MtZG9tYWluIHNjcmlwdCBhY2Nlc3MgZGlzYWxsb3dlZCBmcm9tIHNh
bmRib3hlZCBpZnJhbWUKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNz
LURFTklFRC1zYW5kYm94ZWQtaWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC1z
YW5kYm94ZWQtaWZyYW1lLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjkgQEAKKzxodG1s
PgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKK3ZhciBkb2NSZWYgPSB1bmRlZmluZWQ7
CisKK3dpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgPQorICAgICAgICAoZG9jUmVmID8gIkZBSUw6IGNy
b3NzLWRvbWFpbiBzY3JpcHQgYWNjZXNzIGFsbG93ZWQgZnJvbSBzYW5kYm94ZWQgaWZyYW1lIgor
ICAgICAgICAgICAgICAgIDogIlBBU1M6IGNyb3NzLWRvbWFpbiBzY3JpcHQgYWNjZXNzIGRpc2Fs
bG93ZWQgZnJvbSBzYW5kYm94ZWQgaWZyYW1lIik7Cit9CisKKzwvc2NyaXB0PgorPGJvZHk+CisK
KyAgICA8cD5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBzYW5kYm94ZWQgaWZyYW1lIHByZXZlbnRz
IGNyb3NzLWRvbWFpbgorICAgIHNjcmlwdCBhY2Nlc3MuIEl0IHdpbGwgcHJpbnQgJnF1b3Q7UEFT
UyZxdW90OyBvbiBzdWNjZXNzLjwvcD4KKworICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc2Ny
aXB0cyIKKyAgICAgICAgICAgIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Jl
c291cmNlcy94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUtYXR0YWNrZXIuaHRtbCI+CisgICAg
PC9pZnJhbWU+CisgICAgCisgICAgPGRpdiBpZD0iY29uc29sZSI+RkFJTDogU2NyaXB0IGRpZG4n
dCBydW48L2Rpdj4KKyAgICAKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZG9jdW1lbnQtY29v
a2llLXJlYWQtZGVuaWVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1kb2N1bWVudC1jb29raWUtcmVh
ZC1kZW5pZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZG9jdW1lbnQtY29va2llLXJlYWQtZGVu
aWVkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjUgQEAKKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0PgorCitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgidGVzdFJlc3VsdCIpLmlubmVySFRNTCA9IChmdW5jdGlvbigpIHsKKyAgICAgICAgdHJ5
IHsKKyAgICAgICAgICAgIHZhciBjb29raWUgPSBkb2N1bWVudC5jb29raWU7CisgICAgICAgIH0K
KyAgICAgICAgY2F0Y2ggKGVycikgeworICAgICAgICAgICAgaWYgKGVyci5uYW1lLmluZGV4T2Yo
IlNFQ1VSSVRZX0VSUiIpICE9IC0xKQorICAgICAgICAgICAgICAgIHJldHVybiAiUEFTUyI7Cisg
ICAgICAgIH0KKworICAgICAgICByZXR1cm4gIkZBSUw6IFNFQ1VSSVRZX0VSUiBub3QgcmFpc2Vk
IjsKKyAgICB9KSgpOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVu
VGVzdCgpOyI+CisgICAgPHAgaWQ9InRlc3RSZXN1bHQiPkZBSUw6IFNjcmlwdCBkaWRuJ3QgcnVu
PC9wPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1tb2RpZnktc2VsZi5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL3NhbmRib3hl
ZC1pZnJhbWUtbW9kaWZ5LXNlbGYuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbW9kaWZ5LXNlbGYu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQ+CisKKy8vIHRoaXMgYXNzaWdubWVudCBzaG91bGQgaGF2ZSBubyBlZmZlY3Qgb24gc2FuZGJv
eCBzdGF0dXMKK3NlbGYuc2FuZGJveCA9ICdhbGxvdy1zY3JpcHRzIGFsbG93LXNhbWUtb3JpZ2lu
IGhhY2tlZC12aWEtd2luZG93LW9iamVjdCc7CisKKy8vIHRoaXMgc2hvdWxkIGJlIHByZXZlbnRl
ZCBieSB0aGUgc2FuZGJveCAnb3JpZ2luJyBmbGFnCitpZiAodG9wLmRvY3VtZW50KQorICAgIHRv
cC5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZicpLnNhbmRib3ggPSAnYWxsb3ctc2NyaXB0cyBh
bGxvdy1zYW1lLW9yaWdpbiBoYWNrZWQtdmlhLWRvbSc7CisKKzwvc2NyaXB0PgorPC9oZWFkPgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMv
eHNzLURFTklFRC1zYW5kYm94ZWQtaWZyYW1lLWF0dGFja2VyLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMveHNzLURFTklFRC1zYW5k
Ym94ZWQtaWZyYW1lLWF0dGFja2VyLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUt
YXR0YWNrZXIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3IEBACis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdD4KKyAgICB0b3AuZG9jUmVmID0gcGFyZW50LmRvY3VtZW50OyAgLy8gYWNjZXNz
IHBhcmVudCdzIERPTSB0cmVlOiBzaG91bGQgbm90IGJlIGFsbG93ZWQKKzwvc2NyaXB0PgorPC9o
ZWFkPgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVz
dC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93LWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1j
b250cm9sLXNhbmRib3hlZC1pZnJhbWUtYWxsb3ctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1z
YW5kYm94ZWQtaWZyYW1lLWFsbG93LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw5IEBACitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBzYW5kYm94ZWQgaWZyYW1lIGhhcyBYbWxI
dHRwUmVxdWVzdCBhY2Nlc3MgdG8gdGhlIHNlcnZlciB0aGF0IGFjY2VwdHMgYWxsIGRvbWFpbnMu
IEl0IHdpbGwgcHJpbnQgIlBBU1MiIG9uIHN1Y2Nlc3MuCisKKworCistLS0tLS0tLQorRnJhbWU6
ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0tLS0tCitQQVNTOiBTYW5k
Ym94ZWQgaWZyYW1lIFhIUiBhY2Nlc3MgYWxsb3dlZC4KKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFs
bG93Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVx
dWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93Lmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250
cm9sLXNhbmRib3hlZC1pZnJhbWUtYWxsb3cuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
OCBAQAorPGh0bWw+Cis8c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworfQorCis8L3NjcmlwdD4KKzxi
b2R5PgorICAgIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHNhbmRib3hlZCBpZnJhbWUgaGFz
IFhtbEh0dHBSZXF1ZXN0IGFjY2VzcworICAgIHRvIHRoZSBzZXJ2ZXIgdGhhdCBhY2NlcHRzIGFs
bCBkb21haW5zLiBJdCB3aWxsIHByaW50ICZxdW90O1BBU1MmcXVvdDsgb24gc3VjY2Vzcy48L3A+
CisgICAgCisgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIiBzcmM9Imh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2Fu
ZGJveGVkLWlmcmFtZS1hbGxvdy1pZnJhbWUuaHRtbCIgc3R5bGU9IndpZHRoOiA1MDBweDsiPgor
ICAgIDwvaWZyYW1lPiAKKyAgICAKKzwvYm9keT4gCis8L2h0bWw+IApJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZy
YW1lLWRlbmllZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmll
ZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACitUaGlzIHRlc3QgdmVyaWZpZXMg
dGhhdCBzYW5kYm94ZWQgaWZyYW1lIGRvZXMgbm90IGhhdmUgWG1sSHR0cFJlcXVlc3QgYWNjZXNz
IHRvIGl0cyBzZXJ2ZXIuIEl0IHdpbGwgcHJpbnQgIlBBU1MiIG9uIHN1Y2Nlc3MuCisKKworCist
LS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0t
LS0tCitQQVNTOiBFeGNlcHRpb24gdGhyb3duLiBTYW5kYm94ZWQgaWZyYW1lIFhIUiBhY2Nlc3Mg
d2FzIGRlbmllZCBpbiAnc2VuZCcuIFtORVRXT1JLX0VSUjogWE1MSHR0cFJlcXVlc3QgRXhjZXB0
aW9uIDEwMV0uCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Fj
Y2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtd2l0aG91dC13aWxk
Y2FyZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdp
dGhvdXQtd2lsZGNhcmQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwIEBA
CitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBzYW5kYm94ZWQgaWZyYW1lIGRvZXMgbm90IGhhdmUg
WG1sSHR0cFJlcXVlc3QgYWNjZXNzIHRvIGl0cyBzZXJ2ZXIgd2l0aCAiQWNjZXNzLUNvbnRyb2wt
QWxsb3ctT3JpZ2luIiBzZXQgdG8gaXRzIG93biBvcmlnaW4gKDEyNy4wLjAuMSkuCisKK1RoaXMg
dGVzdCB3aWxsIHByaW50ICJQQVNTIiBvbiBzdWNjZXNzLgorCisKKworLS0tLS0tLS0KK0ZyYW1l
OiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4nCistLS0tLS0tLQorUEFTUzogRXhj
ZXB0aW9uIHRocm93bi4gU2FuZGJveGVkIGlmcmFtZSBYSFIgYWNjZXNzIHdhcyBkZW5pZWQgaW4g
J3NlbmQnLiBbTkVUV09SS19FUlI6IFhNTEh0dHBSZXF1ZXN0IEV4Y2VwdGlvbiAxMDFdLgpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1z
YW5kYm94ZWQtaWZyYW1lLWRlbmllZC13aXRob3V0LXdpbGRjYXJkLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1z
YW5kYm94ZWQtaWZyYW1lLWRlbmllZC13aXRob3V0LXdpbGRjYXJkLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9s
LXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwyMiBAQAorPGh0bWw+Cis8c2NyaXB0PgorCitpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworfQor
Cis8L3NjcmlwdD4KKzxib2R5PgorCisgICAgPHA+VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgc2Fu
ZGJveGVkIGlmcmFtZSBkb2VzIG5vdCBoYXZlIFhtbEh0dHBSZXF1ZXN0IGFjY2VzcyB0bworICAg
IGl0cyBzZXJ2ZXIgd2l0aCAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIiBzZXQgdG8gaXRz
IG93biBvcmlnaW4gKDEyNy4wLjAuMSkuPC9wPgorICAgIAorICAgIDxwPlRoaXMgdGVzdCB3aWxs
IHByaW50ICZxdW90O1BBU1MmcXVvdDsgb24gc3VjY2Vzcy48L3A+CisKKyAgICA8aWZyYW1lIHNh
bmRib3g9ImFsbG93LXNjcmlwdHMiCisgICAgICAgICAgICBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlm
cmFtZS1kZW5pZWQtd2l0aG91dC13aWxkY2FyZC1pZnJhbWUuaHRtbCIgc3R5bGU9IndpZHRoOiA1
MDBweDsiPgorICAgIDwvaWZyYW1lPgorICAgIAorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94
ZWQtaWZyYW1lLWRlbmllZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVl
c3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxOSBAQAorPGh0bWw+IAorPHNjcmlwdD4KKworaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKK30K
KworPC9zY3JpcHQ+CisKKzxib2R5PiAKKyAgICA8cD5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBz
YW5kYm94ZWQgaWZyYW1lIGRvZXMgbm90IGhhdmUgWG1sSHR0cFJlcXVlc3QgYWNjZXNzCisgICAg
dG8gaXRzIHNlcnZlci4gSXQgd2lsbCBwcmludCAmcXVvdDtQQVNTJnF1b3Q7IG9uIHN1Y2Nlc3Mu
PC9wPgorICAgIAorICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyIKKyAgICAgICAg
ICAgIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9h
Y2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC1pZnJhbWUuaHRtbCIgc3R5bGU9
IndpZHRoOiA1MDBweDsiPgorICAgIDwvaWZyYW1lPiAKKzwvYm9keT4gCis8L2h0bWw+IApJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNz
LWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1hbGxvdy1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3Mt
Y29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93LWlmcmFtZS5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNz
LWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1hbGxvdy1pZnJhbWUuaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwyNSBAQAorPGh0bWw+IAorPGJvZHk+IAorPHByZSBpZD0nY29uc29sZSc+PC9w
cmU+IAorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiAKKworZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwgPSAoZnVuY3Rpb24oKSB7IAorICAgIHZhciB4
aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3Q7IAorIAorICAgIHRyeSB7IAorICAgICAgICB4aHIub3Bl
bigiR0VUIiwgImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMv
YWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1hbGxvdy5jZ2kiLCBmYWxzZSk7IAorICAg
IH0gY2F0Y2goZSkgeyAKKyAgICAgICAgcmV0dXJuICJGQUlMOiBFeGNlcHRpb24gdGhyb3duLiBT
YW5kYm94ZWQgaWZyYW1lIFhIUiBhY2Nlc3MgaXMgbm90IGFsbG93ZWQgaW4gJ29wZW4nLiBbIiAr
IGUubWVzc2FnZSArICJdLiI7IAorICAgIH0gCisgCisgICAgdHJ5IHsgCisgICAgICAgIHhoci5z
ZW5kKCk7IAorICAgIH0gY2F0Y2goZSkgeyAKKyAgICAgICAgcmV0dXJuICJGQUlMOiBFeGNlcHRp
b24gdGhyb3duLiBTYW5kYm94ZWQgaWZyYW1lIFhIUiBhY2Nlc3MgaXMgbm90IGFsbG93ZWQgaW4g
J3NlbmQnLiBbIiArIGUubWVzc2FnZSArICJdLiI7IAorICAgIH0gCisgCisgICAgcmV0dXJuIHho
ci5yZXNwb25zZVRleHQ7IAorfSkoKTsgCis8L3NjcmlwdD4gCis8L2JvZHk+IAorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNj
ZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1hbGxvdy5jZ2kKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRy
b2wtc2FuZGJveGVkLWlmcmFtZS1hbGxvdy5jZ2kJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5k
Ym94ZWQtaWZyYW1lLWFsbG93LmNnaQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACisjIS91
c3IvYmluL3BlcmwgLXdUCit1c2Ugc3RyaWN0OworCitwcmludCAiQ29udGVudC1UeXBlOiB0ZXh0
L3BsYWluXG4iOworcHJpbnQgIkFjY2Vzcy1Db250cm9sLUFsbG93LUNyZWRlbnRpYWxzOiB0cnVl
XG4iOworcHJpbnQgIkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbjogKlxuXG4iOworCitwcmlu
dCAiUEFTUzogU2FuZGJveGVkIGlmcmFtZSBYSFIgYWNjZXNzIGFsbG93ZWQuXG4iOwoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNv
dXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1hbGxvdy5jZ2kKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKICAgKyAqCgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlm
cmFtZS1kZW5pZWQtaWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlm
cmFtZS1kZW5pZWQtaWZyYW1lLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQt
aWZyYW1lLWRlbmllZC1pZnJhbWUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNyBAQAor
PGh0bWw+IAorPGJvZHk+IAorPHByZSBpZD0nY29uc29sZSc+PC9wcmU+IAorPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiPiAKKworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUn
KS5pbm5lckhUTUwgPSAoZnVuY3Rpb24oKSB7CisgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVx
dWVzdDsgCisgCisgCisgICAgdHJ5IHsgCisgICAgICAgIHhoci5vcGVuKCJHRVQiLCAiaHR0cDov
LzEyNy4wLjAuMTo4MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1z
YW5kYm94ZWQtaWZyYW1lLWRlbmllZC5jZ2kiLCBmYWxzZSk7IAorICAgIH0gY2F0Y2goZSkgeyAK
KyAgICAgICAgcmV0dXJuICJGQUlMOiBFeGNlcHRpb24gdGhyb3duLiBTYW5kYm94ZWQgaWZyYW1l
IFhIUiBhY2Nlc3MgaXMgbm90IGFsbG93ZWQgaW4gJ29wZW4nLiBbIiArIGUubWVzc2FnZSArICJd
LiI7IAorICAgIH0gCisgCisgICAgdHJ5IHsgCisgICAgICAgIHhoci5zZW5kKCk7IAorICAgIH0g
Y2F0Y2goZSkgeyAKKyAgICAgICAgcmV0dXJuICJQQVNTOiBFeGNlcHRpb24gdGhyb3duLiBTYW5k
Ym94ZWQgaWZyYW1lIFhIUiBhY2Nlc3Mgd2FzIGRlbmllZCBpbiAnc2VuZCcuIFsiICsgZS5tZXNz
YWdlICsgIl0uIjsgCisgICAgfQorIAorICAgIHJldHVybiB4aHIucmVzcG9uc2VUZXh0OyAKK30p
KCk7CisgIAorPC9zY3JpcHQ+IAorPC9ib2R5PiAKKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRi
b3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQtaWZyYW1lLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNj
ZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtd2l0aG91dC13aWxkY2FyZC1pZnJh
bWUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdp
dGhvdXQtd2lsZGNhcmQtaWZyYW1lLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjYgQEAK
KzxodG1sPgorPGJvZHk+Cis8cHJlIGlkPSdjb25zb2xlJz48L3ByZT4KKzxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0Ij4KKworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5p
bm5lckhUTUwgPSAoZnVuY3Rpb24oKSB7CisgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVz
dDsKKworICAgIHRyeSB7CisgICAgICAgIHhoci5vcGVuKCJHRVQiLCAiaHR0cDovLzEyNy4wLjAu
MTo4MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQt
aWZyYW1lLWRlbmllZC13aXRob3V0LXdpbGRjYXJkLmNnaSIsIGZhbHNlKTsKKyAgICB9IGNhdGNo
KGUpIHsKKyAgICAgICAgcmV0dXJuICJGQUlMOiBFeGNlcHRpb24gdGhyb3duLiBTYW5kYm94ZWQg
aWZyYW1lIFhIUiBhY2Nlc3MgaXMgbm90IGFsbG93ZWQgaW4gJ29wZW4nLiBbIiArIGUubWVzc2Fn
ZSArICJdLiI7CisgICAgfQorCisgICAgdHJ5IHsKKyAgICAgICAgeGhyLnNlbmQoKTsKKyAgICB9
IGNhdGNoKGUpIHsKKyAgICAgICAgcmV0dXJuICJQQVNTOiBFeGNlcHRpb24gdGhyb3duLiBTYW5k
Ym94ZWQgaWZyYW1lIFhIUiBhY2Nlc3Mgd2FzIGRlbmllZCBpbiAnc2VuZCcuIFsiICsgZS5tZXNz
YWdlICsgIl0uIjsKKyAgICB9CisKKyAgICByZXR1cm4geGhyLnJlc3BvbnNlVGV4dDsKK30pKCk7
CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlm
cmFtZS1kZW5pZWQtd2l0aG91dC13aWxkY2FyZC5jZ2kKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2Fu
ZGJveGVkLWlmcmFtZS1kZW5pZWQtd2l0aG91dC13aWxkY2FyZC5jZ2kJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3Mt
Y29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC13aXRob3V0LXdpbGRjYXJkLmNnaQkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACisjIS91c3IvYmluL3BlcmwgLXdUCit1c2Ugc3RyaWN0
OworCitwcmludCAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluXG4iOworcHJpbnQgIkFjY2Vzcy1D
b250cm9sLUFsbG93LUNyZWRlbnRpYWxzOiB0cnVlXG4iOworcHJpbnQgIkFjY2Vzcy1Db250cm9s
LUFsbG93LU9yaWdpbjogaHR0cDovLzEyNy4wLjAuMTo4MDAwXG5cbiI7CisKK3ByaW50ICJGQUlM
OiBTYW5kYm94ZWQgaWZyYW1lIFhIUiBhY2Nlc3MgYWxsb3dlZC5cbiI7CgpQcm9wZXJ0eSBjaGFu
Z2VzIG9uOiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9h
Y2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC13aXRob3V0LXdpbGRjYXJkLmNn
aQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQogICArICoKCkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1z
YW5kYm94ZWQtaWZyYW1lLWRlbmllZC5jZ2kKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVk
LWlmcmFtZS1kZW5pZWQuY2dpCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFt
ZS1kZW5pZWQuY2dpCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYgQEAKKyMhL3Vzci9iaW4vcGVy
bCAtd1QKK3VzZSBzdHJpY3Q7CisKK3ByaW50ICJDb250ZW50LVR5cGU6IHRleHQvcGxhaW5cblxu
IjsKKworcHJpbnQgIkZBSUw6IFNhbmRib3hlZCBpZnJhbWUgWEhSIGFjY2VzcyBhbGxvd2VkLlxu
IjsKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLmNn
aQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQogICArICoKCkluZGV4OiBMYXlvdXRU
ZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3NhbmRib3hlZC1pZnJhbWUtZGVu
aWVkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0
b3JhZ2UvbG9jYWxzdG9yYWdlL3NhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3Jh
Z2Uvc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDEwIEBACitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBzYW5kYm94ZWQgaWZyYW1lIGRv
ZXMgbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBsb2NhbCBzdG9yYWdlIG9mIGl0cyBjb250YWluaW5n
IGZyYW1lIGZyb20gdGhlIHNhbWUgb3JpZ2luLgorCitUaGlzIHRlc3Qgd2lsbCBwcmludCAiUEFT
UyIgb24gc3VjY2Vzcy4KKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88
IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK1BBU1M6IFNhbmRib3hlZCBpZnJhbWUgZG9lcyBu
b3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIGxvY2FsIHN0b3JhZ2UgZnJvbSB0aGUgc2FtZSBvcmlnaW4u
CkluZGV4OiBMYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3NhbmRi
b3hlZC1pZnJhbWUtZGVuaWVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3RvcmFn
ZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFn
ZS9zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM5
IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK3dpbmRvdy5vbmxvYWQgPSBmdW5j
dGlvbigpCit7CisgICAgaWYgKCF3aW5kb3cubG9jYWxTdG9yYWdlKSB7CisgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJsb2dnZXIiKS5pbm5lckhUTUwgPSAid2luZG93LmxvY2FsU3Rv
cmFnZSBET0VTIE5PVCBleGlzdCI7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBsb2NhbFN0b3JhZ2UuY2xlYXIoKTsKKyAgICBs
b2NhbFN0b3JhZ2UuZm9vID0gImJhciI7CisKKyAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgaWZyYW1lLnNhbmRib3ggPSAiYWxsb3ctc2NyaXB0
cyI7CisgICAgaWZyYW1lLnNyYyA9ICJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQt
aWZyYW1lLmh0bWwiOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTsKK30K
KworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8cD5UaGlzIHRlc3QgdmVyaWZpZXMg
dGhhdCBzYW5kYm94ZWQgaWZyYW1lIGRvZXMgbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBsb2NhbCBz
dG9yYWdlCisgICAgb2YgaXRzIGNvbnRhaW5pbmcgZnJhbWUgZnJvbSB0aGUgc2FtZSBvcmlnaW4u
PC9wPgorCisgICAgPHA+VGhpcyB0ZXN0IHdpbGwgcHJpbnQgJnF1b3Q7UEFTUyZxdW90OyBvbiBz
dWNjZXNzLjwvcD4KKworICAgIDxkaXYgaWQ9ImxvZ2dlciI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3Jl
c291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3Jlc291cmNlcy9z
YW5kYm94ZWQtaWZyYW1lLWRlbmllZC1pZnJhbWUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2UvcmVzb3VyY2VzL3NhbmRib3hl
ZC1pZnJhbWUtZGVuaWVkLWlmcmFtZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIwIEBA
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkK
K3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nZ2VyIikuaW5uZXJIVE1MID0gKGxv
Y2FsU3RvcmFnZS5nZXRJdGVtKCJmb28iKSA9PSAiYmFyIikKKyAgICAgICAgPyAiRkFJTDogU2Fu
ZGJveGVkIGlmcmFtZSBoYXMgYWNjZXNzIHRvIHRoZSBsb2NhbCBzdG9yYWdlIGZyb20gdGhlIHNh
bWUgb3JpZ2luLiIKKyAgICAgICAgOiAiUEFTUzogU2FuZGJveGVkIGlmcmFtZSBkb2VzIG5vdCBo
YXZlIGFjY2VzcyB0byB0aGUgbG9jYWwgc3RvcmFnZSBmcm9tIHRoZSBzYW1lIG9yaWdpbi4iOwor
CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0ibG9nZ2VyIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9zZXNzaW9uc3RvcmFnZS9zYW5kYm94ZWQtaWZyYW1l
LWRlbmllZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3RvcmFnZS9k
b21zdG9yYWdlL3Nlc3Npb25zdG9yYWdlL3NhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9zZXNz
aW9uc3RvcmFnZS9zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHNhbmRib3hlZCBp
ZnJhbWUgZG9lcyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIHNlc3Npb24gc3RvcmFnZSBvZiBpdHMg
Y29udGFpbmluZyBmcmFtZSBmcm9tIHRoZSBzYW1lIG9yaWdpbi4KKworVGhpcyB0ZXN0IHdpbGwg
cHJpbnQgIlBBU1MiIG9uIHN1Y2Nlc3MuCisKKworCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJh
bWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0tLS0tCitQQVNTOiBTYW5kYm94ZWQgaWZy
YW1lIGRvZXMgbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBzZXNzaW9uIHN0b3JhZ2UgZnJvbSB0aGUg
c2FtZSBvcmlnaW4uCkluZGV4OiBMYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2Uvc2Vzc2lv
bnN0b3JhZ2Uvc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2Uvc2Vzc2lvbnN0b3JhZ2Uvc2FuZGJveGVkLWlmcmFt
ZS1kZW5pZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3Rv
cmFnZS9zZXNzaW9uc3RvcmFnZS9zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDM5IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKworaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ2hpbGRGcmFtZXNBc1Rl
eHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK3dp
bmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpCit7CisgICAgaWYgKCF3aW5kb3cuc2Vzc2lvblN0b3Jh
Z2UpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZ2dlciIpLmlubmVySFRN
TCA9ICJ3aW5kb3cuc2Vzc2lvblN0b3JhZ2UgRE9FUyBOT1QgZXhpc3QiOworICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2Vzc2lv
blN0b3JhZ2UuY2xlYXIoKTsKKyAgICBzZXNzaW9uU3RvcmFnZS5mb28gPSAiYmFyIjsKKworICAg
IHZhciBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICBpZnJh
bWUuc2FuZGJveCA9ICJhbGxvdy1zY3JpcHRzIjsKKyAgICBpZnJhbWUuc3JjID0gInJlc291cmNl
cy9zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC1pZnJhbWUuaHRtbCI7CisgICAgZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZChpZnJhbWUpOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
ICAgIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHNhbmRib3hlZCBpZnJhbWUgZG9lcyBub3Qg
aGF2ZSBhY2Nlc3MgdG8gdGhlIHNlc3Npb24gc3RvcmFnZQorICAgIG9mIGl0cyBjb250YWluaW5n
IGZyYW1lIGZyb20gdGhlIHNhbWUgb3JpZ2luLjwvcD4KKworICAgIDxwPlRoaXMgdGVzdCB3aWxs
IHByaW50ICZxdW90O1BBU1MmcXVvdDsgb24gc3VjY2Vzcy48L3A+CisKKyAgICA8ZGl2IGlkPSJs
b2dnZXIiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvc3RvcmFn
ZS9kb21zdG9yYWdlL3Nlc3Npb25zdG9yYWdlL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWRl
bmllZC1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0
b3JhZ2Uvc2Vzc2lvbnN0b3JhZ2UvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWlm
cmFtZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdl
L3Nlc3Npb25zdG9yYWdlL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC1pZnJhbWUu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQ+CisKK3dpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImxvZ2dlciIpLmlubmVySFRNTCA9IChzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCJm
b28iKSA9PSAiYmFyIikKKyAgICAgICAgPyAiRkFJTDogU2FuZGJveGVkIGlmcmFtZSBoYXMgYWNj
ZXNzIHRvIHRoZSBzZXNzaW9uIHN0b3JhZ2UgZnJvbSB0aGUgc2FtZSBvcmlnaW4uIgorICAgICAg
ICA6ICJQQVNTOiBTYW5kYm94ZWQgaWZyYW1lIGRvZXMgbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBz
ZXNzaW9uIHN0b3JhZ2UgZnJvbSB0aGUgc2FtZSBvcmlnaW4uIjsKKworICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImxvZ2dl
ciI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43508</attachid>
            <date>2009-11-19 08:53:12 -0800</date>
            <delta_ts>2009-11-20 09:08:51 -0800</delta_ts>
            <desc>Patch with simplified storage/database sandboxing</desc>
            <filename>sandbox-r51076.patch</filename>
            <type>text/plain</type>
            <size>99705</size>
            <attacher name="Patrik Persson">patrik.j.persson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTE4NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODYgQEAKKzIwMDktMTEtMTkgIFBhdHJpayBQZXJzc29uICA8cGF0cmlrLmoucGVy
c3NvbkBlcmljc3Nvbi5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wbGVtZW50IEhUTUw1IHNhbmRib3ggYXR0cmlidXRlIGZvciBpZnJhbWVz
LgorICAgICAgICBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS90ZXh0LWxldmVsLXNlbWFudGlj
cy5odG1sI2F0dHItaWZyYW1lLXNhbmRib3gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMjg4CisKKyAgICAgICAgVGVzdHM6IGZhc3QvZnJhbWVzL3Nh
bmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmcuaHRtbAorICAgICAgICAgICAgICAgZmFz
dC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1mb3Jtcy5odG1sCisgICAgICAgICAgICAgICBmYXN0
L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tYWxsb3dlZC5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50Lmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlv
bi10YXJnZXRsaW5rLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1p
ZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZnJh
bWVzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zy
YW1lcy9zYW5kYm94ZWQtaWZyYW1lLXNjcmlwdGluZy5odG1sCisgICAgICAgICAgICAgICBmYXN0
L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXN0b3JhZ2UuaHRtbAorICAgICAgICAgICAgICAgaHR0
cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLWRvY3VtZW50LWNvb2tpZS5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtbW9kaWZ5
LXNlbGYuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVE
LXNhbmRib3hlZC1pZnJhbWUuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy94bWxodHRw
cmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93Lmh0bWwKKyAgICAg
ICAgICAgICAgIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJv
eGVkLWlmcmFtZS1kZW5pZWQtd2l0aG91dC13aWxkY2FyZC5odG1sCisgICAgICAgICAgICAgICBo
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUt
ZGVuaWVkLmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNw
cDogc2FuZGJveGluZyBuYXZpZ2F0aW9uCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVXaW5kb3cp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOiBzYW5kYm94aW5n
IHNjcmlwdHMKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmlzRW5hYmxlZCk6
CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojpwcm9jZXNzSHR0cEVxdWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpjb29raWUp
OiByYWlzZSBleGNlcHRpb24gd2hlbiBhY2Nlc3NlZCBmcm9tIHNhbmRib3gKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpzZXRDb29raWUpOiByYWlzZSBleGNlcHRpb24gd2hlbiBhY2Nlc3Nl
ZCBmcm9tIHNhbmRib3gKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojppbml0U2VjdXJpdHlD
b250ZXh0KTogY29weSBzYW5kYm94IHN0YXR1cyBmcm9tIGZyYW1lIHRvIFNlY3VyaXR5T3JpZ2lu
CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL0RvY3VtZW50LmlkbDoK
KyAgICAgICAgKiBodG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcDogc2FuZGJveGluZyBhcHBsZXRz
CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQ6OnJlbmRlcldpZGdldEZvckpTQmlu
ZGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQ6OmlzSmF2YUVuYWJs
ZWQpOgorICAgICAgICAqIGh0bWwvSFRNTEFwcGxldEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1s
L0hUTUxBdHRyaWJ1dGVOYW1lcy5pbjoKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZU93bmVyRWxl
bWVudC5jcHA6IG1hbmFnZW1lbnQgb2Ygc2FuZGJveCBmbGFncyBhcyBzdGF0ZWQgaW4gYXR0cmli
dXRlCisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQ6OkhUTUxGcmFtZU93
bmVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQ6OnNl
dFNhbmRib3hGbGFncyk6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudDo6c2FuZGJveEZsYWdzKToK
KyAgICAgICAgKiBodG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcDogc2FuZGJveCBhdHRyaWJ1dGUg
cGFyc2luZworICAgICAgICAoV2ViQ29yZTo6cGFyc2VTYW5kYm94QXR0cmlidXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxJRnJhbWVFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6Cisg
ICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGw6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6Z2V0Q29va2llcyk6CisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNz
Q29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXNzZXNBY2Nlc3NDb250cm9sQ2hlY2sp
OgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6RnJhbWVMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnN1Ym1pdEZvcm0pOiBzYW5k
Ym94aW5nIGZvcm1zCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6cmVxdWVzdE9iamVj
dCk6IHNhbmRib3hpbmcgcGx1Z2lucworICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnNo
b3VsZEFsbG93TmF2aWdhdGlvbik6IHNhbmRib3hpbmcgbmF2aWdhdGlvbgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6Om93bmVyRWxlbWVudFNhbmRib3hGbGFnc0NoYW5nZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnVwZGF0ZVNhbmRib3hGbGFncyk6IHByb3BhZ2F0
aW9uIG9mIHNhbmRib3ggZmxhZ3MKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjp1cGRh
dGVTYW5kYm94RmxhZ3NGb3JTaW5nbGVGcmFtZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6aXNTYW5kYm94ZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnNhbmRib3hGbGFncyk6CisgICAgICAgICogbG9h
ZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgICog
cGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpzZXNzaW9u
U3RvcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmxvY2FsU3RvcmFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6Om9wZW5EYXRhYmFzZSk6CisgICAgICAgICogcGFn
ZS9TZWN1cml0eU9yaWdpbi5jcHA6IG1haW50YWlucyBzYW5kYm94IGZsYWdzLCBhcyBkZXRlcm1p
bmVkIGJ5IHRoZSBmcmFtZQorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OlNlY3Vy
aXR5T3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nlc3Mp
OgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNhblJlcXVlc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OnRvU3RyaW5nKToKKyAgICAgICAgKiBwYWdlL1Nl
Y3VyaXR5T3JpZ2luLmg6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6c2V0U2Fu
ZGJveEZsYWdzKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjppc1NhbmRib3hl
ZCk6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmRpZFJlY2VpdmVEYXRhKToKKwogMjAwOS0xMS0x
OSAgT2xpdmllciBHb2ZmYXJ0ICA8b2dvZmZhcnRAdHJvbGx0ZWNoLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiA1MTA3NikKKysrIFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NDQsNiArNzQ0LDEw
IEBAIHN0YXRpYyBGcmFtZSogY3JlYXRlV2luZG93KEV4ZWNTdGF0ZSogZXgKICAgICBBU1NFUlQo
bGV4aWNhbEZyYW1lKTsKICAgICBBU1NFUlQoZHluYW1pY0ZyYW1lKTsKIAorICAgIC8vIFNhbmRi
b3hlZCBpZnJhbWVzIGNhbm5vdCBvcGVuIG5ldyBhdXhpbGlhcnkgYnJvd3NpbmcgY29udGV4dHMu
CisgICAgaWYgKGxleGljYWxGcmFtZSAmJiBsZXhpY2FsRnJhbWUtPmxvYWRlcigpLT5pc1NhbmRi
b3hlZChTYW5kYm94TmF2aWdhdGlvbikpCisgICAgICAgIHJldHVybiAwOworCiAgICAgUmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3Q7CiAKICAgICAvLyBGb3Igd2hhdGV2ZXIgcmVhc29uLCBGaXJlZm94
IHVzZXMgdGhlIGR5bmFtaWNHbG9iYWxPYmplY3QgdG8gZGV0ZXJtaW5lCkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDUxMDc2KQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjkyLDcgKzI5Miw3IEBAIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6YW55UGFnZUlzUHJvY2Vzc2kK
IGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6aXNFbmFibGVkKCkKIHsKICAgICBTZXR0aW5ncyogc2V0
dGluZ3MgPSBtX2ZyYW1lLT5zZXR0aW5ncygpOwotICAgIHJldHVybiBtX2ZyYW1lLT5sb2FkZXIo
KS0+Y2xpZW50KCktPmFsbG93SmF2YVNjcmlwdChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+aXNKYXZh
U2NyaXB0RW5hYmxlZCgpKTsKKyAgICByZXR1cm4gbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgp
LT5hbGxvd0phdmFTY3JpcHQoc2V0dGluZ3MgJiYgc2V0dGluZ3MtPmlzSmF2YVNjcmlwdEVuYWJs
ZWQoKSAmJiAhbV9mcmFtZS0+bG9hZGVyKCktPmlzU2FuZGJveGVkKFNhbmRib3hTY3JpcHRzKSk7
CiB9CiAKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6YXR0YWNoRGVidWdnZXIoSlNDOjpEZWJ1Z2dl
ciogZGVidWdnZXIpCkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA1MTA3NikKKysrIFdlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE3Myw4ICsyMTczLDEwIEBAIHZv
aWQgRG9jdW1lbnQ6OnByb2Nlc3NIdHRwRXF1aXYoY29uc3QgU3QKICAgICAgICAgfQogICAgIH0g
ZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZXF1aXYsICJzZXQtY29va2llIikpIHsKICAgICAg
ICAgLy8gRklYTUU6IG1ha2Ugc2V0Q29va2llIHdvcmsgb24gWE1MIGRvY3VtZW50cyB0b287IGUu
Zy4gaW4gY2FzZSBvZiA8aHRtbDptZXRhIC4uLi4uPgotICAgICAgICBpZiAoaXNIVE1MRG9jdW1l
bnQoKSkKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KHRoaXMpLT5zZXRD
b29raWUoY29udGVudCk7CisgICAgICAgIGlmIChpc0hUTUxEb2N1bWVudCgpKSB7CisgICAgICAg
ICAgICBFeGNlcHRpb25Db2RlIGVjOyAvLyBFeGNlcHRpb24gKGZvciBzYW5kYm94ZWQgZG9jdW1l
bnRzKSBpZ25vcmVkLgorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4odGhp
cyktPnNldENvb2tpZShjb250ZW50LCBlYyk7CisgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGVx
dWFsSWdub3JpbmdDYXNlKGVxdWl2LCAiY29udGVudC1sYW5ndWFnZSIpKQogICAgICAgICBzZXRD
b250ZW50TGFuZ3VhZ2UoY29udGVudCk7CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
ZXF1aXYsICJ4LWRucy1wcmVmZXRjaC1jb250cm9sIikpCkBAIC0yOTkyLDExICsyOTk0LDIwIEBA
IEVsZW1lbnQqIERvY3VtZW50Ojpvd25lckVsZW1lbnQoKSBjb25zdAogICAgIHJldHVybiBmcmFt
ZSgpLT5vd25lckVsZW1lbnQoKTsKIH0KIAotU3RyaW5nIERvY3VtZW50Ojpjb29raWUoKSBjb25z
dAorU3RyaW5nIERvY3VtZW50Ojpjb29raWUoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7CiAg
ICAgaWYgKHBhZ2UoKSAmJiAhcGFnZSgpLT5jb29raWVFbmFibGVkKCkpCiAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKIAorICAgIC8vIEZJWE1FOiBUaGUgSFRNTDUgRE9NIHNwZWMgc3RhdGVzIHRo
YXQgdGhpcyBhdHRyaWJ1dGUgY2FuIHJhaXNlIGFuCisgICAgLy8gSU5WQUxJRF9TVEFURV9FUlIg
ZXhjZXB0aW9uIG9uIGdldHRpbmcgaWYgdGhlIERvY3VtZW50IGhhcyBubworICAgIC8vIGJyb3dz
aW5nIGNvbnRleHQuCisKKyAgICBpZiAoc2VjdXJpdHlPcmlnaW4oKS0+aXNTYW5kYm94ZWQoU2Fu
ZGJveE9yaWdpbikpIHsKKyAgICAgICAgZWMgPSBTRUNVUklUWV9FUlI7CisgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKKyAgICB9CisKICAgICBLVVJMIGNvb2tpZVVSTCA9IHRoaXMtPmNvb2tpZVVS
TCgpOwogICAgIGlmIChjb29raWVVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CkBAIC0zMDA0LDExICszMDE1LDIwIEBAIFN0cmluZyBEb2N1bWVudDo6Y29va2llKCkgY29u
c3QKICAgICByZXR1cm4gY29va2llcyh0aGlzLCBjb29raWVVUkwpOwogfQogCi12b2lkIERvY3Vt
ZW50OjpzZXRDb29raWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgRG9jdW1lbnQ6OnNldENv
b2tpZShjb25zdCBTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAo
cGFnZSgpICYmICFwYWdlKCktPmNvb2tpZUVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCisg
ICAgLy8gRklYTUU6IFRoZSBIVE1MNSBET00gc3BlYyBzdGF0ZXMgdGhhdCB0aGlzIGF0dHJpYnV0
ZSBjYW4gcmFpc2UgYW4KKyAgICAvLyBJTlZBTElEX1NUQVRFX0VSUiBleGNlcHRpb24gb24gc2V0
dGluZyBpZiB0aGUgRG9jdW1lbnQgaGFzIG5vCisgICAgLy8gYnJvd3NpbmcgY29udGV4dC4KKwor
ICAgIGlmIChzZWN1cml0eU9yaWdpbigpLT5pc1NhbmRib3hlZChTYW5kYm94T3JpZ2luKSkgewor
ICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAg
IEtVUkwgY29va2llVVJMID0gdGhpcy0+Y29va2llVVJMKCk7CiAgICAgaWYgKGNvb2tpZVVSTC5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQyNTcsNiArNDI3Nyw5IEBAIHZvaWQgRG9j
dW1lbnQ6OmluaXRTZWN1cml0eUNvbnRleHQoKQogICAgIG1fY29va2llVVJMID0gdXJsOwogICAg
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnNldFNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGUodXJsKSk7CiAKKyAgICAvLyBTZXQgc2FuZGJveCBmbGFncyBhcyBkZXRlcm1pbmVk
IGJ5IHRoZSBmcmFtZS4KKyAgICBzZWN1cml0eU9yaWdpbigpLT5zZXRTYW5kYm94RmxhZ3MobV9m
cmFtZS0+bG9hZGVyKCktPnNhbmRib3hGbGFncygpKTsKKyAKICAgICBpZiAoU2VjdXJpdHlPcmln
aW46OmFsbG93U3Vic3RpdHV0ZURhdGFBY2Nlc3NUb0xvY2FsKCkpIHsKICAgICAgICAgLy8gSWYg
dGhpcyBkb2N1bWVudCB3YXMgbG9hZGVkIHdpdGggc3Vic3RpdHV0ZURhdGEsIHRoZW4gdGhlIGRv
Y3VtZW50IGNhbgogICAgICAgICAvLyBsb2FkIGxvY2FsIHJlc291cmNlcy4gIFNlZSBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3NTYKSW5kZXg6IFdlYkNvcmUvZG9t
L0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNp
b24gNTEwNzYpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02
NzUsOCArNjc1LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nJiwg
RWxlbWVudCogdGl0bGVFbGVtZW50ID0gMCk7CiAgICAgdm9pZCByZW1vdmVUaXRsZShFbGVtZW50
KiB0aXRsZUVsZW1lbnQpOwogCi0gICAgU3RyaW5nIGNvb2tpZSgpIGNvbnN0OwotICAgIHZvaWQg
c2V0Q29va2llKGNvbnN0IFN0cmluZyYpOworICAgIFN0cmluZyBjb29raWUoRXhjZXB0aW9uQ29k
ZSYpIGNvbnN0OworICAgIHZvaWQgc2V0Q29va2llKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNv
ZGUmKTsKIAogICAgIFN0cmluZyByZWZlcnJlcigpIGNvbnN0OwogCkluZGV4OiBXZWJDb3JlL2Rv
bS9Eb2N1bWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCShy
ZXZpc2lvbiA1MTA3NikKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMTYyLDEwICsxNjIsOSBAQCBtb2R1bGUgY29yZSB7CiAjZW5kaWYKICAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBVUkw7CiAKLSAgICAgICAgLy8gRklYTUU6IHRoZSBE
T00gc3BlYyBzdGF0ZXMgdGhhdCB0aGlzIGF0dHJpYnV0ZSBjYW4gCi0gICAgICAgIC8vIHJhaXNl
IGFuIGV4Y2VwdGlvbiBvbiBzZXR0aW5nLgogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW0Nv
bnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgY29va2llCi0gICAgICAgICAgICAgICAg
ICAgICAvKnNldHRlciByYWlzZXMgKERPTUV4Y2VwdGlvbikqLzsKKyAgICAgICAgICAgICAgICAg
ICAgIHNldHRlciByYWlzZXMgKERPTUV4Y2VwdGlvbiksCisgICAgICAgICAgICAgICAgICAgICBn
ZXR0ZXIgcmFpc2VzIChET01FeGNlcHRpb24pOwogCiAgICAgICAgIC8vIEZJWE1FOiB0aGUgRE9N
IHNwZWMgZG9lcyBOT1QgaGF2ZSB0aGlzIGF0dHJpYnV0ZQogICAgICAgICAvLyByYWlzaW5nIGFu
IGV4Y2VwdGlvbi4KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcAkocmV2aXNpb24g
NTEwNzYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAi
TWFwcGVkQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiUmVuZGVyQXBwbGV0LmgiCisjaW5jbHVkZSAi
U2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC0xMDgsOSArMTA5LDcgQEAgYm9vbCBIVE1MQXBwbGV0RWxlbWVudDo6cmVuZGVy
ZXJJc05lZWRlZAogCiBSZW5kZXJPYmplY3QqIEhUTUxBcHBsZXRFbGVtZW50OjpjcmVhdGVSZW5k
ZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKLSAgICBTZXR0aW5ncyog
c2V0dGluZ3MgPSBkb2N1bWVudCgpLT5zZXR0aW5ncygpOwotCi0gICAgaWYgKHNldHRpbmdzICYm
IHNldHRpbmdzLT5pc0phdmFFbmFibGVkKCkpIHsKKyAgICBpZiAoaXNKYXZhRW5hYmxlZCgpKSB7
CiAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGFyZ3M7CiAKICAgICAgICAgYXJncy5z
ZXQoImNvZGUiLCBnZXRBdHRyaWJ1dGUoY29kZUF0dHIpKTsKQEAgLTE0Miw4ICsxNDEsNyBAQCBS
ZW5kZXJPYmplY3QqIEhUTUxBcHBsZXRFbGVtZW50OjpjcmVhdGVSCiAKIFJlbmRlcldpZGdldCog
SFRNTEFwcGxldEVsZW1lbnQ6OnJlbmRlcldpZGdldEZvckpTQmluZGluZ3MoKSBjb25zdAogewot
ICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50KCktPnNldHRpbmdzKCk7Ci0gICAgaWYg
KCFzZXR0aW5ncyB8fCAhc2V0dGluZ3MtPmlzSmF2YUVuYWJsZWQoKSkKKyAgICBpZiAoIWlzSmF2
YUVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBSZW5kZXJBcHBsZXQqIGFwcGxl
dCA9IHRvUmVuZGVyQXBwbGV0KHJlbmRlcmVyKCkpOwpAQCAtMTUzLDYgKzE1MSwxNSBAQCBSZW5k
ZXJXaWRnZXQqIEhUTUxBcHBsZXRFbGVtZW50OjpyZW5kZXJXCiAgICAgcmV0dXJuIGFwcGxldDsK
IH0KIAorYm9vbCBIVE1MQXBwbGV0RWxlbWVudDo6aXNKYXZhRW5hYmxlZCgpIGNvbnN0Cit7Cisg
ICAgaWYgKGRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmlzU2FuZGJveGVkKFNhbmRib3hQ
bHVnaW5zKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgU2V0dGluZ3MqIHNldHRpbmdz
ID0gZG9jdW1lbnQoKS0+c2V0dGluZ3MoKTsKKyAgICByZXR1cm4gc2V0dGluZ3MgJiYgc2V0dGlu
Z3MtPmlzSmF2YUVuYWJsZWQoKTsKK30KKwogdm9pZCBIVE1MQXBwbGV0RWxlbWVudDo6ZmluaXNo
UGFyc2luZ0NoaWxkcmVuKCkKIHsKICAgICAvLyBUaGUgcGFyc2VyIGp1c3QgcmVhY2hlZCA8L2Fw
cGxldD4sIHNvIGFsbCB0aGUgcGFyYW1zIGFyZSBhdmFpbGFibGUgbm93LgpJbmRleDogV2ViQ29y
ZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hU
TUxBcHBsZXRFbGVtZW50LmgJKHJldmlzaW9uIDUxMDc2KQorKysgV2ViQ29yZS9odG1sL0hUTUxB
cHBsZXRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIFJlbmRlcldpZGdldCogcmVuZGVyV2lkZ2V0Rm9ySlNCaW5kaW5ncygpIGNv
bnN0OwogCiAgICAgdm9pZCBzZXR1cEFwcGxldCgpIGNvbnN0OworICAgIGJvb2wgaXNKYXZhRW5h
YmxlZCgpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7
CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKSW5kZXg6IFdlYkNvcmUv
aHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hU
TUxBdHRyaWJ1dGVOYW1lcy5pbgkocmV2aXNpb24gNTEwNzYpCisrKyBXZWJDb3JlL2h0bWwvSFRN
TEF0dHJpYnV0ZU5hbWVzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMjAsNiArMjIwLDcgQEAgcm9s
ZQogcm93cwogcm93c3BhbgogcnVsZXMKK3NhbmRib3gKIHNjaGVtZQogc2NvcGUKIHNjcm9sbGFt
b3VudApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAJKHJldmlzaW9u
IDUxMDc2KQorKysgV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogSFRNTEZyYW1l
T3duZXJFbGVtZW50OjpIVE1MRnJhbWVPd25lckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwg
ZG9jdW1lbnQsIENyZWF0ZUVsZW1lbnQpCiAgICAgLCBtX2NvbnRlbnRGcmFtZSgwKQorICAgICwg
bV9zYW5kYm94RmxhZ3MoU2FuZGJveE5vbmUpCiB7CiB9CiAKQEAgLTY0LDYgKzY1LDE3IEBAIERP
TVdpbmRvdyogSFRNTEZyYW1lT3duZXJFbGVtZW50Ojpjb250ZW4KICAgICByZXR1cm4gbV9jb250
ZW50RnJhbWUgPyBtX2NvbnRlbnRGcmFtZS0+ZG9tV2luZG93KCkgOiAwOwogfQogCit2b2lkIEhU
TUxGcmFtZU93bmVyRWxlbWVudDo6c2V0U2FuZGJveEZsYWdzKFNhbmRib3hGbGFncyBmbGFncykK
K3sKKyAgICBpZiAobV9zYW5kYm94RmxhZ3MgPT0gZmxhZ3MpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fc2FuZGJveEZsYWdzID0gZmxhZ3M7CisgICAgCisgICAgaWYgKEZyYW1lKiBmcmFtZSA9
IGNvbnRlbnRGcmFtZSgpKQorICAgICAgICBmcmFtZS0+bG9hZGVyKCktPm93bmVyRWxlbWVudFNh
bmRib3hGbGFnc0NoYW5nZWQoKTsKK30KKwogI2lmIEVOQUJMRShTVkcpCiBTVkdEb2N1bWVudCog
SFRNTEZyYW1lT3duZXJFbGVtZW50OjpnZXRTVkdEb2N1bWVudChFeGNlcHRpb25Db2RlJiBlYykg
Y29uc3QKIHsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmgJKHJldmlzaW9u
IDUxMDc2KQorKysgV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBACiAjaWZuZGVmIEhUTUxGcmFtZU93bmVyRWxlbWVudF9o
CiAjZGVmaW5lIEhUTUxGcmFtZU93bmVyRWxlbWVudF9oCiAKKyNpbmNsdWRlICJGcmFtZUxvYWRl
clR5cGVzLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtNDYsOSArNDcsMTMgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBTY3JvbGxiYXJNb2Rl
IHNjcm9sbGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBTY3JvbGxiYXJBdXRvOyB9CiAKKyAgICBT
YW5kYm94RmxhZ3Mgc2FuZGJveEZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9zYW5kYm94RmxhZ3M7
IH0KKyAgICAKIHByb3RlY3RlZDoKICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqKTsKIAorICAgIHZvaWQgc2V0U2FuZGJveEZs
YWdzKFNhbmRib3hGbGFncyk7CisgICAgCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBGcmFt
ZTsKIApAQCAtNTgsNiArNjMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVt
b3ZlKCk7CiAKICAgICBGcmFtZSogbV9jb250ZW50RnJhbWU7CisgICAgU2FuZGJveEZsYWdzIG1f
c2FuZGJveEZsYWdzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29y
ZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
SFRNTElGcmFtZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA1MTA3NikKKysrIFdlYkNvcmUvaHRtbC9I
VE1MSUZyYW1lRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQsNiArNCw3IEBACiAgKiAg
ICAgICAgICAgKEMpIDIwMDAgU2ltb24gSGF1c21hbm4gKGhhdXNtYW5uQGtkZS5vcmcpCiAgKiAg
ICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDYsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC02Niw2ICs2Nyw0MiBAQCBib29sIEhUTUxJ
RnJhbWVFbGVtZW50OjptYXBUb0VudHJ5KGNvbnN0CiAgICAgcmV0dXJuIEhUTUxGcmFtZUVsZW1l
bnRCYXNlOjptYXBUb0VudHJ5KGF0dHJOYW1lLCByZXN1bHQpOwogfQogCitzdGF0aWMgU2FuZGJv
eEZsYWdzIHBhcnNlU2FuZGJveEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHJpYnV0ZSkK
K3sKKyAgICBTYW5kYm94RmxhZ3MgZmxhZ3M7CisgICAgLy8gUGFyc2UgdGhlIHVub3JkZXJlZCBz
ZXQgb2YgdW5pcXVlIHNwYWNlLXNlcGFyYXRlZCB0b2tlbnMuCisgICAgaWYgKGF0dHJpYnV0ZS0+
aXNOdWxsKCkpCisgICAgICAgIGZsYWdzID0gU2FuZGJveE5vbmU7CisgICAgZWxzZSB7CisgICAg
ICAgIGZsYWdzID0gU2FuZGJveEFsbDsKKyAgICAgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMg
PSBhdHRyaWJ1dGUtPnZhbHVlKCkuY2hhcmFjdGVycygpOworICAgICAgICB1bnNpZ25lZCBsZW5n
dGggPSBhdHRyaWJ1dGUtPnZhbHVlKCkubGVuZ3RoKCk7CisgICAgICAgIHVuc2lnbmVkIHN0YXJ0
ID0gMDsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIHdoaWxlIChzdGFydCA8
IGxlbmd0aCAmJiBpc0FTQ0lJU3BhY2UoY2hhcmFjdGVyc1tzdGFydF0pKQorICAgICAgICAgICAg
ICAgICsrc3RhcnQ7CisgICAgICAgICAgICBpZiAoc3RhcnQgPj0gbGVuZ3RoKQorICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgdW5zaWduZWQgZW5kID0gc3RhcnQgKyAxOworICAg
ICAgICAgICAgd2hpbGUgKGVuZCA8IGxlbmd0aCAmJiAhaXNBU0NJSVNwYWNlKGNoYXJhY3RlcnNb
ZW5kXSkpCisgICAgICAgICAgICAgICAgKytlbmQ7CisKKyAgICAgICAgICAgIC8vIFR1cm4gb2Zm
IHRoZSBjb3JyZXNwb25kaW5nIHNhbmRib3ggZmxhZyBpZiBpdCdzIHNldCBhcyAiYWxsb3dlZCIu
CisgICAgICAgICAgICBTdHJpbmcgc2FuZGJveFRva2VuID0gU3RyaW5nKGNoYXJhY3RlcnMgKyBz
dGFydCwgZW5kIC0gc3RhcnQpOworICAgICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHNh
bmRib3hUb2tlbiwgImFsbG93LXNhbWUtb3JpZ2luIikpCisgICAgICAgICAgICAgICAgZmxhZ3Mg
Jj0gflNhbmRib3hPcmlnaW47CisgICAgICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2Fz
ZShzYW5kYm94VG9rZW4sICJhbGxvdy1mb3JtcyIpKQorICAgICAgICAgICAgICAgIGZsYWdzICY9
IH5TYW5kYm94Rm9ybXM7CisgICAgICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShz
YW5kYm94VG9rZW4sICJhbGxvdy1zY3JpcHRzIikpCisgICAgICAgICAgICAgICAgZmxhZ3MgJj0g
flNhbmRib3hTY3JpcHRzOworCisgICAgICAgICAgICBzdGFydCA9IGVuZCArIDE7CisgICAgICAg
IH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuIGZsYWdzOworfQorCiB2b2lkIEhUTUxJRnJhbWVF
bGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiB7CiAg
ICAgaWYgKGF0dHItPm5hbWUoKSA9PSB3aWR0aEF0dHIpCkBAIC04OCw3ICsxMjUsOSBAQCB2b2lk
IEhUTUxJRnJhbWVFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpCiAgICAgICAgIGlmICghYXR0ci0+
aXNOdWxsKCkgJiYgIWF0dHItPnZhbHVlKCkudG9JbnQoKSkKICAgICAgICAgICAgIC8vIEFkZCBh
IHJ1bGUgdGhhdCBudWxscyBvdXQgb3VyIGJvcmRlciB3aWR0aC4KICAgICAgICAgICAgIGFkZENT
U0xlbmd0aChhdHRyLCBDU1NQcm9wZXJ0eUJvcmRlcldpZHRoLCAiMCIpOwotICAgIH0gZWxzZQor
ICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHNhbmRib3hBdHRyKQorICAgICAgICBzZXRT
YW5kYm94RmxhZ3MocGFyc2VTYW5kYm94QXR0cmlidXRlKGF0dHIpKTsKKyAgICBlbHNlCiAgICAg
ICAgIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0K
IApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCShyZXZpc2lvbiA1MTA3NikKKysr
IFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDYgKzMzLDcgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW0Nv
bnZlcnROdWxsVG9OdWxsU3RyaW5nLCBSZWZsZWN0PW1hcmdpbmhlaWdodF0gRE9NU3RyaW5nICAg
ICAgIG1hcmdpbkhlaWdodDsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVs
bFRvTnVsbFN0cmluZywgUmVmbGVjdD1tYXJnaW53aWR0aF0gRE9NU3RyaW5nICAgICAgIG1hcmdp
bldpZHRoOwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3Ry
aW5nLCBSZWZsZWN0XSBET01TdHJpbmcgICAgICAgbmFtZTsKKyAgICAgICAgICAgICAgICAgYXR0
cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZywgUmVmbGVjdF0gRE9NU3RyaW5nICAgICAg
IHNhbmRib3g7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxT
dHJpbmcsIFJlZmxlY3RdIERPTVN0cmluZyAgICAgICBzY3JvbGxpbmc7CiAgICAgICAgICAgICAg
ICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmcsIEN1c3RvbVNldHRlciwgUmVm
bGVjdF0gRE9NU3RyaW5nICAgICAgIHNyYzsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtD
b252ZXJ0TnVsbFRvTnVsbFN0cmluZywgUmVmbGVjdF0gRE9NU3RyaW5nICAgICAgIHdpZHRoOwpJ
bmRleDogV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAJKHJldmlzaW9u
IDUxMDc2KQorKysgV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEyMDIsMTAgKzEyMDIsMTQgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9s
bGVyOjpnZXRDb29raWVzKGxvbgogICAgICAgICAgICAgVmVjdG9yPENvb2tpZT4gZG9jQ29va2ll
c0xpc3Q7CiAgICAgICAgICAgICByYXdDb29raWVzSW1wbGVtZW50ZWQgPSBnZXRSYXdDb29raWVz
KGRvY3VtZW50LCBkb2N1bWVudC0+Y29va2llVVJMKCksIGRvY0Nvb2tpZXNMaXN0KTsKICAgICAg
ICAgICAgIAotICAgICAgICAgICAgaWYgKCFyYXdDb29raWVzSW1wbGVtZW50ZWQpCisgICAgICAg
ICAgICBpZiAoIXJhd0Nvb2tpZXNJbXBsZW1lbnRlZCkgewogICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBXZSBuZWVkIGR1cGxpY2F0aW9uIGNoZWNraW5nIGZvciB0aGUgU3RyaW5nIHJlcHJlc2Vu
dGF0aW9uIG9mIGNvb2tpZXMuCi0gICAgICAgICAgICAgICAgc3RyaW5nQ29va2llc0xpc3QgKz0g
ZG9jdW1lbnQtPmNvb2tpZSgpOwotICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgICAgICAgICAgICAgc3RyaW5nQ29va2llc0xpc3Qg
Kz0gZG9jdW1lbnQtPmNvb2tpZShlYyk7CisgICAgICAgICAgICAgICAgLy8gRXhjZXB0aW9ucyBh
cmUgdGhyb3duIGJ5IGNvb2tpZSgpIGluIHNhbmRib3hlZCBmcmFtZXMuIFRoYXQgd29uJ3QgaGFw
cGVuIGhlcmUKKyAgICAgICAgICAgICAgICAvLyBiZWNhdXNlICJkb2N1bWVudCIgaXMgdGhlIGRv
Y3VtZW50IG9mIHRoZSBtYWluIGZyYW1lIG9mIHRoZSBwYWdlLgorICAgICAgICAgICAgICAgIEFT
U0VSVCghZWMpOworICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBpbnQgY29v
a2llc1NpemUgPSBkb2NDb29raWVzTGlzdC5zaXplKCk7CiAgICAgICAgICAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBjb29raWVzU2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgIGlm
ICghcmF3Q29va2llc0xpc3QuY29udGFpbnMoZG9jQ29va2llc0xpc3RbaV0pKQpJbmRleDogV2Vi
Q29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCShyZXZpc2lvbiA1MTA3
NikKKysrIFdlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwMCw2ICsxMDAsMTAgQEAgYm9vbCBwYXNzZXNBY2Nlc3NDb250cm9sQ2hl
Y2soY29uc3QgUmVzbwogICAgIGlmIChhY2Nlc3NDb250cm9sT3JpZ2luU3RyaW5nID09ICIqIiAm
JiAhaW5jbHVkZUNyZWRlbnRpYWxzKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAorICAgIC8vIEEg
c2FuZGJveGVkIGZyYW1lIGhhcyBhIHVuaXF1ZSBvcmlnaW4gKGZvciBzYW1lLW9yaWdpbiBwdXJw
b3NlcykuCisgICAgaWYgKHNlY3VyaXR5T3JpZ2luLT5pc1NhbmRib3hlZChTYW5kYm94T3JpZ2lu
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBh
Y2Nlc3NDb250cm9sT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoYWNj
ZXNzQ29udHJvbE9yaWdpblN0cmluZyk7CiAgICAgaWYgKCFhY2Nlc3NDb250cm9sT3JpZ2luLT5p
c1NhbWVTY2hlbWVIb3N0UG9ydChzZWN1cml0eU9yaWdpbikpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDUxMDc2KQorKysgV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsNiArMTk2LDcg
QEAgRnJhbWVMb2FkZXI6OkZyYW1lTG9hZGVyKEZyYW1lKiBmcmFtZSwgRgogICAgICwgbV9kaWRQ
ZXJmb3JtRmlyc3ROYXZpZ2F0aW9uKGZhbHNlKQogICAgICwgbV9sb2FkaW5nRnJvbUNhY2hlZFBh
Z2UoZmFsc2UpCiAgICAgLCBtX3N1cHByZXNzT3BlbmVySW5OZXdGcmFtZShmYWxzZSkKKyAgICAs
IG1fc2FuZGJveEZsYWdzKFNhbmRib3hOb25lKQogI2lmbmRlZiBOREVCVUcKICAgICAsIG1fZGlk
RGlzcGF0Y2hEaWRDb21taXRMb2FkKGZhbHNlKQogI2VuZGlmCkBAIC0yMjgsNiArMjI5LDkgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6aW5pdCgpCiAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y2FuY2Vs
UGFyc2luZygpOwogICAgIG1fY3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVudCA9IGZhbHNlOwog
ICAgIG1fZGlkQ2FsbEltcGxpY2l0Q2xvc2UgPSB0cnVlOworCisgICAgLy8gUHJvcGFnYXRlIHNh
bmRib3ggYXR0cmlidXRlcyB0byB0aGlzIEZyYW1lbG9hZGVyIGFuZCBpdHMgZGVzY2VuZGFudHMu
CisgICAgdXBkYXRlU2FuZGJveEZsYWdzKCk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OnNldERl
ZmVyc0xvYWRpbmcoYm9vbCBkZWZlcnMpCkBAIC00MzgsNiArNDQyLDkgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6c3VibWl0Rm9ybShjb25zdCBjaGFyKgogICAgIGlmICh1LmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuOwogCisgICAgaWYgKGlzU2FuZGJveGVkKFNhbmRib3hGb3JtcykpCisgICAgICAg
IHJldHVybjsKKwogICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdCh1KSkgewogICAgICAgICBt
X2lzRXhlY3V0aW5nSmF2YVNjcmlwdEZvcm1BY3Rpb24gPSB0cnVlOwogICAgICAgICBtX2ZyYW1l
LT5zY3JpcHQoKS0+ZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTCh1LCBmYWxzZSwgZmFsc2UpOwpAQCAt
MTI1NSw2ICsxMjYyLDggQEAgYm9vbCBGcmFtZUxvYWRlcjo6cmVxdWVzdE9iamVjdChSZW5kZXJQ
YQogICAgICAgICBpZiAoIXNldHRpbmdzIHx8ICFzZXR0aW5ncy0+YXJlUGx1Z2luc0VuYWJsZWQo
KSB8fCAKICAgICAgICAgICAgICghc2V0dGluZ3MtPmlzSmF2YUVuYWJsZWQoKSAmJiBNSU1FVHlw
ZVJlZ2lzdHJ5Ojppc0phdmFBcHBsZXRNSU1FVHlwZShtaW1lVHlwZSkpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoaXNTYW5kYm94ZWQoU2FuZGJveFBsdWdpbnMpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gbG9hZFBsdWdpbihyZW5k
ZXJlciwgY29tcGxldGVkVVJMLCBtaW1lVHlwZSwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMsIHVz
ZUZhbGxiYWNrKTsKICAgICB9CiAKQEAgLTIxOTcsNiArMjIwNiwxMCBAQCBib29sIEZyYW1lTG9h
ZGVyOjpzaG91bGRBbGxvd05hdmlnYXRpb24oCiAgICAgaWYgKG1fZnJhbWUgPT0gdGFyZ2V0RnJh
bWUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCisgICAgLy8gQSBzYW5kYm94ZWQgZnJhbWUgY2Fu
IG9ubHkgbmF2aWdhdGUgaXRzZWxmIGFuZCBpdHMgZGVzY2VuZGFudHMuCisgICAgaWYgKGlzU2Fu
ZGJveGVkKFNhbmRib3hOYXZpZ2F0aW9uKSAmJiAhdGFyZ2V0RnJhbWUtPnRyZWUoKS0+aXNEZXNj
ZW5kYW50T2YobV9mcmFtZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIC8vIExldCBh
IGZyYW1lIG5hdmlnYXRlIHRoZSB0b3AtbGV2ZWwgd2luZG93IHRoYXQgY29udGFpbnMgaXQuICBU
aGlzIGlzCiAgICAgLy8gaW1wb3J0YW50IHRvIGFsbG93IGJlY2F1c2UgaXQgbGV0cyBhIHNpdGUg
ImZyYW1lLWJ1c3QiIChlc2NhcGUgZnJvbSBhCiAgICAgLy8gZnJhbWUgY3JlYXRlZCBieSBhbm90
aGVyIHdlYiBzaXRlKS4KQEAgLTM4OTksNiArMzkxMiwzNSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpk
aXNwYXRjaERpZENsZWFyV2luZG93CiAjZW5kaWYKIH0KIAordm9pZCBGcmFtZUxvYWRlcjo6b3du
ZXJFbGVtZW50U2FuZGJveEZsYWdzQ2hhbmdlZCgpCit7CisgICAgdXBkYXRlU2FuZGJveEZsYWdz
KCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXI6OnVwZGF0ZVNhbmRib3hGbGFncygpCit7CisgICAg
dXBkYXRlU2FuZGJveEZsYWdzRm9yU2luZ2xlRnJhbWUoKTsKKworICAgIGZvciAoRnJhbWUqIGFm
ZmVjdGVkRnJhbWUgPSBtX2ZyYW1lOyBhZmZlY3RlZEZyYW1lOyBhZmZlY3RlZEZyYW1lID0gYWZm
ZWN0ZWRGcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQobV9mcmFtZSkpCisgICAgICAgIGFmZmVj
dGVkRnJhbWUtPmxvYWRlcigpLT51cGRhdGVTYW5kYm94RmxhZ3NGb3JTaW5nbGVGcmFtZSgpOwor
fQorCit2b2lkIEZyYW1lTG9hZGVyOjp1cGRhdGVTYW5kYm94RmxhZ3NGb3JTaW5nbGVGcmFtZSgp
Cit7CisgICAgU2FuZGJveEZsYWdzIGZsYWdzID0gU2FuZGJveE5vbmU7CisgICAgaWYgKEZyYW1l
KiBwYXJlbnRGcmFtZSA9IG1fZnJhbWUtPnRyZWUoKS0+cGFyZW50KCkpCisgICAgICAgIGZsYWdz
IHw9IHBhcmVudEZyYW1lLT5sb2FkZXIoKS0+c2FuZGJveEZsYWdzKCk7CisgICAgaWYgKEhUTUxG
cmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50ID0gbV9mcmFtZS0+b3duZXJFbGVtZW50KCkp
CisgICAgICAgIGZsYWdzIHw9IG93bmVyRWxlbWVudC0+c2FuZGJveEZsYWdzKCk7CisKKyAgICBp
ZiAobV9zYW5kYm94RmxhZ3MgPT0gZmxhZ3MpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc2Fu
ZGJveEZsYWdzID0gZmxhZ3M7CisKKyAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9y
aWdpbigpLT5zZXRTYW5kYm94RmxhZ3MobV9zYW5kYm94RmxhZ3MpOworfQorCiBQYXNzUmVmUHRy
PFdpZGdldD4gRnJhbWVMb2FkZXI6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6
ZSYgc2l6ZSwgSFRNTEFwcGxldEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEhhc2hNYXA8U3RyaW5n
LCBTdHJpbmc+JiBhcmdzKQogewogICAgIFN0cmluZyBiYXNlVVJMU3RyaW5nOwpJbmRleDogV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5oCShyZXZpc2lvbiA1MTA3NikKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1MSw2ICsyNTEsMTEgQEAgcHVibGljOgogICAgIHZv
aWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdHNJbkFsbFdvcmxkcygpOwogICAgIHZvaWQg
ZGlzcGF0Y2hEb2N1bWVudEVsZW1lbnRBdmFpbGFibGUoKTsKIAorICAgIHZvaWQgb3duZXJFbGVt
ZW50U2FuZGJveEZsYWdzQ2hhbmdlZCgpOworICAgIAorICAgIGJvb2wgaXNTYW5kYm94ZWQoU2Fu
ZGJveEZsYWdzIG1hc2spIGNvbnN0IHsgcmV0dXJuIG1fc2FuZGJveEZsYWdzICYgbWFzazsgfQor
ICAgIFNhbmRib3hGbGFncyBzYW5kYm94RmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX3NhbmRib3hG
bGFnczsgfQorCiAgICAgLy8gTWl4ZWQgY29udGVudCByZWxhdGVkIGZ1bmN0aW9ucy4KICAgICBz
dGF0aWMgYm9vbCBpc01peGVkQ29udGVudChTZWN1cml0eU9yaWdpbiogY29udGV4dCwgY29uc3Qg
S1VSTCYpOwogICAgIHZvaWQgY2hlY2tJZkRpc3BsYXlJbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlP
cmlnaW4qIGNvbnRleHQsIGNvbnN0IEtVUkwmKTsKQEAgLTQzNSw2ICs0NDAsOSBAQCBwcml2YXRl
OgogCiAgICAgYm9vbCBzaG91bGRUcmVhdFVSTEFzU2FtZUFzQ3VycmVudChjb25zdCBLVVJMJikg
Y29uc3Q7CiAKKyAgICB2b2lkIHVwZGF0ZVNhbmRib3hGbGFncygpOworICAgIHZvaWQgdXBkYXRl
U2FuZGJveEZsYWdzRm9yU2luZ2xlRnJhbWUoKTsKKyAgICAKICAgICBGcmFtZSogbV9mcmFtZTsK
ICAgICBGcmFtZUxvYWRlckNsaWVudCogbV9jbGllbnQ7CiAKQEAgLTUwNiw2ICs1MTQsOCBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV9sb2FkaW5nRnJvbUNhY2hlZFBhZ2U7CiAgICAgYm9vbCBtX3N1
cHByZXNzT3BlbmVySW5OZXdGcmFtZTsKICAgICAKKyAgICBTYW5kYm94RmxhZ3MgbV9zYW5kYm94
RmxhZ3M7CisKICNpZm5kZWYgTkRFQlVHCiAgICAgYm9vbCBtX2RpZERpc3BhdGNoRGlkQ29tbWl0
TG9hZDsKICNlbmRpZgpJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAkocmV2aXNpb24g
NTEwNzYpCisrKyBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTkyLDYgKzkyLDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU2VuZFJl
ZmVycmVyLAogICAgICAgICBOb1JlZmVycmVyCiAgICAgfTsKKyAgICAKKyAgICBlbnVtIFNhbmRi
b3hGbGFnIHsKKyAgICAgICAgU2FuZGJveE5vbmUgPSAwLAorICAgICAgICBTYW5kYm94TmF2aWdh
dGlvbiA9IDEsCisgICAgICAgIFNhbmRib3hQbHVnaW5zID0gMSA8PCAxLAorICAgICAgICBTYW5k
Ym94T3JpZ2luID0gMSA8PCAyLAorICAgICAgICBTYW5kYm94Rm9ybXMgPSAxIDw8IDMsCisgICAg
ICAgIFNhbmRib3hTY3JpcHRzID0gMSA8PCA0LAorICAgICAgICBTYW5kYm94QWxsID0gLTEgLy8g
TWFzayB3aXRoIGFsbCBiaXRzIHNldCB0byAxLgorICAgIH07CisKKyAgICB0eXBlZGVmIHVuc2ln
bmVkIFNhbmRib3hGbGFnczsKIH0KIAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkocmV2aXNp
b24gNTEwNzYpCisrKyBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTY5LDYgKzU2OSw5IEBAIFN0b3JhZ2UqIERPTVdpbmRvdzo6c2Vzc2lvblN0b3JhZ2UoKSBj
b24KICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOwogICAgIGlmICgh
ZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiAwOworICAgIAorICAgIGlmIChkb2N1bWVudC0+c2Vj
dXJpdHlPcmlnaW4oKS0+aXNTYW5kYm94ZWQoU2FuZGJveE9yaWdpbikpCisgICAgICAgIHJldHVy
biAwOwogCiAgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCk7CiAgICAgaWYgKCFwYWdl
KQpAQCAtNTkxLDYgKzU5NCw5IEBAIFN0b3JhZ2UqIERPTVdpbmRvdzo6bG9jYWxTdG9yYWdlKCkg
Y29uc3QKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOwogICAgIGlm
ICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiAwOworICAgIAorICAgIGlmIChkb2N1bWVudC0+
c2VjdXJpdHlPcmlnaW4oKS0+aXNTYW5kYm94ZWQoU2FuZGJveE9yaWdpbikpCisgICAgICAgIHJl
dHVybiAwOwogICAgICAgICAKICAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoKTsKICAg
ICBpZiAoIXBhZ2UpCkBAIC0xMTA4LDYgKzExMTQsOSBAQCBQYXNzUmVmUHRyPERhdGFiYXNlPiBE
T01XaW5kb3c6Om9wZW5EYXRhCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgRG9jdW1lbnQqIGRv
YyA9IG1fZnJhbWUtPmRvY3VtZW50KCk7CisgICAgCisgICAgaWYgKGRvYy0+c2VjdXJpdHlPcmln
aW4oKS0+aXNTYW5kYm94ZWQoU2FuZGJveE9yaWdpbikpCisgICAgICAgIHJldHVybiAwOwogCiAg
ICAgU2V0dGluZ3MqIHNldHRpbmdzID0gbV9mcmFtZS0+c2V0dGluZ3MoKTsKICAgICBpZiAoIXNl
dHRpbmdzIHx8ICFzZXR0aW5ncy0+ZGF0YWJhc2VzRW5hYmxlZCgpKQpJbmRleDogV2ViQ29yZS9w
YWdlL1NlY3VyaXR5T3JpZ2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvU2VjdXJp
dHlPcmlnaW4uY3BwCShyZXZpc2lvbiA1MTA3NikKKysrIFdlYkNvcmUvcGFnZS9TZWN1cml0eU9y
aWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDYgKzk1LDcgQEAgU2VjdXJpdHlPcmlnaW46
OlNlY3VyaXR5T3JpZ2luKGNvbnN0IEtVUgogICAgIDogbV9wcm90b2NvbCh1cmwucHJvdG9jb2wo
KS5pc051bGwoKSA/ICIiIDogdXJsLnByb3RvY29sKCkubG93ZXIoKSkKICAgICAsIG1faG9zdCh1
cmwuaG9zdCgpLmlzTnVsbCgpID8gIiIgOiB1cmwuaG9zdCgpLmxvd2VyKCkpCiAgICAgLCBtX3Bv
cnQodXJsLnBvcnQoKSkKKyAgICAsIG1fc2FuZGJveEZsYWdzKFNhbmRib3hOb25lKQogICAgICwg
bV9ub0FjY2VzcyhmYWxzZSkKICAgICAsIG1fdW5pdmVyc2FsQWNjZXNzKGZhbHNlKQogICAgICwg
bV9kb21haW5XYXNTZXRJbkRPTShmYWxzZSkKQEAgLTEyMiw2ICsxMjMsNyBAQCBTZWN1cml0eU9y
aWdpbjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgU2VjCiAgICAgLCBtX2hvc3Qob3RoZXItPm1faG9z
dC50aHJlYWRzYWZlQ29weSgpKQogICAgICwgbV9kb21haW4ob3RoZXItPm1fZG9tYWluLnRocmVh
ZHNhZmVDb3B5KCkpCiAgICAgLCBtX3BvcnQob3RoZXItPm1fcG9ydCkKKyAgICAsIG1fc2FuZGJv
eEZsYWdzKG90aGVyLT5tX3NhbmRib3hGbGFncykKICAgICAsIG1fbm9BY2Nlc3Mob3RoZXItPm1f
bm9BY2Nlc3MpCiAgICAgLCBtX3VuaXZlcnNhbEFjY2VzcyhvdGhlci0+bV91bml2ZXJzYWxBY2Nl
c3MpCiAgICAgLCBtX2RvbWFpbldhc1NldEluRE9NKG90aGVyLT5tX2RvbWFpbldhc1NldEluRE9N
KQpAQCAtMTYyLDcgKzE2NCw3IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhbkFjY2Vzcyhjb25z
dCBTZWMKICAgICBpZiAobV91bml2ZXJzYWxBY2Nlc3MpCiAgICAgICAgIHJldHVybiB0cnVlOwog
Ci0gICAgaWYgKG1fbm9BY2Nlc3MgfHwgb3RoZXItPm1fbm9BY2Nlc3MpCisgICAgaWYgKG1fbm9B
Y2Nlc3MgfHwgb3RoZXItPm1fbm9BY2Nlc3MgfHwgaXNTYW5kYm94ZWQoU2FuZGJveE9yaWdpbikg
fHwgb3RoZXItPmlzU2FuZGJveGVkKFNhbmRib3hPcmlnaW4pKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICAvLyBIZXJlIGFyZSB0d28gY2FzZXMgd2hlcmUgd2Ugc2hvdWxkIHBlcm1pdCBh
Y2Nlc3M6CkBAIC0yMDMsNyArMjA1LDcgQEAgYm9vbCBTZWN1cml0eU9yaWdpbjo6Y2FuUmVxdWVz
dChjb25zdCBLVQogICAgIGlmIChtX3VuaXZlcnNhbEFjY2VzcykKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICBpZiAobV9ub0FjY2VzcykKKyAgICBpZiAobV9ub0FjY2VzcyB8fCBpc1NhbmRi
b3hlZChTYW5kYm94T3JpZ2luKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiB0YXJnZXRPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVy
bCk7CkBAIC0yODksNyArMjkxLDcgQEAgU3RyaW5nIFNlY3VyaXR5T3JpZ2luOjp0b1N0cmluZygp
IGNvbnN0CiAgICAgaWYgKGlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuICJudWxsIjsKIAotICAg
IGlmIChtX25vQWNjZXNzKQorICAgIGlmIChtX25vQWNjZXNzIHx8IGlzU2FuZGJveGVkKFNhbmRi
b3hPcmlnaW4pKQogICAgICAgICByZXR1cm4gIm51bGwiOwogCiAgICAgaWYgKG1fcHJvdG9jb2wg
PT0gImZpbGUiKQpJbmRleDogV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgJKHJldmlzaW9uIDUxMDc2KQorKysg
V2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0
LDcgQEAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRp
bmcuaD4KIAorI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bVN0cmluZy5oIgogI2luY2x1ZGUgIlN0cmluZ0hhc2guaCIKIApAQCAtMTEwLDYgKzExMSwxMCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIFdBUk5JTkc6IFRoaXMgaXMgYW4gZXh0
cmVtZWx5IHBvd2VyZnVsIGFiaWxpdHkuICBVc2Ugd2l0aCBjYXV0aW9uIQogICAgICAgICB2b2lk
IGdyYW50VW5pdmVyc2FsQWNjZXNzKCk7CiAKKyAgICAgICAgLy8gU2FuZGJveGluZyBzdGF0dXMg
YXMgZGV0ZXJtaW5lZCBieSB0aGUgZnJhbWUuCisgICAgICAgIHZvaWQgc2V0U2FuZGJveEZsYWdz
KFNhbmRib3hGbGFncyBmbGFncykgeyBtX3NhbmRib3hGbGFncyA9IGZsYWdzOyB9CisgICAgICAg
IGJvb2wgaXNTYW5kYm94ZWQoU2FuZGJveEZsYWdzIG1hc2spIGNvbnN0IHsgcmV0dXJuIG1fc2Fu
ZGJveEZsYWdzICYgbWFzazsgfQorCiAgICAgICAgIGJvb2wgaXNTZWN1cmVUcmFuc2l0aW9uVG8o
Y29uc3QgS1VSTCYpIGNvbnN0OwogCiAgICAgICAgIC8vIFRoZSBsb2NhbCBTZWN1cml0eU9yaWdp
biBpcyB0aGUgbW9zdCBwcml2aWxlZ2VkIFNlY3VyaXR5T3JpZ2luLgpAQCAtMTgxLDYgKzE4Niw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU3RyaW5nIG1faG9zdDsKICAgICAgICAg
U3RyaW5nIG1fZG9tYWluOwogICAgICAgICB1bnNpZ25lZCBzaG9ydCBtX3BvcnQ7CisgICAgICAg
IFNhbmRib3hGbGFncyBtX3NhbmRib3hGbGFnczsKICAgICAgICAgYm9vbCBtX25vQWNjZXNzOwog
ICAgICAgICBib29sIG1fdW5pdmVyc2FsQWNjZXNzOwogICAgICAgICBib29sIG1fZG9tYWluV2Fz
U2V0SW5ET007CkluZGV4OiBXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCShy
ZXZpc2lvbiA1MTA3NikKKysrIFdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDggKzE1OSwxMCBAQCB2b2lkIFdlYlNvY2tldENoYW5u
ZWw6OmRpZFJlY2VpdmVEYXRhKFNvCiAgICAgICAgICAgICBpZiAoIW1faGFuZHNoYWtlLnNlcnZl
clNldENvb2tpZSgpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIGlmIChtX2NvbnRleHQt
PmlzRG9jdW1lbnQoKSkgewogICAgICAgICAgICAgICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQg
PSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG1fY29udGV4dCk7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChjb29raWVzRW5hYmxlZChkb2N1bWVudCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBk
b2N1bWVudC0+c2V0Q29va2llKG1faGFuZHNoYWtlLnNlcnZlclNldENvb2tpZSgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKGNvb2tpZXNFbmFibGVkKGRvY3VtZW50KSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsgLy8gRXhjZXB0aW9uIChmb3Igc2FuZGJv
eGVkIGRvY3VtZW50cykgaWdub3JlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50
LT5zZXRDb29raWUobV9oYW5kc2hha2Uuc2VydmVyU2V0Q29va2llKCksIGVjKTsKKyAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIC8vIEZJWE1FOiBoYW5kbGUgc2V0LWNvb2tpZTIuCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1MTE4
NykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY5
IEBACisyMDA5LTExLTE5ICBQYXRyaWsgUGVyc3NvbiAgPHBhdHJpay5qLnBlcnNzb25AZXJpY3Nz
b24uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEltcGxlbWVudCBIVE1MNSBzYW5kYm94IGF0dHJpYnV0ZSBmb3IgaWZyYW1lcy4KKyAgICAgICAg
aHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvdGV4dC1sZXZlbC1zZW1hbnRpY3MuaHRtbCNhdHRy
LWlmcmFtZS1zYW5kYm94CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTI4OAorCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL25vbi1zYW5k
Ym94ZWQtaWZyYW1lLW5hdmlnYXRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFt
ZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmctYWxsb3dlZC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlm
cmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1kaXNhbGxvd2VkLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tYWxsb3dlZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFt
ZS1mb3JtLWRpc2FsbG93ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVz
b3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tY2hpbGQu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1p
ZnJhbWUtbmF2aWdhdGlvbi1uYXZpZ2F0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9m
cmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUt
bmF2aWdhdGlvbi1zb3VyY2UuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVz
b3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRsaW5rLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmln
YXRpb24td2luZG93b3Blbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNv
dXJjZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLWZyYW1lLWFwcGxldC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5z
LWZyYW1lLWVtYmVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNl
cy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtb2JqZWN0Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXNjcmlwdC1keW5h
bWljLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94
ZWQtaWZyYW1lLXN0b3JhZ2UtYWxsb3dlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zy
YW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1zdG9yYWdlLWRpc2FsbG93ZWQuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUt
cGFyc2luZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NhbmRi
b3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmcuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1mb3Jtcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtZm9ybXMuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLWFsbG93ZWQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZy
YW1lLW5hdmlnYXRpb24tYWxsb3dlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1l
cy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50LWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXBhcmVu
dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5h
dmlnYXRpb24tdGFyZ2V0bGluay1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRsaW5rLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5k
b3dvcGVuLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJv
eGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4uaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtc2NyaXB0aW5nLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFt
ZS1zY3JpcHRpbmcuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJveGVk
LWlmcmFtZS1zdG9yYWdlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFt
ZXMvc2FuZGJveGVkLWlmcmFtZS1zdG9yYWdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZG9jdW1lbnQtY29va2ll
LXJlYWQtZGVuaWVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkv
cmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbW9kaWZ5LXNlbGYuaHRtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMveHNzLURFTklFRC1zYW5kYm94ZWQt
aWZyYW1lLWF0dGFja2VyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJp
dHkvc2FuZGJveGVkLWlmcmFtZS1kb2N1bWVudC1jb29raWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtZG9jdW1lbnQt
Y29va2llLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvc2FuZGJv
eGVkLWlmcmFtZS1tb2RpZnktc2VsZi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvc2VjdXJpdHkvc2FuZGJveGVkLWlmcmFtZS1tb2RpZnktc2VsZi5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQtc2FuZGJveGVkLWlm
cmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkv
eHNzLURFTklFRC1zYW5kYm94ZWQtaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1hbGxv
dy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVl
c3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1hbGxvdy5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hl
ZC1pZnJhbWUtZGVuaWVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC13
aXRob3V0LXdpbGRjYXJkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC13
aXRob3V0LXdpbGRjYXJkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQuaHRtbDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNz
LWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1hbGxvdy1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wt
c2FuZGJveGVkLWlmcmFtZS1hbGxvdy5jZ2k6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUt
ZGVuaWVkLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC13
aXRob3V0LXdpbGRjYXJkLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1l
LWRlbmllZC13aXRob3V0LXdpbGRjYXJkLmNnaTogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFt
ZS1kZW5pZWQuY2dpOiBBZGRlZC4KKwogMjAwOS0xMS0xOSAgU2hpbmljaGlybyBIYW1hamkgIDxo
YW1hamlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUt
cGFyc2luZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFt
ZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJp
YnV0ZS1wYXJzaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACitU
aGlzIHRlc3QgY2FzZSB2ZXJpZmllcyB0aGUgcGFyc2luZyBvZiB0aGUgaWZyYW1lIHNhbmRib3gg
YXR0cmlidXRlLiBUd28gc2V0cyBvZiBpZnJhbWVzIGFyZSB1c2VkOiBvbmUgd2hlcmUgc2NyaXB0
aW5nIGlzIGFsbG93ZWQsIGFuZCBhbm90aGVyIG9uZSB3aGVyZSBpdCBpcyBkaXNhbGxvd2VkLiBU
aGUgdGVzdCB2ZXJpZmllcyB0aGF0IHRoZSBhbGxvd2VkIGZyYW1lcyBleGVjdXRlIHNjcmlwdHMg
KGJ1dCBvdGhlciBzYW5kYm94ZWQgcHJvcGVydGllcyBzdGlsbCBhcHBseSAtLSBzcGVjaWZpY2Fs
bHksIGZvcm1zIGFyZSBkaXNhYmxlZCksIGFuZCB0aGUgZGlzYWxsb3dlZCBvbmVzIGRvIG5vdC4g
SWYgc3VjY2Vzc2Z1bCB0aGUgdGVzdCBwcmludHMgIlBBU1MiLgorCisgICAgICAgICAgICAgICAg
ICAKK1BBU1MKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUt
YXR0cmlidXRlLXBhcnNpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1w
YXJzaW5nLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTY1IEBACis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICB3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCit2YXIgZmFpbGVkID0gZmFs
c2U7Cit2YXIgZnJhbWVzID0gMDsgICAgICAgICAvKiBudW1iZXIgb2YgYWxsb3dlZCBmcmFtZXMg
dGhhdCBjYWxsZWQgYmFjayAqLworCitmdW5jdGlvbiBmYWlsKG1lc3NhZ2UpCit7CisgICAgc2V0
U3RhdHVzKCJGQUlMOiAiICsgbWVzc2FnZSk7CisgICAgZmFpbGVkID0gdHJ1ZTsKK30KKworZnVu
Y3Rpb24gc2V0U3RhdHVzKHN0YXR1cykKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
dGVzdFN0YXR1cyIpLmlubmVySFRNTCA9IHN0YXR1czsKK30KKworZnVuY3Rpb24gYWxsb3dlZENh
bGxGcm9tU2FuZGJveCgpCit7CisgICAgKytmcmFtZXM7Cit9CisKK2Z1bmN0aW9uIGRpc2FsbG93
ZWRDYWxsRnJvbVNhbmRib3goKQoreworICAgIGZhaWwoImRpc2FsbG93ZWQgc2NyaXB0IGV4ZWN1
dGVkIik7Cit9CisKK2Z1bmN0aW9uIGRpc2FsbG93ZWRGb3JtU3VibWl0dGVkKCkKK3sKKyAgICBm
YWlsKCJzYW5kYm94aW5nIGZhaWxlZDogZm9ybSBzdWJtaXR0ZWQgaW4gc2FuZGJveGVkIGZyYW1l
Iik7Cit9CisKK3dpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpCit7CisgICAgaWYgKGZyYW1lcyA9
PSA1ICYmICFmYWlsZWQpCisgICAgICAgIHNldFN0YXR1cygiUEFTUyIpOworICAgIGVsc2UgaWYg
KCFmYWlsZWQpCisgICAgICAgIGZhaWwoInNjcmlwdGluZyBkaXNhYmxlZCBpbiBvbmUgb3IgbW9y
ZSBmcmFtZXMgd2hlcmUgaXQgc2hvdWxkIGJlIGVuYWJsZWQiKTsKK30KKworPC9zY3JpcHQ+Cis8
L2hlYWQ+CisKKzxib2R5PgorCisgICAgPHA+VGhpcyB0ZXN0IGNhc2UgdmVyaWZpZXMgdGhlIHBh
cnNpbmcgb2YgdGhlIGlmcmFtZSBzYW5kYm94IGF0dHJpYnV0ZS4gVHdvIHNldHMgb2YgaWZyYW1l
cworICAgIGFyZSB1c2VkOiBvbmUgd2hlcmUgc2NyaXB0aW5nIGlzIGFsbG93ZWQsIGFuZCBhbm90
aGVyIG9uZSB3aGVyZSBpdCBpcyBkaXNhbGxvd2VkLiBUaGUgdGVzdAorICAgIHZlcmlmaWVzIHRo
YXQgdGhlIGFsbG93ZWQgZnJhbWVzIGV4ZWN1dGUgc2NyaXB0cyAoYnV0IG90aGVyIHNhbmRib3hl
ZCBwcm9wZXJ0aWVzIHN0aWxsCisgICAgYXBwbHkgLS0gc3BlY2lmaWNhbGx5LCBmb3JtcyBhcmUg
ZGlzYWJsZWQpLCBhbmQgdGhlIGRpc2FsbG93ZWQgb25lcyBkbyBub3QuIElmIHN1Y2Nlc3NmdWwK
KyAgICB0aGUgdGVzdCBwcmludHMgJnF1b3Q7UEFTUyZxdW90Oy48L3A+CisgICAgCisgICAgPCEt
LSBpZnJhbWVzIHdoZXJlIHNjcmlwdCBleGVjdXRpb24gaXMgYWxsb3dlZCwgYnV0IG9yaWdpbiBp
cyBub3Qgc2hhcmVkIC0tPgorCisgICAgPCEtLSBwbGFpbiwgcHJvcGVyIGF0dHJpYnV0ZSB2YWx1
ZSAtLT4KKyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93LXNjcmlwdHMiCisgICAgICAgICAgICBu
YW1lPSJmMSIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtYXR0
cmlidXRlLXBhcnNpbmctYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKyAgICAKKyAgICA8
IS0tIGxpbmUgZmVlZCBjaGFyYWN0ZXJzIGJlZm9yZSBhbmQgYWZ0ZXIgYXR0cmlidXRlIHZhbHVl
IC0tPgorICAgIDxpZnJhbWUgc2FuZGJveD0iCisKK2FsbG93LXNjcmlwdHMKKworIgorICAgICAg
ICAgICAgbmFtZT0iZjIiCisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZy
YW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWFsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAg
ICA8IS0tIHJpZGljdWxvdXNseSBsb25nLCBpbnZhbGlkIHRleHQgKHdlbGwsIGZvciB0aGVzZSBw
dXJwb3NlcyBhdCBsZWFzdCkKKyAgICAgICAgIHdpdGggbm9uLUFTQ0lJIGNoYXJhY3RlcnMgc3Vy
cm91bmRpbmcgYXR0cmlidXRlIHZhbHVlIC0tPgorICAgIDxpZnJhbWUgc2FuZGJveD0iCisgICAg
ICAgIEbDtnIgdmFyIHZlcnMsIGphZyBnw7ZyLAorICAgICAgICBMb3ZhciBkdSBlbiBreXNzIG1p
ZyBnaXZhOworICAgICAgICBBcmtldCBmdWxsdCBqYWcgYm9yZGUgc2tyaXZhLAorICAgICAgICBN
aW5kcmUgaGFyIGphZyBza3Jpdml0IGbDtnIuCisgICAgICAgIE1lbiBtYW4gbcOlc3RlIGjDpWxs
YSBtw6V0dGEsCisgICAgICAgIEphZyBtZWQgdmVycywgbWVkIGt5c3NhciBkdS4KKyAgICAgICAg
TMOldCBtaWcgcsOka25hOiBEw6RyIMOkciBzanUhCisgICAgICAgIEVuIGTDpHJ0aWxsIGRldCBn
w7ZyIG1pZyDDpXR0YS4KKworICAgICAgICBOdW1ybyDDpXR0YSDDpHIgZmF0YWwsCisgICAgICAg
IEdyZWtsYW5kcyBzw6VuZ23DtnIgdm9ybyBuaW8sCisgICAgICAgIE9jaCBlbiBzdmVuc2sgZMOk
cnRpbGwgZ8O2ciB0aW8uIOKAlAorICAgICAgICBFbHZhIHZhciBhcG9zdGVsbnMgdGFsLAorICAg
ICAgICBUeSBqYWcgcsOka25hciBpY2tlIEp1ZGFzLAorICAgICAgICBIb25vbSwgc29tIGkgdsOk
bm5lcnMgbGFnCisgICAgICAgIEt5c3N0ZSBmYWxza3Q7IGRldCBnw7ZyIGVqIGphZywKKyAgICAg
ICAgSGVsc3QgbsOkciB2YWNrcmEgbMOkcHBhciBianVkYXMuCisKKyAgICAgICAgSHVydSBzdMOl
ciBtaW4gcsOka25pbmcgaMOkcj8KKyAgICAgICAgQWRlcnRvbjsgZGV0IMOkciBkb2NrIG7DpWdv
dC4KKyAgICAgICAgTml0dG9uIOKAlCByaW1tZXQgZ8O2ciBiZXN2w6RyLAorICAgICAgICBEw6Ry
ZsO2cmUgamFnIGZ5bGxlciB0am9nZXQuCisgICAgICAgIFN0cm9mZW4gw6RyIGVqIGZ1bGwgc29t
IGphZywKKyAgICAgICAgSW4gaSBoYW1uZW4gdmlsbCBqYWcgc3R5cmEsCisgICAgICAgIETDpHJm
w7ZyZSB0aWxsIGdvZG8gdGFnCisgICAgICAgIERlbm5hIGfDpW5nIG1lZCB0anVnb2Z5cmEuCisg
ICAgICAgIAorICAgICAgICAnS3lzc2FybmEnICgnVGhlIGtpc3NlcycpLCBFc2FpYXMgVGVnbsOp
ciwgMTc4Mi0xODQ2CisKKyAgICBhbGxvdy1zY3JpcHRzCisgICAgCisgICAgICAgIGludCBtYWlu
KHZvaWQpCisgICAgICAgIHsKKyAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfSIKKyAgICAg
ICAgICAgIG5hbWU9ImYzIgorICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlm
cmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1hbGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorCisg
ICAgPCEtLSB0YWIgY2hhcmFjdGVycyBiZWZvcmUgYW5kIGFmdGVyIGF0dHJpYnV0ZSB2YWx1ZSAt
LT4KKyAgICA8aWZyYW1lIHNhbmRib3g9IgkJYWxsb3ctc2NyaXB0cwkJIgorICAgICAgICAgICAg
bmFtZT0iZjQiCisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0
dHJpYnV0ZS1wYXJzaW5nLWFsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8IS0t
IG1peGVkIGNhc2UgLS0+CisgICAgPGlmcmFtZSBzYW5kYm94PSJBbExvVy1zQ3JJcFRzIgorICAg
ICAgICAgICAgbmFtZT0iZjUiCisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQt
aWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWFsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisK
KyAgICA8IS0tIGlmcmFtZXMgd2hlcmUgc2NyaXB0IGV4ZWN1dGlvbiBpcyBkaXNhbGxvd2VkIC0t
PgorCisgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvd3NjcmlwdHMiCisgICAgICAgICAgICBzcmM9
InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWRpc2FsbG93ZWQu
aHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93cy1jcmlw
dHMiCisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0
ZS1wYXJzaW5nLWRpc2FsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8aWZyYW1l
IHNhbmRib3g9Ii1hbGxvdy1zY3JpcHRzIgorICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2Fu
ZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1kaXNhbGxvd2VkLmh0bWwiPgorICAgIDwv
aWZyYW1lPgorCisgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvd19zY3JpcHRzIgorICAgICAgICAg
ICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1kaXNh
bGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorCisgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxv
d1NjcmlwdHMiCisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0
dHJpYnV0ZS1wYXJzaW5nLWRpc2FsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8
aWZyYW1lIHNhbmRib3g9ImFhbGxvdy1zY3JpcHRzIgorICAgICAgICAgICAgc3JjPSJyZXNvdXJj
ZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1kaXNhbGxvd2VkLmh0bWwiPgor
ICAgIDwvaWZyYW1lPgorCisgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zY3JpcHRzcyIKKyAg
ICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNp
bmctZGlzYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKworICAgIDxpZnJhbWUgc2FuZGJv
eAorICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUt
cGFyc2luZy1kaXNhbGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorCisgICAgPHAgaWQ9J3Rl
c3RTdGF0dXMnPkZBSUw6IFNjcmlwdCBkaWRuJ3QgcnVuPC9wPgorCis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm1zLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94
ZWQtaWZyYW1lLWZvcm1zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtZm9ybXMtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDQgQEAKK1RoaXMgdGVzdCBydW5zIGZpdmUgSUZyYW1lcyB3aXRoIGZv
cm1zIGFsbG93ZWQsIG9uZSBJRnJhbWUgd2l0aCBmb3JtcyBkaXNhbGxvd2VkLCB0aGVuIGZpdmUg
bW9yZSBJRnJhbWVzIHdpdGggZm9ybXMgYWxsb3dlZC4gSWYgdGVuIGZvcm0gc3VibWlzc2lvbnMg
YXJlIG1hZGUsIGFuZCB0aGUgZGlzYWxsb3dlZCBzdWJtaXNzaW9uIGlzIG5vdCBvbmUgb2YgdGhl
bSwgd2UgY29uc2lkZXIgdGhlIHRlc3QgdG8gaGF2ZSBwYXNzZWQuIFRoaXMgdGVzdCB3aWxsIHBy
aW50ICJQQVNTIiBvbiBzdWNjZXNzLgorCisgICAgICAgICAgICAgICAgICAgIAorUEFTUwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1mb3Jtcy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtZm9y
bXMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hl
ZC1pZnJhbWUtZm9ybXMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5NiBAQAorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
KyAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK3ZhciBzdWJtaXNz
aW9uQ291bnQgICAgICA9IDA7Cit2YXIgZGlzYWxsb3dlZFN1Ym1pc3Npb24gPSBmYWxzZTsKKwor
ZnVuY3Rpb24gYWxsb3dlZEZvcm1TdWJtaXR0ZWQoKQoreworICAgICsrc3VibWlzc2lvbkNvdW50
OworCisgICAgaWYgKHN1Ym1pc3Npb25Db3VudCA9PSAxMCkgeworICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidGVzdF9zdGF0dXMiKS5pbm5lckhUTUwgPSAoZGlzYWxsb3dlZFN1Ym1p
c3Npb24gPyAiRkFJTCIgOiAiUEFTUyIpOworICAgICAgCisgICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOworICAgIH0KK30KKworZnVuY3Rpb24gZGlzYWxsb3dlZEZvcm1TdWJt
aXR0ZWQoKQoreworICAgIGRpc2FsbG93ZWRTdWJtaXNzaW9uID0gdHJ1ZTsKK30KKworPC9zY3Jp
cHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorCisgICAgPHA+VGhpcyB0ZXN0IHJ1bnMgZml2ZSBJRnJh
bWVzIHdpdGggZm9ybXMgYWxsb3dlZCwgb25lIElGcmFtZSB3aXRoIGZvcm1zCisgICAgZGlzYWxs
b3dlZCwgdGhlbiBmaXZlIG1vcmUgSUZyYW1lcyB3aXRoIGZvcm1zIGFsbG93ZWQuIElmIHRlbiBm
b3JtCisgICAgc3VibWlzc2lvbnMgYXJlIG1hZGUsIGFuZCB0aGUgZGlzYWxsb3dlZCBzdWJtaXNz
aW9uIGlzIG5vdCBvbmUgb2YgdGhlbSwKKyAgICB3ZSBjb25zaWRlciB0aGUgdGVzdCB0byBoYXZl
IHBhc3NlZC4gVGhpcyB0ZXN0IHdpbGwgcHJpbnQKKyAgICAmcXVvdDtQQVNTJnF1b3Q7IG9uIHN1
Y2Nlc3MuPC9wPgorCisgICAgPCEtLSBmaXZlIElGcmFtZXMgd2l0aCBmb3JtcyBhbGxvd2VkIC0t
PgorCisgICAgPGlmcmFtZSBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsiCisgICAg
ICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMiCisgICAgICAgIHNyYz0icmVz
b3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1hbGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1l
PgorICAgIDxpZnJhbWUgc3R5bGU9IndpZHRoOiA2MHB4OyBoZWlnaHQ6IDYwcHg7IgorICAgICAg
ICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1zIgorICAgICAgICBzcmM9InJlc291
cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4K
KyAgICA8aWZyYW1lIHN0eWxlPSJ3aWR0aDogNjBweDsgaGVpZ2h0OiA2MHB4OyIKKyAgICAgICAg
c2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyIKKyAgICAgICAgc3JjPSJyZXNvdXJj
ZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWFsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+Cisg
ICAgPGlmcmFtZSBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsiCisgICAgICAgIHNh
bmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMiCisgICAgICAgIHNyYz0icmVzb3VyY2Vz
L3NhbmRib3hlZC1pZnJhbWUtZm9ybS1hbGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorICAg
IDxpZnJhbWUgc3R5bGU9IndpZHRoOiA2MHB4OyBoZWlnaHQ6IDYwcHg7IgorICAgICAgICBzYW5k
Ym94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1zIgorICAgICAgICBzcmM9InJlc291cmNlcy9z
YW5kYm94ZWQtaWZyYW1lLWZvcm0tYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKworICAg
IDwhLS0gb25lIElGcmFtZSB3aXRoIGZvcm1zIGRpc2FsbG93ZWQgLS0+CisKKyAgICA8aWZyYW1l
IHN0eWxlPSJ3aWR0aDogNjBweDsgaGVpZ2h0OiA2MHB4OyIKKyAgICAgICAgc2FuZGJveD0iYWxs
b3ctc2NyaXB0cyIKKyAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3Jt
LWRpc2FsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8IS0tIGZpdmUgbW9yZSBJ
RnJhbWVzIHdpdGggZm9ybXMgYWxsb3dlZCAtLT4KKworICAgIDxpZnJhbWUgc3R5bGU9IndpZHRo
OiA2MHB4OyBoZWlnaHQ6IDYwcHg7IgorICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFs
bG93LWZvcm1zIgorICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0t
YWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIHN0eWxlPSJ3aWR0aDog
NjBweDsgaGVpZ2h0OiA2MHB4OyIKKyAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxv
dy1mb3JtcyIKKyAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWFs
bG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBzdHlsZT0id2lkdGg6IDYw
cHg7IGhlaWdodDogNjBweDsiCisgICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ct
Zm9ybXMiCisgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1hbGxv
d2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorICAgIDxpZnJhbWUgc3R5bGU9IndpZHRoOiA2MHB4
OyBoZWlnaHQ6IDYwcHg7IgorICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZv
cm1zIgorICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tYWxsb3dl
ZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIHN0eWxlPSJ3aWR0aDogNjBweDsg
aGVpZ2h0OiA2MHB4OyIKKyAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3Jt
cyIKKyAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWFsbG93ZWQu
aHRtbCI+CisgICAgPC9pZnJhbWU+CisgICAgCisgICAgPHAgaWQ9J3Rlc3Rfc3RhdHVzJz5GQUlM
OiBTY3JpcHQgZGlkbid0IHJ1bjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1hbGxvd2VkLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQt
aWZyYW1lLW5hdmlnYXRpb24tYWxsb3dlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tYWxsb3dl
ZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIgQEAKK1RoaXMgdGVzdCB2
ZXJpZmllcyB0aGF0IGEgc2FuZGJveGVkIGlmcmFtZSBDQU4gbmF2aWdhdGUgYm90aCBpdHNlbGYg
YW5kIGEgY2hpbGQgaW4gdGhlIGZyYW1lIHRyZWUuIEl0IGFsc28gdmVyaWZpZXMgdGhhdCB0aGUg
c2FuZGJveCBhdHRyaWJ1dGUgcmVtYWlucyBpbnRhY3QgYWZ0ZXIgYSBmcmFtZSBoYXMgYmVlbiBu
YXZpZ2F0ZWQsIGFuZCB0aGF0IHNhbmRib3ggYXR0cmlidXRlcyBhcmUgcHJvcGFnYXRlZCB0aHJv
dWdoIHRoZSBmcmFtZSBoaWVyYXJjaHkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIChzZWxmLnNhbmRib3hlZEZyYW1lLmZyYW1lV2l0aFBsdWdpbi5kb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgncGx1Z2luJykuZGVzdHJveVN0cmVhbSkgPT0gdW5kZWZpbmVkIGlzIHRydWUK
K1BBU1MgKHNlbGYuZnJhbWVXaXRoUGx1Z2luLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbHVn
aW4nKS5kZXN0cm95U3RyZWFtKSAhPSB1bmRlZmluZWQgaXMgdHJ1ZQorUEFTUyBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnc2FuZGJveGVkRnJhbWVJZCcpLnNhbmRib3ggaXMgJ2FsbG93LXNjcmlw
dHMgYWxsb3ctc2FtZS1vcmlnaW4nCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKyAgCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94
ZWQtaWZyYW1lLW5hdmlnYXRpb24tYWxsb3dlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1hbGxvd2VkLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1l
LW5hdmlnYXRpb24tYWxsb3dlZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYwIEBACis8
aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOworfQorCitmdW5jdGlvbiBjaGlsZEZyYW1lV2FzTmF2aWdhdGVkKCkKK3sKKyAgICAvLyBD
aGVjayB0aGF0IHRoZSBjaGlsZCBmcmFtZSB3YXMgdW5hYmxlIHRvIGxvYWQgYSBwbHVnaW4sIHNp
bmNlIGl0cyBwYXJlbnQgaXMgc2FuZGJveGVkLgorICAgIHNob3VsZEJlVHJ1ZSgiKHNlbGYuc2Fu
ZGJveGVkRnJhbWUuZnJhbWVXaXRoUGx1Z2luLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbHVn
aW4nKS5kZXN0cm95U3RyZWFtKSA9PSB1bmRlZmluZWQiKTsKKyAgICAKKyAgICAvLyBDaGVjayBh
IG5vbi1zYW5kYm94ZWQgZnJhbWUgYXMgd2VsbCwgdG8gZW5zdXJlIHRoYXQgdGhlIHBsdWdpbiBp
cyBkaXNhYmxlZCBieSBzYW5kYm94aW5nCisgICAgLy8gYW5kIG5vdCBzb21lIG90aGVyIGZhaWx1
cmUKKyAgICBzaG91bGRCZVRydWUoIihzZWxmLmZyYW1lV2l0aFBsdWdpbi5kb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgncGx1Z2luJykuZGVzdHJveVN0cmVhbSkgIT0gdW5kZWZpbmVkIik7CisKKyAg
ICAvLyBXaGVuIHRoZSBjaGlsZCBmcmFtZSAoZ3JhbmRjaGlsZCBvZiB0aGUgbWFpbiB3aW5kb3cp
IGhhcyBiZWVuIG5hdmlnYXRlZCwKKyAgICAvLyBtYWtlIHRoZSBzYW5kYm94ZWQgZnJhbWUgbmF2
aWdhdGUgaXRzZWxmCisgICAgc2VsZi5zYW5kYm94ZWRGcmFtZS5sb2NhdGlvbi5hc3NpZ24oImph
dmFzY3JpcHQ6IHRvcC5zYW5kYm94V2FzTmF2aWdhdGVkKCk7Iik7Cit9CisKK2Z1bmN0aW9uIHNh
bmRib3hXYXNOYXZpZ2F0ZWQoKQoreworICAgIHNob3VsZEJlKCJkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnc2FuZGJveGVkRnJhbWVJZCcpLnNhbmRib3giLCAiJ2FsbG93LXNjcmlwdHMgYWxsb3ct
c2FtZS1vcmlnaW4nIik7CisgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKKworICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4K
KyAgICA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKyAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKworICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1zYW1lLW9yaWdp
biIKKyAgICAgICAgICAgIG5hbWU9InNhbmRib3hlZEZyYW1lIgorICAgICAgICAgICAgaWQ9InNh
bmRib3hlZEZyYW1lSWQiCisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZy
YW1lLW5hdmlnYXRpb24tY2hpbGQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8aWZyYW1l
IG5hbWU9ImZyYW1lV2l0aFBsdWdpbiIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRi
b3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1vYmplY3QuaHRtbCI+CisgICAgPC9pZnJhbWU+CisK
KyAgICA8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBh
IHNhbmRib3hlZCBpZnJhbWUgQ0FOIG5hdmlnYXRlIGJvdGggaXRzZWxmIGFuZCBhIGNoaWxkIGlu
IHRoZSBmcmFtZSB0cmVlLiAiCisgICAgICAgICAgICAgICAgKyAiSXQgYWxzbyB2ZXJpZmllcyB0
aGF0IHRoZSBzYW5kYm94IGF0dHJpYnV0ZSByZW1haW5zIGludGFjdCBhZnRlciBhIGZyYW1lIGhh
cyBiZWVuIG5hdmlnYXRlZCwgIgorICAgICAgICAgICAgICAgICsgImFuZCB0aGF0IHNhbmRib3gg
YXR0cmlidXRlcyBhcmUgcHJvcGFnYXRlZCB0aHJvdWdoIHRoZSBmcmFtZSBoaWVyYXJjaHkuIik7
CisgICAgdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgICAgPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZy
YW1lLW5hdmlnYXRpb24tcGFyZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50LWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hl
ZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDggQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGEgc2FuZGJveGVkIElGcmFtZSBj
YW5ub3QgbmF2aWdhdGUgYW4gYW5jZXN0b3IgaW4gdGhlIGZyYW1lIHRyZWUgYnkgYXNzaWduaW5n
IHRoZSBsb2NhdGlvbiBhdHRyaWJ1dGUuCisKK1RoaXMgaXMgZG9uZSBieSBsb2FkaW5nIHRlbiBu
b24tc2FuZGJveGVkIElGcmFtZXMsIGFuZCBhIHNpbmdsZSBzYW5kYm94ZWQgb25lLiBFeHBlY3Qg
dGVuIGZyYW1lcyB0byBiZSBuYXZpZ2F0ZWQsIGJ1dCB0aGUgc2FuZGJveGVkIG9uZSB0byBub3Qg
YmUgb25lIG9mIHRoZW0uCisKK1RoaXMgdGVzdCB3aWxsIHByaW50ICJQQVNTIiBvbiBzdWNjZXNz
LgorCisgICAgICAgICAgICAgICAKK1BBU1MKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQt
aWZyYW1lLW5hdmlnYXRpb24tcGFyZW50Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjgg
QEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CisgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KyAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCit2
YXIgbmF2aWdhdGVkRnJhbWVzID0gMDsKKworZnVuY3Rpb24gY2hlY2tSZXN1bHRzKCkKK3sKKyAg
ICB2YXIgdGVzdFN0YXR1cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0U3RhdHVzJyk7
CisKKyAgICBpZiAoc2VsZi5uYXZpZ2F0ZWQubG9jYXRpb24uaHJlZi5pbmRleE9mKCdwYXJlbnQu
aHRtbCcpID09IC0xKQorICAgICAgICB0ZXN0U3RhdHVzLmlubmVySFRNTCA9ICdGQUlMOiBkaXNh
bGxvd2VkIGZyYW1lIG5hdmlnYXRlZCc7CisgICAgZWxzZSBpZiAobmF2aWdhdGVkRnJhbWVzID09
IDEwKQorICAgICAgICB0ZXN0U3RhdHVzLmlubmVySFRNTCA9ICdQQVNTJzsKKyAgICBlbHNlCisg
ICAgICAgIHRlc3RTdGF0dXMuaW5uZXJIVE1MID0gJ0ZBSUw6IGZyYW1lcyBub3QgbmF2aWdhdGVk
IHByb3Blcmx5JzsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAg
ICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0
aW9uIGNvdW50RnJhbWUoKQoreworICAgICsrbmF2aWdhdGVkRnJhbWVzOworCisgICAgaWYgKG5h
dmlnYXRlZEZyYW1lcyA9PSAxMCkKKyAgICAgICAgY2hlY2tSZXN1bHRzKCk7Cit9CisKKzwvc2Ny
aXB0PgorPC9oZWFkPgorCis8Ym9keT4KKworICAgIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0
IGEgc2FuZGJveGVkIElGcmFtZSBjYW5ub3QgbmF2aWdhdGUgYW4gYW5jZXN0b3IKKyAgICBpbiB0
aGUgZnJhbWUgdHJlZSBieSBhc3NpZ25pbmcgdGhlIGxvY2F0aW9uIGF0dHJpYnV0ZS48L3A+CisK
KyAgICA8cD5UaGlzIGlzIGRvbmUgYnkgbG9hZGluZyB0ZW4gbm9uLXNhbmRib3hlZCBJRnJhbWVz
LCBhbmQgYSBzaW5nbGUKKyAgICBzYW5kYm94ZWQgb25lLiBFeHBlY3QgdGVuIGZyYW1lcyB0byBi
ZSBuYXZpZ2F0ZWQsIGJ1dCB0aGUgc2FuZGJveGVkCisgICAgb25lIHRvIDxiPm5vdDwvYj4gYmUg
b25lIG9mIHRoZW0uPC9wPgorICAgIAorICAgIDxwPlRoaXMgdGVzdCB3aWxsIHByaW50ICZxdW90
O1BBU1MmcXVvdDsgb24gc3VjY2Vzcy48L3A+CisKKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2Vz
L25vbi1zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24uaHRtbCI+PC9pZnJhbWU+CisgICAgPGlm
cmFtZSBzcmM9InJlc291cmNlcy9ub24tc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLmh0bWwi
PjwvaWZyYW1lPgorICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvbm9uLXNhbmRib3hlZC1pZnJh
bWUtbmF2aWdhdGlvbi5odG1sIj48L2lmcmFtZT4KKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2Vz
L25vbi1zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24uaHRtbCI+PC9pZnJhbWU+CisgICAgPGlm
cmFtZSBzcmM9InJlc291cmNlcy9ub24tc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLmh0bWwi
PjwvaWZyYW1lPgorCisgICAgPGlmcmFtZSBuYW1lPSduYXZpZ2F0ZWQnCisgICAgICAgICAgICBz
cmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50Lmh0bWwiCisg
ICAgPC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL25vbi1zYW5kYm94ZWQt
aWZyYW1lLW5hdmlnYXRpb24uaHRtbCI+PC9pZnJhbWU+CisgICAgPGlmcmFtZSBzcmM9InJlc291
cmNlcy9ub24tc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLmh0bWwiPjwvaWZyYW1lPgorICAg
IDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvbm9uLXNhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi5o
dG1sIj48L2lmcmFtZT4KKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL25vbi1zYW5kYm94ZWQt
aWZyYW1lLW5hdmlnYXRpb24uaHRtbCI+PC9pZnJhbWU+CisgICAgPGlmcmFtZSBzcmM9InJlc291
cmNlcy9ub24tc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLmh0bWwiPjwvaWZyYW1lPgorCisg
ICAgPHAgaWQ9J3Rlc3RTdGF0dXMnPkZBSUw6IFNjcmlwdCBkaWRuJ3QgcnVuPC9wPgorICAgIAor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVk
LWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmstZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJn
ZXRsaW5rLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRsaW5rLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhIHNh
bmRib3hlZCBJRnJhbWUgY2Fubm90IG9wZW4gYSBsaW5rIGluIGFub3RoZXIgZnJhbWUgdXNpbmcg
dGhlIHRhcmdldCBhdHRyaWJ1dGUgb2YgYSBsaW5rLgorCitUaGlzIGlzIGRvbmUgYnkgbG9hZGlu
ZyB0ZW4gbm9uLXNhbmRib3hlZCBJRnJhbWVzLCBhbmQgYSBzaW5nbGUgc2FuZGJveGVkIG9uZS4g
SW4gYWRkaXRpb24gZWFjaCBvZiB0aGVzZSBmcmFtZXMgaGF2ZSBhIHRhcmdldCBmcmFtZSAoc28s
IDIyIGZyYW1lcyBpbiB0b3RhbCkuIEV4cGVjdCB0ZW4gZnJhbWVzIHRvIGJlIGFibGUgdG8gb3Bl
biBhIGxpbmsgaW4gdGhlaXIgY29ycmVzcG9uZGluZyB0YXJnZXQgZnJhbWUsIGJ1dCB0aGUgc2Fu
ZGJveGVkIG9uZSB0byBub3QgYmUgb25lIG9mIHRoZW0uCisKK1RoaXMgdGVzdCB3aWxsIHByaW50
ICJQQVNTIiBvbiBzdWNjZXNzLgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor
UEFTUwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZp
Z2F0aW9uLXRhcmdldGxpbmsuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0
aW9uLXRhcmdldGxpbmsuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDkgQEAKKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
CisgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICB3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCit2YXIgbmF2aWdh
dGVkRnJhbWVzID0gMDsKKworZnVuY3Rpb24gY2hlY2tSZXN1bHRzKCkKK3sKKyAgICB2YXIgdGVz
dFN0YXR1cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0U3RhdHVzJyk7CisKKyAgICBp
ZiAoc2VsZi5zYW5kYm94ZWRfdGFyZ2V0LmxvY2F0aW9uLmhyZWYuaW5kZXhPZignLmh0bWwnKSAh
PSAtMSkKKyAgICAgICAgdGVzdFN0YXR1cy5pbm5lckhUTUwgPSAnRkFJTDogZGlzYWxsb3dlZCBm
cmFtZSBuYXZpZ2F0ZWQnOworICAgIGVsc2UgaWYgKG5hdmlnYXRlZEZyYW1lcyA9PSAxMCkKKyAg
ICAgICAgdGVzdFN0YXR1cy5pbm5lckhUTUwgPSAnUEFTUyc7CisgICAgZWxzZQorICAgICAgICB0
ZXN0U3RhdHVzLmlubmVySFRNTCA9ICdGQUlMOiBmcmFtZXMgbm90IG5hdmlnYXRlZCBwcm9wZXJs
eSc7CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICB3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBjb3Vu
dEZyYW1lKCkKK3sKKyAgICArK25hdmlnYXRlZEZyYW1lczsKKworICAgIGlmIChuYXZpZ2F0ZWRG
cmFtZXMgPT0gMTApCisgICAgICAgIGNoZWNrUmVzdWx0cygpOworfQorCis8L3NjcmlwdD4KKzwv
aGVhZD4KKworPGJvZHk+CisKKyAgICA8cD5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhIHNhbmRi
b3hlZCBJRnJhbWUgY2Fubm90IG9wZW4gYSBsaW5rIGluCisgICAgYW5vdGhlciBmcmFtZSB1c2lu
ZyB0aGUgPGNvZGU+dGFyZ2V0PC9jb2RlPiBhdHRyaWJ1dGUgb2YgYSBsaW5rLjwvcD4KKworICAg
IDxwPlRoaXMgaXMgZG9uZSBieSBsb2FkaW5nIHRlbiBub24tc2FuZGJveGVkIElGcmFtZXMsIGFu
ZCBhIHNpbmdsZQorICAgIHNhbmRib3hlZCBvbmUuIEluIGFkZGl0aW9uIGVhY2ggb2YgdGhlc2Ug
ZnJhbWVzIGhhdmUgYSB0YXJnZXQgZnJhbWUKKyAgICAoc28sIDIyIGZyYW1lcyBpbiB0b3RhbCku
IEV4cGVjdCB0ZW4gZnJhbWVzIHRvIGJlIGFibGUgdG8gb3BlbiBhIGxpbmsKKyAgICBpbiB0aGVp
ciBjb3JyZXNwb25kaW5nIHRhcmdldCBmcmFtZSwgYnV0IHRoZSBzYW5kYm94ZWQgb25lCisgICAg
dG8gPGI+bm90PC9iPiBiZSBvbmUgb2YgdGhlbS48L3A+CisgICAgCisgICAgPHA+VGhpcyB0ZXN0
IHdpbGwgcHJpbnQgJnF1b3Q7UEFTUyZxdW90OyBvbiBzdWNjZXNzLjwvcD4KKworICAgIDxpZnJh
bWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsu
aHRtbCIKKyAgICAgICAgICAgIG5hbWU9ImYxIj4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1l
IG5hbWU9ImYxX3RhcmdldCIgc3JjPSJhYm91dDpibGFuayI+PC9pZnJhbWU+CisKKyAgICA8aWZy
YW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRsaW5r
Lmh0bWwiCisgICAgICAgICAgICBuYW1lPSJmMiI+CisgICAgPC9pZnJhbWU+CisgICAgPGlmcmFt
ZSBuYW1lPSJmMl90YXJnZXQiIHNyYz0iYWJvdXQ6YmxhbmsiPjwvaWZyYW1lPgorCisgICAgPGlm
cmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGlu
ay5odG1sIgorICAgICAgICAgICAgbmFtZT0iZjMiPgorICAgIDwvaWZyYW1lPgorICAgIDxpZnJh
bWUgbmFtZT0iZjNfdGFyZ2V0IiBzcmM9ImFib3V0OmJsYW5rIj48L2lmcmFtZT4KKworICAgIDxp
ZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxp
bmsuaHRtbCIKKyAgICAgICAgICAgIG5hbWU9ImY0Ij4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZy
YW1lIG5hbWU9ImY0X3RhcmdldCIgc3JjPSJhYm91dDpibGFuayI+PC9pZnJhbWU+CisKKyAgICA8
aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRs
aW5rLmh0bWwiCisgICAgICAgICAgICBuYW1lPSJmNSI+CisgICAgPC9pZnJhbWU+CisgICAgPGlm
cmFtZSBuYW1lPSJmNV90YXJnZXQiIHNyYz0iYWJvdXQ6YmxhbmsiPjwvaWZyYW1lPgorCisgICAg
PGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0
bGluay5odG1sIgorICAgICAgICAgICAgbmFtZT0ic2FuZGJveGVkIgorICAgICAgICAgICAgc2Fu
ZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1zYW1lLW9yaWdpbiI+CisgICAgPC9pZnJhbWU+Cisg
ICAgPGlmcmFtZSBuYW1lPSJzYW5kYm94ZWRfdGFyZ2V0IiBzcmM9ImFib3V0OmJsYW5rIj48L2lm
cmFtZT4KKworICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZp
Z2F0aW9uLXRhcmdldGxpbmsuaHRtbCIKKyAgICAgICAgICAgIG5hbWU9ImY2Ij4KKyAgICA8L2lm
cmFtZT4KKyAgICA8aWZyYW1lIG5hbWU9ImY2X3RhcmdldCIgc3JjPSJhYm91dDpibGFuayI+PC9p
ZnJhbWU+CisKKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2
aWdhdGlvbi10YXJnZXRsaW5rLmh0bWwiCisgICAgICAgICAgICBuYW1lPSJmNyI+CisgICAgPC9p
ZnJhbWU+CisgICAgPGlmcmFtZSBuYW1lPSJmN190YXJnZXQiIHNyYz0iYWJvdXQ6YmxhbmsiPjwv
aWZyYW1lPgorCisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5h
dmlnYXRpb24tdGFyZ2V0bGluay5odG1sIgorICAgICAgICAgICAgbmFtZT0iZjgiPgorICAgIDwv
aWZyYW1lPgorICAgIDxpZnJhbWUgbmFtZT0iZjhfdGFyZ2V0IiBzcmM9ImFib3V0OmJsYW5rIj48
L2lmcmFtZT4KKworICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1u
YXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbCIKKyAgICAgICAgICAgIG5hbWU9ImY5Ij4KKyAgICA8
L2lmcmFtZT4KKyAgICA8aWZyYW1lIG5hbWU9ImY5X3RhcmdldCIgc3JjPSJhYm91dDpibGFuayI+
PC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUt
bmF2aWdhdGlvbi10YXJnZXRsaW5rLmh0bWwiCisgICAgICAgICAgICBuYW1lPSJmMTAiPgorICAg
IDwvaWZyYW1lPgorICAgIDxpZnJhbWUgbmFtZT0iZjEwX3RhcmdldCIgc3JjPSJhYm91dDpibGFu
ayI+PC9pZnJhbWU+CisKKyAgICA8cCBpZD0ndGVzdFN0YXR1cyc+RkFJTDogU2NyaXB0IGRpZG4n
dCBydW48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1l
cy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZp
Z2F0aW9uLXdpbmRvd29wZW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4tZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYgQEAKK1ZlcmlmaWVzIHRoYXQgYSBz
YW5kYm94ZWQgSUZyYW1lIGNhbm5vdCBvcGVuIG5ldyB3aW5kb3dzIHVzaW5nIHdpbmRvdy5vcGVu
KCkuIEV4cGVjdCB0ZW4gd2luZG93cyB0byBiZSBvcGVuZWQsIGJ1dCB0aGUgc2FuZGJveGVkIElG
cmFtZSBub3QgdG8gYmUgdGhlIG9wZW5lciBvZiBhbnkgb2YgdGhlbS4KKworVGhpcyB0ZXN0IHdp
bGwgcHJpbnQgIlBBU1MiIG9uIHN1Y2Nlc3MuCisKKyAgICAgICAgICAgICAgIAorUEFTUwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdp
bmRvd29wZW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5k
Ym94ZWQtaWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRv
d29wZW4uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MiBAQAorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQ+CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldENhbk9wZW5XaW5k
b3dzKHRydWUpOworfQorCit2YXIgdGVzdFN0YXR1cyAgICAgICA9ICJGQUlMOiBub3QgY29tcGxl
dGVkIjsKK3ZhciB3aW5kb3dzT3BlbmVkICAgID0gMDsKK3ZhciBtYWluV2luZG93TG9hZGVkID0g
ZmFsc2U7Cit2YXIgdGVzdENvbXBsZXRlZCAgICA9IGZhbHNlOworCitmdW5jdGlvbiB1cGRhdGVT
dGF0dXMobG9hZGVkLCBkb25lKQoreworICAgIG1haW5XaW5kb3dMb2FkZWQgfD0gbG9hZGVkOwor
ICAgIHRlc3RDb21wbGV0ZWQgfD0gZG9uZTsKKworICAgIGlmIChtYWluV2luZG93TG9hZGVkICYm
IHRlc3RDb21wbGV0ZWQpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RT
dGF0dXMiKS5pbm5lckhUTUwgPSB0ZXN0U3RhdHVzOworICAgICAgICBpZiAodGVzdENvbXBsZXRl
ZCAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgfQorfQorCitmdW5jdGlvbiB3aW5kb3dPcGVu
ZWQod2luZG93T3BlbmVyKQoreworICAgIGlmICh3aW5kb3dPcGVuZXIgPT0gc2VsZi5zYW5kYm94
ZWQpIHsKKyAgICAgICAgdGVzdFN0YXR1cyA9ICJGQUlMOiBzYW5kYm94ZWQgZnJhbWUgb3BlbmVk
IHdpbmRvdyI7CisgICAgICAgIHVwZGF0ZVN0YXR1cyhmYWxzZSwgdHJ1ZSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgKyt3aW5kb3dzT3BlbmVkOworICAgICAgICBpZiAod2luZG93c09wZW5lZCA9
PSAxMCAmJiAhdGVzdENvbXBsZXRlZCkgeworICAgICAgICAgICAgdGVzdFN0YXR1cyA9ICJQQVNT
IjsKKyAgICAgICAgICAgIHVwZGF0ZVN0YXR1cyhmYWxzZSwgdHJ1ZSk7CisgICAgICAgIH0KKyAg
ICB9Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InVwZGF0ZVN0YXR1
cyh0cnVlLCBmYWxzZSk7Ij4KKworICAgIDxwPlZlcmlmaWVzIHRoYXQgYSBzYW5kYm94ZWQgSUZy
YW1lIGNhbm5vdCBvcGVuIG5ldyB3aW5kb3dzCisgICAgdXNpbmcgPGNvZGU+d2luZG93Lm9wZW4o
KTwvY29kZT4uIEV4cGVjdCB0ZW4gd2luZG93cyB0byBiZSBvcGVuZWQsCisgICAgYnV0IHRoZSBz
YW5kYm94ZWQgSUZyYW1lIG5vdCB0byBiZSB0aGUgb3BlbmVyIG9mIGFueSBvZiB0aGVtLjwvcD4K
KyAgICAKKyAgICA8cD5UaGlzIHRlc3Qgd2lsbCBwcmludCAmcXVvdDtQQVNTJnF1b3Q7IG9uIHN1
Y2Nlc3MuPC9wPgorCisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1l
LW5hdmlnYXRpb24td2luZG93b3Blbi5odG1sIj48L2lmcmFtZT4KKyAgICA8aWZyYW1lIHNyYz0i
cmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0bWwiPjwv
aWZyYW1lPgorICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZp
Z2F0aW9uLXdpbmRvd29wZW4uaHRtbCI+PC9pZnJhbWU+CisgICAgPGlmcmFtZSBzcmM9InJlc291
cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi5odG1sIj48L2lmcmFt
ZT4KKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlv
bi13aW5kb3dvcGVuLmh0bWwiPjwvaWZyYW1lPgorCisgICAgPGlmcmFtZSBzcmM9InJlc291cmNl
cy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi5odG1sIgorICAgICAgICAg
ICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyIKKyAgICAgICAgICAgIG5hbWU9InNhbmRib3hlZCI+
CisgICAgPC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1p
ZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0bWwiPjwvaWZyYW1lPgorICAgIDxpZnJhbWUg
c3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4uaHRt
bCI+PC9pZnJhbWU+CisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1l
LW5hdmlnYXRpb24td2luZG93b3Blbi5odG1sIj48L2lmcmFtZT4KKyAgICA8aWZyYW1lIHNyYz0i
cmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0bWwiPjwv
aWZyYW1lPgorICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZp
Z2F0aW9uLXdpbmRvd29wZW4uaHRtbCI+PC9pZnJhbWU+CisKKyAgICA8cCBpZD0ndGVzdFN0YXR1
cyc+RkFJTDogU2NyaXB0IGRpZG4ndCBydW48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJh
bWUtcGx1Z2lucy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDE3IEBACitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBzYW5kYm94aW5nIG9m
IHBsdWdpbnMgd29ya3MgYXMgaW50ZW5kZWQuIFRocmVlIHRlc3RzIGFyZSBtYWRlLCBlYWNoIGlu
IG9uZSBzYW5kYm94ZWQgYW5kIG9uZSBub24tc2FuZGJveGVkIElGcmFtZTogYXBwbGV0cywgZW1i
ZWRzLCBhbmQgb2JqZWN0cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK05PVEU6
IFRoZSBmaXJzdCBzdWItdGVzdCB3aWxsIGZhaWwgaW4gRHVtcFJlbmRlclRyZWUsIHNpbmNlIER1
bXBSZW5kZXJUcmVlIGRvZXMgbm90IHN1cHBvcnQgYXBwbGV0cy4gVGhhdCBzdWItdGVzdCBtdXN0
IGJlIHJ1biBpbiBTYWZhcmkgaW5zdGVhZC4KKworRkFJTCAoc2VsZi5hcHBsZXRGcmFtZTEuZG9j
dW1lbnRbJ2FwcCddLmluaXQpICE9IHVuZGVmaW5lZCBzaG91bGQgYmUgdHJ1ZS4gV2FzIGZhbHNl
LgorUEFTUyAoc2VsZi5hcHBsZXRGcmFtZTIuZG9jdW1lbnRbJ2FwcCddLmluaXQpID09IHVuZGVm
aW5lZCBpcyB0cnVlCitQQVNTIChzZWxmLmVtYmVkRnJhbWUxLmRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdwbHVnaW4nKS5kZXN0cm95U3RyZWFtKSAhPSB1bmRlZmluZWQgaXMgdHJ1ZQorUEFTUyAo
c2VsZi5lbWJlZEZyYW1lMi5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGx1Z2luJykuZGVzdHJv
eVN0cmVhbSkgPT0gdW5kZWZpbmVkIGlzIHRydWUKK1BBU1MgKHNlbGYub2JqZWN0RnJhbWUxLmRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbHVnaW4nKS5kZXN0cm95U3RyZWFtKSAhPSB1bmRlZmlu
ZWQgaXMgdHJ1ZQorUEFTUyAoc2VsZi5vYmplY3RGcmFtZTIuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3BsdWdpbicpLmRlc3Ryb3lTdHJlYW0pID09IHVuZGVmaW5lZCBpcyB0cnVlCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKyAgICAgICAgIApJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1w
bHVnaW5zLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5k
Ym94ZWQtaWZyYW1lLXBsdWdpbnMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NCBAQAor
PGh0bWw+IAorPGhlYWQ+IAorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PiAKK2lmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIAorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsgCisgCit3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7IAorICAgIHNob3VsZEJlVHJ1
ZSgiKHNlbGYuYXBwbGV0RnJhbWUxLmRvY3VtZW50WydhcHAnXS5pbml0KSAhPSB1bmRlZmluZWQi
KTsKKyAgICBzaG91bGRCZVRydWUoIihzZWxmLmFwcGxldEZyYW1lMi5kb2N1bWVudFsnYXBwJ10u
aW5pdCkgPT0gdW5kZWZpbmVkIik7CisKKyAgICBzaG91bGRCZVRydWUoIihzZWxmLmVtYmVkRnJh
bWUxLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbHVnaW4nKS5kZXN0cm95U3RyZWFtKSAhPSB1
bmRlZmluZWQiKTsKKyAgICBzaG91bGRCZVRydWUoIihzZWxmLmVtYmVkRnJhbWUyLmRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdwbHVnaW4nKS5kZXN0cm95U3RyZWFtKSA9PSB1bmRlZmluZWQiKTsK
KworICAgIHNob3VsZEJlVHJ1ZSgiKHNlbGYub2JqZWN0RnJhbWUxLmRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdwbHVnaW4nKS5kZXN0cm95U3RyZWFtKSAhPSB1bmRlZmluZWQiKTsKKyAgICBzaG91
bGRCZVRydWUoIihzZWxmLm9iamVjdEZyYW1lMi5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGx1
Z2luJykuZGVzdHJveVN0cmVhbSkgPT0gdW5kZWZpbmVkIik7CisKKyAgICBpc1N1Y2Nlc3NmdWxs
eVBhcnNlZCgpOworfSAKKzwvc2NyaXB0PiAKKzwvaGVhZD4gCisgCis8Ym9keT4gCisgICAgPHAg
aWQ9ImRlc2NyaXB0aW9uIj48L3A+CisgCisgICAgPHA+Tk9URTogVGhlIGZpcnN0IHN1Yi10ZXN0
IHdpbGwgZmFpbCBpbiBEdW1wUmVuZGVyVHJlZSwgc2luY2UgRHVtcFJlbmRlclRyZWUKKyAgICBk
b2VzIG5vdCBzdXBwb3J0IGFwcGxldHMuIFRoYXQgc3ViLXRlc3QgbXVzdCBiZSBydW4gaW4gU2Fm
YXJpIGluc3RlYWQuPC9wPiAKKworICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCisgICAg
PCEtLSBBcHBsZXRzIC0tPgorICAgIAorICAgIDxpZnJhbWUgaWQ9ImFwcGxldEZyYW1lMSIgCisg
ICAgICAgICAgICBzdHlsZT0id2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDEwMHB4OyIgCisgICAgICAg
ICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtYXBwbGV0
Lmh0bWwiPiAKKyAgICA8L2lmcmFtZT4gCisgICAgPGlmcmFtZSBpZD0iYXBwbGV0RnJhbWUyIiAK
KyAgICAgICAgICAgIHN0eWxlPSJ3aWR0aDogMjAwcHg7IGhlaWdodDogMTAwcHg7IiAKKyAgICAg
ICAgICAgIHNhbmRib3g9ImFsbG93LXNhbWUtb3JpZ2luIGFsbG93LXNjcmlwdHMiIAorICAgICAg
ICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLWZyYW1lLWFwcGxl
dC5odG1sIj4gCisgICAgPC9pZnJhbWU+IAorCisgICAgPCEtLSBFbWJlZHMgLS0+CisgICAgCisg
ICAgPGlmcmFtZSBpZD0iZW1iZWRGcmFtZTEiCisgICAgICAgICAgICBzdHlsZT0id2lkdGg6IDIw
MHB4OyBoZWlnaHQ6IDEwMHB4OyIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hl
ZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1lbWJlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKyAgICA8
aWZyYW1lIGlkPSJlbWJlZEZyYW1lMiIKKyAgICAgICAgICAgIHN0eWxlPSJ3aWR0aDogMjAwcHg7
IGhlaWdodDogMTAwcHg7IgorICAgICAgICAgICAgc2FuZGJveD0iYWxsb3ctc2FtZS1vcmlnaW4i
CisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJh
bWUtZW1iZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8IS0tIE9iamVjdHMgLS0+Cisg
ICAgCisgICAgPGlmcmFtZSBpZD0ib2JqZWN0RnJhbWUxIgorICAgICAgICAgICAgc3R5bGU9Indp
ZHRoOiAyMDBweDsgaGVpZ2h0OiAxMDBweDsiCisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9z
YW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtb2JqZWN0Lmh0bWwiPgorICAgIDwvaWZyYW1l
PgorICAgIDxpZnJhbWUgaWQ9Im9iamVjdEZyYW1lMiIKKyAgICAgICAgICAgIHN0eWxlPSJ3aWR0
aDogMjAwcHg7IGhlaWdodDogMTAwcHg7IgorICAgICAgICAgICAgc2FuZGJveD0iYWxsb3ctc2Ft
ZS1vcmlnaW4iCisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBs
dWdpbnMtZnJhbWUtb2JqZWN0Lmh0bWwiPgorICAgIDwvaWZyYW1lPgorCisgICAgPHNjcmlwdD4K
KyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgc2FuZGJveGluZyBvZiBw
bHVnaW5zIHdvcmtzIGFzIGludGVuZGVkLiBUaHJlZSB0ZXN0cyBhcmUgbWFkZSwgZWFjaCBpbiBv
bmUgc2FuZGJveGVkIGFuZCBvbmUgbm9uLXNhbmRib3hlZCBJRnJhbWU6IGFwcGxldHMsIGVtYmVk
cywgYW5kIG9iamVjdHMuIik7CisgICAgdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cisg
ICAgPC9zY3JpcHQ+Cis8L2JvZHk+IAorPC9odG1sPiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtc2NyaXB0aW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXNjcmlwdGluZy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5k
Ym94ZWQtaWZyYW1lLXNjcmlwdGluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTEgQEAKK1ZlcmlmeSB0aGF0IHNhbmRib3hlZCBmcmFtZXMgd2l0aCBzYW5kYm94PSJhbGxv
dy1zY3JpcHRzIiBjYW4gZXhlY3V0ZSBzY3JpcHRzLCBidXQgb3RoZXIgc2FuZGJveGVkIGZyYW1l
cyBjYW5ub3QuIEFsc28gdmVyaWZ5IHRoYXQgcmVtb3ZpbmcgdGhlIHNhbmRib3g9ImFsbG93LXNj
cmlwdHMiIGF0dHJpYnV0ZSBhdCBydW50aW1lIHByZXZlbnRzIG5ldyBzY3JpcHRzIGZyb20gbGF1
bmNoaW5nLCBidXQgZXhpc3Rpbmcgb25lcyBrZWVwIHJ1bm5pbmcuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIGRpc2FsbG93ZWRFeGVjdXRlZCBpcyAwCitQQVNTIGFsbG93
ZWRFeGVjdXRlZCBpcyAyCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKyAgIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlm
cmFtZS1zY3JpcHRpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1l
cy9zYW5kYm94ZWQtaWZyYW1lLXNjcmlwdGluZy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1zY3JpcHRpbmcuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw0NiBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQg
c3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgd2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKwordmFyIGRpc2FsbG93ZWRFeGVjdXRl
ZCA9IDA7Cit2YXIgYWxsb3dlZEV4ZWN1dGVkID0gMDsKKword2luZG93Lm9ubG9hZCA9IGZ1bmN0
aW9uKCkKK3sKKyAgICBzaG91bGRCZSgiZGlzYWxsb3dlZEV4ZWN1dGVkIiwgIjAiKTsKKyAgICBz
aG91bGRCZSgiYWxsb3dlZEV4ZWN1dGVkIiwgIjIiKTsKKworICAgIGlzU3VjY2Vzc2Z1bGx5UGFy
c2VkKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+CisgICAgPHAgaWQ9ImRlc2Ny
aXB0aW9uIj48L3A+CisgCisgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgCisgICAgPGlm
cmFtZSBzYW5kYm94PSJhbGxvdy1zYW1lLW9yaWdpbiBhbGxvdy1zY3JpcHRzIgorICAgICAgICAg
ICAgc3JjPSJqYXZhc2NyaXB0OiArK3dpbmRvdy50b3AuYWxsb3dlZEV4ZWN1dGVkOyI+CisgICAg
PC9pZnJhbWU+CisgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zYW1lLW9yaWdpbiIKKyAgICAg
ICAgICAgIHNyYz0iamF2YXNjcmlwdDogKyt3aW5kb3cudG9wLmRpc2FsbG93ZWRFeGVjdXRlZDsi
PgorICAgIDwvaWZyYW1lPgorICAgIAorICAgIDxpZnJhbWUgaWQ9ImZyYW1lIiBzcmM9InJlc291
cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXNjcmlwdC1keW5hbWljLmh0bWwiPgorICAgIDwvaWZyYW1l
PgorCisgICAgPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVmVyaWZ5IHRoYXQgc2FuZGJveGVk
IGZyYW1lcyB3aXRoIHNhbmRib3g9JnF1b3Q7YWxsb3ctc2NyaXB0cyZxdW90OyBjYW4gZXhlY3V0
ZSBzY3JpcHRzLCAiCisgICAgICAgICAgICAgICAgICsgImJ1dCBvdGhlciBzYW5kYm94ZWQgZnJh
bWVzIGNhbm5vdC4gQWxzbyB2ZXJpZnkgdGhhdCByZW1vdmluZyB0aGUgIgorICAgICAgICAgICAg
ICAgICArICJzYW5kYm94PSZxdW90O2FsbG93LXNjcmlwdHMmcXVvdDsgYXR0cmlidXRlIGF0IHJ1
bnRpbWUgcHJldmVudHMgbmV3IHNjcmlwdHMgZnJvbSBsYXVuY2hpbmcsICIKKyAgICAgICAgICAg
ICAgICAgKyAiYnV0IGV4aXN0aW5nIG9uZXMga2VlcCBydW5uaW5nLiIpOworICAgIHZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1zdG9yYWdlLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94
ZWQtaWZyYW1lLXN0b3JhZ2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1zdG9yYWdlLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwyOCBAQAorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYSBzYW5k
Ym94ZWQgaWZyYW1lIGRvZXMgbm90IGhhdmUgYWNjZXNzIHRvIGFueSBzZXNzaW9uIHN0b3JhZ2Us
IGxvY2FsIHN0b3JhZ2Ugb3IgZGF0YWJhc2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitNb3N0IG9mIHRoZSBQQVNTIG1lc3NhZ2VzIGFwcGVhciBpbiBmcmFtZXMsIHByZXNlbnRl
ZCBieSBEdW1wUmVuZGVyVHJlZSBhZnRlciB0aGUgbWFpbiB3aW5kb3cuCisKKyAgCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKworCistLS0tLS0tLQor
RnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0tLS0tCitQQVNT
IHdpbmRvdy5vcGVuRGF0YWJhc2UoKSA9PSBudWxsIGlzIHRydWUKK1BBU1Mgd2luZG93LmxvY2Fs
U3RvcmFnZSA9PSBudWxsIGlzIHRydWUKK1BBU1Mgd2luZG93LnNlc3Npb25TdG9yYWdlID09IG51
bGwgaXMgdHJ1ZQorCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJh
bWUxLS0+LS0+JworLS0tLS0tLS0KK1BBU1Mgd2luZG93Lm9wZW5EYXRhYmFzZSgpICE9IG51bGwg
aXMgdHJ1ZQorUEFTUyB3aW5kb3cubG9jYWxTdG9yYWdlICE9IG51bGwgaXMgdHJ1ZQorUEFTUyB3
aW5kb3cuc2Vzc2lvblN0b3JhZ2UgIT0gbnVsbCBpcyB0cnVlCisKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtc3RvcmFnZS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtc3RvcmFnZS5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1z
dG9yYWdlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzcgQEAKKzxodG1sPgorPGhlYWQ+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0
aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Cit9CisKK3dpbmRvdy5v
bmxvYWQgPSBmdW5jdGlvbigpIHsgCisgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKK30gCisK
Kzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+
CisKKyAgICA8cD5Nb3N0IG9mIHRoZSBQQVNTIG1lc3NhZ2VzIGFwcGVhciBpbiBmcmFtZXMsIHBy
ZXNlbnRlZCBieSBEdW1wUmVuZGVyVHJlZSBhZnRlciB0aGUgbWFpbiB3aW5kb3cuPC9wPgorCisg
ICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIiBzcmM9InJlc291cmNlcy9zYW5kYm94
ZWQtaWZyYW1lLXN0b3JhZ2UtZGlzYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKworICAg
IDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1zdG9yYWdlLWFsbG93ZWQu
aHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKwor
ICAgIDxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGEg
c2FuZGJveGVkIGlmcmFtZSBkb2VzIG5vdCBoYXZlIGFjY2VzcyB0byBhbnkgc2Vzc2lvbiBzdG9y
YWdlLCBsb2NhbCBzdG9yYWdlIG9yIGRhdGFiYXNlLiIpOworICAgIHZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOworICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL25vbi1zYW5kYm94ZWQtaWZyYW1lLW5hdmln
YXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJj
ZXMvbm9uLXNhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL25vbi1zYW5kYm94ZWQtaWZyYW1lLW5h
dmlnYXRpb24uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1IEBACis8aHRtbD4KKzxib2R5
PgorICA8aWZyYW1lIHNyYz0ic2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXNvdXJjZS5odG1s
Ij48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWFsbG93ZWQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2Fu
ZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1hbGxvd2VkLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1h
dHRyaWJ1dGUtcGFyc2luZy1hbGxvd2VkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIg
QEAKKzxodG1sPgorPHNjcmlwdD4KKwordG9wLmFsbG93ZWRDYWxsRnJvbVNhbmRib3goKTsKKwor
PC9zY3JpcHQ+Cis8Ym9keSBvbmxvYWQ9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmJykuc3Vi
bWl0KCk7Ij4KKyAgICA8Zm9ybSBpZD0nZicgYWN0aW9uPSJqYXZhc2NyaXB0OnRvcC5kaXNhbGxv
d2VkRm9ybVN1Ym1pdHRlZCgpOyI+CisgICAgICAgIDxpbnB1dCBuYW1lPSJ4IiB2YWx1ZT0ieSIg
dHlwZT0iY2hlY2tib3giIGNoZWNrZWQ9InllcyIgLz4KKyAgICA8L2Zvcm0+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVk
LWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1kaXNhbGxvd2VkLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmli
dXRlLXBhcnNpbmctZGlzYWxsb3dlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmct
ZGlzYWxsb3dlZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUgQEAKKzxodG1sPgorPHNj
cmlwdD4KK3RvcC5kaXNhbGxvd2VkQ2FsbEZyb21TYW5kYm94KCk7Cis8L3NjcmlwdD4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZy
YW1lLWZvcm0tYWxsb3dlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tYWxsb3dlZC5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJh
bWUtZm9ybS1hbGxvd2VkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNSBAQAorPGJvZHkg
b25sb2FkPSJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZm9ybScpLnN1Ym1pdCgpOyI+Cis8Zm9y
bSBpZD0iZm9ybSIgYWN0aW9uPSJqYXZhc2NyaXB0OndpbmRvdy50b3AuYWxsb3dlZEZvcm1TdWJt
aXR0ZWQoKTsiPgorICAgIDxpbnB1dCBuYW1lPXggdmFsdWU9eSB0eXBlPSJjaGVja2JveCIgY2hl
Y2tlZD0ieWVzIi8+Cis8L2Zvcm0+Cis8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWRpc2FsbG93ZWQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlm
cmFtZS1mb3JtLWRpc2FsbG93ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tZGlzYWxsb3dlZC5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYgQEAKKzxib2R5IG9ubG9hZD0iZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2Zvcm0nKS5zdWJtaXQoKTsiCisgICAgICBiZ2NvbG9yPSd5ZWxsb3cnPgor
PGZvcm0gaWQ9ImZvcm0iIGFjdGlvbj0iamF2YXNjcmlwdDp3aW5kb3cudG9wLmRpc2FsbG93ZWRG
b3JtU3VibWl0dGVkKCk7Ij4KKyAgICA8aW5wdXQgbmFtZT14IHZhbHVlPXkgdHlwZT0iY2hlY2ti
b3giIGNoZWNrZWQ9InllcyIvPgorPC9mb3JtPgorPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGVkLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1p
ZnJhbWUtbmF2aWdhdGVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0ZWQuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1IEBACis8aHRtbD4KKzxib2R5IG9ubG9hZD0nc2VsZi50b3AuY291bnRG
cmFtZSgpOyc+CituYXZpZ2F0ZWQKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tY2hpbGQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2Fu
ZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLWNoaWxkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9u
LWNoaWxkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTggQEAKKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0PgorZnVuY3Rpb24gbW9kaWZ5KCkKK3sKKyAgICBzZWxmLm5hdmlnYXRlZC5sb2Nh
dGlvbi5hc3NpZ24oImphdmFzY3JpcHQ6IHRvcC5jaGlsZEZyYW1lV2FzTmF2aWdhdGVkKCk7Iik7
Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ibW9kaWZ5KCk7Ij4KKyAgICA8
aWZyYW1lIG5hbWU9Im5hdmlnYXRlZCIKKyAgICAgICAgICAgIHNyYz0ic2FuZGJveGVkLWlmcmFt
ZS1uYXZpZ2F0aW9uLW5hdmlnYXRlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1l
IG5hbWU9ImZyYW1lV2l0aFBsdWdpbiIKKyAgICAgICAgICAgIHNyYz0ic2FuZGJveGVkLWlmcmFt
ZS1wbHVnaW5zLWZyYW1lLW9iamVjdC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKzwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQt
aWZyYW1lLW5hdmlnYXRpb24tbmF2aWdhdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1uYXZp
Z2F0ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291
cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tbmF2aWdhdGVkLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsOSBAQAorPGh0bWw+Cis8aGVhZD4KKzwvaGVhZD4KKzxib2R5PgorPCEt
LSBUaGlzIGZpbGUgaXMgaW4gYSBzZXBhcmF0ZSBkb2N1bWVudCBpbiBvcmRlciB0byBzaGFyZSBv
cmlnaW4gd2l0aCB0aGUKK3BhcmVudCBkb2N1bWVudC4gLS0+Citpbm5vY2VudCBjb250ZW50Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMv
c2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXBhcmVudC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRp
b24tcGFyZW50Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9y
ZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXBhcmVudC5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDggQEAKKzxodG1sPgorPGJvZHk+CisgICAgPGlmcmFtZSBzYW5kYm94
PSJhbGxvdy1zY3JpcHRzIGFsbG93LXNhbWUtb3JpZ2luIgorICAgICAgICAgICAgc3JjPSJzYW5k
Ym94ZWQtaWZyYW1lLW5hdmlnYXRpb24tc291cmNlLmh0bWwiPgorICAgIDwvaWZyYW1lPgorICAg
IDxwIGlkPSdpbm5vY2VudF9jb250ZW50Jz5pbm5vY2VudCBjb250ZW50PC9wPgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hl
ZC1pZnJhbWUtbmF2aWdhdGlvbi1zb3VyY2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXNvdXJj
ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2Vz
L3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1zb3VyY2UuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxMiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBtb2RpZnko
KQoreworICAgIHNlbGYucGFyZW50LmxvY2F0aW9uLmFzc2lnbignc2FuZGJveGVkLWlmcmFtZS1u
YXZpZ2F0ZWQuaHRtbCcpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9J21v
ZGlmeSgpOyc+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1l
cy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVk
LWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24t
dGFyZ2V0bGluay5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMxIEBACis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdD4KKworLyoKKyAqIFNldCB0aGUgdGFyZ2V0IG9mIHRoZSBsaW5rIHRvICdY
X3RhcmdldCcsIHdoZXJlIFggaXMgdGhlIG5hbWUgb2YKKyAqIHRoaXMgZnJhbWUuCisgKgorICog
VGhlbiBjbGljayB0aGUgbGluay4KKyAqLworCitmdW5jdGlvbiBjbGlja19saW5rKCkKK3sKKyAg
ICB2YXIgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnTW91c2VFdmVudCcpOworICAgIGV2
ZW50LmluaXRFdmVudCgnY2xpY2snLCB0cnVlLCB0cnVlKTsKKyAgICB2YXIgbGluayA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdsaW5rJyk7CisgICAgbGluay50YXJnZXQgPSBzZWxmLm5hbWUg
KyAnX3RhcmdldCc7CisgICAgbGluay5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKK30KKworPC9zY3Jp
cHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0nY2xpY2tfbGluaygpOyc+CisKKyAgICA8YSBo
cmVmPSJzYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRlZC5odG1sIiBpZD0ibGluayI+CisgICAgICAg
IChsaW5rIHRyaWdnZXJlZCBieSBzY3JpcHQpCisgICAgPC9hPgorCis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFt
ZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29w
ZW4uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNl
cy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDMgQEAKKzxzY3JpcHQ+CisgICAgd2luZG93Lm9wZW4oImphdmFzY3JpcHQ6
IG9wZW5lci5wYXJlbnQud2luZG93T3BlbmVkKG9wZW5lcik7Iik7Cis8L3NjcmlwdD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdp
bnMtZnJhbWUtYXBwbGV0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFt
ZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1hcHBsZXQuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94
ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtYXBwbGV0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTEgQEAKKzxodG1sPgorPGhlYWQ+Cis8L2hlYWQ+CisKKzxib2R5PgorICAgIDxhcHBsZXQg
bmFtZT0iYXBwIgorICAgICAgICAgICAgY29kZWJhc2U9Ii4uLy4uL2RvbS9yZXNvdXJjZXMiCisg
ICAgICAgICAgICBjb2RlPSJUZXN0QXBwbGV0IgorICAgIDwvYXBwbGV0PgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1p
ZnJhbWUtcGx1Z2lucy1mcmFtZS1lbWJlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtZW1i
ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNl
cy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtZW1iZWQuaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxMiBAQAorPGh0bWw+Cis8aGVhZD4KKzwvaGVhZD4KKworPGJvZHk+CisgICAg
PGVtYmVkIGlkPSJwbHVnaW4iIAorICAgICAgICAgICB0eXBlPSJhcHBsaWNhdGlvbi94LXdlYmtp
dC10ZXN0LW5ldHNjYXBlIgorICAgICAgICAgICBzcmM9ImRhdGE6dGV4dC9wbGFpbiwiCisgICAg
ICAgICAgIHN0eWxlPSJ3aWR0aDowOyBoZWlnaHQ6MCI+CisgICAgPC9lbWJlZD4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94
ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtb2JqZWN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFt
ZS1vYmplY3QuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jl
c291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtb2JqZWN0Lmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKKzxodG1sPgorPGhlYWQ+Cis8L2hlYWQ+CisKKzxib2R5
PgorICAgIDxvYmplY3QgaWQ9InBsdWdpbiIgCisgICAgICAgICAgICB0eXBlPSJhcHBsaWNhdGlv
bi94LXdlYmtpdC10ZXN0LW5ldHNjYXBlIgorICAgICAgICAgICAgc3R5bGU9IndpZHRoOjA7IGhl
aWdodDowIj4KKyAgICA8L29iamVjdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXNjcmlwdC1keW5hbWlj
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3Nh
bmRib3hlZC1pZnJhbWUtc2NyaXB0LWR5bmFtaWMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXNjcmlwdC1keW5h
bWljLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjYgQEAKKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0PgorCisgICAgZnJhbWUgPSB3aW5kb3cudG9wLmRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdmcmFtZScpOworCisgICAgLy8gc2V0dGluZyB0aGUgc2FuZGJveCBmbGFnIGF0IHJ1bnRpbWUg
c2hvdWxkIG5vdCB0ZXJtaW5hdGUgYWxyZWFkeQorICAgIC8vIHJ1bm5pbmcgc2NyaXB0cyAoZS5n
LiwgdGhpcyBvbmUpCisKKyAgICBmcmFtZS5zYW5kYm94ID0gJ2FsbG93LXNhbWUtb3JpZ2luJzsg
ICAvLyBOTyBhbGxvdy1zY3JpcHRzCisKKyAgICArK3dpbmRvdy50b3AuYWxsb3dlZEV4ZWN1dGVk
OworCisgICAgLy8gaG93ZXZlciwgbmV3IHNjcmlwdHMgKHN1Y2ggYXMgdGhlIG9ubG9hZCBvbmUg
YmVsb3cpIHNob3VsZAorICAgIC8vIG5vdCBydW4KKworICAgIGZ1bmN0aW9uIG9ubG9hZF9ob29r
KCkKKyAgICB7CisgICAgICAgICsrd2luZG93LnRvcC5kaXNhbGxvd2VkRXhlY3V0ZWQ7CisgICAg
fTsKKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0nb25sb2FkX2hvb2soKTsn
PjwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNl
cy9zYW5kYm94ZWQtaWZyYW1lLXN0b3JhZ2UtYWxsb3dlZC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXN0b3JhZ2Ut
YWxsb3dlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVz
b3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtc3RvcmFnZS1hbGxvd2VkLmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTkgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+CisKK3dpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICBzaG91bGRC
ZVRydWUoIndpbmRvdy5vcGVuRGF0YWJhc2UoKSAhPSBudWxsIik7CisgICAgc2hvdWxkQmVUcnVl
KCJ3aW5kb3cubG9jYWxTdG9yYWdlICE9IG51bGwiKTsKKyAgICBzaG91bGRCZVRydWUoIndpbmRv
dy5zZXNzaW9uU3RvcmFnZSAhPSBudWxsIik7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+CisgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1zdG9y
YWdlLWRpc2FsbG93ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1l
cy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1zdG9yYWdlLWRpc2FsbG93ZWQuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQt
aWZyYW1lLXN0b3JhZ2UtZGlzYWxsb3dlZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5
IEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pgor
Cit3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgc2hvdWxkQmVUcnVlKCJ3aW5kb3cu
b3BlbkRhdGFiYXNlKCkgPT0gbnVsbCIpOworICAgIHNob3VsZEJlVHJ1ZSgid2luZG93LmxvY2Fs
U3RvcmFnZSA9PSBudWxsIik7CisgICAgc2hvdWxkQmVUcnVlKCJ3aW5kb3cuc2Vzc2lvblN0b3Jh
Z2UgPT0gbnVsbCIpOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLWRvY3VtZW50LWNvb2tpZS1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9z
YW5kYm94ZWQtaWZyYW1lLWRvY3VtZW50LWNvb2tpZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtZG9j
dW1lbnQtY29va2llLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACitU
aGlzIHRlc3QgY2hlY2tzIHRoYXQgYSBTRUNVUklUWV9FUlIgZXhjZXB0aW9uIGlzIHJhaXNlZCB3
aGlsZSBhY2Nlc3NpbmcgZG9jdW1lbnQuZG9tYWluIGluIGEgc2FuZGJveGVkIGlmcmFtZSAod2l0
aG91dCAiYWxsb3ctb3JpZ2luIiBzZXQpLiBUaGlzIHRlc3Qgd2lsbCBwcmludCAiUEFTUyIgb24g
c3VjY2Vzcy4KKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJh
bWUwLS0+LS0+JworLS0tLS0tLS0KK1BBU1MKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvc2FuZGJveGVkLWlmcmFtZS1kb2N1bWVudC1jb29raWUuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtZG9j
dW1lbnQtY29va2llLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtZG9jdW1lbnQtY29va2llLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMjUgQEAKKzxodG1sPgorPGhlYWQ+CisKKzxzY3JpcHQ+CisKK2lmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENoaWxkRnJhbWVzQXNU
ZXh0KCk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKworICAgIDxwPlRoaXMg
dGVzdCBjaGVja3MgdGhhdCBhIFNFQ1VSSVRZX0VSUiBleGNlcHRpb24gaXMgcmFpc2VkIHdoaWxl
IGFjY2Vzc2luZyBkb2N1bWVudC5kb21haW4KKyAgICBpbiBhIHNhbmRib3hlZCBpZnJhbWUgKHdp
dGhvdXQgJnF1b3Q7YWxsb3ctb3JpZ2luJnF1b3Q7IHNldCkuIFRoaXMgdGVzdCB3aWxsIHByaW50
CisgICAgJnF1b3Q7UEFTUyZxdW90OyBvbiBzdWNjZXNzLjwvcD4KKworICAgIDxpZnJhbWUgc2Fu
ZGJveD0iYWxsb3ctc2NyaXB0cyIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hl
ZC1pZnJhbWUtZG9jdW1lbnQtY29va2llLXJlYWQtZGVuaWVkLmh0bWwiPgorICAgIDwvaWZyYW1l
PgorPC9ib2R5PgorCis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3NhbmRib3hlZC1pZnJhbWUtbW9kaWZ5LXNlbGYtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc2FuZGJveGVkLWlmcmFtZS1tb2Rp
Znktc2VsZi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtbW9kaWZ5LXNlbGYtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogVW5z
YWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nlc3MgZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtbW9kaWZ5LXNlbGYuaHRtbCBm
cm9tIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJj
ZXMvc2FuZGJveGVkLWlmcmFtZS1tb2RpZnktc2VsZi5odG1sLiBEb21haW5zLCBwcm90b2NvbHMg
YW5kIHBvcnRzIG11c3QgbWF0Y2guCisKK1RoaXMgaXMgYSAic2FuaXR5IiB0ZXN0IGNhc2UgdG8g
dmVyaWZ5IHRoYXQgYSBzYW5kYm94ZWQgZnJhbWUgY2Fubm90IGJyZWFrIG91dCBvZiBpdHMgc2Fu
ZGJveCBieSBtb2RpZnlpbmcgaXRzIG93biBzYW5kYm94IGF0dHJpYnV0ZS4gVHdvIGF0dGVtcHRz
IGFyZSBtYWRlOgorCitGaXJzdCwgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIG1vZGlmeSB0aGUgc2Fu
ZGJveCBhdHRyaWJ1dGUgb2YgdGhlICJzZWxmIiBvYmplY3QsIHJlZmVycmluZyB0byB0aGUgZnJh
bWUncyB3aW5kb3cuIFRoaXMgc2hvdWxkIG5vdCBoYXZlIGFueSBlZmZlY3QgKHRoZSBhdHRyaWJ1
dGUgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBpZnJhbWUgRE9NIG5vZGUsIG5vdCB0aGUgd2luZG93
KS4gTm8gd2FybmluZyBpcyBleHBlY3RlZC4KK1NlY29uZCwgYW4gYXR0ZW1wdCBpcyBtYWRlIHRv
IG1vZGlmeSB0aGUgaWZyYW1lIERPTSBvYmplY3QncyBzYW5kYm94IGF0dHJpYnV0ZS4gQSB3YXJu
aW5nIG1lc3NhZ2UgKGFib3V0IGNyb3NzLXNpdGUgc2NyaXB0aW5nKSBpcyBleHBlY3RlZCwgYW5k
IHRoZSBzYW5kYm94IGF0dHJpYnV0ZSBzaG91bGQgcmVtYWluIGludGFjdC4KK1RoaXMgdGVzdCB3
aWxsIHByaW50ICJQQVNTIiBvbiBzdWNjZXNzLgorCitQQVNTCisKKwpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLW1vZGlmeS1zZWxmLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQt
aWZyYW1lLW1vZGlmeS1zZWxmLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtbW9kaWZ5LXNlbGYuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw0MiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisKK2lmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgd2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MID0gKGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJmIikuc2FuZGJveCAhPSAiYWxsb3ctc2NyaXB0cyIpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICJGQUlMOiBzYW5kYm94IGF0
dHJpYnV0ZSBtb2RpZmllZCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDogIlBBU1MiOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+Cisg
ICAgPHA+VGhpcyBpcyBhICZxdW90O3Nhbml0eSZxdW90OyB0ZXN0IGNhc2UgdG8gdmVyaWZ5IHRo
YXQgYSBzYW5kYm94ZWQgCisgICAgZnJhbWUgY2Fubm90IGJyZWFrIG91dCBvZiBpdHMgc2FuZGJv
eCBieSBtb2RpZnlpbmcgaXRzIG93biBzYW5kYm94CisgICAgYXR0cmlidXRlLiBUd28gYXR0ZW1w
dHMgYXJlIG1hZGU6PC9wPgorICAgIAorICAgIDxvbD4KKyAgICAgICAgPGxpPkZpcnN0LCBhbiBh
dHRlbXB0IGlzIG1hZGUgdG8gbW9kaWZ5IHRoZSBzYW5kYm94IGF0dHJpYnV0ZSBvZiB0aGUKKyAg
ICAgICAgJnF1b3Q7c2VsZiZxdW90OyBvYmplY3QsIHJlZmVycmluZyB0byB0aGUgZnJhbWUncyB3
aW5kb3cuIFRoaXMgc2hvdWxkCisgICAgICAgIG5vdCBoYXZlIGFueSBlZmZlY3QgKHRoZSBhdHRy
aWJ1dGUgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBpZnJhbWUgRE9NCisgICAgICAgIG5vZGUsIG5v
dCB0aGUgd2luZG93KS4gTm8gd2FybmluZyBpcyBleHBlY3RlZC48L2xpPgorICAgICAgICA8bGk+
U2Vjb25kLCBhbiBhdHRlbXB0IGlzIG1hZGUgdG8gbW9kaWZ5IHRoZSBpZnJhbWUgRE9NIG9iamVj
dCdzIHNhbmRib3gKKyAgICAgICAgYXR0cmlidXRlLiBBIHdhcm5pbmcgbWVzc2FnZSAoYWJvdXQg
Y3Jvc3Mtc2l0ZSBzY3JpcHRpbmcpIGlzIGV4cGVjdGVkLAorICAgICAgICBhbmQgdGhlIHNhbmRi
b3ggYXR0cmlidXRlIHNob3VsZCByZW1haW4gaW50YWN0LjwvbGk+CisgICAgPC9vbD4KKyAgICAK
KyAgICA8cD5UaGlzIHRlc3Qgd2lsbCBwcmludCAmcXVvdDtQQVNTJnF1b3Q7IG9uIHN1Y2Nlc3Mu
PC9wPgorCisgICAgPHAgaWQ9InJlc3VsdCI+RkFJTDwvcD4KKworICAgIDxpZnJhbWUgaWQ9ImYi
CisgICAgICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIgorICAgICAgICAgICAgc3JjPSJy
ZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1tb2RpZnktc2VsZi5odG1sIj4KKyAgICA8L2lmcmFt
ZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkveHNzLURFTklFRC1zYW5kYm94ZWQtaWZyYW1lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQtc2FuZGJveGVkLWlm
cmFtZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3hzcy1ERU5JRUQtc2FuZGJveGVkLWlmcmFtZS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsOCBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFVuc2FmZSBK
YXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9zZWN1cml0eS94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUuaHRtbCBmcm9tIGZy
YW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMveHNz
LURFTklFRC1zYW5kYm94ZWQtaWZyYW1lLWF0dGFja2VyLmh0bWwuIERvbWFpbnMsIHByb3RvY29s
cyBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KKworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFVuc2Fm
ZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9zZWN1cml0eS94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUuaHRtbCBmcm9t
IGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMv
eHNzLURFTklFRC1zYW5kYm94ZWQtaWZyYW1lLWF0dGFja2VyLmh0bWwuIERvbWFpbnMsIHByb3Rv
Y29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KKworVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgc2Fu
ZGJveGVkIGlmcmFtZSBwcmV2ZW50cyBjcm9zcy1kb21haW4gc2NyaXB0IGFjY2Vzcy4gSXQgd2ls
bCBwcmludCAiUEFTUyIgb24gc3VjY2Vzcy4KKworCitQQVNTOiBjcm9zcy1kb21haW4gc2NyaXB0
IGFjY2VzcyBkaXNhbGxvd2VkIGZyb20gc2FuZGJveGVkIGlmcmFtZQpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQt
c2FuZGJveGVkLWlmcmFtZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwyOSBAQAorPGh0bWw+Cis8c2NyaXB0PgorCitpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KwordmFyIGRvY1JlZiA9IHVuZGVmaW5lZDsKKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkK
K3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCA9Cisg
ICAgICAgIChkb2NSZWYgPyAiRkFJTDogY3Jvc3MtZG9tYWluIHNjcmlwdCBhY2Nlc3MgYWxsb3dl
ZCBmcm9tIHNhbmRib3hlZCBpZnJhbWUiCisgICAgICAgICAgICAgICAgOiAiUEFTUzogY3Jvc3Mt
ZG9tYWluIHNjcmlwdCBhY2Nlc3MgZGlzYWxsb3dlZCBmcm9tIHNhbmRib3hlZCBpZnJhbWUiKTsK
K30KKworPC9zY3JpcHQ+Cis8Ym9keT4KKworICAgIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0
IHNhbmRib3hlZCBpZnJhbWUgcHJldmVudHMgY3Jvc3MtZG9tYWluCisgICAgc2NyaXB0IGFjY2Vz
cy4gSXQgd2lsbCBwcmludCAmcXVvdDtQQVNTJnF1b3Q7IG9uIHN1Y2Nlc3MuPC9wPgorCisgICAg
PGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIgorICAgICAgICAgICAgc3JjPSJodHRwOi8v
MTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL3hzcy1ERU5JRUQtc2FuZGJveGVkLWlm
cmFtZS1hdHRhY2tlci5odG1sIj4KKyAgICA8L2lmcmFtZT4KKyAgICAKKyAgICA8ZGl2IGlkPSJj
b25zb2xlIj5GQUlMOiBTY3JpcHQgZGlkbid0IHJ1bjwvZGl2PgorICAgIAorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvc2Fu
ZGJveGVkLWlmcmFtZS1kb2N1bWVudC1jb29raWUtcmVhZC1kZW5pZWQuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9zYW5kYm94ZWQt
aWZyYW1lLWRvY3VtZW50LWNvb2tpZS1yZWFkLWRlbmllZC5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFt
ZS1kb2N1bWVudC1jb29raWUtcmVhZC1kZW5pZWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwyNSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQor
eworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0UmVzdWx0IikuaW5uZXJIVE1MID0g
KGZ1bmN0aW9uKCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgdmFyIGNvb2tpZSA9IGRv
Y3VtZW50LmNvb2tpZTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoZXJyKSB7CisgICAgICAg
ICAgICBpZiAoZXJyLm5hbWUuaW5kZXhPZigiU0VDVVJJVFlfRVJSIikgIT0gLTEpCisgICAgICAg
ICAgICAgICAgcmV0dXJuICJQQVNTIjsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiAiRkFJ
TDogU0VDVVJJVFlfRVJSIG5vdCByYWlzZWQiOworICAgIH0pKCk7Cit9CisKKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCk7Ij4KKyAgICA8cCBpZD0idGVzdFJlc3Vs
dCI+RkFJTDogU2NyaXB0IGRpZG4ndCBydW48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1l
LW1vZGlmeS1zZWxmLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1tb2RpZnktc2VsZi5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvc2Fu
ZGJveGVkLWlmcmFtZS1tb2RpZnktc2VsZi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0
IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKworLy8gdGhpcyBhc3NpZ25tZW50IHNob3Vs
ZCBoYXZlIG5vIGVmZmVjdCBvbiBzYW5kYm94IHN0YXR1cworc2VsZi5zYW5kYm94ID0gJ2FsbG93
LXNjcmlwdHMgYWxsb3ctc2FtZS1vcmlnaW4gaGFja2VkLXZpYS13aW5kb3ctb2JqZWN0JzsKKwor
Ly8gdGhpcyBzaG91bGQgYmUgcHJldmVudGVkIGJ5IHRoZSBzYW5kYm94ICdvcmlnaW4nIGZsYWcK
K2lmICh0b3AuZG9jdW1lbnQpCisgICAgdG9wLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmJyku
c2FuZGJveCA9ICdhbGxvdy1zY3JpcHRzIGFsbG93LXNhbWUtb3JpZ2luIGhhY2tlZC12aWEtZG9t
JzsKKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUtYXR0
YWNrZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3Jlc291cmNlcy94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUtYXR0YWNrZXIuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL3hz
cy1ERU5JRUQtc2FuZGJveGVkLWlmcmFtZS1hdHRhY2tlci5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDcgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorICAgIHRvcC5kb2NSZWYgPSBw
YXJlbnQuZG9jdW1lbnQ7ICAvLyBhY2Nlc3MgcGFyZW50J3MgRE9NIHRyZWU6IHNob3VsZCBub3Qg
YmUgYWxsb3dlZAorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJh
bWUtYWxsb3ctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1hbGxvdy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtYWxsb3ctZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkgQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0
IHNhbmRib3hlZCBpZnJhbWUgaGFzIFhtbEh0dHBSZXF1ZXN0IGFjY2VzcyB0byB0aGUgc2VydmVy
IHRoYXQgYWNjZXB0cyBhbGwgZG9tYWlucy4gSXQgd2lsbCBwcmludCAiUEFTUyIgb24gc3VjY2Vz
cy4KKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+
LS0+JworLS0tLS0tLS0KK1BBU1M6IFNhbmRib3hlZCBpZnJhbWUgWEhSIGFjY2VzcyBhbGxvd2Vk
LgorCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1j
b250cm9sLXNhbmRib3hlZC1pZnJhbWUtYWxsb3cuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1p
ZnJhbWUtYWxsb3cuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1hbGxvdy5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4IEBACis8aHRtbD4KKzxzY3JpcHQ+CisKK2lmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENoaWxkRnJhbWVzQXNU
ZXh0KCk7Cit9CisKKzwvc2NyaXB0PgorPGJvZHk+CisgICAgPHA+VGhpcyB0ZXN0IHZlcmlmaWVz
IHRoYXQgc2FuZGJveGVkIGlmcmFtZSBoYXMgWG1sSHR0cFJlcXVlc3QgYWNjZXNzCisgICAgdG8g
dGhlIHNlcnZlciB0aGF0IGFjY2VwdHMgYWxsIGRvbWFpbnMuIEl0IHdpbGwgcHJpbnQgJnF1b3Q7
UEFTUyZxdW90OyBvbiBzdWNjZXNzLjwvcD4KKyAgICAKKyAgICA8aWZyYW1lIHNhbmRib3g9ImFs
bG93LXNjcmlwdHMiIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3htbGh0dHByZXF1ZXN0L3Jl
c291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93LWlmcmFtZS5odG1s
IiBzdHlsZT0id2lkdGg6IDUwMHB4OyI+CisgICAgPC9pZnJhbWU+IAorICAgIAorPC9ib2R5PiAK
KzwvaHRtbD4gCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Fj
Y2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250
cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2Fu
ZGJveGVkLWlmcmFtZS1kZW5pZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDggQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHNhbmRib3hlZCBpZnJhbWUgZG9lcyBub3Qg
aGF2ZSBYbWxIdHRwUmVxdWVzdCBhY2Nlc3MgdG8gaXRzIHNlcnZlci4gSXQgd2lsbCBwcmludCAi
UEFTUyIgb24gc3VjY2Vzcy4KKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGgg
Ly88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK1BBU1M6IEV4Y2VwdGlvbiB0aHJvd24uIFNh
bmRib3hlZCBpZnJhbWUgWEhSIGFjY2VzcyB3YXMgZGVuaWVkIGluICdzZW5kJy4gW05FVFdPUktf
RVJSOiBYTUxIdHRwUmVxdWVzdCBFeGNlcHRpb24gMTAxXS4KSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1k
ZW5pZWQtd2l0aG91dC13aWxkY2FyZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQt
aWZyYW1lLWRlbmllZC13aXRob3V0LXdpbGRjYXJkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wt
c2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtd2l0aG91dC13aWxkY2FyZC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHNhbmRi
b3hlZCBpZnJhbWUgZG9lcyBub3QgaGF2ZSBYbWxIdHRwUmVxdWVzdCBhY2Nlc3MgdG8gaXRzIHNl
cnZlciB3aXRoICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4iIHNldCB0byBpdHMgb3duIG9y
aWdpbiAoMTI3LjAuMC4xKS4KKworVGhpcyB0ZXN0IHdpbGwgcHJpbnQgIlBBU1MiIG9uIHN1Y2Nl
c3MuCisKKworCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0t
Pi0tPicKKy0tLS0tLS0tCitQQVNTOiBFeGNlcHRpb24gdGhyb3duLiBTYW5kYm94ZWQgaWZyYW1l
IFhIUiBhY2Nlc3Mgd2FzIGRlbmllZCBpbiAnc2VuZCcuIFtORVRXT1JLX0VSUjogWE1MSHR0cFJl
cXVlc3QgRXhjZXB0aW9uIDEwMV0uCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQt
d2lsZGNhcmQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQt
d2lsZGNhcmQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtd2l0aG91
dC13aWxkY2FyZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIyIEBACis8aHRtbD4KKzxz
Y3JpcHQ+CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cENoaWxkRnJhbWVzQXNUZXh0KCk7Cit9CisKKzwvc2NyaXB0PgorPGJvZHk+CisKKyAgICA8cD5U
aGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBzYW5kYm94ZWQgaWZyYW1lIGRvZXMgbm90IGhhdmUgWG1s
SHR0cFJlcXVlc3QgYWNjZXNzIHRvCisgICAgaXRzIHNlcnZlciB3aXRoICJBY2Nlc3MtQ29udHJv
bC1BbGxvdy1PcmlnaW4iIHNldCB0byBpdHMgb3duIG9yaWdpbiAoMTI3LjAuMC4xKS48L3A+Cisg
ICAgCisgICAgPHA+VGhpcyB0ZXN0IHdpbGwgcHJpbnQgJnF1b3Q7UEFTUyZxdW90OyBvbiBzdWNj
ZXNzLjwvcD4KKworICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyIKKyAgICAgICAg
ICAgIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9h
Y2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC13aXRob3V0LXdpbGRjYXJkLWlm
cmFtZS5odG1sIiBzdHlsZT0id2lkdGg6IDUwMHB4OyI+CisgICAgPC9pZnJhbWU+CisgICAgCis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJv
bC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZy
YW1lLWRlbmllZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5IEBACis8aHRtbD4gCis8
c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworfQorCis8L3NjcmlwdD4KKworPGJvZHk+IAorICAgIDxw
PlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHNhbmRib3hlZCBpZnJhbWUgZG9lcyBub3QgaGF2ZSBY
bWxIdHRwUmVxdWVzdCBhY2Nlc3MKKyAgICB0byBpdHMgc2VydmVyLiBJdCB3aWxsIHByaW50ICZx
dW90O1BBU1MmcXVvdDsgb24gc3VjY2Vzcy48L3A+CisgICAgCisgICAgPGlmcmFtZSBzYW5kYm94
PSJhbGxvdy1zY3JpcHRzIgorICAgICAgICAgICAgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAv
eG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUt
ZGVuaWVkLWlmcmFtZS5odG1sIiBzdHlsZT0id2lkdGg6IDUwMHB4OyI+CisgICAgPC9pZnJhbWU+
IAorPC9ib2R5PiAKKzwvaHRtbD4gCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93
LWlmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtYWxsb3ct
aWZyYW1lLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93
LWlmcmFtZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI1IEBACis8aHRtbD4gCis8Ym9k
eT4gCis8cHJlIGlkPSdjb25zb2xlJz48L3ByZT4gCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCI+IAorCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9
IChmdW5jdGlvbigpIHsgCisgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdDsgCisgCisg
ICAgdHJ5IHsgCisgICAgICAgIHhoci5vcGVuKCJHRVQiLCAiaHR0cDovLzEyNy4wLjAuMTo4MDAw
L3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1l
LWFsbG93LmNnaSIsIGZhbHNlKTsgCisgICAgfSBjYXRjaChlKSB7IAorICAgICAgICByZXR1cm4g
IkZBSUw6IEV4Y2VwdGlvbiB0aHJvd24uIFNhbmRib3hlZCBpZnJhbWUgWEhSIGFjY2VzcyBpcyBu
b3QgYWxsb3dlZCBpbiAnb3BlbicuIFsiICsgZS5tZXNzYWdlICsgIl0uIjsgCisgICAgfSAKKyAK
KyAgICB0cnkgeyAKKyAgICAgICAgeGhyLnNlbmQoKTsgCisgICAgfSBjYXRjaChlKSB7IAorICAg
ICAgICByZXR1cm4gIkZBSUw6IEV4Y2VwdGlvbiB0aHJvd24uIFNhbmRib3hlZCBpZnJhbWUgWEhS
IGFjY2VzcyBpcyBub3QgYWxsb3dlZCBpbiAnc2VuZCcuIFsiICsgZS5tZXNzYWdlICsgIl0uIjsg
CisgICAgfSAKKyAKKyAgICByZXR1cm4geGhyLnJlc3BvbnNlVGV4dDsgCit9KSgpOyAKKzwvc2Ny
aXB0PiAKKzwvYm9keT4gCis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFs
bG93LmNnaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93LmNnaQko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVz
b3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtYWxsb3cuY2dpCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDggQEAKKyMhL3Vzci9iaW4vcGVybCAtd1QKK3VzZSBzdHJpY3Q7CisK
K3ByaW50ICJDb250ZW50LVR5cGU6IHRleHQvcGxhaW5cbiI7CitwcmludCAiQWNjZXNzLUNvbnRy
b2wtQWxsb3ctQ3JlZGVudGlhbHM6IHRydWVcbiI7CitwcmludCAiQWNjZXNzLUNvbnRyb2wtQWxs
b3ctT3JpZ2luOiAqXG5cbiI7CisKK3ByaW50ICJQQVNTOiBTYW5kYm94ZWQgaWZyYW1lIFhIUiBh
Y2Nlc3MgYWxsb3dlZC5cbiI7CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQt
aWZyYW1lLWFsbG93LmNnaQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQogICArICoK
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9h
Y2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC1pZnJhbWUuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9h
Y2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC1pZnJhbWUuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2Vz
L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWlmcmFtZS5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDI3IEBACis8aHRtbD4gCis8Ym9keT4gCis8cHJlIGlkPSdjb25z
b2xlJz48L3ByZT4gCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+IAorCitkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IChmdW5jdGlvbigpIHsKKyAg
ICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0OyAKKyAKKyAKKyAgICB0cnkgeyAKKyAgICAg
ICAgeGhyLm9wZW4oIkdFVCIsICJodHRwOi8vMTI3LjAuMC4xOjgwMDAveG1saHR0cHJlcXVlc3Qv
cmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLmNnaSIsIGZh
bHNlKTsgCisgICAgfSBjYXRjaChlKSB7IAorICAgICAgICByZXR1cm4gIkZBSUw6IEV4Y2VwdGlv
biB0aHJvd24uIFNhbmRib3hlZCBpZnJhbWUgWEhSIGFjY2VzcyBpcyBub3QgYWxsb3dlZCBpbiAn
b3BlbicuIFsiICsgZS5tZXNzYWdlICsgIl0uIjsgCisgICAgfSAKKyAKKyAgICB0cnkgeyAKKyAg
ICAgICAgeGhyLnNlbmQoKTsgCisgICAgfSBjYXRjaChlKSB7IAorICAgICAgICByZXR1cm4gIlBB
U1M6IEV4Y2VwdGlvbiB0aHJvd24uIFNhbmRib3hlZCBpZnJhbWUgWEhSIGFjY2VzcyB3YXMgZGVu
aWVkIGluICdzZW5kJy4gWyIgKyBlLm1lc3NhZ2UgKyAiXS4iOyAKKyAgICB9CisgCisgICAgcmV0
dXJuIHhoci5yZXNwb25zZVRleHQ7IAorfSkoKTsKKyAgCis8L3NjcmlwdD4gCis8L2JvZHk+IAor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNv
dXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtd2l0aG91dC13aWxk
Y2FyZC1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRl
bmllZC13aXRob3V0LXdpbGRjYXJkLWlmcmFtZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wt
c2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtd2l0aG91dC13aWxkY2FyZC1pZnJhbWUuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwyNiBAQAorPGh0bWw+Cis8Ym9keT4KKzxwcmUgaWQ9J2NvbnNv
bGUnPjwvcHJlPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCitkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IChmdW5jdGlvbigpIHsKKyAgICB2
YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0OworCisgICAgdHJ5IHsKKyAgICAgICAgeGhyLm9w
ZW4oIkdFVCIsICJodHRwOi8vMTI3LjAuMC4xOjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2Vz
L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQu
Y2dpIiwgZmFsc2UpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICByZXR1cm4gIkZBSUw6IEV4
Y2VwdGlvbiB0aHJvd24uIFNhbmRib3hlZCBpZnJhbWUgWEhSIGFjY2VzcyBpcyBub3QgYWxsb3dl
ZCBpbiAnb3BlbicuIFsiICsgZS5tZXNzYWdlICsgIl0uIjsKKyAgICB9CisKKyAgICB0cnkgewor
ICAgICAgICB4aHIuc2VuZCgpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICByZXR1cm4gIlBB
U1M6IEV4Y2VwdGlvbiB0aHJvd24uIFNhbmRib3hlZCBpZnJhbWUgWEhSIGFjY2VzcyB3YXMgZGVu
aWVkIGluICdzZW5kJy4gWyIgKyBlLm1lc3NhZ2UgKyAiXS4iOworICAgIH0KKworICAgIHJldHVy
biB4aHIucmVzcG9uc2VUZXh0OworfSkoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9h
Y2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC13aXRob3V0LXdpbGRjYXJkLmNn
aQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jl
c291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC13aXRob3V0LXdp
bGRjYXJkLmNnaQkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVk
LXdpdGhvdXQtd2lsZGNhcmQuY2dpCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAKKyMhL3Vz
ci9iaW4vcGVybCAtd1QKK3VzZSBzdHJpY3Q7CisKK3ByaW50ICJDb250ZW50LVR5cGU6IHRleHQv
cGxhaW5cbiI7CitwcmludCAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctQ3JlZGVudGlhbHM6IHRydWVc
biI7CitwcmludCAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luOiBodHRwOi8vMTI3LjAuMC4x
OjgwMDBcblxuIjsKKworcHJpbnQgIkZBSUw6IFNhbmRib3hlZCBpZnJhbWUgWEhSIGFjY2VzcyBh
bGxvd2VkLlxuIjsKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUt
ZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQuY2dpCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRh
YmxlCiAgICsgKgoKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
cmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLmNnaQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNl
cy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC5jZ2kJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nl
c3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC5jZ2kJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNiBAQAorIyEvdXNyL2Jpbi9wZXJsIC13VAordXNlIHN0cmljdDsKKworcHJpbnQgIkNv
bnRlbnQtVHlwZTogdGV4dC9wbGFpblxuXG4iOworCitwcmludCAiRkFJTDogU2FuZGJveGVkIGlm
cmFtZSBYSFIgYWNjZXNzIGFsbG93ZWQuXG4iOwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wt
c2FuZGJveGVkLWlmcmFtZS1kZW5pZWQuY2dpCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRh
YmxlCiAgICsgKgoK
</data>
<flag name="review"
          id="25229"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43585</attachid>
            <date>2009-11-20 09:08:51 -0800</date>
            <delta_ts>2009-12-01 05:09:27 -0800</delta_ts>
            <desc>Revised patch in response to comment #51.</desc>
            <filename>sandbox-r51076.patch</filename>
            <type>text/plain</type>
            <size>100377</size>
            <attacher name="Patrik Persson">patrik.j.persson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTIzNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODggQEAKKzIwMDktMTEtMjAgIFBhdHJpayBQZXJzc29uICA8cGF0cmlrLmoucGVy
c3NvbkBlcmljc3Nvbi5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wbGVtZW50IEhUTUw1IHNhbmRib3ggYXR0cmlidXRlIGZvciBpZnJhbWVz
LgorICAgICAgICBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS90ZXh0LWxldmVsLXNlbWFudGlj
cy5odG1sI2F0dHItaWZyYW1lLXNhbmRib3gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMjg4CisKKyAgICAgICAgVGVzdHM6IGZhc3QvZnJhbWVzL3Nh
bmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmcuaHRtbAorICAgICAgICAgICAgICAgZmFz
dC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1mb3Jtcy5odG1sCisgICAgICAgICAgICAgICBmYXN0
L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tYWxsb3dlZC5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50Lmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlv
bi10YXJnZXRsaW5rLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1p
ZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZnJh
bWVzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zy
YW1lcy9zYW5kYm94ZWQtaWZyYW1lLXNjcmlwdGluZy5odG1sCisgICAgICAgICAgICAgICBmYXN0
L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXN0b3JhZ2UuaHRtbAorICAgICAgICAgICAgICAgaHR0
cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLWRvY3VtZW50LWNvb2tpZS5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtbW9kaWZ5
LXNlbGYuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVE
LXNhbmRib3hlZC1pZnJhbWUuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy94bWxodHRw
cmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93Lmh0bWwKKyAgICAg
ICAgICAgICAgIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJv
eGVkLWlmcmFtZS1kZW5pZWQtd2l0aG91dC13aWxkY2FyZC5odG1sCisgICAgICAgICAgICAgICBo
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUt
ZGVuaWVkLmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNw
cDogc2FuZGJveGluZyBuYXZpZ2F0aW9uCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVXaW5kb3cp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOiBzYW5kYm94aW5n
IHNjcmlwdHMKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmlzRW5hYmxlZCk6
CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojpwcm9jZXNzSHR0cEVxdWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpjb29raWUp
OiByYWlzZSBleGNlcHRpb24gd2hlbiBhY2Nlc3NlZCBmcm9tIHNhbmRib3gKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpzZXRDb29raWUpOiByYWlzZSBleGNlcHRpb24gd2hlbiBhY2Nlc3Nl
ZCBmcm9tIHNhbmRib3gKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojppbml0U2VjdXJpdHlD
b250ZXh0KTogdXBkYWUgc2FuZGJveCBzdGF0dXMKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojp1cGRhdGVTYW5kYm94RmxhZ3MpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5j
cHA6IHNhbmRib3hpbmcgYXBwbGV0cworICAgICAgICAoV2ViQ29yZTo6SFRNTEFwcGxldEVsZW1l
bnQ6OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50
OjpyZW5kZXJXaWRnZXRGb3JKU0JpbmRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBcHBs
ZXRFbGVtZW50OjpjYW5FbWJlZEphdmEpOgorICAgICAgICAqIGh0bWwvSFRNTEFwcGxldEVsZW1l
bnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbjoKKyAgICAgICAgKiBo
dG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHA6IG1hbmFnZW1lbnQgb2Ygc2FuZGJveCBmbGFn
cyBhcyBzdGF0ZWQgaW4gYXR0cmlidXRlCisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVPd25l
ckVsZW1lbnQ6OkhUTUxGcmFtZU93bmVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RnJhbWVPd25lckVsZW1lbnQ6OnNldFNhbmRib3hGbGFncyk6CisgICAgICAgICogaHRtbC9IVE1M
RnJhbWVPd25lckVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxl
bWVudDo6c2FuZGJveEZsYWdzKToKKyAgICAgICAgKiBodG1sL0hUTUxJRnJhbWVFbGVtZW50LmNw
cDogc2FuZGJveCBhdHRyaWJ1dGUgcGFyc2luZworICAgICAgICAoV2ViQ29yZTo6cGFyc2VTYW5k
Ym94QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJRnJhbWVFbGVtZW50OjpwYXJz
ZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGw6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0Q29va2llcyk6CisgICAgICAgICogbG9h
ZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXNz
ZXNBY2Nlc3NDb250cm9sQ2hlY2spOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6RnJhbWVMb2FkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OnN1Ym1pdEZvcm0pOiBzYW5kYm94aW5nIGZvcm1zCisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlcjo6cmVxdWVzdE9iamVjdCk6IHNhbmRib3hpbmcgcGx1Z2lucworICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OnNob3VsZEFsbG93TmF2aWdhdGlvbik6IHNhbmRib3hpbmcgbmF2
aWdhdGlvbgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnVwZGF0ZVNhbmRib3hGbGFn
cyk6IHByb3BhZ2F0aW9uIG9mIHNhbmRib3ggZmxhZ3MKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVM
b2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpvd25lckVsZW1lbnRTYW5k
Ym94RmxhZ3NDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjppc1NhbmRi
b3hlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c2FuZGJveEZsYWdzKToKKyAg
ICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6KToK
KyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6IGRpc2FibGUgc3RvcmFnZSBhbmQgZGF0YWJh
c2VzIGluIHNhbmRib3hlZCBmcmFtZXMKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6c2Vz
c2lvblN0b3JhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpsb2NhbFN0b3JhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpvcGVuRGF0YWJhc2UpOgorICAgICAgICAq
IHBhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwOiBhZGRlZCBzYW5kYm94aW5nIHN0YXR1cworICAgICAg
ICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW46OmNhblJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW46OnRvU3RyaW5nKToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luLmg6CisgICAgICAg
IChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6c2V0U2FuZGJveEZsYWdzKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luOjppc1NhbmRib3hlZCk6CisgICAgICAgIChXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNzRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW46OmNhbkFjY2Vzc1N0b3JhZ2UpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpk
aWRSZWNlaXZlRGF0YSk6CisKIDIwMDktMTEtMTggIEdpcmlzaCBSYW1ha3Jpc2huYW4gIDxnaXJp
c2hAZm9yd2FyZGJpYXMuaW4+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4u
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkocmV2aXNp
b24gNTEwNzYpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzQ0LDYgKzc0NCwxMCBAQCBzdGF0aWMgRnJhbWUqIGNyZWF0ZVdp
bmRvdyhFeGVjU3RhdGUqIGV4CiAgICAgQVNTRVJUKGxleGljYWxGcmFtZSk7CiAgICAgQVNTRVJU
KGR5bmFtaWNGcmFtZSk7CiAKKyAgICAvLyBTYW5kYm94ZWQgaWZyYW1lcyBjYW5ub3Qgb3BlbiBu
ZXcgYXV4aWxpYXJ5IGJyb3dzaW5nIGNvbnRleHRzLgorICAgIGlmIChsZXhpY2FsRnJhbWUgJiYg
bGV4aWNhbEZyYW1lLT5sb2FkZXIoKS0+aXNTYW5kYm94ZWQoU2FuZGJveE5hdmlnYXRpb24pKQor
ICAgICAgICByZXR1cm4gMDsKKwogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0OwogCiAgICAg
Ly8gRm9yIHdoYXRldmVyIHJlYXNvbiwgRmlyZWZveCB1c2VzIHRoZSBkeW5hbWljR2xvYmFsT2Jq
ZWN0IHRvIGRldGVybWluZQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xs
ZXIuY3BwCShyZXZpc2lvbiA1MTA3NikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29u
dHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5Miw3ICsyOTIsNyBAQCBib29sIFNjcmlw
dENvbnRyb2xsZXI6OmFueVBhZ2VJc1Byb2Nlc3NpCiBib29sIFNjcmlwdENvbnRyb2xsZXI6Omlz
RW5hYmxlZCgpCiB7CiAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gbV9mcmFtZS0+c2V0dGluZ3Mo
KTsKLSAgICByZXR1cm4gbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5hbGxvd0phdmFTY3Jp
cHQoc2V0dGluZ3MgJiYgc2V0dGluZ3MtPmlzSmF2YVNjcmlwdEVuYWJsZWQoKSk7CisgICAgcmV0
dXJuIG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+YWxsb3dKYXZhU2NyaXB0KHNldHRpbmdz
ICYmIHNldHRpbmdzLT5pc0phdmFTY3JpcHRFbmFibGVkKCkgJiYgIW1fZnJhbWUtPmxvYWRlcigp
LT5pc1NhbmRib3hlZChTYW5kYm94U2NyaXB0cykpOwogfQogCiB2b2lkIFNjcmlwdENvbnRyb2xs
ZXI6OmF0dGFjaERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqIGRlYnVnZ2VyKQpJbmRleDogV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAkocmV2aXNpb24gNTEwNzYpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIxNzMsOCArMjE3MywxMCBAQCB2b2lkIERvY3VtZW50Ojpwcm9jZXNzSHR0cEVx
dWl2KGNvbnN0IFN0CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KGVxdWl2LCAic2V0LWNvb2tpZSIpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBtYWtlIHNldENvb2tp
ZSB3b3JrIG9uIFhNTCBkb2N1bWVudHMgdG9vOyBlLmcuIGluIGNhc2Ugb2YgPGh0bWw6bWV0YSAu
Li4uLj4KLSAgICAgICAgaWYgKGlzSFRNTERvY3VtZW50KCkpCi0gICAgICAgICAgICBzdGF0aWNf
Y2FzdDxIVE1MRG9jdW1lbnQqPih0aGlzKS0+c2V0Q29va2llKGNvbnRlbnQpOworICAgICAgICBp
ZiAoaXNIVE1MRG9jdW1lbnQoKSkgeworICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsgLy8g
RXhjZXB0aW9uIChmb3Igc2FuZGJveGVkIGRvY3VtZW50cykgaWdub3JlZC4KKyAgICAgICAgICAg
IHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KHRoaXMpLT5zZXRDb29raWUoY29udGVudCwgZWMp
OworICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShlcXVpdiwgImNv
bnRlbnQtbGFuZ3VhZ2UiKSkKICAgICAgICAgc2V0Q29udGVudExhbmd1YWdlKGNvbnRlbnQpOwog
ICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGVxdWl2LCAieC1kbnMtcHJlZmV0Y2gtY29u
dHJvbCIpKQpAQCAtMjk5MiwxMSArMjk5NCwyMCBAQCBFbGVtZW50KiBEb2N1bWVudDo6b3duZXJF
bGVtZW50KCkgY29uc3QKICAgICByZXR1cm4gZnJhbWUoKS0+b3duZXJFbGVtZW50KCk7CiB9CiAK
LVN0cmluZyBEb2N1bWVudDo6Y29va2llKCkgY29uc3QKK1N0cmluZyBEb2N1bWVudDo6Y29va2ll
KEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewogICAgIGlmIChwYWdlKCkgJiYgIXBhZ2UoKS0+
Y29va2llRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKKyAgICAvLyBGSVhN
RTogVGhlIEhUTUw1IERPTSBzcGVjIHN0YXRlcyB0aGF0IHRoaXMgYXR0cmlidXRlIGNhbiByYWlz
ZSBhbgorICAgIC8vIElOVkFMSURfU1RBVEVfRVJSIGV4Y2VwdGlvbiBvbiBnZXR0aW5nIGlmIHRo
ZSBEb2N1bWVudCBoYXMgbm8KKyAgICAvLyBicm93c2luZyBjb250ZXh0LgorCisgICAgaWYgKHNl
Y3VyaXR5T3JpZ2luKCktPmlzU2FuZGJveGVkKFNhbmRib3hPcmlnaW4pKSB7CisgICAgICAgIGVj
ID0gU0VDVVJJVFlfRVJSOworICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgfQorCiAgICAg
S1VSTCBjb29raWVVUkwgPSB0aGlzLT5jb29raWVVUkwoKTsKICAgICBpZiAoY29va2llVVJMLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAtMzAwNCwxMSArMzAxNSwyMCBA
QCBTdHJpbmcgRG9jdW1lbnQ6OmNvb2tpZSgpIGNvbnN0CiAgICAgcmV0dXJuIGNvb2tpZXModGhp
cywgY29va2llVVJMKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6c2V0Q29va2llKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCit2b2lkIERvY3VtZW50OjpzZXRDb29raWUoY29uc3QgU3RyaW5nJiB2YWx1ZSwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKHBhZ2UoKSAmJiAhcGFnZSgpLT5jb29raWVF
bmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIEZJWE1FOiBUaGUgSFRNTDUgRE9N
IHNwZWMgc3RhdGVzIHRoYXQgdGhpcyBhdHRyaWJ1dGUgY2FuIHJhaXNlIGFuCisgICAgLy8gSU5W
QUxJRF9TVEFURV9FUlIgZXhjZXB0aW9uIG9uIHNldHRpbmcgaWYgdGhlIERvY3VtZW50IGhhcyBu
bworICAgIC8vIGJyb3dzaW5nIGNvbnRleHQuCisKKyAgICBpZiAoc2VjdXJpdHlPcmlnaW4oKS0+
aXNTYW5kYm94ZWQoU2FuZGJveE9yaWdpbikpIHsKKyAgICAgICAgZWMgPSBTRUNVUklUWV9FUlI7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBLVVJMIGNvb2tpZVVSTCA9IHRoaXMtPmNv
b2tpZVVSTCgpOwogICAgIGlmIChjb29raWVVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
CkBAIC00MjU3LDYgKzQyNzcsOCBAQCB2b2lkIERvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0
KCkKICAgICBtX2Nvb2tpZVVSTCA9IHVybDsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpz
ZXRTZWN1cml0eU9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCkpOwogCisgICAgdXBk
YXRlU2FuZGJveEZsYWdzKCk7CisgCiAgICAgaWYgKFNlY3VyaXR5T3JpZ2luOjphbGxvd1N1YnN0
aXR1dGVEYXRhQWNjZXNzVG9Mb2NhbCgpKSB7CiAgICAgICAgIC8vIElmIHRoaXMgZG9jdW1lbnQg
d2FzIGxvYWRlZCB3aXRoIHN1YnN0aXR1dGVEYXRhLCB0aGVuIHRoZSBkb2N1bWVudCBjYW4KICAg
ICAgICAgLy8gbG9hZCBsb2NhbCByZXNvdXJjZXMuICBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2NzU2CkBAIC00MzA3LDYgKzQzMjksMTIgQEAgdm9pZCBEb2N1
bWVudDo6c2V0U2VjdXJpdHlPcmlnaW4oU2VjdXJpdAogICAgIGluaXRETlNQcmVmZXRjaCgpOwog
fQogCit2b2lkIERvY3VtZW50Ojp1cGRhdGVTYW5kYm94RmxhZ3MoKQoreworICAgIGlmIChtX2Zy
YW1lICYmIHNlY3VyaXR5T3JpZ2luKCkpCisgICAgICAgIHNlY3VyaXR5T3JpZ2luKCktPnNldFNh
bmRib3hGbGFncyhtX2ZyYW1lLT5sb2FkZXIoKS0+c2FuZGJveEZsYWdzKCkpOworfQorCiB2b2lk
IERvY3VtZW50Ojp1cGRhdGVGb2N1c0FwcGVhcmFuY2VTb29uKCkKIHsKICAgICBpZiAoIW1fdXBk
YXRlRm9jdXNBcHBlYXJhbmNlVGltZXIuaXNBY3RpdmUoKSkKSW5kZXg6IFdlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24g
NTEwNzYpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NzUs
OCArNjc1LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nJiwgRWxl
bWVudCogdGl0bGVFbGVtZW50ID0gMCk7CiAgICAgdm9pZCByZW1vdmVUaXRsZShFbGVtZW50KiB0
aXRsZUVsZW1lbnQpOwogCi0gICAgU3RyaW5nIGNvb2tpZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0
Q29va2llKGNvbnN0IFN0cmluZyYpOworICAgIFN0cmluZyBjb29raWUoRXhjZXB0aW9uQ29kZSYp
IGNvbnN0OworICAgIHZvaWQgc2V0Q29va2llKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUm
KTsKIAogICAgIFN0cmluZyByZWZlcnJlcigpIGNvbnN0OwogCkBAIC04ODcsNiArODg3LDggQEAg
cHVibGljOgogICAgIC8vICAgICAgIHRoYXQgYWxyZWFkeSBjb250YWlucyBjb250ZW50LgogICAg
IHZvaWQgc2V0U2VjdXJpdHlPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKIAorICAgIHZvaWQgdXBk
YXRlU2FuZGJveEZsYWdzKCk7IC8vIFNldCBzYW5kYm94IGZsYWdzIGFzIGRldGVybWluZWQgYnkg
dGhlIGZyYW1lLgorCiAgICAgYm9vbCBwcm9jZXNzaW5nTG9hZEV2ZW50KCkgY29uc3QgeyByZXR1
cm4gbV9wcm9jZXNzaW5nTG9hZEV2ZW50OyB9CiAKICNpZiBFTkFCTEUoREFUQUJBU0UpCkluZGV4
OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9j
dW1lbnQuaWRsCShyZXZpc2lvbiA1MTA3NikKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMTYyLDEwICsxNjIsOSBAQCBtb2R1bGUgY29yZSB7CiAjZW5kaWYK
ICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBVUkw7CiAKLSAgICAgICAgLy8g
RklYTUU6IHRoZSBET00gc3BlYyBzdGF0ZXMgdGhhdCB0aGlzIGF0dHJpYnV0ZSBjYW4gCi0gICAg
ICAgIC8vIHJhaXNlIGFuIGV4Y2VwdGlvbiBvbiBzZXR0aW5nLgogICAgICAgICAgICAgICAgICBh
dHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgY29va2llCi0gICAg
ICAgICAgICAgICAgICAgICAvKnNldHRlciByYWlzZXMgKERPTUV4Y2VwdGlvbikqLzsKKyAgICAg
ICAgICAgICAgICAgICAgIHNldHRlciByYWlzZXMgKERPTUV4Y2VwdGlvbiksCisgICAgICAgICAg
ICAgICAgICAgICBnZXR0ZXIgcmFpc2VzIChET01FeGNlcHRpb24pOwogCiAgICAgICAgIC8vIEZJ
WE1FOiB0aGUgRE9NIHNwZWMgZG9lcyBOT1QgaGF2ZSB0aGlzIGF0dHJpYnV0ZQogICAgICAgICAv
LyByYWlzaW5nIGFuIGV4Y2VwdGlvbi4KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmNw
cAkocmV2aXNpb24gNTEwNzYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgi
CiAjaW5jbHVkZSAiTWFwcGVkQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiUmVuZGVyQXBwbGV0Lmgi
CisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMDgsOSArMTA5LDcgQEAgYm9vbCBIVE1MQXBwbGV0RWxl
bWVudDo6cmVuZGVyZXJJc05lZWRlZAogCiBSZW5kZXJPYmplY3QqIEhUTUxBcHBsZXRFbGVtZW50
OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKLSAg
ICBTZXR0aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudCgpLT5zZXR0aW5ncygpOwotCi0gICAgaWYg
KHNldHRpbmdzICYmIHNldHRpbmdzLT5pc0phdmFFbmFibGVkKCkpIHsKKyAgICBpZiAoY2FuRW1i
ZWRKYXZhKCkpIHsKICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gYXJnczsKIAogICAg
ICAgICBhcmdzLnNldCgiY29kZSIsIGdldEF0dHJpYnV0ZShjb2RlQXR0cikpOwpAQCAtMTQyLDgg
KzE0MSw3IEBAIFJlbmRlck9iamVjdCogSFRNTEFwcGxldEVsZW1lbnQ6OmNyZWF0ZVIKIAogUmVu
ZGVyV2lkZ2V0KiBIVE1MQXBwbGV0RWxlbWVudDo6cmVuZGVyV2lkZ2V0Rm9ySlNCaW5kaW5ncygp
IGNvbnN0CiB7Ci0gICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZG9jdW1lbnQoKS0+c2V0dGluZ3Mo
KTsKLSAgICBpZiAoIXNldHRpbmdzIHx8ICFzZXR0aW5ncy0+aXNKYXZhRW5hYmxlZCgpKQorICAg
IGlmICghY2FuRW1iZWRKYXZhKCkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgUmVuZGVyQXBw
bGV0KiBhcHBsZXQgPSB0b1JlbmRlckFwcGxldChyZW5kZXJlcigpKTsKQEAgLTE1Myw2ICsxNTEs
MTUgQEAgUmVuZGVyV2lkZ2V0KiBIVE1MQXBwbGV0RWxlbWVudDo6cmVuZGVyVwogICAgIHJldHVy
biBhcHBsZXQ7CiB9CiAKK2Jvb2wgSFRNTEFwcGxldEVsZW1lbnQ6OmNhbkVtYmVkSmF2YSgpIGNv
bnN0Cit7CisgICAgaWYgKGRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmlzU2FuZGJveGVk
KFNhbmRib3hQbHVnaW5zKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgU2V0dGluZ3Mq
IHNldHRpbmdzID0gZG9jdW1lbnQoKS0+c2V0dGluZ3MoKTsKKyAgICByZXR1cm4gc2V0dGluZ3Mg
JiYgc2V0dGluZ3MtPmlzSmF2YUVuYWJsZWQoKTsKK30KKwogdm9pZCBIVE1MQXBwbGV0RWxlbWVu
dDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkKIHsKICAgICAvLyBUaGUgcGFyc2VyIGp1c3QgcmVh
Y2hlZCA8L2FwcGxldD4sIHNvIGFsbCB0aGUgcGFyYW1zIGFyZSBhdmFpbGFibGUgbm93LgpJbmRl
eDogV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmgJKHJldmlzaW9uIDUxMDc2KQorKysgV2ViQ29yZS9o
dG1sL0hUTUxBcHBsZXRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIFJlbmRlcldpZGdldCogcmVuZGVyV2lkZ2V0Rm9ySlNCaW5k
aW5ncygpIGNvbnN0OwogCiAgICAgdm9pZCBzZXR1cEFwcGxldCgpIGNvbnN0OworICAgIGJvb2wg
Y2FuRW1iZWRKYXZhKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9j
dW1lbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgpOwpJbmRleDog
V2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCShyZXZpc2lvbiA1MTA3NikKKysrIFdlYkNvcmUv
aHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIyMCw2ICsyMjAs
NyBAQCByb2xlCiByb3dzCiByb3dzcGFuCiBydWxlcworc2FuZGJveAogc2NoZW1lCiBzY29wZQog
c2Nyb2xsYW1vdW50CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcAko
cmV2aXNpb24gNTEwNzYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBI
VE1MRnJhbWVPd25lckVsZW1lbnQ6OkhUTUxGcmFtZU93bmVyRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBIVE1MRWxlbWVudCh0
YWdOYW1lLCBkb2N1bWVudCwgQ3JlYXRlRWxlbWVudCkKICAgICAsIG1fY29udGVudEZyYW1lKDAp
CisgICAgLCBtX3NhbmRib3hGbGFncyhTYW5kYm94Tm9uZSkKIHsKIH0KIApAQCAtNjQsNiArNjUs
MTcgQEAgRE9NV2luZG93KiBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmNvbnRlbgogICAgIHJldHVy
biBtX2NvbnRlbnRGcmFtZSA/IG1fY29udGVudEZyYW1lLT5kb21XaW5kb3coKSA6IDA7CiB9CiAK
K3ZvaWQgSFRNTEZyYW1lT3duZXJFbGVtZW50OjpzZXRTYW5kYm94RmxhZ3MoU2FuZGJveEZsYWdz
IGZsYWdzKQoreworICAgIGlmIChtX3NhbmRib3hGbGFncyA9PSBmbGFncykKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9zYW5kYm94RmxhZ3MgPSBmbGFnczsKKyAgICAKKyAgICBpZiAoRnJhbWUq
IGZyYW1lID0gY29udGVudEZyYW1lKCkpCisgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+b3duZXJF
bGVtZW50U2FuZGJveEZsYWdzQ2hhbmdlZCgpOworfQorCiAjaWYgRU5BQkxFKFNWRykKIFNWR0Rv
Y3VtZW50KiBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmdldFNWR0RvY3VtZW50KEV4Y2VwdGlvbkNv
ZGUmIGVjKSBjb25zdAogewpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaAko
cmV2aXNpb24gNTEwNzYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIxLDYgKzIxLDcgQEAKICNpZm5kZWYgSFRNTEZyYW1lT3duZXJF
bGVtZW50X2gKICNkZWZpbmUgSFRNTEZyYW1lT3duZXJFbGVtZW50X2gKIAorI2luY2x1ZGUgIkZy
YW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC00Niw5ICs0NywxMyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFNjcm9s
bGJhck1vZGUgc2Nyb2xsaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIFNjcm9sbGJhckF1dG87IH0K
IAorICAgIFNhbmRib3hGbGFncyBzYW5kYm94RmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX3NhbmRi
b3hGbGFnczsgfQorICAgIAogcHJvdGVjdGVkOgogICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCopOwogCisgICAgdm9pZCBzZXRT
YW5kYm94RmxhZ3MoU2FuZGJveEZsYWdzKTsKKyAgICAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNs
YXNzIEZyYW1lOwogCkBAIC01OCw2ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IHdpbGxSZW1vdmUoKTsKIAogICAgIEZyYW1lKiBtX2NvbnRlbnRGcmFtZTsKKyAgICBTYW5kYm94
RmxhZ3MgbV9zYW5kYm94RmxhZ3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBXZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAJKHJldmlzaW9uIDUxMDc2KQorKysgV2ViQ29y
ZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNCw2ICs0LDcg
QEAKICAqICAgICAgICAgICAoQykgMjAwMCBTaW1vbiBIYXVzbWFubiAoaGF1c21hbm5Aa2RlLm9y
ZykKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykK
ICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiwgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgRXJpY3Nzb24gQUIuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTY2LDYgKzY3LDQwIEBAIGJv
b2wgSFRNTElGcmFtZUVsZW1lbnQ6Om1hcFRvRW50cnkoY29uc3QKICAgICByZXR1cm4gSFRNTEZy
YW1lRWxlbWVudEJhc2U6Om1hcFRvRW50cnkoYXR0ck5hbWUsIHJlc3VsdCk7CiB9CiAKK3N0YXRp
YyBTYW5kYm94RmxhZ3MgcGFyc2VTYW5kYm94QXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0
cmlidXRlKQoreworICAgIGlmIChhdHRyaWJ1dGUtPmlzTnVsbCgpKQorICAgICAgICByZXR1cm4g
U2FuZGJveE5vbmU7CisKKyAgICAvLyBQYXJzZSB0aGUgdW5vcmRlcmVkIHNldCBvZiB1bmlxdWUg
c3BhY2Utc2VwYXJhdGVkIHRva2Vucy4KKyAgICBTYW5kYm94RmxhZ3MgZmxhZ3MgPSBTYW5kYm94
QWxsOworICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gYXR0cmlidXRlLT52YWx1ZSgpLmNo
YXJhY3RlcnMoKTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBhdHRyaWJ1dGUtPnZhbHVlKCkubGVu
Z3RoKCk7CisgICAgdW5zaWduZWQgc3RhcnQgPSAwOworICAgIHdoaWxlICh0cnVlKSB7CisgICAg
ICAgIHdoaWxlIChzdGFydCA8IGxlbmd0aCAmJiBpc0FTQ0lJU3BhY2UoY2hhcmFjdGVyc1tzdGFy
dF0pKQorICAgICAgICAgICAgKytzdGFydDsKKyAgICAgICAgaWYgKHN0YXJ0ID49IGxlbmd0aCkK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB1bnNpZ25lZCBlbmQgPSBzdGFydCArIDE7Cisg
ICAgICAgIHdoaWxlIChlbmQgPCBsZW5ndGggJiYgIWlzQVNDSUlTcGFjZShjaGFyYWN0ZXJzW2Vu
ZF0pKQorICAgICAgICAgICAgKytlbmQ7CisKKyAgICAgICAgLy8gVHVybiBvZmYgdGhlIGNvcnJl
c3BvbmRpbmcgc2FuZGJveCBmbGFnIGlmIGl0J3Mgc2V0IGFzICJhbGxvd2VkIi4KKyAgICAgICAg
U3RyaW5nIHNhbmRib3hUb2tlbiA9IFN0cmluZyhjaGFyYWN0ZXJzICsgc3RhcnQsIGVuZCAtIHN0
YXJ0KTsKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHNhbmRib3hUb2tlbiwgImFsbG93
LXNhbWUtb3JpZ2luIikpCisgICAgICAgICAgICBmbGFncyAmPSB+U2FuZGJveE9yaWdpbjsKKyAg
ICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uoc2FuZGJveFRva2VuLCAiYWxsb3ctZm9y
bXMiKSkKKyAgICAgICAgICAgIGZsYWdzICY9IH5TYW5kYm94Rm9ybXM7CisgICAgICAgIGVsc2Ug
aWYgKGVxdWFsSWdub3JpbmdDYXNlKHNhbmRib3hUb2tlbiwgImFsbG93LXNjcmlwdHMiKSkKKyAg
ICAgICAgICAgIGZsYWdzICY9IH5TYW5kYm94U2NyaXB0czsKKworICAgICAgICBzdGFydCA9IGVu
ZCArIDE7CisgICAgfQorICAgIAorICAgIHJldHVybiBmbGFnczsKK30KKwogdm9pZCBIVE1MSUZy
YW1lRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQog
ewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gd2lkdGhBdHRyKQpAQCAtODgsNyArMTIzLDkgQEAg
dm9pZCBIVE1MSUZyYW1lRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaQogICAgICAgICBpZiAoIWF0
dHItPmlzTnVsbCgpICYmICFhdHRyLT52YWx1ZSgpLnRvSW50KCkpCiAgICAgICAgICAgICAvLyBB
ZGQgYSBydWxlIHRoYXQgbnVsbHMgb3V0IG91ciBib3JkZXIgd2lkdGguCiAgICAgICAgICAgICBh
ZGRDU1NMZW5ndGgoYXR0ciwgQ1NTUHJvcGVydHlCb3JkZXJXaWR0aCwgIjAiKTsKLSAgICB9IGVs
c2UKKyAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBzYW5kYm94QXR0cikKKyAgICAgICAg
c2V0U2FuZGJveEZsYWdzKHBhcnNlU2FuZGJveEF0dHJpYnV0ZShhdHRyKSk7CisgICAgZWxzZQog
ICAgICAgICBIVE1MRnJhbWVFbGVtZW50QmFzZTo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7
CiB9CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbAkocmV2aXNpb24gNTEwNzYp
CisrKyBXZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0zMyw2ICszMyw3IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRl
IFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZywgUmVmbGVjdD1tYXJnaW5oZWlnaHRdIERPTVN0cmlu
ZyAgICAgICBtYXJnaW5IZWlnaHQ7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVy
dE51bGxUb051bGxTdHJpbmcsIFJlZmxlY3Q9bWFyZ2lud2lkdGhdIERPTVN0cmluZyAgICAgICBt
YXJnaW5XaWR0aDsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVs
bFN0cmluZywgUmVmbGVjdF0gRE9NU3RyaW5nICAgICAgIG5hbWU7CisgICAgICAgICAgICAgICAg
IGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmcsIFJlZmxlY3RdIERPTVN0cmluZyAg
ICAgICBzYW5kYm94OwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9O
dWxsU3RyaW5nLCBSZWZsZWN0XSBET01TdHJpbmcgICAgICAgc2Nyb2xsaW5nOwogICAgICAgICAg
ICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nLCBDdXN0b21TZXR0ZXIs
IFJlZmxlY3RdIERPTVN0cmluZyAgICAgICBzcmM7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0
ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmcsIFJlZmxlY3RdIERPTVN0cmluZyAgICAgICB3aWR0
aDsKSW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCShyZXZp
c2lvbiA1MTA3NikKKysrIFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjAyLDEwICsxMjAyLDE0IEBAIHZvaWQgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6Z2V0Q29va2llcyhsb24KICAgICAgICAgICAgIFZlY3RvcjxDb29raWU+IGRvY0Nv
b2tpZXNMaXN0OwogICAgICAgICAgICAgcmF3Q29va2llc0ltcGxlbWVudGVkID0gZ2V0UmF3Q29v
a2llcyhkb2N1bWVudCwgZG9jdW1lbnQtPmNvb2tpZVVSTCgpLCBkb2NDb29raWVzTGlzdCk7CiAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICghcmF3Q29va2llc0ltcGxlbWVudGVkKQorICAg
ICAgICAgICAgaWYgKCFyYXdDb29raWVzSW1wbGVtZW50ZWQpIHsKICAgICAgICAgICAgICAgICAv
LyBGSVhNRTogV2UgbmVlZCBkdXBsaWNhdGlvbiBjaGVja2luZyBmb3IgdGhlIFN0cmluZyByZXBy
ZXNlbnRhdGlvbiBvZiBjb29raWVzLgotICAgICAgICAgICAgICAgIHN0cmluZ0Nvb2tpZXNMaXN0
ICs9IGRvY3VtZW50LT5jb29raWUoKTsKLSAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgICAgICAgICAgICAgIHN0cmluZ0Nvb2tpZXNM
aXN0ICs9IGRvY3VtZW50LT5jb29raWUoZWMpOworICAgICAgICAgICAgICAgIC8vIEV4Y2VwdGlv
bnMgYXJlIHRocm93biBieSBjb29raWUoKSBpbiBzYW5kYm94ZWQgZnJhbWVzLiBUaGF0IHdvbid0
IGhhcHBlbiBoZXJlCisgICAgICAgICAgICAgICAgLy8gYmVjYXVzZSAiZG9jdW1lbnQiIGlzIHRo
ZSBkb2N1bWVudCBvZiB0aGUgbWFpbiBmcmFtZSBvZiB0aGUgcGFnZS4KKyAgICAgICAgICAgICAg
ICBBU1NFUlQoIWVjKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaW50
IGNvb2tpZXNTaXplID0gZG9jQ29va2llc0xpc3Quc2l6ZSgpOwogICAgICAgICAgICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgY29va2llc1NpemU7IGkrKykgewogICAgICAgICAgICAgICAgICAg
ICBpZiAoIXJhd0Nvb2tpZXNMaXN0LmNvbnRhaW5zKGRvY0Nvb2tpZXNMaXN0W2ldKSkKSW5kZXg6
IFdlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcAkocmV2aXNpb24g
NTEwNzYpCisrKyBXZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDAsNiArMTAwLDEwIEBAIGJvb2wgcGFzc2VzQWNjZXNzQ29udHJv
bENoZWNrKGNvbnN0IFJlc28KICAgICBpZiAoYWNjZXNzQ29udHJvbE9yaWdpblN0cmluZyA9PSAi
KiIgJiYgIWluY2x1ZGVDcmVkZW50aWFscykKICAgICAgICAgcmV0dXJuIHRydWU7CiAKKyAgICAv
LyBBIHNhbmRib3hlZCBmcmFtZSBoYXMgYSB1bmlxdWUgb3JpZ2luIChmb3Igc2FtZS1vcmlnaW4g
cHVycG9zZXMpLgorICAgIGlmIChzZWN1cml0eU9yaWdpbi0+aXNTYW5kYm94ZWQoU2FuZGJveE9y
aWdpbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdp
bj4gYWNjZXNzQ29udHJvbE9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5n
KGFjY2Vzc0NvbnRyb2xPcmlnaW5TdHJpbmcpOwogICAgIGlmICghYWNjZXNzQ29udHJvbE9yaWdp
bi0+aXNTYW1lU2NoZW1lSG9zdFBvcnQoc2VjdXJpdHlPcmlnaW4pKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiA1MTA3NikKKysrIFdl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk2LDYgKzE5
Niw3IEBAIEZyYW1lTG9hZGVyOjpGcmFtZUxvYWRlcihGcmFtZSogZnJhbWUsIEYKICAgICAsIG1f
ZGlkUGVyZm9ybUZpcnN0TmF2aWdhdGlvbihmYWxzZSkKICAgICAsIG1fbG9hZGluZ0Zyb21DYWNo
ZWRQYWdlKGZhbHNlKQogICAgICwgbV9zdXBwcmVzc09wZW5lckluTmV3RnJhbWUoZmFsc2UpCisg
ICAgLCBtX3NhbmRib3hGbGFncyhTYW5kYm94Tm9uZSkKICNpZm5kZWYgTkRFQlVHCiAgICAgLCBt
X2RpZERpc3BhdGNoRGlkQ29tbWl0TG9hZChmYWxzZSkKICNlbmRpZgpAQCAtMjI4LDYgKzIyOSw5
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmluaXQoKQogICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmNh
bmNlbFBhcnNpbmcoKTsKICAgICBtX2NyZWF0aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQgPSBmYWxz
ZTsKICAgICBtX2RpZENhbGxJbXBsaWNpdENsb3NlID0gdHJ1ZTsKKworICAgIC8vIFByb3BhZ2F0
ZSBzYW5kYm94IGF0dHJpYnV0ZXMgdG8gdGhpcyBGcmFtZWxvYWRlciBhbmQgaXRzIGRlc2NlbmRh
bnRzLgorICAgIHVwZGF0ZVNhbmRib3hGbGFncygpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpz
ZXREZWZlcnNMb2FkaW5nKGJvb2wgZGVmZXJzKQpAQCAtNDM4LDYgKzQ0Miw5IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OnN1Ym1pdEZvcm0oY29uc3QgY2hhcioKICAgICBpZiAodS5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKIAorICAgIGlmIChpc1NhbmRib3hlZChTYW5kYm94Rm9ybXMpKQorICAg
ICAgICByZXR1cm47CisKICAgICBpZiAocHJvdG9jb2xJc0phdmFTY3JpcHQodSkpIHsKICAgICAg
ICAgbV9pc0V4ZWN1dGluZ0phdmFTY3JpcHRGb3JtQWN0aW9uID0gdHJ1ZTsKICAgICAgICAgbV9m
cmFtZS0+c2NyaXB0KCktPmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwodSwgZmFsc2UsIGZhbHNlKTsK
QEAgLTEyNTUsNiArMTI2Miw4IEBAIGJvb2wgRnJhbWVMb2FkZXI6OnJlcXVlc3RPYmplY3QoUmVu
ZGVyUGEKICAgICAgICAgaWYgKCFzZXR0aW5ncyB8fCAhc2V0dGluZ3MtPmFyZVBsdWdpbnNFbmFi
bGVkKCkgfHwgCiAgICAgICAgICAgICAoIXNldHRpbmdzLT5pc0phdmFFbmFibGVkKCkgJiYgTUlN
RVR5cGVSZWdpc3RyeTo6aXNKYXZhQXBwbGV0TUlNRVR5cGUobWltZVR5cGUpKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGlzU2FuZGJveGVkKFNhbmRib3hQbHVnaW5z
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJuIGxvYWRQbHVnaW4o
cmVuZGVyZXIsIGNvbXBsZXRlZFVSTCwgbWltZVR5cGUsIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVz
LCB1c2VGYWxsYmFjayk7CiAgICAgfQogCkBAIC0yMTk3LDYgKzIyMDYsMTAgQEAgYm9vbCBGcmFt
ZUxvYWRlcjo6c2hvdWxkQWxsb3dOYXZpZ2F0aW9uKAogICAgIGlmIChtX2ZyYW1lID09IHRhcmdl
dEZyYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAorICAgIC8vIEEgc2FuZGJveGVkIGZyYW1l
IGNhbiBvbmx5IG5hdmlnYXRlIGl0c2VsZiBhbmQgaXRzIGRlc2NlbmRhbnRzLgorICAgIGlmIChp
c1NhbmRib3hlZChTYW5kYm94TmF2aWdhdGlvbikgJiYgIXRhcmdldEZyYW1lLT50cmVlKCktPmlz
RGVzY2VuZGFudE9mKG1fZnJhbWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICAvLyBM
ZXQgYSBmcmFtZSBuYXZpZ2F0ZSB0aGUgdG9wLWxldmVsIHdpbmRvdyB0aGF0IGNvbnRhaW5zIGl0
LiAgVGhpcyBpcwogICAgIC8vIGltcG9ydGFudCB0byBhbGxvdyBiZWNhdXNlIGl0IGxldHMgYSBz
aXRlICJmcmFtZS1idXN0IiAoZXNjYXBlIGZyb20gYQogICAgIC8vIGZyYW1lIGNyZWF0ZWQgYnkg
YW5vdGhlciB3ZWIgc2l0ZSkuCkBAIC0zODk5LDYgKzM5MTIsMjUgQEAgdm9pZCBGcmFtZUxvYWRl
cjo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRvdwogI2VuZGlmCiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXI6
OnVwZGF0ZVNhbmRib3hGbGFncygpCit7CisgICAgU2FuZGJveEZsYWdzIGZsYWdzID0gU2FuZGJv
eE5vbmU7CisgICAgaWYgKEZyYW1lKiBwYXJlbnRGcmFtZSA9IG1fZnJhbWUtPnRyZWUoKS0+cGFy
ZW50KCkpCisgICAgICAgIGZsYWdzIHw9IHBhcmVudEZyYW1lLT5sb2FkZXIoKS0+c2FuZGJveEZs
YWdzKCk7CisgICAgaWYgKEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50ID0gbV9m
cmFtZS0+b3duZXJFbGVtZW50KCkpCisgICAgICAgIGZsYWdzIHw9IG93bmVyRWxlbWVudC0+c2Fu
ZGJveEZsYWdzKCk7CisKKyAgICBpZiAobV9zYW5kYm94RmxhZ3MgPT0gZmxhZ3MpCisgICAgICAg
IHJldHVybjsKKyAgICAgICAgCisgICAgbV9zYW5kYm94RmxhZ3MgPSBmbGFnczsKKworICAgIG1f
ZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZVNhbmRib3hGbGFncygpOworCisgICAgZm9yIChGcmFt
ZSogY2hpbGQgPSBtX2ZyYW1lLT50cmVlKCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0g
Y2hpbGQtPnRyZWUoKS0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgY2hpbGQtPmxvYWRlcigpLT51
cGRhdGVTYW5kYm94RmxhZ3MoKTsKKyB9CisKIFBhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRl
cjo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiBzaXplLCBIVE1MQXBwbGV0
RWxlbWVudCogZWxlbWVudCwgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGFyZ3MpCiB7
CiAgICAgU3RyaW5nIGJhc2VVUkxTdHJpbmc7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHJldmlz
aW9uIDUxMDc2KQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMjUxLDYgKzI1MSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNwYXRjaERpZENsZWFy
V2luZG93T2JqZWN0c0luQWxsV29ybGRzKCk7CiAgICAgdm9pZCBkaXNwYXRjaERvY3VtZW50RWxl
bWVudEF2YWlsYWJsZSgpOwogCisgICAgdm9pZCBvd25lckVsZW1lbnRTYW5kYm94RmxhZ3NDaGFu
Z2VkKCkgeyB1cGRhdGVTYW5kYm94RmxhZ3MoKTsgfQorICAgIAorICAgIGJvb2wgaXNTYW5kYm94
ZWQoU2FuZGJveEZsYWdzIG1hc2spIGNvbnN0IHsgcmV0dXJuIG1fc2FuZGJveEZsYWdzICYgbWFz
azsgfQorICAgIFNhbmRib3hGbGFncyBzYW5kYm94RmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX3Nh
bmRib3hGbGFnczsgfQorCiAgICAgLy8gTWl4ZWQgY29udGVudCByZWxhdGVkIGZ1bmN0aW9ucy4K
ICAgICBzdGF0aWMgYm9vbCBpc01peGVkQ29udGVudChTZWN1cml0eU9yaWdpbiogY29udGV4dCwg
Y29uc3QgS1VSTCYpOwogICAgIHZvaWQgY2hlY2tJZkRpc3BsYXlJbnNlY3VyZUNvbnRlbnQoU2Vj
dXJpdHlPcmlnaW4qIGNvbnRleHQsIGNvbnN0IEtVUkwmKTsKQEAgLTQzNSw2ICs0NDAsOCBAQCBw
cml2YXRlOgogCiAgICAgYm9vbCBzaG91bGRUcmVhdFVSTEFzU2FtZUFzQ3VycmVudChjb25zdCBL
VVJMJikgY29uc3Q7CiAKKyAgICB2b2lkIHVwZGF0ZVNhbmRib3hGbGFncygpOworICAgIAogICAg
IEZyYW1lKiBtX2ZyYW1lOwogICAgIEZyYW1lTG9hZGVyQ2xpZW50KiBtX2NsaWVudDsKIApAQCAt
NTA2LDYgKzUxMyw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2xvYWRpbmdGcm9tQ2FjaGVkUGFn
ZTsKICAgICBib29sIG1fc3VwcHJlc3NPcGVuZXJJbk5ld0ZyYW1lOwogICAgIAorICAgIFNhbmRi
b3hGbGFncyBtX3NhbmRib3hGbGFnczsKKwogI2lmbmRlZiBOREVCVUcKICAgICBib29sIG1fZGlk
RGlzcGF0Y2hEaWRDb21taXRMb2FkOwogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlclR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJU
eXBlcy5oCShyZXZpc2lvbiA1MTA3NikKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlw
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtOTIsNiArOTIsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBTZW5kUmVmZXJyZXIsCiAgICAgICAgIE5vUmVmZXJyZXIKICAgICB9OworICAg
IAorICAgIGVudW0gU2FuZGJveEZsYWcgeworICAgICAgICBTYW5kYm94Tm9uZSA9IDAsCisgICAg
ICAgIFNhbmRib3hOYXZpZ2F0aW9uID0gMSwKKyAgICAgICAgU2FuZGJveFBsdWdpbnMgPSAxIDw8
IDEsCisgICAgICAgIFNhbmRib3hPcmlnaW4gPSAxIDw8IDIsCisgICAgICAgIFNhbmRib3hGb3Jt
cyA9IDEgPDwgMywKKyAgICAgICAgU2FuZGJveFNjcmlwdHMgPSAxIDw8IDQsCisgICAgICAgIFNh
bmRib3hBbGwgPSAtMSAvLyBNYXNrIHdpdGggYWxsIGJpdHMgc2V0IHRvIDEuCisgICAgfTsKKwor
ICAgIHR5cGVkZWYgdW5zaWduZWQgU2FuZGJveEZsYWdzOwogfQogCiAjZW5kaWYKSW5kZXg6IFdl
YkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwCShyZXZpc2lvbiA1MTA3NikKKysrIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NjksNiArNTY5LDkgQEAgU3RvcmFnZSogRE9NV2luZG93Ojpz
ZXNzaW9uU3RvcmFnZSgpIGNvbgogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRoaXMtPmRvY3Vt
ZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAg
aWYgKCFkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzU3RvcmFnZSgpKQorICAg
ICAgICByZXR1cm4gMDsKIAogICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOwogICAg
IGlmICghcGFnZSkKQEAgLTU5MSw2ICs1OTQsOSBAQCBTdG9yYWdlKiBET01XaW5kb3c6OmxvY2Fs
U3RvcmFnZSgpIGNvbnN0CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQo
KTsKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBpZiAo
IWRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NTdG9yYWdlKCkpCisgICAgICAg
IHJldHVybiAwOwogICAgICAgICAKICAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoKTsK
ICAgICBpZiAoIXBhZ2UpCkBAIC0xMTA3LDEzICsxMTEzLDE1IEBAIFBhc3NSZWZQdHI8RGF0YWJh
c2U+IERPTVdpbmRvdzo6b3BlbkRhdGEKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgRG9jdW1lbnQqIGRvYyA9IG1fZnJhbWUtPmRvY3VtZW50KCk7CisgICAgRG9j
dW1lbnQqIGRvY3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50
LT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NEYXRhYmFzZSgpKQorICAgICAgICByZXR1cm4g
MDsKIAogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IG1fZnJhbWUtPnNldHRpbmdzKCk7CiAgICAg
aWYgKCFzZXR0aW5ncyB8fCAhc2V0dGluZ3MtPmRhdGFiYXNlc0VuYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICByZXR1cm4gRGF0YWJhc2U6Om9wZW5EYXRhYmFzZShkb2MsIG5hbWUs
IHZlcnNpb24sIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplLCBlYyk7CisgICAgcmV0dXJuIERh
dGFiYXNlOjpvcGVuRGF0YWJhc2UoZG9jdW1lbnQsIG5hbWUsIHZlcnNpb24sIGRpc3BsYXlOYW1l
LCBlc3RpbWF0ZWRTaXplLCBlYyk7CiB9CiAjZW5kaWYKIApJbmRleDogV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5T3JpZ2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmln
aW4uY3BwCShyZXZpc2lvbiA1MTA3NikKKysrIFdlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDYgKzk1LDcgQEAgU2VjdXJpdHlPcmlnaW46OlNlY3Vy
aXR5T3JpZ2luKGNvbnN0IEtVUgogICAgIDogbV9wcm90b2NvbCh1cmwucHJvdG9jb2woKS5pc051
bGwoKSA/ICIiIDogdXJsLnByb3RvY29sKCkubG93ZXIoKSkKICAgICAsIG1faG9zdCh1cmwuaG9z
dCgpLmlzTnVsbCgpID8gIiIgOiB1cmwuaG9zdCgpLmxvd2VyKCkpCiAgICAgLCBtX3BvcnQodXJs
LnBvcnQoKSkKKyAgICAsIG1fc2FuZGJveEZsYWdzKFNhbmRib3hOb25lKQogICAgICwgbV9ub0Fj
Y2VzcyhmYWxzZSkKICAgICAsIG1fdW5pdmVyc2FsQWNjZXNzKGZhbHNlKQogICAgICwgbV9kb21h
aW5XYXNTZXRJbkRPTShmYWxzZSkKQEAgLTEyMiw2ICsxMjMsNyBAQCBTZWN1cml0eU9yaWdpbjo6
U2VjdXJpdHlPcmlnaW4oY29uc3QgU2VjCiAgICAgLCBtX2hvc3Qob3RoZXItPm1faG9zdC50aHJl
YWRzYWZlQ29weSgpKQogICAgICwgbV9kb21haW4ob3RoZXItPm1fZG9tYWluLnRocmVhZHNhZmVD
b3B5KCkpCiAgICAgLCBtX3BvcnQob3RoZXItPm1fcG9ydCkKKyAgICAsIG1fc2FuZGJveEZsYWdz
KG90aGVyLT5tX3NhbmRib3hGbGFncykKICAgICAsIG1fbm9BY2Nlc3Mob3RoZXItPm1fbm9BY2Nl
c3MpCiAgICAgLCBtX3VuaXZlcnNhbEFjY2VzcyhvdGhlci0+bV91bml2ZXJzYWxBY2Nlc3MpCiAg
ICAgLCBtX2RvbWFpbldhc1NldEluRE9NKG90aGVyLT5tX2RvbWFpbldhc1NldEluRE9NKQpAQCAt
MTYyLDcgKzE2NCw3IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhbkFjY2Vzcyhjb25zdCBTZWMK
ICAgICBpZiAobV91bml2ZXJzYWxBY2Nlc3MpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAg
aWYgKG1fbm9BY2Nlc3MgfHwgb3RoZXItPm1fbm9BY2Nlc3MpCisgICAgaWYgKG1fbm9BY2Nlc3Mg
fHwgb3RoZXItPm1fbm9BY2Nlc3MgfHwgaXNTYW5kYm94ZWQoU2FuZGJveE9yaWdpbikgfHwgb3Ro
ZXItPmlzU2FuZGJveGVkKFNhbmRib3hPcmlnaW4pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICAvLyBIZXJlIGFyZSB0d28gY2FzZXMgd2hlcmUgd2Ugc2hvdWxkIHBlcm1pdCBhY2Nlc3M6
CkBAIC0yMDMsNyArMjA1LDcgQEAgYm9vbCBTZWN1cml0eU9yaWdpbjo6Y2FuUmVxdWVzdChjb25z
dCBLVQogICAgIGlmIChtX3VuaXZlcnNhbEFjY2VzcykKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
LSAgICBpZiAobV9ub0FjY2VzcykKKyAgICBpZiAobV9ub0FjY2VzcyB8fCBpc1NhbmRib3hlZChT
YW5kYm94T3JpZ2luKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgUmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPiB0YXJnZXRPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCk7CkBA
IC0yODksNyArMjkxLDcgQEAgU3RyaW5nIFNlY3VyaXR5T3JpZ2luOjp0b1N0cmluZygpIGNvbnN0
CiAgICAgaWYgKGlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuICJudWxsIjsKIAotICAgIGlmICht
X25vQWNjZXNzKQorICAgIGlmIChtX25vQWNjZXNzIHx8IGlzU2FuZGJveGVkKFNhbmRib3hPcmln
aW4pKQogICAgICAgICByZXR1cm4gIm51bGwiOwogCiAgICAgaWYgKG1fcHJvdG9jb2wgPT0gImZp
bGUiKQpJbmRleDogV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgJKHJldmlzaW9uIDUxMDc2KQorKysgV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAK
ICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4K
IAorI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgogI2luY2x1ZGUgIlN0cmluZ0hhc2guaCIKIApAQCAtMTEwLDYgKzExMSwxMyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIFdBUk5JTkc6IFRoaXMgaXMgYW4gZXh0cmVtZWx5
IHBvd2VyZnVsIGFiaWxpdHkuICBVc2Ugd2l0aCBjYXV0aW9uIQogICAgICAgICB2b2lkIGdyYW50
VW5pdmVyc2FsQWNjZXNzKCk7CiAKKyAgICAgICAgLy8gU2FuZGJveGluZyBzdGF0dXMgYXMgZGV0
ZXJtaW5lZCBieSB0aGUgZnJhbWUuCisgICAgICAgIHZvaWQgc2V0U2FuZGJveEZsYWdzKFNhbmRi
b3hGbGFncyBmbGFncykgeyBtX3NhbmRib3hGbGFncyA9IGZsYWdzOyB9CisgICAgICAgIGJvb2wg
aXNTYW5kYm94ZWQoU2FuZGJveEZsYWdzIG1hc2spIGNvbnN0IHsgcmV0dXJuIG1fc2FuZGJveEZs
YWdzICYgbWFzazsgfQorCisgICAgICAgIGJvb2wgY2FuQWNjZXNzRGF0YWJhc2UoKSBjb25zdCB7
IHJldHVybiAhaXNTYW5kYm94ZWQoU2FuZGJveE9yaWdpbik7IH0KKyAgICAgICAgYm9vbCBjYW5B
Y2Nlc3NTdG9yYWdlKCkgY29uc3QgeyByZXR1cm4gIWlzU2FuZGJveGVkKFNhbmRib3hPcmlnaW4p
OyB9CisKICAgICAgICAgYm9vbCBpc1NlY3VyZVRyYW5zaXRpb25Ubyhjb25zdCBLVVJMJikgY29u
c3Q7CiAKICAgICAgICAgLy8gVGhlIGxvY2FsIFNlY3VyaXR5T3JpZ2luIGlzIHRoZSBtb3N0IHBy
aXZpbGVnZWQgU2VjdXJpdHlPcmlnaW4uCkBAIC0xODEsNiArMTg5LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICBTdHJpbmcgbV9ob3N0OwogICAgICAgICBTdHJpbmcgbV9kb21haW47
CiAgICAgICAgIHVuc2lnbmVkIHNob3J0IG1fcG9ydDsKKyAgICAgICAgU2FuZGJveEZsYWdzIG1f
c2FuZGJveEZsYWdzOwogICAgICAgICBib29sIG1fbm9BY2Nlc3M7CiAgICAgICAgIGJvb2wgbV91
bml2ZXJzYWxBY2Nlc3M7CiAgICAgICAgIGJvb2wgbV9kb21haW5XYXNTZXRJbkRPTTsKSW5kZXg6
IFdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAJKHJldmlzaW9uIDUxMDc2KQor
KysgV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTksOCArMTU5LDEwIEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2ZURh
dGEoU28KICAgICAgICAgICAgIGlmICghbV9oYW5kc2hha2Uuc2VydmVyU2V0Q29va2llKCkuaXNF
bXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKG1fY29udGV4dC0+aXNEb2N1bWVudCgpKSB7
CiAgICAgICAgICAgICAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERv
Y3VtZW50Kj4obV9jb250ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNvb2tpZXNFbmFi
bGVkKGRvY3VtZW50KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LT5zZXRDb29r
aWUobV9oYW5kc2hha2Uuc2VydmVyU2V0Q29va2llKCkpOworICAgICAgICAgICAgICAgICAgICBp
ZiAoY29va2llc0VuYWJsZWQoZG9jdW1lbnQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBF
eGNlcHRpb25Db2RlIGVjOyAvLyBFeGNlcHRpb24gKGZvciBzYW5kYm94ZWQgZG9jdW1lbnRzKSBp
Z25vcmVkLgorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQtPnNldENvb2tpZShtX2hh
bmRzaGFrZS5zZXJ2ZXJTZXRDb29raWUoKSwgZWMpOworICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gRklYTUU6IGhh
bmRsZSBzZXQtY29va2llMi4KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDUxMjM3KQorKysgTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjkgQEAKKzIwMDktMTEtMjAg
IFBhdHJpayBQZXJzc29uICA8cGF0cmlrLmoucGVyc3NvbkBlcmljc3Nvbi5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IEhUTUw1
IHNhbmRib3ggYXR0cmlidXRlIGZvciBpZnJhbWVzLgorICAgICAgICBodHRwOi8vd3d3LnczLm9y
Zy9UUi9odG1sNS90ZXh0LWxldmVsLXNlbWFudGljcy5odG1sI2F0dHItaWZyYW1lLXNhbmRib3gK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjg4CisK
KyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvbm9uLXNhbmRib3hlZC1pZnJhbWUtbmF2
aWdhdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2Fu
ZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1hbGxvd2VkLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1w
YXJzaW5nLWRpc2FsbG93ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVz
b3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1hbGxvd2VkLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tZGlzYWxsb3dl
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVk
LWlmcmFtZS1uYXZpZ2F0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVz
b3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1jaGlsZC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9u
LW5hdmlnYXRlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMv
c2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXBhcmVudC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXNvdXJj
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVk
LWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVu
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQt
aWZyYW1lLXBsdWdpbnMtZnJhbWUtYXBwbGV0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtZW1iZWQuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJh
bWUtcGx1Z2lucy1mcmFtZS1vYmplY3QuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFt
ZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtc2NyaXB0LWR5bmFtaWMuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtc3RvcmFn
ZS1hbGxvd2VkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNlcy9z
YW5kYm94ZWQtaWZyYW1lLXN0b3JhZ2UtZGlzYWxsb3dlZC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRy
aWJ1dGUtcGFyc2luZy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94
ZWQtaWZyYW1lLWZvcm1zLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFt
ZXMvc2FuZGJveGVkLWlmcmFtZS1mb3Jtcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zy
YW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tYWxsb3dlZC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1h
bGxvd2VkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJh
bWUtbmF2aWdhdGlvbi1wYXJlbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRs
aW5rLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJveGVk
LWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4tZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmln
YXRpb24td2luZG93b3Blbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5k
Ym94ZWQtaWZyYW1lLXBsdWdpbnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1zY3JpcHRpbmctZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXNjcmlwdGluZy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXN0b3JhZ2Ut
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZy
YW1lLXN0b3JhZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9y
ZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1kb2N1bWVudC1jb29raWUtcmVhZC1kZW5pZWQuaHRt
bDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvc2FuZGJv
eGVkLWlmcmFtZS1tb2RpZnktc2VsZi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3NlY3VyaXR5L3Jlc291cmNlcy94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUtYXR0YWNrZXIu
aHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZy
YW1lLWRvY3VtZW50LWNvb2tpZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvc2VjdXJpdHkvc2FuZGJveGVkLWlmcmFtZS1kb2N1bWVudC1jb29raWUuaHRtbDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLW1vZGlm
eS1zZWxmLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0
eS9zYW5kYm94ZWQtaWZyYW1lLW1vZGlmeS1zZWxmLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC1zYW5kYm94ZWQtaWZyYW1lLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXNhbmRi
b3hlZC1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVx
dWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93LWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJv
bC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQu
aHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3Mt
Y29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94
ZWQtaWZyYW1lLWFsbG93LWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1l
LWFsbG93LmNnaTogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9y
ZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtaWZyYW1lLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2Vz
L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQt
aWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
cmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQt
d2lsZGNhcmQuY2dpOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC5jZ2k6IEFk
ZGVkLgorCiAyMDA5LTExLTIwICBSb2xhbmQgU3RlaW5lciAgPHJvbGFuZHN0ZWluZXJAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVk
LWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5n
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACitUaGlzIHRlc3QgY2Fz
ZSB2ZXJpZmllcyB0aGUgcGFyc2luZyBvZiB0aGUgaWZyYW1lIHNhbmRib3ggYXR0cmlidXRlLiBU
d28gc2V0cyBvZiBpZnJhbWVzIGFyZSB1c2VkOiBvbmUgd2hlcmUgc2NyaXB0aW5nIGlzIGFsbG93
ZWQsIGFuZCBhbm90aGVyIG9uZSB3aGVyZSBpdCBpcyBkaXNhbGxvd2VkLiBUaGUgdGVzdCB2ZXJp
ZmllcyB0aGF0IHRoZSBhbGxvd2VkIGZyYW1lcyBleGVjdXRlIHNjcmlwdHMgKGJ1dCBvdGhlciBz
YW5kYm94ZWQgcHJvcGVydGllcyBzdGlsbCBhcHBseSAtLSBzcGVjaWZpY2FsbHksIGZvcm1zIGFy
ZSBkaXNhYmxlZCksIGFuZCB0aGUgZGlzYWxsb3dlZCBvbmVzIGRvIG5vdC4gSWYgc3VjY2Vzc2Z1
bCB0aGUgdGVzdCBwcmludHMgIlBBU1MiLgorCisgICAgICAgICAgICAgICAgICAKK1BBU1MKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBh
cnNpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94
ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTY1IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4K
KworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICB3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCit2YXIgZmFpbGVkID0gZmFsc2U7Cit2YXIgZnJh
bWVzID0gMDsgICAgICAgICAvKiBudW1iZXIgb2YgYWxsb3dlZCBmcmFtZXMgdGhhdCBjYWxsZWQg
YmFjayAqLworCitmdW5jdGlvbiBmYWlsKG1lc3NhZ2UpCit7CisgICAgc2V0U3RhdHVzKCJGQUlM
OiAiICsgbWVzc2FnZSk7CisgICAgZmFpbGVkID0gdHJ1ZTsKK30KKworZnVuY3Rpb24gc2V0U3Rh
dHVzKHN0YXR1cykKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdFN0YXR1cyIp
LmlubmVySFRNTCA9IHN0YXR1czsKK30KKworZnVuY3Rpb24gYWxsb3dlZENhbGxGcm9tU2FuZGJv
eCgpCit7CisgICAgKytmcmFtZXM7Cit9CisKK2Z1bmN0aW9uIGRpc2FsbG93ZWRDYWxsRnJvbVNh
bmRib3goKQoreworICAgIGZhaWwoImRpc2FsbG93ZWQgc2NyaXB0IGV4ZWN1dGVkIik7Cit9CisK
K2Z1bmN0aW9uIGRpc2FsbG93ZWRGb3JtU3VibWl0dGVkKCkKK3sKKyAgICBmYWlsKCJzYW5kYm94
aW5nIGZhaWxlZDogZm9ybSBzdWJtaXR0ZWQgaW4gc2FuZGJveGVkIGZyYW1lIik7Cit9CisKK3dp
bmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpCit7CisgICAgaWYgKGZyYW1lcyA9PSA1ICYmICFmYWls
ZWQpCisgICAgICAgIHNldFN0YXR1cygiUEFTUyIpOworICAgIGVsc2UgaWYgKCFmYWlsZWQpCisg
ICAgICAgIGZhaWwoInNjcmlwdGluZyBkaXNhYmxlZCBpbiBvbmUgb3IgbW9yZSBmcmFtZXMgd2hl
cmUgaXQgc2hvdWxkIGJlIGVuYWJsZWQiKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxi
b2R5PgorCisgICAgPHA+VGhpcyB0ZXN0IGNhc2UgdmVyaWZpZXMgdGhlIHBhcnNpbmcgb2YgdGhl
IGlmcmFtZSBzYW5kYm94IGF0dHJpYnV0ZS4gVHdvIHNldHMgb2YgaWZyYW1lcworICAgIGFyZSB1
c2VkOiBvbmUgd2hlcmUgc2NyaXB0aW5nIGlzIGFsbG93ZWQsIGFuZCBhbm90aGVyIG9uZSB3aGVy
ZSBpdCBpcyBkaXNhbGxvd2VkLiBUaGUgdGVzdAorICAgIHZlcmlmaWVzIHRoYXQgdGhlIGFsbG93
ZWQgZnJhbWVzIGV4ZWN1dGUgc2NyaXB0cyAoYnV0IG90aGVyIHNhbmRib3hlZCBwcm9wZXJ0aWVz
IHN0aWxsCisgICAgYXBwbHkgLS0gc3BlY2lmaWNhbGx5LCBmb3JtcyBhcmUgZGlzYWJsZWQpLCBh
bmQgdGhlIGRpc2FsbG93ZWQgb25lcyBkbyBub3QuIElmIHN1Y2Nlc3NmdWwKKyAgICB0aGUgdGVz
dCBwcmludHMgJnF1b3Q7UEFTUyZxdW90Oy48L3A+CisgICAgCisgICAgPCEtLSBpZnJhbWVzIHdo
ZXJlIHNjcmlwdCBleGVjdXRpb24gaXMgYWxsb3dlZCwgYnV0IG9yaWdpbiBpcyBub3Qgc2hhcmVk
IC0tPgorCisgICAgPCEtLSBwbGFpbiwgcHJvcGVyIGF0dHJpYnV0ZSB2YWx1ZSAtLT4KKyAgICA8
aWZyYW1lIHNhbmRib3g9ImFsbG93LXNjcmlwdHMiCisgICAgICAgICAgICBuYW1lPSJmMSIKKyAg
ICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNp
bmctYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKyAgICAKKyAgICA8IS0tIGxpbmUgZmVl
ZCBjaGFyYWN0ZXJzIGJlZm9yZSBhbmQgYWZ0ZXIgYXR0cmlidXRlIHZhbHVlIC0tPgorICAgIDxp
ZnJhbWUgc2FuZGJveD0iCisKK2FsbG93LXNjcmlwdHMKKworIgorICAgICAgICAgICAgbmFtZT0i
ZjIiCisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0
ZS1wYXJzaW5nLWFsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8IS0tIHJpZGlj
dWxvdXNseSBsb25nLCBpbnZhbGlkIHRleHQgKHdlbGwsIGZvciB0aGVzZSBwdXJwb3NlcyBhdCBs
ZWFzdCkKKyAgICAgICAgIHdpdGggbm9uLUFTQ0lJIGNoYXJhY3RlcnMgc3Vycm91bmRpbmcgYXR0
cmlidXRlIHZhbHVlIC0tPgorICAgIDxpZnJhbWUgc2FuZGJveD0iCisgICAgICAgIEbDtnIgdmFy
IHZlcnMsIGphZyBnw7ZyLAorICAgICAgICBMb3ZhciBkdSBlbiBreXNzIG1pZyBnaXZhOworICAg
ICAgICBBcmtldCBmdWxsdCBqYWcgYm9yZGUgc2tyaXZhLAorICAgICAgICBNaW5kcmUgaGFyIGph
ZyBza3Jpdml0IGbDtnIuCisgICAgICAgIE1lbiBtYW4gbcOlc3RlIGjDpWxsYSBtw6V0dGEsCisg
ICAgICAgIEphZyBtZWQgdmVycywgbWVkIGt5c3NhciBkdS4KKyAgICAgICAgTMOldCBtaWcgcsOk
a25hOiBEw6RyIMOkciBzanUhCisgICAgICAgIEVuIGTDpHJ0aWxsIGRldCBnw7ZyIG1pZyDDpXR0
YS4KKworICAgICAgICBOdW1ybyDDpXR0YSDDpHIgZmF0YWwsCisgICAgICAgIEdyZWtsYW5kcyBz
w6VuZ23DtnIgdm9ybyBuaW8sCisgICAgICAgIE9jaCBlbiBzdmVuc2sgZMOkcnRpbGwgZ8O2ciB0
aW8uIOKAlAorICAgICAgICBFbHZhIHZhciBhcG9zdGVsbnMgdGFsLAorICAgICAgICBUeSBqYWcg
csOka25hciBpY2tlIEp1ZGFzLAorICAgICAgICBIb25vbSwgc29tIGkgdsOkbm5lcnMgbGFnCisg
ICAgICAgIEt5c3N0ZSBmYWxza3Q7IGRldCBnw7ZyIGVqIGphZywKKyAgICAgICAgSGVsc3QgbsOk
ciB2YWNrcmEgbMOkcHBhciBianVkYXMuCisKKyAgICAgICAgSHVydSBzdMOlciBtaW4gcsOka25p
bmcgaMOkcj8KKyAgICAgICAgQWRlcnRvbjsgZGV0IMOkciBkb2NrIG7DpWdvdC4KKyAgICAgICAg
Tml0dG9uIOKAlCByaW1tZXQgZ8O2ciBiZXN2w6RyLAorICAgICAgICBEw6RyZsO2cmUgamFnIGZ5
bGxlciB0am9nZXQuCisgICAgICAgIFN0cm9mZW4gw6RyIGVqIGZ1bGwgc29tIGphZywKKyAgICAg
ICAgSW4gaSBoYW1uZW4gdmlsbCBqYWcgc3R5cmEsCisgICAgICAgIETDpHJmw7ZyZSB0aWxsIGdv
ZG8gdGFnCisgICAgICAgIERlbm5hIGfDpW5nIG1lZCB0anVnb2Z5cmEuCisgICAgICAgIAorICAg
ICAgICAnS3lzc2FybmEnICgnVGhlIGtpc3NlcycpLCBFc2FpYXMgVGVnbsOpciwgMTc4Mi0xODQ2
CisKKyAgICBhbGxvdy1zY3JpcHRzCisgICAgCisgICAgICAgIGludCBtYWluKHZvaWQpCisgICAg
ICAgIHsKKyAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfSIKKyAgICAgICAgICAgIG5hbWU9
ImYzIgorICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1
dGUtcGFyc2luZy1hbGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorCisgICAgPCEtLSB0YWIg
Y2hhcmFjdGVycyBiZWZvcmUgYW5kIGFmdGVyIGF0dHJpYnV0ZSB2YWx1ZSAtLT4KKyAgICA8aWZy
YW1lIHNhbmRib3g9IgkJYWxsb3ctc2NyaXB0cwkJIgorICAgICAgICAgICAgbmFtZT0iZjQiCisg
ICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJz
aW5nLWFsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8IS0tIG1peGVkIGNhc2Ug
LS0+CisgICAgPGlmcmFtZSBzYW5kYm94PSJBbExvVy1zQ3JJcFRzIgorICAgICAgICAgICAgbmFt
ZT0iZjUiCisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJp
YnV0ZS1wYXJzaW5nLWFsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8IS0tIGlm
cmFtZXMgd2hlcmUgc2NyaXB0IGV4ZWN1dGlvbiBpcyBkaXNhbGxvd2VkIC0tPgorCisgICAgPGlm
cmFtZSBzYW5kYm94PSJhbGxvd3NjcmlwdHMiCisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9z
YW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWRpc2FsbG93ZWQuaHRtbCI+CisgICAg
PC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93cy1jcmlwdHMiCisgICAgICAg
ICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWRp
c2FsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNhbmRib3g9Ii1h
bGxvdy1zY3JpcHRzIgorICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFt
ZS1hdHRyaWJ1dGUtcGFyc2luZy1kaXNhbGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorCisg
ICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvd19zY3JpcHRzIgorICAgICAgICAgICAgc3JjPSJyZXNv
dXJjZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1kaXNhbGxvd2VkLmh0bWwi
PgorICAgIDwvaWZyYW1lPgorCisgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvd1NjcmlwdHMiCisg
ICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJz
aW5nLWRpc2FsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNhbmRi
b3g9ImFhbGxvdy1zY3JpcHRzIgorICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVk
LWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1kaXNhbGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1l
PgorCisgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zY3JpcHRzcyIKKyAgICAgICAgICAgIHNy
Yz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmctZGlzYWxsb3dl
ZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKworICAgIDxpZnJhbWUgc2FuZGJveAorICAgICAgICAg
ICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1kaXNh
bGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorCisgICAgPHAgaWQ9J3Rlc3RTdGF0dXMnPkZB
SUw6IFNjcmlwdCBkaWRuJ3QgcnVuPC9wPgorCis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm1zLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWZv
cm1zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3NhbmRib3hlZC1pZnJhbWUtZm9ybXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDQgQEAKK1RoaXMgdGVzdCBydW5zIGZpdmUgSUZyYW1lcyB3aXRoIGZvcm1zIGFsbG93ZWQs
IG9uZSBJRnJhbWUgd2l0aCBmb3JtcyBkaXNhbGxvd2VkLCB0aGVuIGZpdmUgbW9yZSBJRnJhbWVz
IHdpdGggZm9ybXMgYWxsb3dlZC4gSWYgdGVuIGZvcm0gc3VibWlzc2lvbnMgYXJlIG1hZGUsIGFu
ZCB0aGUgZGlzYWxsb3dlZCBzdWJtaXNzaW9uIGlzIG5vdCBvbmUgb2YgdGhlbSwgd2UgY29uc2lk
ZXIgdGhlIHRlc3QgdG8gaGF2ZSBwYXNzZWQuIFRoaXMgdGVzdCB3aWxsIHByaW50ICJQQVNTIiBv
biBzdWNjZXNzLgorCisgICAgICAgICAgICAgICAgICAgIAorUEFTUwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1mb3Jtcy5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtZm9ybXMuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtZm9y
bXMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5NiBAQAorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQ+CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK3ZhciBzdWJtaXNzaW9uQ291bnQgICAg
ICA9IDA7Cit2YXIgZGlzYWxsb3dlZFN1Ym1pc3Npb24gPSBmYWxzZTsKKworZnVuY3Rpb24gYWxs
b3dlZEZvcm1TdWJtaXR0ZWQoKQoreworICAgICsrc3VibWlzc2lvbkNvdW50OworCisgICAgaWYg
KHN1Ym1pc3Npb25Db3VudCA9PSAxMCkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgidGVzdF9zdGF0dXMiKS5pbm5lckhUTUwgPSAoZGlzYWxsb3dlZFN1Ym1pc3Npb24gPyAiRkFJ
TCIgOiAiUEFTUyIpOworICAgICAgCisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworICAgIH0KK30KKworZnVuY3Rpb24gZGlzYWxsb3dlZEZvcm1TdWJtaXR0ZWQoKQorewor
ICAgIGRpc2FsbG93ZWRTdWJtaXNzaW9uID0gdHJ1ZTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+
CisKKzxib2R5PgorCisgICAgPHA+VGhpcyB0ZXN0IHJ1bnMgZml2ZSBJRnJhbWVzIHdpdGggZm9y
bXMgYWxsb3dlZCwgb25lIElGcmFtZSB3aXRoIGZvcm1zCisgICAgZGlzYWxsb3dlZCwgdGhlbiBm
aXZlIG1vcmUgSUZyYW1lcyB3aXRoIGZvcm1zIGFsbG93ZWQuIElmIHRlbiBmb3JtCisgICAgc3Vi
bWlzc2lvbnMgYXJlIG1hZGUsIGFuZCB0aGUgZGlzYWxsb3dlZCBzdWJtaXNzaW9uIGlzIG5vdCBv
bmUgb2YgdGhlbSwKKyAgICB3ZSBjb25zaWRlciB0aGUgdGVzdCB0byBoYXZlIHBhc3NlZC4gVGhp
cyB0ZXN0IHdpbGwgcHJpbnQKKyAgICAmcXVvdDtQQVNTJnF1b3Q7IG9uIHN1Y2Nlc3MuPC9wPgor
CisgICAgPCEtLSBmaXZlIElGcmFtZXMgd2l0aCBmb3JtcyBhbGxvd2VkIC0tPgorCisgICAgPGlm
cmFtZSBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsiCisgICAgICAgIHNhbmRib3g9
ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMiCisgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRi
b3hlZC1pZnJhbWUtZm9ybS1hbGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorICAgIDxpZnJh
bWUgc3R5bGU9IndpZHRoOiA2MHB4OyBoZWlnaHQ6IDYwcHg7IgorICAgICAgICBzYW5kYm94PSJh
bGxvdy1zY3JpcHRzIGFsbG93LWZvcm1zIgorICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94
ZWQtaWZyYW1lLWZvcm0tYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1l
IHN0eWxlPSJ3aWR0aDogNjBweDsgaGVpZ2h0OiA2MHB4OyIKKyAgICAgICAgc2FuZGJveD0iYWxs
b3ctc2NyaXB0cyBhbGxvdy1mb3JtcyIKKyAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVk
LWlmcmFtZS1mb3JtLWFsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBz
dHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsiCisgICAgICAgIHNhbmRib3g9ImFsbG93
LXNjcmlwdHMgYWxsb3ctZm9ybXMiCisgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1p
ZnJhbWUtZm9ybS1hbGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorICAgIDxpZnJhbWUgc3R5
bGU9IndpZHRoOiA2MHB4OyBoZWlnaHQ6IDYwcHg7IgorICAgICAgICBzYW5kYm94PSJhbGxvdy1z
Y3JpcHRzIGFsbG93LWZvcm1zIgorICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZy
YW1lLWZvcm0tYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKworICAgIDwhLS0gb25lIElG
cmFtZSB3aXRoIGZvcm1zIGRpc2FsbG93ZWQgLS0+CisKKyAgICA8aWZyYW1lIHN0eWxlPSJ3aWR0
aDogNjBweDsgaGVpZ2h0OiA2MHB4OyIKKyAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyIK
KyAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWRpc2FsbG93ZWQu
aHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8IS0tIGZpdmUgbW9yZSBJRnJhbWVzIHdpdGgg
Zm9ybXMgYWxsb3dlZCAtLT4KKworICAgIDxpZnJhbWUgc3R5bGU9IndpZHRoOiA2MHB4OyBoZWln
aHQ6IDYwcHg7IgorICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1zIgor
ICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tYWxsb3dlZC5odG1s
Ij4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIHN0eWxlPSJ3aWR0aDogNjBweDsgaGVpZ2h0
OiA2MHB4OyIKKyAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyIKKyAg
ICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWFsbG93ZWQuaHRtbCI+
CisgICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDog
NjBweDsiCisgICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMiCisgICAg
ICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1hbGxvd2VkLmh0bWwiPgor
ICAgIDwvaWZyYW1lPgorICAgIDxpZnJhbWUgc3R5bGU9IndpZHRoOiA2MHB4OyBoZWlnaHQ6IDYw
cHg7IgorICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1zIgorICAgICAg
ICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tYWxsb3dlZC5odG1sIj4KKyAg
ICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIHN0eWxlPSJ3aWR0aDogNjBweDsgaGVpZ2h0OiA2MHB4
OyIKKyAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyIKKyAgICAgICAg
c3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWFsbG93ZWQuaHRtbCI+CisgICAg
PC9pZnJhbWU+CisgICAgCisgICAgPHAgaWQ9J3Rlc3Rfc3RhdHVzJz5GQUlMOiBTY3JpcHQgZGlk
bid0IHJ1bjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1hbGxvd2VkLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmln
YXRpb24tYWxsb3dlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tYWxsb3dlZC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIgQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0
IGEgc2FuZGJveGVkIGlmcmFtZSBDQU4gbmF2aWdhdGUgYm90aCBpdHNlbGYgYW5kIGEgY2hpbGQg
aW4gdGhlIGZyYW1lIHRyZWUuIEl0IGFsc28gdmVyaWZpZXMgdGhhdCB0aGUgc2FuZGJveCBhdHRy
aWJ1dGUgcmVtYWlucyBpbnRhY3QgYWZ0ZXIgYSBmcmFtZSBoYXMgYmVlbiBuYXZpZ2F0ZWQsIGFu
ZCB0aGF0IHNhbmRib3ggYXR0cmlidXRlcyBhcmUgcHJvcGFnYXRlZCB0aHJvdWdoIHRoZSBmcmFt
ZSBoaWVyYXJjaHkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIChzZWxm
LnNhbmRib3hlZEZyYW1lLmZyYW1lV2l0aFBsdWdpbi5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
cGx1Z2luJykuZGVzdHJveVN0cmVhbSkgPT0gdW5kZWZpbmVkIGlzIHRydWUKK1BBU1MgKHNlbGYu
ZnJhbWVXaXRoUGx1Z2luLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbHVnaW4nKS5kZXN0cm95
U3RyZWFtKSAhPSB1bmRlZmluZWQgaXMgdHJ1ZQorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnc2FuZGJveGVkRnJhbWVJZCcpLnNhbmRib3ggaXMgJ2FsbG93LXNjcmlwdHMgYWxsb3ctc2Ft
ZS1vcmlnaW4nCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKyAgCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5h
dmlnYXRpb24tYWxsb3dlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1hbGxvd2VkLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24t
YWxsb3dlZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYwIEBACis8aHRtbD4KKzxoZWFk
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5j
dGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CisgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KyAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitm
dW5jdGlvbiBjaGlsZEZyYW1lV2FzTmF2aWdhdGVkKCkKK3sKKyAgICAvLyBDaGVjayB0aGF0IHRo
ZSBjaGlsZCBmcmFtZSB3YXMgdW5hYmxlIHRvIGxvYWQgYSBwbHVnaW4sIHNpbmNlIGl0cyBwYXJl
bnQgaXMgc2FuZGJveGVkLgorICAgIHNob3VsZEJlVHJ1ZSgiKHNlbGYuc2FuZGJveGVkRnJhbWUu
ZnJhbWVXaXRoUGx1Z2luLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbHVnaW4nKS5kZXN0cm95
U3RyZWFtKSA9PSB1bmRlZmluZWQiKTsKKyAgICAKKyAgICAvLyBDaGVjayBhIG5vbi1zYW5kYm94
ZWQgZnJhbWUgYXMgd2VsbCwgdG8gZW5zdXJlIHRoYXQgdGhlIHBsdWdpbiBpcyBkaXNhYmxlZCBi
eSBzYW5kYm94aW5nCisgICAgLy8gYW5kIG5vdCBzb21lIG90aGVyIGZhaWx1cmUKKyAgICBzaG91
bGRCZVRydWUoIihzZWxmLmZyYW1lV2l0aFBsdWdpbi5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
cGx1Z2luJykuZGVzdHJveVN0cmVhbSkgIT0gdW5kZWZpbmVkIik7CisKKyAgICAvLyBXaGVuIHRo
ZSBjaGlsZCBmcmFtZSAoZ3JhbmRjaGlsZCBvZiB0aGUgbWFpbiB3aW5kb3cpIGhhcyBiZWVuIG5h
dmlnYXRlZCwKKyAgICAvLyBtYWtlIHRoZSBzYW5kYm94ZWQgZnJhbWUgbmF2aWdhdGUgaXRzZWxm
CisgICAgc2VsZi5zYW5kYm94ZWRGcmFtZS5sb2NhdGlvbi5hc3NpZ24oImphdmFzY3JpcHQ6IHRv
cC5zYW5kYm94V2FzTmF2aWdhdGVkKCk7Iik7Cit9CisKK2Z1bmN0aW9uIHNhbmRib3hXYXNOYXZp
Z2F0ZWQoKQoreworICAgIHNob3VsZEJlKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJv
eGVkRnJhbWVJZCcpLnNhbmRib3giLCAiJ2FsbG93LXNjcmlwdHMgYWxsb3ctc2FtZS1vcmlnaW4n
Iik7CisgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKKworICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKyAgICA8cCBpZD0i
ZGVzY3JpcHRpb24iPjwvcD4KKyAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworICAgIDxp
ZnJhbWUgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1zYW1lLW9yaWdpbiIKKyAgICAgICAg
ICAgIG5hbWU9InNhbmRib3hlZEZyYW1lIgorICAgICAgICAgICAgaWQ9InNhbmRib3hlZEZyYW1l
SWQiCisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRp
b24tY2hpbGQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIG5hbWU9ImZyYW1l
V2l0aFBsdWdpbiIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUt
cGx1Z2lucy1mcmFtZS1vYmplY3QuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8c2NyaXB0
PgorICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhIHNhbmRib3hlZCBp
ZnJhbWUgQ0FOIG5hdmlnYXRlIGJvdGggaXRzZWxmIGFuZCBhIGNoaWxkIGluIHRoZSBmcmFtZSB0
cmVlLiAiCisgICAgICAgICAgICAgICAgKyAiSXQgYWxzbyB2ZXJpZmllcyB0aGF0IHRoZSBzYW5k
Ym94IGF0dHJpYnV0ZSByZW1haW5zIGludGFjdCBhZnRlciBhIGZyYW1lIGhhcyBiZWVuIG5hdmln
YXRlZCwgIgorICAgICAgICAgICAgICAgICsgImFuZCB0aGF0IHNhbmRib3ggYXR0cmlidXRlcyBh
cmUgcHJvcGFnYXRlZCB0aHJvdWdoIHRoZSBmcmFtZSBoaWVyYXJjaHkuIik7CisgICAgdmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRp
b24tcGFyZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50LWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2
aWdhdGlvbi1wYXJlbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAK
K1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGEgc2FuZGJveGVkIElGcmFtZSBjYW5ub3QgbmF2aWdh
dGUgYW4gYW5jZXN0b3IgaW4gdGhlIGZyYW1lIHRyZWUgYnkgYXNzaWduaW5nIHRoZSBsb2NhdGlv
biBhdHRyaWJ1dGUuCisKK1RoaXMgaXMgZG9uZSBieSBsb2FkaW5nIHRlbiBub24tc2FuZGJveGVk
IElGcmFtZXMsIGFuZCBhIHNpbmdsZSBzYW5kYm94ZWQgb25lLiBFeHBlY3QgdGVuIGZyYW1lcyB0
byBiZSBuYXZpZ2F0ZWQsIGJ1dCB0aGUgc2FuZGJveGVkIG9uZSB0byBub3QgYmUgb25lIG9mIHRo
ZW0uCisKK1RoaXMgdGVzdCB3aWxsIHByaW50ICJQQVNTIiBvbiBzdWNjZXNzLgorCisgICAgICAg
ICAgICAgICAKK1BBU1MKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1p
ZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50Lmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmln
YXRpb24tcGFyZW50Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjggQEAKKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Cisg
ICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICB3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCit2YXIgbmF2aWdhdGVk
RnJhbWVzID0gMDsKKworZnVuY3Rpb24gY2hlY2tSZXN1bHRzKCkKK3sKKyAgICB2YXIgdGVzdFN0
YXR1cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0U3RhdHVzJyk7CisKKyAgICBpZiAo
c2VsZi5uYXZpZ2F0ZWQubG9jYXRpb24uaHJlZi5pbmRleE9mKCdwYXJlbnQuaHRtbCcpID09IC0x
KQorICAgICAgICB0ZXN0U3RhdHVzLmlubmVySFRNTCA9ICdGQUlMOiBkaXNhbGxvd2VkIGZyYW1l
IG5hdmlnYXRlZCc7CisgICAgZWxzZSBpZiAobmF2aWdhdGVkRnJhbWVzID09IDEwKQorICAgICAg
ICB0ZXN0U3RhdHVzLmlubmVySFRNTCA9ICdQQVNTJzsKKyAgICBlbHNlCisgICAgICAgIHRlc3RT
dGF0dXMuaW5uZXJIVE1MID0gJ0ZBSUw6IGZyYW1lcyBub3QgbmF2aWdhdGVkIHByb3Blcmx5JzsK
KworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGNvdW50RnJh
bWUoKQoreworICAgICsrbmF2aWdhdGVkRnJhbWVzOworCisgICAgaWYgKG5hdmlnYXRlZEZyYW1l
cyA9PSAxMCkKKyAgICAgICAgY2hlY2tSZXN1bHRzKCk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFk
PgorCis8Ym9keT4KKworICAgIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGEgc2FuZGJveGVk
IElGcmFtZSBjYW5ub3QgbmF2aWdhdGUgYW4gYW5jZXN0b3IKKyAgICBpbiB0aGUgZnJhbWUgdHJl
ZSBieSBhc3NpZ25pbmcgdGhlIGxvY2F0aW9uIGF0dHJpYnV0ZS48L3A+CisKKyAgICA8cD5UaGlz
IGlzIGRvbmUgYnkgbG9hZGluZyB0ZW4gbm9uLXNhbmRib3hlZCBJRnJhbWVzLCBhbmQgYSBzaW5n
bGUKKyAgICBzYW5kYm94ZWQgb25lLiBFeHBlY3QgdGVuIGZyYW1lcyB0byBiZSBuYXZpZ2F0ZWQs
IGJ1dCB0aGUgc2FuZGJveGVkCisgICAgb25lIHRvIDxiPm5vdDwvYj4gYmUgb25lIG9mIHRoZW0u
PC9wPgorICAgIAorICAgIDxwPlRoaXMgdGVzdCB3aWxsIHByaW50ICZxdW90O1BBU1MmcXVvdDsg
b24gc3VjY2Vzcy48L3A+CisKKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL25vbi1zYW5kYm94
ZWQtaWZyYW1lLW5hdmlnYXRpb24uaHRtbCI+PC9pZnJhbWU+CisgICAgPGlmcmFtZSBzcmM9InJl
c291cmNlcy9ub24tc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLmh0bWwiPjwvaWZyYW1lPgor
ICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvbm9uLXNhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlv
bi5odG1sIj48L2lmcmFtZT4KKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL25vbi1zYW5kYm94
ZWQtaWZyYW1lLW5hdmlnYXRpb24uaHRtbCI+PC9pZnJhbWU+CisgICAgPGlmcmFtZSBzcmM9InJl
c291cmNlcy9ub24tc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLmh0bWwiPjwvaWZyYW1lPgor
CisgICAgPGlmcmFtZSBuYW1lPSduYXZpZ2F0ZWQnCisgICAgICAgICAgICBzcmM9InJlc291cmNl
cy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50Lmh0bWwiCisgICAgPC9pZnJhbWU+
CisKKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL25vbi1zYW5kYm94ZWQtaWZyYW1lLW5hdmln
YXRpb24uaHRtbCI+PC9pZnJhbWU+CisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9ub24tc2Fu
ZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLmh0bWwiPjwvaWZyYW1lPgorICAgIDxpZnJhbWUgc3Jj
PSJyZXNvdXJjZXMvbm9uLXNhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi5odG1sIj48L2lmcmFt
ZT4KKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL25vbi1zYW5kYm94ZWQtaWZyYW1lLW5hdmln
YXRpb24uaHRtbCI+PC9pZnJhbWU+CisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9ub24tc2Fu
ZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLmh0bWwiPjwvaWZyYW1lPgorCisgICAgPHAgaWQ9J3Rl
c3RTdGF0dXMnPkZBSUw6IFNjcmlwdCBkaWRuJ3QgcnVuPC9wPgorICAgIAorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZp
Z2F0aW9uLXRhcmdldGxpbmstZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRsaW5rLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hl
ZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRsaW5rLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw4IEBACitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhIHNhbmRib3hlZCBJRnJh
bWUgY2Fubm90IG9wZW4gYSBsaW5rIGluIGFub3RoZXIgZnJhbWUgdXNpbmcgdGhlIHRhcmdldCBh
dHRyaWJ1dGUgb2YgYSBsaW5rLgorCitUaGlzIGlzIGRvbmUgYnkgbG9hZGluZyB0ZW4gbm9uLXNh
bmRib3hlZCBJRnJhbWVzLCBhbmQgYSBzaW5nbGUgc2FuZGJveGVkIG9uZS4gSW4gYWRkaXRpb24g
ZWFjaCBvZiB0aGVzZSBmcmFtZXMgaGF2ZSBhIHRhcmdldCBmcmFtZSAoc28sIDIyIGZyYW1lcyBp
biB0b3RhbCkuIEV4cGVjdCB0ZW4gZnJhbWVzIHRvIGJlIGFibGUgdG8gb3BlbiBhIGxpbmsgaW4g
dGhlaXIgY29ycmVzcG9uZGluZyB0YXJnZXQgZnJhbWUsIGJ1dCB0aGUgc2FuZGJveGVkIG9uZSB0
byBub3QgYmUgb25lIG9mIHRoZW0uCisKK1RoaXMgdGVzdCB3aWxsIHByaW50ICJQQVNTIiBvbiBz
dWNjZXNzLgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorUEFTUwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdl
dGxpbmsuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94
ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxp
bmsuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDkgQEAKKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgd2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICB3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCit2YXIgbmF2aWdhdGVkRnJhbWVzID0g
MDsKKworZnVuY3Rpb24gY2hlY2tSZXN1bHRzKCkKK3sKKyAgICB2YXIgdGVzdFN0YXR1cyA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0U3RhdHVzJyk7CisKKyAgICBpZiAoc2VsZi5zYW5k
Ym94ZWRfdGFyZ2V0LmxvY2F0aW9uLmhyZWYuaW5kZXhPZignLmh0bWwnKSAhPSAtMSkKKyAgICAg
ICAgdGVzdFN0YXR1cy5pbm5lckhUTUwgPSAnRkFJTDogZGlzYWxsb3dlZCBmcmFtZSBuYXZpZ2F0
ZWQnOworICAgIGVsc2UgaWYgKG5hdmlnYXRlZEZyYW1lcyA9PSAxMCkKKyAgICAgICAgdGVzdFN0
YXR1cy5pbm5lckhUTUwgPSAnUEFTUyc7CisgICAgZWxzZQorICAgICAgICB0ZXN0U3RhdHVzLmlu
bmVySFRNTCA9ICdGQUlMOiBmcmFtZXMgbm90IG5hdmlnYXRlZCBwcm9wZXJseSc7CisKKyAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICB3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBjb3VudEZyYW1lKCkKK3sK
KyAgICArK25hdmlnYXRlZEZyYW1lczsKKworICAgIGlmIChuYXZpZ2F0ZWRGcmFtZXMgPT0gMTAp
CisgICAgICAgIGNoZWNrUmVzdWx0cygpOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJv
ZHk+CisKKyAgICA8cD5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhIHNhbmRib3hlZCBJRnJhbWUg
Y2Fubm90IG9wZW4gYSBsaW5rIGluCisgICAgYW5vdGhlciBmcmFtZSB1c2luZyB0aGUgPGNvZGU+
dGFyZ2V0PC9jb2RlPiBhdHRyaWJ1dGUgb2YgYSBsaW5rLjwvcD4KKworICAgIDxwPlRoaXMgaXMg
ZG9uZSBieSBsb2FkaW5nIHRlbiBub24tc2FuZGJveGVkIElGcmFtZXMsIGFuZCBhIHNpbmdsZQor
ICAgIHNhbmRib3hlZCBvbmUuIEluIGFkZGl0aW9uIGVhY2ggb2YgdGhlc2UgZnJhbWVzIGhhdmUg
YSB0YXJnZXQgZnJhbWUKKyAgICAoc28sIDIyIGZyYW1lcyBpbiB0b3RhbCkuIEV4cGVjdCB0ZW4g
ZnJhbWVzIHRvIGJlIGFibGUgdG8gb3BlbiBhIGxpbmsKKyAgICBpbiB0aGVpciBjb3JyZXNwb25k
aW5nIHRhcmdldCBmcmFtZSwgYnV0IHRoZSBzYW5kYm94ZWQgb25lCisgICAgdG8gPGI+bm90PC9i
PiBiZSBvbmUgb2YgdGhlbS48L3A+CisgICAgCisgICAgPHA+VGhpcyB0ZXN0IHdpbGwgcHJpbnQg
JnF1b3Q7UEFTUyZxdW90OyBvbiBzdWNjZXNzLjwvcD4KKworICAgIDxpZnJhbWUgc3JjPSJyZXNv
dXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbCIKKyAgICAg
ICAgICAgIG5hbWU9ImYxIj4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIG5hbWU9ImYxX3Rh
cmdldCIgc3JjPSJhYm91dDpibGFuayI+PC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNyYz0icmVz
b3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRsaW5rLmh0bWwiCisgICAg
ICAgICAgICBuYW1lPSJmMiI+CisgICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBuYW1lPSJmMl90
YXJnZXQiIHNyYz0iYWJvdXQ6YmxhbmsiPjwvaWZyYW1lPgorCisgICAgPGlmcmFtZSBzcmM9InJl
c291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay5odG1sIgorICAg
ICAgICAgICAgbmFtZT0iZjMiPgorICAgIDwvaWZyYW1lPgorICAgIDxpZnJhbWUgbmFtZT0iZjNf
dGFyZ2V0IiBzcmM9ImFib3V0OmJsYW5rIj48L2lmcmFtZT4KKworICAgIDxpZnJhbWUgc3JjPSJy
ZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbCIKKyAg
ICAgICAgICAgIG5hbWU9ImY0Ij4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIG5hbWU9ImY0
X3RhcmdldCIgc3JjPSJhYm91dDpibGFuayI+PC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNyYz0i
cmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRsaW5rLmh0bWwiCisg
ICAgICAgICAgICBuYW1lPSJmNSI+CisgICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBuYW1lPSJm
NV90YXJnZXQiIHNyYz0iYWJvdXQ6YmxhbmsiPjwvaWZyYW1lPgorCisgICAgPGlmcmFtZSBzcmM9
InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay5odG1sIgor
ICAgICAgICAgICAgbmFtZT0ic2FuZGJveGVkIgorICAgICAgICAgICAgc2FuZGJveD0iYWxsb3ct
c2NyaXB0cyBhbGxvdy1zYW1lLW9yaWdpbiI+CisgICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBu
YW1lPSJzYW5kYm94ZWRfdGFyZ2V0IiBzcmM9ImFib3V0OmJsYW5rIj48L2lmcmFtZT4KKworICAg
IDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdl
dGxpbmsuaHRtbCIKKyAgICAgICAgICAgIG5hbWU9ImY2Ij4KKyAgICA8L2lmcmFtZT4KKyAgICA8
aWZyYW1lIG5hbWU9ImY2X3RhcmdldCIgc3JjPSJhYm91dDpibGFuayI+PC9pZnJhbWU+CisKKyAg
ICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJn
ZXRsaW5rLmh0bWwiCisgICAgICAgICAgICBuYW1lPSJmNyI+CisgICAgPC9pZnJhbWU+CisgICAg
PGlmcmFtZSBuYW1lPSJmN190YXJnZXQiIHNyYz0iYWJvdXQ6YmxhbmsiPjwvaWZyYW1lPgorCisg
ICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFy
Z2V0bGluay5odG1sIgorICAgICAgICAgICAgbmFtZT0iZjgiPgorICAgIDwvaWZyYW1lPgorICAg
IDxpZnJhbWUgbmFtZT0iZjhfdGFyZ2V0IiBzcmM9ImFib3V0OmJsYW5rIj48L2lmcmFtZT4KKwor
ICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRh
cmdldGxpbmsuaHRtbCIKKyAgICAgICAgICAgIG5hbWU9ImY5Ij4KKyAgICA8L2lmcmFtZT4KKyAg
ICA8aWZyYW1lIG5hbWU9ImY5X3RhcmdldCIgc3JjPSJhYm91dDpibGFuayI+PC9pZnJhbWU+CisK
KyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10
YXJnZXRsaW5rLmh0bWwiCisgICAgICAgICAgICBuYW1lPSJmMTAiPgorICAgIDwvaWZyYW1lPgor
ICAgIDxpZnJhbWUgbmFtZT0iZjEwX3RhcmdldCIgc3JjPSJhYm91dDpibGFuayI+PC9pZnJhbWU+
CisKKyAgICA8cCBpZD0ndGVzdFN0YXR1cyc+RkFJTDogU2NyaXB0IGRpZG4ndCBydW48L3A+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQt
aWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRv
d29wZW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFt
ZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4tZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYgQEAKK1ZlcmlmaWVzIHRoYXQgYSBzYW5kYm94ZWQgSUZy
YW1lIGNhbm5vdCBvcGVuIG5ldyB3aW5kb3dzIHVzaW5nIHdpbmRvdy5vcGVuKCkuIEV4cGVjdCB0
ZW4gd2luZG93cyB0byBiZSBvcGVuZWQsIGJ1dCB0aGUgc2FuZGJveGVkIElGcmFtZSBub3QgdG8g
YmUgdGhlIG9wZW5lciBvZiBhbnkgb2YgdGhlbS4KKworVGhpcyB0ZXN0IHdpbGwgcHJpbnQgIlBB
U1MiIG9uIHN1Y2Nlc3MuCisKKyAgICAgICAgICAgICAgIAorUEFTUwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4uaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1l
LW5hdmlnYXRpb24td2luZG93b3Blbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4uaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisK
K2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldENhbk9wZW5XaW5kb3dzKHRydWUpOwor
fQorCit2YXIgdGVzdFN0YXR1cyAgICAgICA9ICJGQUlMOiBub3QgY29tcGxldGVkIjsKK3ZhciB3
aW5kb3dzT3BlbmVkICAgID0gMDsKK3ZhciBtYWluV2luZG93TG9hZGVkID0gZmFsc2U7Cit2YXIg
dGVzdENvbXBsZXRlZCAgICA9IGZhbHNlOworCitmdW5jdGlvbiB1cGRhdGVTdGF0dXMobG9hZGVk
LCBkb25lKQoreworICAgIG1haW5XaW5kb3dMb2FkZWQgfD0gbG9hZGVkOworICAgIHRlc3RDb21w
bGV0ZWQgfD0gZG9uZTsKKworICAgIGlmIChtYWluV2luZG93TG9hZGVkICYmIHRlc3RDb21wbGV0
ZWQpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RTdGF0dXMiKS5pbm5l
ckhUTUwgPSB0ZXN0U3RhdHVzOworICAgICAgICBpZiAodGVzdENvbXBsZXRlZCAmJiB3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7CisgICAgfQorfQorCitmdW5jdGlvbiB3aW5kb3dPcGVuZWQod2luZG93T3Bl
bmVyKQoreworICAgIGlmICh3aW5kb3dPcGVuZXIgPT0gc2VsZi5zYW5kYm94ZWQpIHsKKyAgICAg
ICAgdGVzdFN0YXR1cyA9ICJGQUlMOiBzYW5kYm94ZWQgZnJhbWUgb3BlbmVkIHdpbmRvdyI7Cisg
ICAgICAgIHVwZGF0ZVN0YXR1cyhmYWxzZSwgdHJ1ZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
Kyt3aW5kb3dzT3BlbmVkOworICAgICAgICBpZiAod2luZG93c09wZW5lZCA9PSAxMCAmJiAhdGVz
dENvbXBsZXRlZCkgeworICAgICAgICAgICAgdGVzdFN0YXR1cyA9ICJQQVNTIjsKKyAgICAgICAg
ICAgIHVwZGF0ZVN0YXR1cyhmYWxzZSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKzwv
c2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InVwZGF0ZVN0YXR1cyh0cnVlLCBmYWxz
ZSk7Ij4KKworICAgIDxwPlZlcmlmaWVzIHRoYXQgYSBzYW5kYm94ZWQgSUZyYW1lIGNhbm5vdCBv
cGVuIG5ldyB3aW5kb3dzCisgICAgdXNpbmcgPGNvZGU+d2luZG93Lm9wZW4oKTwvY29kZT4uIEV4
cGVjdCB0ZW4gd2luZG93cyB0byBiZSBvcGVuZWQsCisgICAgYnV0IHRoZSBzYW5kYm94ZWQgSUZy
YW1lIG5vdCB0byBiZSB0aGUgb3BlbmVyIG9mIGFueSBvZiB0aGVtLjwvcD4KKyAgICAKKyAgICA8
cD5UaGlzIHRlc3Qgd2lsbCBwcmludCAmcXVvdDtQQVNTJnF1b3Q7IG9uIHN1Y2Nlc3MuPC9wPgor
CisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24t
d2luZG93b3Blbi5odG1sIj48L2lmcmFtZT4KKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3Nh
bmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0bWwiPjwvaWZyYW1lPgorICAg
IDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRv
d29wZW4uaHRtbCI+PC9pZnJhbWU+CisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94
ZWQtaWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi5odG1sIj48L2lmcmFtZT4KKyAgICA8aWZy
YW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVu
Lmh0bWwiPjwvaWZyYW1lPgorCisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQt
aWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi5odG1sIgorICAgICAgICAgICAgc2FuZGJveD0i
YWxsb3ctc2NyaXB0cyIKKyAgICAgICAgICAgIG5hbWU9InNhbmRib3hlZCI+CisgICAgPC9pZnJh
bWU+CisKKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdh
dGlvbi13aW5kb3dvcGVuLmh0bWwiPjwvaWZyYW1lPgorICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJj
ZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4uaHRtbCI+PC9pZnJhbWU+
CisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24t
d2luZG93b3Blbi5odG1sIj48L2lmcmFtZT4KKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3Nh
bmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0bWwiPjwvaWZyYW1lPgorICAg
IDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRv
d29wZW4uaHRtbCI+PC9pZnJhbWU+CisKKyAgICA8cCBpZD0ndGVzdFN0YXR1cyc+RkFJTDogU2Ny
aXB0IGRpZG4ndCBydW48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5k
Ym94ZWQtaWZyYW1lLXBsdWdpbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDE3IEBACitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBzYW5kYm94aW5nIG9mIHBsdWdpbnMgd29y
a3MgYXMgaW50ZW5kZWQuIFRocmVlIHRlc3RzIGFyZSBtYWRlLCBlYWNoIGluIG9uZSBzYW5kYm94
ZWQgYW5kIG9uZSBub24tc2FuZGJveGVkIElGcmFtZTogYXBwbGV0cywgZW1iZWRzLCBhbmQgb2Jq
ZWN0cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK05PVEU6IFRoZSBmaXJzdCBz
dWItdGVzdCB3aWxsIGZhaWwgaW4gRHVtcFJlbmRlclRyZWUsIHNpbmNlIER1bXBSZW5kZXJUcmVl
IGRvZXMgbm90IHN1cHBvcnQgYXBwbGV0cy4gVGhhdCBzdWItdGVzdCBtdXN0IGJlIHJ1biBpbiBT
YWZhcmkgaW5zdGVhZC4KKworRkFJTCAoc2VsZi5hcHBsZXRGcmFtZTEuZG9jdW1lbnRbJ2FwcCdd
LmluaXQpICE9IHVuZGVmaW5lZCBzaG91bGQgYmUgdHJ1ZS4gV2FzIGZhbHNlLgorUEFTUyAoc2Vs
Zi5hcHBsZXRGcmFtZTIuZG9jdW1lbnRbJ2FwcCddLmluaXQpID09IHVuZGVmaW5lZCBpcyB0cnVl
CitQQVNTIChzZWxmLmVtYmVkRnJhbWUxLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbHVnaW4n
KS5kZXN0cm95U3RyZWFtKSAhPSB1bmRlZmluZWQgaXMgdHJ1ZQorUEFTUyAoc2VsZi5lbWJlZEZy
YW1lMi5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGx1Z2luJykuZGVzdHJveVN0cmVhbSkgPT0g
dW5kZWZpbmVkIGlzIHRydWUKK1BBU1MgKHNlbGYub2JqZWN0RnJhbWUxLmRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdwbHVnaW4nKS5kZXN0cm95U3RyZWFtKSAhPSB1bmRlZmluZWQgaXMgdHJ1ZQor
UEFTUyAoc2VsZi5vYmplY3RGcmFtZTIuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BsdWdpbicp
LmRlc3Ryb3lTdHJlYW0pID09IHVuZGVmaW5lZCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKyAgICAgICAgIApJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1l
LXBsdWdpbnMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NCBAQAorPGh0bWw+IAorPGhl
YWQ+IAorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1m
dW5jdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PiAKK2lmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIAorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsgCisgCit3
aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7IAorICAgIHNob3VsZEJlVHJ1ZSgiKHNlbGYuYXBw
bGV0RnJhbWUxLmRvY3VtZW50WydhcHAnXS5pbml0KSAhPSB1bmRlZmluZWQiKTsKKyAgICBzaG91
bGRCZVRydWUoIihzZWxmLmFwcGxldEZyYW1lMi5kb2N1bWVudFsnYXBwJ10uaW5pdCkgPT0gdW5k
ZWZpbmVkIik7CisKKyAgICBzaG91bGRCZVRydWUoIihzZWxmLmVtYmVkRnJhbWUxLmRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdwbHVnaW4nKS5kZXN0cm95U3RyZWFtKSAhPSB1bmRlZmluZWQiKTsK
KyAgICBzaG91bGRCZVRydWUoIihzZWxmLmVtYmVkRnJhbWUyLmRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdwbHVnaW4nKS5kZXN0cm95U3RyZWFtKSA9PSB1bmRlZmluZWQiKTsKKworICAgIHNob3Vs
ZEJlVHJ1ZSgiKHNlbGYub2JqZWN0RnJhbWUxLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbHVn
aW4nKS5kZXN0cm95U3RyZWFtKSAhPSB1bmRlZmluZWQiKTsKKyAgICBzaG91bGRCZVRydWUoIihz
ZWxmLm9iamVjdEZyYW1lMi5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGx1Z2luJykuZGVzdHJv
eVN0cmVhbSkgPT0gdW5kZWZpbmVkIik7CisKKyAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOwor
fSAKKzwvc2NyaXB0PiAKKzwvaGVhZD4gCisgCis8Ym9keT4gCisgICAgPHAgaWQ9ImRlc2NyaXB0
aW9uIj48L3A+CisgCisgICAgPHA+Tk9URTogVGhlIGZpcnN0IHN1Yi10ZXN0IHdpbGwgZmFpbCBp
biBEdW1wUmVuZGVyVHJlZSwgc2luY2UgRHVtcFJlbmRlclRyZWUKKyAgICBkb2VzIG5vdCBzdXBw
b3J0IGFwcGxldHMuIFRoYXQgc3ViLXRlc3QgbXVzdCBiZSBydW4gaW4gU2FmYXJpIGluc3RlYWQu
PC9wPiAKKworICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCisgICAgPCEtLSBBcHBsZXRz
IC0tPgorICAgIAorICAgIDxpZnJhbWUgaWQ9ImFwcGxldEZyYW1lMSIgCisgICAgICAgICAgICBz
dHlsZT0id2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDEwMHB4OyIgCisgICAgICAgICAgICBzcmM9InJl
c291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtYXBwbGV0Lmh0bWwiPiAKKyAg
ICA8L2lmcmFtZT4gCisgICAgPGlmcmFtZSBpZD0iYXBwbGV0RnJhbWUyIiAKKyAgICAgICAgICAg
IHN0eWxlPSJ3aWR0aDogMjAwcHg7IGhlaWdodDogMTAwcHg7IiAKKyAgICAgICAgICAgIHNhbmRi
b3g9ImFsbG93LXNhbWUtb3JpZ2luIGFsbG93LXNjcmlwdHMiIAorICAgICAgICAgICAgc3JjPSJy
ZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLWZyYW1lLWFwcGxldC5odG1sIj4gCisg
ICAgPC9pZnJhbWU+IAorCisgICAgPCEtLSBFbWJlZHMgLS0+CisgICAgCisgICAgPGlmcmFtZSBp
ZD0iZW1iZWRGcmFtZTEiCisgICAgICAgICAgICBzdHlsZT0id2lkdGg6IDIwMHB4OyBoZWlnaHQ6
IDEwMHB4OyIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1
Z2lucy1mcmFtZS1lbWJlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIGlkPSJl
bWJlZEZyYW1lMiIKKyAgICAgICAgICAgIHN0eWxlPSJ3aWR0aDogMjAwcHg7IGhlaWdodDogMTAw
cHg7IgorICAgICAgICAgICAgc2FuZGJveD0iYWxsb3ctc2FtZS1vcmlnaW4iCisgICAgICAgICAg
ICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtZW1iZWQuaHRt
bCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8IS0tIE9iamVjdHMgLS0+CisgICAgCisgICAgPGlm
cmFtZSBpZD0ib2JqZWN0RnJhbWUxIgorICAgICAgICAgICAgc3R5bGU9IndpZHRoOiAyMDBweDsg
aGVpZ2h0OiAxMDBweDsiCisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZy
YW1lLXBsdWdpbnMtZnJhbWUtb2JqZWN0Lmh0bWwiPgorICAgIDwvaWZyYW1lPgorICAgIDxpZnJh
bWUgaWQ9Im9iamVjdEZyYW1lMiIKKyAgICAgICAgICAgIHN0eWxlPSJ3aWR0aDogMjAwcHg7IGhl
aWdodDogMTAwcHg7IgorICAgICAgICAgICAgc2FuZGJveD0iYWxsb3ctc2FtZS1vcmlnaW4iCisg
ICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUt
b2JqZWN0Lmh0bWwiPgorICAgIDwvaWZyYW1lPgorCisgICAgPHNjcmlwdD4KKyAgICBkZXNjcmlw
dGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgc2FuZGJveGluZyBvZiBwbHVnaW5zIHdvcmtz
IGFzIGludGVuZGVkLiBUaHJlZSB0ZXN0cyBhcmUgbWFkZSwgZWFjaCBpbiBvbmUgc2FuZGJveGVk
IGFuZCBvbmUgbm9uLXNhbmRib3hlZCBJRnJhbWU6IGFwcGxldHMsIGVtYmVkcywgYW5kIG9iamVj
dHMuIik7CisgICAgdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgICAgPC9zY3JpcHQ+
Cis8L2JvZHk+IAorPC9odG1sPiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRi
b3hlZC1pZnJhbWUtc2NyaXB0aW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXNjcmlwdGluZy1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1l
LXNjcmlwdGluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKK1Zl
cmlmeSB0aGF0IHNhbmRib3hlZCBmcmFtZXMgd2l0aCBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIiBj
YW4gZXhlY3V0ZSBzY3JpcHRzLCBidXQgb3RoZXIgc2FuZGJveGVkIGZyYW1lcyBjYW5ub3QuIEFs
c28gdmVyaWZ5IHRoYXQgcmVtb3ZpbmcgdGhlIHNhbmRib3g9ImFsbG93LXNjcmlwdHMiIGF0dHJp
YnV0ZSBhdCBydW50aW1lIHByZXZlbnRzIG5ldyBzY3JpcHRzIGZyb20gbGF1bmNoaW5nLCBidXQg
ZXhpc3Rpbmcgb25lcyBrZWVwIHJ1bm5pbmcuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIGRpc2FsbG93ZWRFeGVjdXRlZCBpcyAwCitQQVNTIGFsbG93ZWRFeGVjdXRlZCBp
cyAyCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKyAg
IApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1zY3JpcHRp
bmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQt
aWZyYW1lLXNjcmlwdGluZy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9m
cmFtZXMvc2FuZGJveGVkLWlmcmFtZS1zY3JpcHRpbmcuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw0NiBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2lm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgd2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKwordmFyIGRpc2FsbG93ZWRFeGVjdXRlZCA9IDA7Cit2YXIg
YWxsb3dlZEV4ZWN1dGVkID0gMDsKKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkKK3sKKyAg
ICBzaG91bGRCZSgiZGlzYWxsb3dlZEV4ZWN1dGVkIiwgIjAiKTsKKyAgICBzaG91bGRCZSgiYWxs
b3dlZEV4ZWN1dGVkIiwgIjIiKTsKKworICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7Cit9Cis8
L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+CisgICAgPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+
CisgCisgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgCisgICAgPGlmcmFtZSBzYW5kYm94
PSJhbGxvdy1zYW1lLW9yaWdpbiBhbGxvdy1zY3JpcHRzIgorICAgICAgICAgICAgc3JjPSJqYXZh
c2NyaXB0OiArK3dpbmRvdy50b3AuYWxsb3dlZEV4ZWN1dGVkOyI+CisgICAgPC9pZnJhbWU+Cisg
ICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zYW1lLW9yaWdpbiIKKyAgICAgICAgICAgIHNyYz0i
amF2YXNjcmlwdDogKyt3aW5kb3cudG9wLmRpc2FsbG93ZWRFeGVjdXRlZDsiPgorICAgIDwvaWZy
YW1lPgorICAgIAorICAgIDxpZnJhbWUgaWQ9ImZyYW1lIiBzcmM9InJlc291cmNlcy9zYW5kYm94
ZWQtaWZyYW1lLXNjcmlwdC1keW5hbWljLmh0bWwiPgorICAgIDwvaWZyYW1lPgorCisgICAgPHNj
cmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVmVyaWZ5IHRoYXQgc2FuZGJveGVkIGZyYW1lcyB3aXRo
IHNhbmRib3g9JnF1b3Q7YWxsb3ctc2NyaXB0cyZxdW90OyBjYW4gZXhlY3V0ZSBzY3JpcHRzLCAi
CisgICAgICAgICAgICAgICAgICsgImJ1dCBvdGhlciBzYW5kYm94ZWQgZnJhbWVzIGNhbm5vdC4g
QWxzbyB2ZXJpZnkgdGhhdCByZW1vdmluZyB0aGUgIgorICAgICAgICAgICAgICAgICArICJzYW5k
Ym94PSZxdW90O2FsbG93LXNjcmlwdHMmcXVvdDsgYXR0cmlidXRlIGF0IHJ1bnRpbWUgcHJldmVu
dHMgbmV3IHNjcmlwdHMgZnJvbSBsYXVuY2hpbmcsICIKKyAgICAgICAgICAgICAgICAgKyAiYnV0
IGV4aXN0aW5nIG9uZXMga2VlcCBydW5uaW5nLiIpOworICAgIHZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOworICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1zdG9yYWdlLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXN0
b3JhZ2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFt
ZXMvc2FuZGJveGVkLWlmcmFtZS1zdG9yYWdlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwyOCBAQAorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYSBzYW5kYm94ZWQgaWZyYW1l
IGRvZXMgbm90IGhhdmUgYWNjZXNzIHRvIGFueSBzZXNzaW9uIHN0b3JhZ2UsIGxvY2FsIHN0b3Jh
Z2Ugb3IgZGF0YWJhc2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitNb3N0IG9m
IHRoZSBQQVNTIG1lc3NhZ2VzIGFwcGVhciBpbiBmcmFtZXMsIHByZXNlbnRlZCBieSBEdW1wUmVu
ZGVyVHJlZSBhZnRlciB0aGUgbWFpbiB3aW5kb3cuCisKKyAgCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKworCistLS0tLS0tLQorRnJhbWU6ICc8IS0t
ZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0tLS0tCitQQVNTIHdpbmRvdy5vcGVu
RGF0YWJhc2UoKSA9PSBudWxsIGlzIHRydWUKK1BBU1Mgd2luZG93LmxvY2FsU3RvcmFnZSA9PSBu
dWxsIGlzIHRydWUKK1BBU1Mgd2luZG93LnNlc3Npb25TdG9yYWdlID09IG51bGwgaXMgdHJ1ZQor
CisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUxLS0+LS0+Jwor
LS0tLS0tLS0KK1BBU1Mgd2luZG93Lm9wZW5EYXRhYmFzZSgpICE9IG51bGwgaXMgdHJ1ZQorUEFT
UyB3aW5kb3cubG9jYWxTdG9yYWdlICE9IG51bGwgaXMgdHJ1ZQorUEFTUyB3aW5kb3cuc2Vzc2lv
blN0b3JhZ2UgIT0gbnVsbCBpcyB0cnVlCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3NhbmRib3hlZC1pZnJhbWUtc3RvcmFnZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtc3RvcmFnZS5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1zdG9yYWdlLmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzcgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8
c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Cit9CisKK3dpbmRvdy5vbmxvYWQgPSBmdW5j
dGlvbigpIHsgCisgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKK30gCisKKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+CisgICAgPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CisKKyAgICA8cD5N
b3N0IG9mIHRoZSBQQVNTIG1lc3NhZ2VzIGFwcGVhciBpbiBmcmFtZXMsIHByZXNlbnRlZCBieSBE
dW1wUmVuZGVyVHJlZSBhZnRlciB0aGUgbWFpbiB3aW5kb3cuPC9wPgorCisgICAgPGlmcmFtZSBz
YW5kYm94PSJhbGxvdy1zY3JpcHRzIiBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXN0
b3JhZ2UtZGlzYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKworICAgIDxpZnJhbWUgc3Jj
PSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1zdG9yYWdlLWFsbG93ZWQuaHRtbCI+CisgICAg
PC9pZnJhbWU+CisKKyAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworICAgIDxzY3JpcHQ+
CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGEgc2FuZGJveGVkIGlm
cmFtZSBkb2VzIG5vdCBoYXZlIGFjY2VzcyB0byBhbnkgc2Vzc2lvbiBzdG9yYWdlLCBsb2NhbCBz
dG9yYWdlIG9yIGRhdGFiYXNlLiIpOworICAgIHZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OworICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvcmVzb3VyY2VzL25vbi1zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24uaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvbm9uLXNhbmRi
b3hlZC1pZnJhbWUtbmF2aWdhdGlvbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvcmVzb3VyY2VzL25vbi1zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24uaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1IEBACis8aHRtbD4KKzxib2R5PgorICA8aWZyYW1l
IHNyYz0ic2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXNvdXJjZS5odG1sIj48L2lmcmFtZT4K
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNl
cy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWFsbG93ZWQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFt
ZS1hdHRyaWJ1dGUtcGFyc2luZy1hbGxvd2VkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFy
c2luZy1hbGxvd2VkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIgQEAKKzxodG1sPgor
PHNjcmlwdD4KKwordG9wLmFsbG93ZWRDYWxsRnJvbVNhbmRib3goKTsKKworPC9zY3JpcHQ+Cis8
Ym9keSBvbmxvYWQ9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmJykuc3VibWl0KCk7Ij4KKyAg
ICA8Zm9ybSBpZD0nZicgYWN0aW9uPSJqYXZhc2NyaXB0OnRvcC5kaXNhbGxvd2VkRm9ybVN1Ym1p
dHRlZCgpOyI+CisgICAgICAgIDxpbnB1dCBuYW1lPSJ4IiB2YWx1ZT0ieSIgdHlwZT0iY2hlY2ti
b3giIGNoZWNrZWQ9InllcyIgLz4KKyAgICA8L2Zvcm0+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRy
aWJ1dGUtcGFyc2luZy1kaXNhbGxvd2VkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmct
ZGlzYWxsb3dlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMv
cmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmctZGlzYWxsb3dlZC5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUgQEAKKzxodG1sPgorPHNjcmlwdD4KK3RvcC5k
aXNhbGxvd2VkQ2FsbEZyb21TYW5kYm94KCk7Cis8L3NjcmlwdD4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tYWxs
b3dlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNl
cy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tYWxsb3dlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1hbGxv
d2VkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNSBAQAorPGJvZHkgb25sb2FkPSJkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnZm9ybScpLnN1Ym1pdCgpOyI+Cis8Zm9ybSBpZD0iZm9ybSIg
YWN0aW9uPSJqYXZhc2NyaXB0OndpbmRvdy50b3AuYWxsb3dlZEZvcm1TdWJtaXR0ZWQoKTsiPgor
ICAgIDxpbnB1dCBuYW1lPXggdmFsdWU9eSB0eXBlPSJjaGVja2JveCIgY2hlY2tlZD0ieWVzIi8+
Cis8L2Zvcm0+Cis8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJj
ZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWRpc2FsbG93ZWQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWRp
c2FsbG93ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jl
c291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tZGlzYWxsb3dlZC5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDYgQEAKKzxib2R5IG9ubG9hZD0iZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2Zvcm0nKS5zdWJtaXQoKTsiCisgICAgICBiZ2NvbG9yPSd5ZWxsb3cnPgorPGZvcm0gaWQ9ImZv
cm0iIGFjdGlvbj0iamF2YXNjcmlwdDp3aW5kb3cudG9wLmRpc2FsbG93ZWRGb3JtU3VibWl0dGVk
KCk7Ij4KKyAgICA8aW5wdXQgbmFtZT14IHZhbHVlPXkgdHlwZT0iY2hlY2tib3giIGNoZWNrZWQ9
InllcyIvPgorPC9mb3JtPgorPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMv
cmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGVkLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdh
dGVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJj
ZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0ZWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw1IEBACis8aHRtbD4KKzxib2R5IG9ubG9hZD0nc2VsZi50b3AuY291bnRGcmFtZSgpOyc+Citu
YXZpZ2F0ZWQKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tY2hpbGQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFt
ZS1uYXZpZ2F0aW9uLWNoaWxkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLWNoaWxkLmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTggQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0Pgor
ZnVuY3Rpb24gbW9kaWZ5KCkKK3sKKyAgICBzZWxmLm5hdmlnYXRlZC5sb2NhdGlvbi5hc3NpZ24o
ImphdmFzY3JpcHQ6IHRvcC5jaGlsZEZyYW1lV2FzTmF2aWdhdGVkKCk7Iik7Cit9Cis8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ibW9kaWZ5KCk7Ij4KKyAgICA8aWZyYW1lIG5hbWU9
Im5hdmlnYXRlZCIKKyAgICAgICAgICAgIHNyYz0ic2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9u
LW5hdmlnYXRlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIG5hbWU9ImZyYW1l
V2l0aFBsdWdpbiIKKyAgICAgICAgICAgIHNyYz0ic2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLWZy
YW1lLW9iamVjdC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmln
YXRpb24tbmF2aWdhdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFt
ZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1uYXZpZ2F0ZWQuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94
ZWQtaWZyYW1lLW5hdmlnYXRpb24tbmF2aWdhdGVkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsOSBAQAorPGh0bWw+Cis8aGVhZD4KKzwvaGVhZD4KKzxib2R5PgorPCEtLSBUaGlzIGZpbGUg
aXMgaW4gYSBzZXBhcmF0ZSBkb2N1bWVudCBpbiBvcmRlciB0byBzaGFyZSBvcmlnaW4gd2l0aCB0
aGUKK3BhcmVudCBkb2N1bWVudC4gLS0+Citpbm5vY2VudCBjb250ZW50Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlm
cmFtZS1uYXZpZ2F0aW9uLXBhcmVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50Lmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2Fu
ZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXBhcmVudC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDggQEAKKzxodG1sPgorPGJvZHk+CisgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zY3Jp
cHRzIGFsbG93LXNhbWUtb3JpZ2luIgorICAgICAgICAgICAgc3JjPSJzYW5kYm94ZWQtaWZyYW1l
LW5hdmlnYXRpb24tc291cmNlLmh0bWwiPgorICAgIDwvaWZyYW1lPgorICAgIDxwIGlkPSdpbm5v
Y2VudF9jb250ZW50Jz5pbm5vY2VudCBjb250ZW50PC9wPgorPC9ib2R5PgorPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2
aWdhdGlvbi1zb3VyY2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1l
cy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXNvdXJjZS5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1p
ZnJhbWUtbmF2aWdhdGlvbi1zb3VyY2UuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMiBA
QAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBtb2RpZnkoKQoreworICAgIHNl
bGYucGFyZW50LmxvY2F0aW9uLmFzc2lnbignc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0ZWQuaHRt
bCcpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9J21vZGlmeSgpOyc+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMv
c2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZp
Z2F0aW9uLXRhcmdldGxpbmsuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMxIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dD4KKworLyoKKyAqIFNldCB0aGUgdGFyZ2V0IG9mIHRoZSBsaW5rIHRvICdYX3RhcmdldCcsIHdo
ZXJlIFggaXMgdGhlIG5hbWUgb2YKKyAqIHRoaXMgZnJhbWUuCisgKgorICogVGhlbiBjbGljayB0
aGUgbGluay4KKyAqLworCitmdW5jdGlvbiBjbGlja19saW5rKCkKK3sKKyAgICB2YXIgZXZlbnQg
PSBkb2N1bWVudC5jcmVhdGVFdmVudCgnTW91c2VFdmVudCcpOworICAgIGV2ZW50LmluaXRFdmVu
dCgnY2xpY2snLCB0cnVlLCB0cnVlKTsKKyAgICB2YXIgbGluayA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdsaW5rJyk7CisgICAgbGluay50YXJnZXQgPSBzZWxmLm5hbWUgKyAnX3RhcmdldCc7
CisgICAgbGluay5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+
CisKKzxib2R5IG9ubG9hZD0nY2xpY2tfbGluaygpOyc+CisKKyAgICA8YSBocmVmPSJzYW5kYm94
ZWQtaWZyYW1lLW5hdmlnYXRlZC5odG1sIiBpZD0ibGluayI+CisgICAgICAgIChsaW5rIHRyaWdn
ZXJlZCBieSBzY3JpcHQpCisgICAgPC9hPgorCis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9u
LXdpbmRvd29wZW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9y
ZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4uaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQt
aWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDMgQEAKKzxzY3JpcHQ+CisgICAgd2luZG93Lm9wZW4oImphdmFzY3JpcHQ6IG9wZW5lci5wYXJl
bnQud2luZG93T3BlbmVkKG9wZW5lcik7Iik7Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtYXBw
bGV0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2Vz
L3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1hcHBsZXQuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBs
dWdpbnMtZnJhbWUtYXBwbGV0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8L2hlYWQ+CisKKzxib2R5PgorICAgIDxhcHBsZXQgbmFtZT0iYXBwIgor
ICAgICAgICAgICAgY29kZWJhc2U9Ii4uLy4uL2RvbS9yZXNvdXJjZXMiCisgICAgICAgICAgICBj
b2RlPSJUZXN0QXBwbGV0IgorICAgIDwvYXBwbGV0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lu
cy1mcmFtZS1lbWJlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtZW1iZWQuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQt
aWZyYW1lLXBsdWdpbnMtZnJhbWUtZW1iZWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
MiBAQAorPGh0bWw+Cis8aGVhZD4KKzwvaGVhZD4KKworPGJvZHk+CisgICAgPGVtYmVkIGlkPSJw
bHVnaW4iIAorICAgICAgICAgICB0eXBlPSJhcHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0LW5ldHNj
YXBlIgorICAgICAgICAgICBzcmM9ImRhdGE6dGV4dC9wbGFpbiwiCisgICAgICAgICAgIHN0eWxl
PSJ3aWR0aDowOyBoZWlnaHQ6MCI+CisgICAgPC9lbWJlZD4KKzwvYm9keT4KKzwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBs
dWdpbnMtZnJhbWUtb2JqZWN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
cmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1vYmplY3QuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5k
Ym94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtb2JqZWN0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTEgQEAKKzxodG1sPgorPGhlYWQ+Cis8L2hlYWQ+CisKKzxib2R5PgorICAgIDxvYmpl
Y3QgaWQ9InBsdWdpbiIgCisgICAgICAgICAgICB0eXBlPSJhcHBsaWNhdGlvbi94LXdlYmtpdC10
ZXN0LW5ldHNjYXBlIgorICAgICAgICAgICAgc3R5bGU9IndpZHRoOjA7IGhlaWdodDowIj4KKyAg
ICA8L29iamVjdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXNjcmlwdC1keW5hbWljLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJh
bWUtc2NyaXB0LWR5bmFtaWMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXNjcmlwdC1keW5hbWljLmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMjYgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorCisg
ICAgZnJhbWUgPSB3aW5kb3cudG9wLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmcmFtZScpOwor
CisgICAgLy8gc2V0dGluZyB0aGUgc2FuZGJveCBmbGFnIGF0IHJ1bnRpbWUgc2hvdWxkIG5vdCB0
ZXJtaW5hdGUgYWxyZWFkeQorICAgIC8vIHJ1bm5pbmcgc2NyaXB0cyAoZS5nLiwgdGhpcyBvbmUp
CisKKyAgICBmcmFtZS5zYW5kYm94ID0gJ2FsbG93LXNhbWUtb3JpZ2luJzsgICAvLyBOTyBhbGxv
dy1zY3JpcHRzCisKKyAgICArK3dpbmRvdy50b3AuYWxsb3dlZEV4ZWN1dGVkOworCisgICAgLy8g
aG93ZXZlciwgbmV3IHNjcmlwdHMgKHN1Y2ggYXMgdGhlIG9ubG9hZCBvbmUgYmVsb3cpIHNob3Vs
ZAorICAgIC8vIG5vdCBydW4KKworICAgIGZ1bmN0aW9uIG9ubG9hZF9ob29rKCkKKyAgICB7Cisg
ICAgICAgICsrd2luZG93LnRvcC5kaXNhbGxvd2VkRXhlY3V0ZWQ7CisgICAgfTsKKworPC9zY3Jp
cHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0nb25sb2FkX2hvb2soKTsnPjwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQt
aWZyYW1lLXN0b3JhZ2UtYWxsb3dlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXN0b3JhZ2UtYWxsb3dlZC5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRi
b3hlZC1pZnJhbWUtc3RvcmFnZS1hbGxvd2VkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTkgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
CisKK3dpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICBzaG91bGRCZVRydWUoIndpbmRv
dy5vcGVuRGF0YWJhc2UoKSAhPSBudWxsIik7CisgICAgc2hvdWxkQmVUcnVlKCJ3aW5kb3cubG9j
YWxTdG9yYWdlICE9IG51bGwiKTsKKyAgICBzaG91bGRCZVRydWUoIndpbmRvdy5zZXNzaW9uU3Rv
cmFnZSAhPSBudWxsIik7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1zdG9yYWdlLWRpc2FsbG93
ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMv
c2FuZGJveGVkLWlmcmFtZS1zdG9yYWdlLWRpc2FsbG93ZWQuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXN0b3Jh
Z2UtZGlzYWxsb3dlZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5IEBACis8aHRtbD4K
KzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCit3aW5kb3cub25s
b2FkID0gZnVuY3Rpb24oKSB7CisgICAgc2hvdWxkQmVUcnVlKCJ3aW5kb3cub3BlbkRhdGFiYXNl
KCkgPT0gbnVsbCIpOworICAgIHNob3VsZEJlVHJ1ZSgid2luZG93LmxvY2FsU3RvcmFnZSA9PSBu
dWxsIik7CisgICAgc2hvdWxkQmVUcnVlKCJ3aW5kb3cuc2Vzc2lvblN0b3JhZ2UgPT0gbnVsbCIp
OworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLWRvY3VtZW50LWNvb2tpZS1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZy
YW1lLWRvY3VtZW50LWNvb2tpZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtZG9jdW1lbnQtY29va2ll
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACitUaGlzIHRlc3QgY2hl
Y2tzIHRoYXQgYSBTRUNVUklUWV9FUlIgZXhjZXB0aW9uIGlzIHJhaXNlZCB3aGlsZSBhY2Nlc3Np
bmcgZG9jdW1lbnQuZG9tYWluIGluIGEgc2FuZGJveGVkIGlmcmFtZSAod2l0aG91dCAiYWxsb3ct
b3JpZ2luIiBzZXQpLiBUaGlzIHRlc3Qgd2lsbCBwcmludCAiUEFTUyIgb24gc3VjY2Vzcy4KKwor
CisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+Jwor
LS0tLS0tLS0KK1BBU1MKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc2Fu
ZGJveGVkLWlmcmFtZS1kb2N1bWVudC1jb29raWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtZG9jdW1lbnQtY29va2ll
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Nh
bmRib3hlZC1pZnJhbWUtZG9jdW1lbnQtY29va2llLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMjUgQEAKKzxodG1sPgorPGhlYWQ+CisKKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Cit9CisK
Kzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKworICAgIDxwPlRoaXMgdGVzdCBjaGVja3Mg
dGhhdCBhIFNFQ1VSSVRZX0VSUiBleGNlcHRpb24gaXMgcmFpc2VkIHdoaWxlIGFjY2Vzc2luZyBk
b2N1bWVudC5kb21haW4KKyAgICBpbiBhIHNhbmRib3hlZCBpZnJhbWUgKHdpdGhvdXQgJnF1b3Q7
YWxsb3ctb3JpZ2luJnF1b3Q7IHNldCkuIFRoaXMgdGVzdCB3aWxsIHByaW50CisgICAgJnF1b3Q7
UEFTUyZxdW90OyBvbiBzdWNjZXNzLjwvcD4KKworICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3ct
c2NyaXB0cyIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZG9j
dW1lbnQtY29va2llLXJlYWQtZGVuaWVkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorPC9ib2R5Pgor
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3NhbmRib3hl
ZC1pZnJhbWUtbW9kaWZ5LXNlbGYtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc2FuZGJveGVkLWlmcmFtZS1tb2RpZnktc2VsZi1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3NhbmRib3hlZC1pZnJhbWUtbW9kaWZ5LXNlbGYtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDExIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogVW5zYWZlIEphdmFTY3Jp
cHQgYXR0ZW1wdCB0byBhY2Nlc3MgZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAw
L3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtbW9kaWZ5LXNlbGYuaHRtbCBmcm9tIGZyYW1lIHdp
dGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvc2FuZGJveGVk
LWlmcmFtZS1tb2RpZnktc2VsZi5odG1sLiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11
c3QgbWF0Y2guCisKK1RoaXMgaXMgYSAic2FuaXR5IiB0ZXN0IGNhc2UgdG8gdmVyaWZ5IHRoYXQg
YSBzYW5kYm94ZWQgZnJhbWUgY2Fubm90IGJyZWFrIG91dCBvZiBpdHMgc2FuZGJveCBieSBtb2Rp
ZnlpbmcgaXRzIG93biBzYW5kYm94IGF0dHJpYnV0ZS4gVHdvIGF0dGVtcHRzIGFyZSBtYWRlOgor
CitGaXJzdCwgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIG1vZGlmeSB0aGUgc2FuZGJveCBhdHRyaWJ1
dGUgb2YgdGhlICJzZWxmIiBvYmplY3QsIHJlZmVycmluZyB0byB0aGUgZnJhbWUncyB3aW5kb3cu
IFRoaXMgc2hvdWxkIG5vdCBoYXZlIGFueSBlZmZlY3QgKHRoZSBhdHRyaWJ1dGUgaXMgYXNzb2Np
YXRlZCB3aXRoIHRoZSBpZnJhbWUgRE9NIG5vZGUsIG5vdCB0aGUgd2luZG93KS4gTm8gd2Fybmlu
ZyBpcyBleHBlY3RlZC4KK1NlY29uZCwgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIG1vZGlmeSB0aGUg
aWZyYW1lIERPTSBvYmplY3QncyBzYW5kYm94IGF0dHJpYnV0ZS4gQSB3YXJuaW5nIG1lc3NhZ2Ug
KGFib3V0IGNyb3NzLXNpdGUgc2NyaXB0aW5nKSBpcyBleHBlY3RlZCwgYW5kIHRoZSBzYW5kYm94
IGF0dHJpYnV0ZSBzaG91bGQgcmVtYWluIGludGFjdC4KK1RoaXMgdGVzdCB3aWxsIHByaW50ICJQ
QVNTIiBvbiBzdWNjZXNzLgorCitQQVNTCisKKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLW1vZGlmeS1zZWxmLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLW1vZGlm
eS1zZWxmLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3NhbmRib3hlZC1pZnJhbWUtbW9kaWZ5LXNlbGYuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw0MiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MID0gKGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJmIikuc2FuZGJveCAhPSAiYWxsb3ctc2NyaXB0cyIpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA/ICJGQUlMOiBzYW5kYm94IGF0dHJpYnV0ZSBtb2Rp
ZmllZCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDog
IlBBU1MiOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+CisgICAgPHA+VGhpcyBp
cyBhICZxdW90O3Nhbml0eSZxdW90OyB0ZXN0IGNhc2UgdG8gdmVyaWZ5IHRoYXQgYSBzYW5kYm94
ZWQgCisgICAgZnJhbWUgY2Fubm90IGJyZWFrIG91dCBvZiBpdHMgc2FuZGJveCBieSBtb2RpZnlp
bmcgaXRzIG93biBzYW5kYm94CisgICAgYXR0cmlidXRlLiBUd28gYXR0ZW1wdHMgYXJlIG1hZGU6
PC9wPgorICAgIAorICAgIDxvbD4KKyAgICAgICAgPGxpPkZpcnN0LCBhbiBhdHRlbXB0IGlzIG1h
ZGUgdG8gbW9kaWZ5IHRoZSBzYW5kYm94IGF0dHJpYnV0ZSBvZiB0aGUKKyAgICAgICAgJnF1b3Q7
c2VsZiZxdW90OyBvYmplY3QsIHJlZmVycmluZyB0byB0aGUgZnJhbWUncyB3aW5kb3cuIFRoaXMg
c2hvdWxkCisgICAgICAgIG5vdCBoYXZlIGFueSBlZmZlY3QgKHRoZSBhdHRyaWJ1dGUgaXMgYXNz
b2NpYXRlZCB3aXRoIHRoZSBpZnJhbWUgRE9NCisgICAgICAgIG5vZGUsIG5vdCB0aGUgd2luZG93
KS4gTm8gd2FybmluZyBpcyBleHBlY3RlZC48L2xpPgorICAgICAgICA8bGk+U2Vjb25kLCBhbiBh
dHRlbXB0IGlzIG1hZGUgdG8gbW9kaWZ5IHRoZSBpZnJhbWUgRE9NIG9iamVjdCdzIHNhbmRib3gK
KyAgICAgICAgYXR0cmlidXRlLiBBIHdhcm5pbmcgbWVzc2FnZSAoYWJvdXQgY3Jvc3Mtc2l0ZSBz
Y3JpcHRpbmcpIGlzIGV4cGVjdGVkLAorICAgICAgICBhbmQgdGhlIHNhbmRib3ggYXR0cmlidXRl
IHNob3VsZCByZW1haW4gaW50YWN0LjwvbGk+CisgICAgPC9vbD4KKyAgICAKKyAgICA8cD5UaGlz
IHRlc3Qgd2lsbCBwcmludCAmcXVvdDtQQVNTJnF1b3Q7IG9uIHN1Y2Nlc3MuPC9wPgorCisgICAg
PHAgaWQ9InJlc3VsdCI+RkFJTDwvcD4KKworICAgIDxpZnJhbWUgaWQ9ImYiCisgICAgICAgICAg
ICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIgorICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2Fu
ZGJveGVkLWlmcmFtZS1tb2RpZnktc2VsZi5odG1sIj4KKyAgICA8L2lmcmFtZT4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklF
RC1zYW5kYm94ZWQtaWZyYW1lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQtc2FuZGJveGVkLWlmcmFtZS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hz
cy1ERU5JRUQtc2FuZGJveGVkLWlmcmFtZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsOCBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFVuc2FmZSBKYXZhU2NyaXB0IGF0
dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1
cml0eS94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUuaHRtbCBmcm9tIGZyYW1lIHdpdGggVVJM
IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMveHNzLURFTklFRC1zYW5k
Ym94ZWQtaWZyYW1lLWF0dGFja2VyLmh0bWwuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMg
bXVzdCBtYXRjaC4KKworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFVuc2FmZSBKYXZhU2NyaXB0
IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9z
ZWN1cml0eS94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUuaHRtbCBmcm9tIGZyYW1lIHdpdGgg
VVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMveHNzLURFTklFRC1z
YW5kYm94ZWQtaWZyYW1lLWF0dGFja2VyLmh0bWwuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9y
dHMgbXVzdCBtYXRjaC4KKworVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgc2FuZGJveGVkIGlmcmFt
ZSBwcmV2ZW50cyBjcm9zcy1kb21haW4gc2NyaXB0IGFjY2Vzcy4gSXQgd2lsbCBwcmludCAiUEFT
UyIgb24gc3VjY2Vzcy4KKworCitQQVNTOiBjcm9zcy1kb21haW4gc2NyaXB0IGFjY2VzcyBkaXNh
bGxvd2VkIGZyb20gc2FuZGJveGVkIGlmcmFtZQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQtc2FuZGJveGVkLWlm
cmFtZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwyOSBAQAorPGh0bWw+Cis8c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKwordmFyIGRvY1Jl
ZiA9IHVuZGVmaW5lZDsKKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCA9CisgICAgICAgIChkb2NS
ZWYgPyAiRkFJTDogY3Jvc3MtZG9tYWluIHNjcmlwdCBhY2Nlc3MgYWxsb3dlZCBmcm9tIHNhbmRi
b3hlZCBpZnJhbWUiCisgICAgICAgICAgICAgICAgOiAiUEFTUzogY3Jvc3MtZG9tYWluIHNjcmlw
dCBhY2Nlc3MgZGlzYWxsb3dlZCBmcm9tIHNhbmRib3hlZCBpZnJhbWUiKTsKK30KKworPC9zY3Jp
cHQ+Cis8Ym9keT4KKworICAgIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHNhbmRib3hlZCBp
ZnJhbWUgcHJldmVudHMgY3Jvc3MtZG9tYWluCisgICAgc2NyaXB0IGFjY2Vzcy4gSXQgd2lsbCBw
cmludCAmcXVvdDtQQVNTJnF1b3Q7IG9uIHN1Y2Nlc3MuPC9wPgorCisgICAgPGlmcmFtZSBzYW5k
Ym94PSJhbGxvdy1zY3JpcHRzIgorICAgICAgICAgICAgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgw
MDAvc2VjdXJpdHkvcmVzb3VyY2VzL3hzcy1ERU5JRUQtc2FuZGJveGVkLWlmcmFtZS1hdHRhY2tl
ci5odG1sIj4KKyAgICA8L2lmcmFtZT4KKyAgICAKKyAgICA8ZGl2IGlkPSJjb25zb2xlIj5GQUlM
OiBTY3JpcHQgZGlkbid0IHJ1bjwvZGl2PgorICAgIAorPC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFt
ZS1kb2N1bWVudC1jb29raWUtcmVhZC1kZW5pZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWRvY3Vt
ZW50LWNvb2tpZS1yZWFkLWRlbmllZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1kb2N1bWVudC1j
b29raWUtcmVhZC1kZW5pZWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNSBAQAorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0UmVzdWx0IikuaW5uZXJIVE1MID0gKGZ1bmN0aW9uKCkg
eworICAgICAgICB0cnkgeworICAgICAgICAgICAgdmFyIGNvb2tpZSA9IGRvY3VtZW50LmNvb2tp
ZTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoZXJyKSB7CisgICAgICAgICAgICBpZiAoZXJy
Lm5hbWUuaW5kZXhPZigiU0VDVVJJVFlfRVJSIikgIT0gLTEpCisgICAgICAgICAgICAgICAgcmV0
dXJuICJQQVNTIjsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiAiRkFJTDogU0VDVVJJVFlf
RVJSIG5vdCByYWlzZWQiOworICAgIH0pKCk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHkgb25sb2FkPSJydW5UZXN0KCk7Ij4KKyAgICA8cCBpZD0idGVzdFJlc3VsdCI+RkFJTDogU2Ny
aXB0IGRpZG4ndCBydW48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW1vZGlmeS1zZWxm
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNv
dXJjZXMvc2FuZGJveGVkLWlmcmFtZS1tb2RpZnktc2VsZi5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFt
ZS1tb2RpZnktc2VsZi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdD4KKworLy8gdGhpcyBhc3NpZ25tZW50IHNob3VsZCBoYXZlIG5vIGVm
ZmVjdCBvbiBzYW5kYm94IHN0YXR1cworc2VsZi5zYW5kYm94ID0gJ2FsbG93LXNjcmlwdHMgYWxs
b3ctc2FtZS1vcmlnaW4gaGFja2VkLXZpYS13aW5kb3ctb2JqZWN0JzsKKworLy8gdGhpcyBzaG91
bGQgYmUgcHJldmVudGVkIGJ5IHRoZSBzYW5kYm94ICdvcmlnaW4nIGZsYWcKK2lmICh0b3AuZG9j
dW1lbnQpCisgICAgdG9wLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmJykuc2FuZGJveCA9ICdh
bGxvdy1zY3JpcHRzIGFsbG93LXNhbWUtb3JpZ2luIGhhY2tlZC12aWEtZG9tJzsKKworPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3Jlc291cmNlcy94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUtYXR0YWNrZXIuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy94
c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUtYXR0YWNrZXIuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL3hzcy1ERU5JRUQtc2Fu
ZGJveGVkLWlmcmFtZS1hdHRhY2tlci5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcgQEAK
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorICAgIHRvcC5kb2NSZWYgPSBwYXJlbnQuZG9jdW1l
bnQ7ICAvLyBhY2Nlc3MgcGFyZW50J3MgRE9NIHRyZWU6IHNob3VsZCBub3QgYmUgYWxsb3dlZAor
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtYWxsb3ctZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1hbGxvdy1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Fj
Y2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtYWxsb3ctZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDkgQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHNhbmRib3hlZCBp
ZnJhbWUgaGFzIFhtbEh0dHBSZXF1ZXN0IGFjY2VzcyB0byB0aGUgc2VydmVyIHRoYXQgYWNjZXB0
cyBhbGwgZG9tYWlucy4gSXQgd2lsbCBwcmludCAiUEFTUyIgb24gc3VjY2Vzcy4KKworCisKKy0t
LS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0t
LS0KK1BBU1M6IFNhbmRib3hlZCBpZnJhbWUgWEhSIGFjY2VzcyBhbGxvd2VkLgorCkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRi
b3hlZC1pZnJhbWUtYWxsb3cuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtYWxsb3cu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVl
c3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1hbGxvdy5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDE4IEBACis8aHRtbD4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Cit9CisK
Kzwvc2NyaXB0PgorPGJvZHk+CisgICAgPHA+VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgc2FuZGJv
eGVkIGlmcmFtZSBoYXMgWG1sSHR0cFJlcXVlc3QgYWNjZXNzCisgICAgdG8gdGhlIHNlcnZlciB0
aGF0IGFjY2VwdHMgYWxsIGRvbWFpbnMuIEl0IHdpbGwgcHJpbnQgJnF1b3Q7UEFTUyZxdW90OyBv
biBzdWNjZXNzLjwvcD4KKyAgICAKKyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93LXNjcmlwdHMi
IHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nl
c3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93LWlmcmFtZS5odG1sIiBzdHlsZT0id2lk
dGg6IDUwMHB4OyI+CisgICAgPC9pZnJhbWU+IAorICAgIAorPC9ib2R5PiAKKzwvaHRtbD4gCklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9s
LXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hl
ZC1pZnJhbWUtZGVuaWVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFt
ZS1kZW5pZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAKK1RoaXMg
dGVzdCB2ZXJpZmllcyB0aGF0IHNhbmRib3hlZCBpZnJhbWUgZG9lcyBub3QgaGF2ZSBYbWxIdHRw
UmVxdWVzdCBhY2Nlc3MgdG8gaXRzIHNlcnZlci4gSXQgd2lsbCBwcmludCAiUEFTUyIgb24gc3Vj
Y2Vzcy4KKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUw
LS0+LS0+JworLS0tLS0tLS0KK1BBU1M6IEV4Y2VwdGlvbiB0aHJvd24uIFNhbmRib3hlZCBpZnJh
bWUgWEhSIGFjY2VzcyB3YXMgZGVuaWVkIGluICdzZW5kJy4gW05FVFdPUktfRVJSOiBYTUxIdHRw
UmVxdWVzdCBFeGNlcHRpb24gMTAxXS4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtd2l0aG91
dC13aWxkY2FyZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmll
ZC13aXRob3V0LXdpbGRjYXJkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlm
cmFtZS1kZW5pZWQtd2l0aG91dC13aWxkY2FyZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTAgQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHNhbmRib3hlZCBpZnJhbWUg
ZG9lcyBub3QgaGF2ZSBYbWxIdHRwUmVxdWVzdCBhY2Nlc3MgdG8gaXRzIHNlcnZlciB3aXRoICJB
Y2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4iIHNldCB0byBpdHMgb3duIG9yaWdpbiAoMTI3LjAu
MC4xKS4KKworVGhpcyB0ZXN0IHdpbGwgcHJpbnQgIlBBU1MiIG9uIHN1Y2Nlc3MuCisKKworCist
LS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0t
LS0tCitQQVNTOiBFeGNlcHRpb24gdGhyb3duLiBTYW5kYm94ZWQgaWZyYW1lIFhIUiBhY2Nlc3Mg
d2FzIGRlbmllZCBpbiAnc2VuZCcuIFtORVRXT1JLX0VSUjogWE1MSHR0cFJlcXVlc3QgRXhjZXB0
aW9uIDEwMV0uCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Fj
Y2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Fj
Y2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
YWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtd2l0aG91dC13aWxkY2FyZC5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIyIEBACis8aHRtbD4KKzxzY3JpcHQ+CisKK2lm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENoaWxkRnJhbWVz
QXNUZXh0KCk7Cit9CisKKzwvc2NyaXB0PgorPGJvZHk+CisKKyAgICA8cD5UaGlzIHRlc3QgdmVy
aWZpZXMgdGhhdCBzYW5kYm94ZWQgaWZyYW1lIGRvZXMgbm90IGhhdmUgWG1sSHR0cFJlcXVlc3Qg
YWNjZXNzIHRvCisgICAgaXRzIHNlcnZlciB3aXRoICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1Pcmln
aW4iIHNldCB0byBpdHMgb3duIG9yaWdpbiAoMTI3LjAuMC4xKS48L3A+CisgICAgCisgICAgPHA+
VGhpcyB0ZXN0IHdpbGwgcHJpbnQgJnF1b3Q7UEFTUyZxdW90OyBvbiBzdWNjZXNzLjwvcD4KKwor
ICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyIKKyAgICAgICAgICAgIHNyYz0iaHR0
cDovLzEyNy4wLjAuMTo4MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJv
bC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC13aXRob3V0LXdpbGRjYXJkLWlmcmFtZS5odG1sIiBz
dHlsZT0id2lkdGg6IDUwMHB4OyI+CisgICAgPC9pZnJhbWU+CisgICAgCis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1j
b250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQt
aWZyYW1lLWRlbmllZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5IEBACis8aHRtbD4gCis8c2NyaXB0PgorCitp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBDaGlsZEZyYW1l
c0FzVGV4dCgpOworfQorCis8L3NjcmlwdD4KKworPGJvZHk+IAorICAgIDxwPlRoaXMgdGVzdCB2
ZXJpZmllcyB0aGF0IHNhbmRib3hlZCBpZnJhbWUgZG9lcyBub3QgaGF2ZSBYbWxIdHRwUmVxdWVz
dCBhY2Nlc3MKKyAgICB0byBpdHMgc2VydmVyLiBJdCB3aWxsIHByaW50ICZxdW90O1BBU1MmcXVv
dDsgb24gc3VjY2Vzcy48L3A+CisgICAgCisgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zY3Jp
cHRzIgorICAgICAgICAgICAgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAveG1saHR0cHJlcXVl
c3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWlmcmFt
ZS5odG1sIiBzdHlsZT0id2lkdGg6IDUwMHB4OyI+CisgICAgPC9pZnJhbWU+IAorPC9ib2R5PiAK
KzwvaHRtbD4gCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jl
c291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93LWlmcmFtZS5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVz
b3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtYWxsb3ctaWZyYW1lLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jl
c291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93LWlmcmFtZS5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI1IEBACis8aHRtbD4gCis8Ym9keT4gCis8cHJlIGlk
PSdjb25zb2xlJz48L3ByZT4gCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+IAorCitk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IChmdW5jdGlvbigp
IHsgCisgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdDsgCisgCisgICAgdHJ5IHsgCisg
ICAgICAgIHhoci5vcGVuKCJHRVQiLCAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL3htbGh0dHByZXF1
ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93LmNnaSIs
IGZhbHNlKTsgCisgICAgfSBjYXRjaChlKSB7IAorICAgICAgICByZXR1cm4gIkZBSUw6IEV4Y2Vw
dGlvbiB0aHJvd24uIFNhbmRib3hlZCBpZnJhbWUgWEhSIGFjY2VzcyBpcyBub3QgYWxsb3dlZCBp
biAnb3BlbicuIFsiICsgZS5tZXNzYWdlICsgIl0uIjsgCisgICAgfSAKKyAKKyAgICB0cnkgeyAK
KyAgICAgICAgeGhyLnNlbmQoKTsgCisgICAgfSBjYXRjaChlKSB7IAorICAgICAgICByZXR1cm4g
IkZBSUw6IEV4Y2VwdGlvbiB0aHJvd24uIFNhbmRib3hlZCBpZnJhbWUgWEhSIGFjY2VzcyBpcyBu
b3QgYWxsb3dlZCBpbiAnc2VuZCcuIFsiICsgZS5tZXNzYWdlICsgIl0uIjsgCisgICAgfSAKKyAK
KyAgICByZXR1cm4geGhyLnJlc3BvbnNlVGV4dDsgCit9KSgpOyAKKzwvc2NyaXB0PiAKKzwvYm9k
eT4gCis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93LmNnaQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNl
cy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93LmNnaQkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vz
cy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtYWxsb3cuY2dpCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDggQEAKKyMhL3Vzci9iaW4vcGVybCAtd1QKK3VzZSBzdHJpY3Q7CisKK3ByaW50ICJDb250
ZW50LVR5cGU6IHRleHQvcGxhaW5cbiI7CitwcmludCAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctQ3Jl
ZGVudGlhbHM6IHRydWVcbiI7CitwcmludCAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luOiAq
XG5cbiI7CisKK3ByaW50ICJQQVNTOiBTYW5kYm94ZWQgaWZyYW1lIFhIUiBhY2Nlc3MgYWxsb3dl
ZC5cbiI7CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93
LmNnaQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQogICArICoKCkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJv
bC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJv
bC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC1pZnJhbWUuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250
cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWlmcmFtZS5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDI3IEBACis8aHRtbD4gCis8Ym9keT4gCis8cHJlIGlkPSdjb25zb2xlJz48L3ByZT4g
Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+IAorCitkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IChmdW5jdGlvbigpIHsKKyAgICB2YXIgeGhyID0g
bmV3IFhNTEh0dHBSZXF1ZXN0OyAKKyAKKyAKKyAgICB0cnkgeyAKKyAgICAgICAgeGhyLm9wZW4o
IkdFVCIsICJodHRwOi8vMTI3LjAuMC4xOjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2Fj
Y2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLmNnaSIsIGZhbHNlKTsgCisgICAg
fSBjYXRjaChlKSB7IAorICAgICAgICByZXR1cm4gIkZBSUw6IEV4Y2VwdGlvbiB0aHJvd24uIFNh
bmRib3hlZCBpZnJhbWUgWEhSIGFjY2VzcyBpcyBub3QgYWxsb3dlZCBpbiAnb3BlbicuIFsiICsg
ZS5tZXNzYWdlICsgIl0uIjsgCisgICAgfSAKKyAKKyAgICB0cnkgeyAKKyAgICAgICAgeGhyLnNl
bmQoKTsgCisgICAgfSBjYXRjaChlKSB7IAorICAgICAgICByZXR1cm4gIlBBU1M6IEV4Y2VwdGlv
biB0aHJvd24uIFNhbmRib3hlZCBpZnJhbWUgWEhSIGFjY2VzcyB3YXMgZGVuaWVkIGluICdzZW5k
Jy4gWyIgKyBlLm1lc3NhZ2UgKyAiXS4iOyAKKyAgICB9CisgCisgICAgcmV0dXJuIHhoci5yZXNw
b25zZVRleHQ7IAorfSkoKTsKKyAgCis8L3NjcmlwdD4gCis8L2JvZHk+IAorPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNz
LWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtd2l0aG91dC13aWxkY2FyZC1pZnJhbWUu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC13aXRob3V0
LXdpbGRjYXJkLWlmcmFtZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlm
cmFtZS1kZW5pZWQtd2l0aG91dC13aWxkY2FyZC1pZnJhbWUuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwyNiBAQAorPGh0bWw+Cis8Ym9keT4KKzxwcmUgaWQ9J2NvbnNvbGUnPjwvcHJlPgor
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCitkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnY29uc29sZScpLmlubmVySFRNTCA9IChmdW5jdGlvbigpIHsKKyAgICB2YXIgeGhyID0gbmV3
IFhNTEh0dHBSZXF1ZXN0OworCisgICAgdHJ5IHsKKyAgICAgICAgeGhyLm9wZW4oIkdFVCIsICJo
dHRwOi8vMTI3LjAuMC4xOjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250
cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQuY2dpIiwgZmFsc2Up
OworICAgIH0gY2F0Y2goZSkgeworICAgICAgICByZXR1cm4gIkZBSUw6IEV4Y2VwdGlvbiB0aHJv
d24uIFNhbmRib3hlZCBpZnJhbWUgWEhSIGFjY2VzcyBpcyBub3QgYWxsb3dlZCBpbiAnb3Blbicu
IFsiICsgZS5tZXNzYWdlICsgIl0uIjsKKyAgICB9CisKKyAgICB0cnkgeworICAgICAgICB4aHIu
c2VuZCgpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICByZXR1cm4gIlBBU1M6IEV4Y2VwdGlv
biB0aHJvd24uIFNhbmRib3hlZCBpZnJhbWUgWEhSIGFjY2VzcyB3YXMgZGVuaWVkIGluICdzZW5k
Jy4gWyIgKyBlLm1lc3NhZ2UgKyAiXS4iOworICAgIH0KKworICAgIHJldHVybiB4aHIucmVzcG9u
c2VUZXh0OworfSkoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJv
bC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC13aXRob3V0LXdpbGRjYXJkLmNnaQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nl
c3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC13aXRob3V0LXdpbGRjYXJkLmNnaQko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVz
b3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2ls
ZGNhcmQuY2dpCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAKKyMhL3Vzci9iaW4vcGVybCAt
d1QKK3VzZSBzdHJpY3Q7CisKK3ByaW50ICJDb250ZW50LVR5cGU6IHRleHQvcGxhaW5cbiI7Citw
cmludCAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctQ3JlZGVudGlhbHM6IHRydWVcbiI7CitwcmludCAi
QWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luOiBodHRwOi8vMTI3LjAuMC4xOjgwMDBcblxuIjsK
KworcHJpbnQgIkZBSUw6IFNhbmRib3hlZCBpZnJhbWUgWEhSIGFjY2VzcyBhbGxvd2VkLlxuIjsK
ClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVl
c3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhv
dXQtd2lsZGNhcmQuY2dpCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiAgICsgKgoK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2Fj
Y2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLmNnaQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29u
dHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC5jZ2kJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1z
YW5kYm94ZWQtaWZyYW1lLWRlbmllZC5jZ2kJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNiBAQAor
IyEvdXNyL2Jpbi9wZXJsIC13VAordXNlIHN0cmljdDsKKworcHJpbnQgIkNvbnRlbnQtVHlwZTog
dGV4dC9wbGFpblxuXG4iOworCitwcmludCAiRkFJTDogU2FuZGJveGVkIGlmcmFtZSBYSFIgYWNj
ZXNzIGFsbG93ZWQuXG4iOwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlm
cmFtZS1kZW5pZWQuY2dpCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiAgICsgKgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44069</attachid>
            <date>2009-12-01 05:09:27 -0800</date>
            <delta_ts>2009-12-01 15:28:50 -0800</delta_ts>
            <desc>Slightly revised patch (added defensive FrameLoader initialization)</desc>
            <filename>sandbox-r51076.patch</filename>
            <type>text/plain</type>
            <size>99742</size>
            <attacher name="Patrik Persson">patrik.j.persson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTA3NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODggQEAKKzIwMDktMTItMDEgIFBhdHJpayBQZXJzc29uICA8cGF0cmlrLmoucGVy
c3NvbkBlcmljc3Nvbi5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wbGVtZW50IEhUTUw1IHNhbmRib3ggYXR0cmlidXRlIGZvciBpZnJhbWVz
LgorICAgICAgICBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS90ZXh0LWxldmVsLXNlbWFudGlj
cy5odG1sI2F0dHItaWZyYW1lLXNhbmRib3gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMjg4CisKKyAgICAgICAgVGVzdHM6IGZhc3QvZnJhbWVzL3Nh
bmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmcuaHRtbAorICAgICAgICAgICAgICAgZmFz
dC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1mb3Jtcy5odG1sCisgICAgICAgICAgICAgICBmYXN0
L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tYWxsb3dlZC5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50Lmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlv
bi10YXJnZXRsaW5rLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1p
ZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZnJh
bWVzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zy
YW1lcy9zYW5kYm94ZWQtaWZyYW1lLXNjcmlwdGluZy5odG1sCisgICAgICAgICAgICAgICBmYXN0
L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXN0b3JhZ2UuaHRtbAorICAgICAgICAgICAgICAgaHR0
cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLWRvY3VtZW50LWNvb2tpZS5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtbW9kaWZ5
LXNlbGYuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVE
LXNhbmRib3hlZC1pZnJhbWUuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy94bWxodHRw
cmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93Lmh0bWwKKyAgICAg
ICAgICAgICAgIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJv
eGVkLWlmcmFtZS1kZW5pZWQtd2l0aG91dC13aWxkY2FyZC5odG1sCisgICAgICAgICAgICAgICBo
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUt
ZGVuaWVkLmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNw
cDogc2FuZGJveGluZyBuYXZpZ2F0aW9uCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVXaW5kb3cp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOiBzYW5kYm94aW5n
IHNjcmlwdHMKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmlzRW5hYmxlZCk6
CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojpwcm9jZXNzSHR0cEVxdWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpjb29raWUp
OiByYWlzZSBleGNlcHRpb24gd2hlbiBhY2Nlc3NlZCBmcm9tIHNhbmRib3gKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpzZXRDb29raWUpOiByYWlzZSBleGNlcHRpb24gd2hlbiBhY2Nlc3Nl
ZCBmcm9tIHNhbmRib3gKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojppbml0U2VjdXJpdHlD
b250ZXh0KTogdXBkYWUgc2FuZGJveCBzdGF0dXMKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojp1cGRhdGVTYW5kYm94RmxhZ3MpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5j
cHA6IHNhbmRib3hpbmcgYXBwbGV0cworICAgICAgICAoV2ViQ29yZTo6SFRNTEFwcGxldEVsZW1l
bnQ6OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50
OjpyZW5kZXJXaWRnZXRGb3JKU0JpbmRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBcHBs
ZXRFbGVtZW50OjpjYW5FbWJlZEphdmEpOgorICAgICAgICAqIGh0bWwvSFRNTEFwcGxldEVsZW1l
bnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbjoKKyAgICAgICAgKiBo
dG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHA6IG1hbmFnZW1lbnQgb2Ygc2FuZGJveCBmbGFn
cyBhcyBzdGF0ZWQgaW4gYXR0cmlidXRlCisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVPd25l
ckVsZW1lbnQ6OkhUTUxGcmFtZU93bmVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RnJhbWVPd25lckVsZW1lbnQ6OnNldFNhbmRib3hGbGFncyk6CisgICAgICAgICogaHRtbC9IVE1M
RnJhbWVPd25lckVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxl
bWVudDo6c2FuZGJveEZsYWdzKToKKyAgICAgICAgKiBodG1sL0hUTUxJRnJhbWVFbGVtZW50LmNw
cDogc2FuZGJveCBhdHRyaWJ1dGUgcGFyc2luZworICAgICAgICAoV2ViQ29yZTo6cGFyc2VTYW5k
Ym94QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJRnJhbWVFbGVtZW50OjpwYXJz
ZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGw6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0Q29va2llcyk6CisgICAgICAgICogbG9h
ZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXNz
ZXNBY2Nlc3NDb250cm9sQ2hlY2spOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6RnJhbWVMb2FkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OnN1Ym1pdEZvcm0pOiBzYW5kYm94aW5nIGZvcm1zCisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlcjo6cmVxdWVzdE9iamVjdCk6IHNhbmRib3hpbmcgcGx1Z2lucworICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OnNob3VsZEFsbG93TmF2aWdhdGlvbik6IHNhbmRib3hpbmcgbmF2
aWdhdGlvbgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnVwZGF0ZVNhbmRib3hGbGFn
cyk6IHByb3BhZ2F0aW9uIG9mIHNhbmRib3ggZmxhZ3MKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVM
b2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpvd25lckVsZW1lbnRTYW5k
Ym94RmxhZ3NDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjppc1NhbmRi
b3hlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c2FuZGJveEZsYWdzKToKKyAg
ICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6KToK
KyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6IGRpc2FibGUgc3RvcmFnZSBhbmQgZGF0YWJh
c2VzIGluIHNhbmRib3hlZCBmcmFtZXMKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6c2Vz
c2lvblN0b3JhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpsb2NhbFN0b3JhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpvcGVuRGF0YWJhc2UpOgorICAgICAgICAq
IHBhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwOiBhZGRlZCBzYW5kYm94aW5nIHN0YXR1cworICAgICAg
ICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW46OmNhblJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW46OnRvU3RyaW5nKToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luLmg6CisgICAgICAg
IChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6c2V0U2FuZGJveEZsYWdzKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luOjppc1NhbmRib3hlZCk6CisgICAgICAgIChXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNzRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW46OmNhbkFjY2Vzc1N0b3JhZ2UpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpk
aWRSZWNlaXZlRGF0YSk6CisKIDIwMDktMTEtMTcgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgpJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9uIDUx
MDc2KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc0NCw2ICs3NDQsMTAgQEAgc3RhdGljIEZyYW1lKiBjcmVhdGVXaW5kb3co
RXhlY1N0YXRlKiBleAogICAgIEFTU0VSVChsZXhpY2FsRnJhbWUpOwogICAgIEFTU0VSVChkeW5h
bWljRnJhbWUpOwogCisgICAgLy8gU2FuZGJveGVkIGlmcmFtZXMgY2Fubm90IG9wZW4gbmV3IGF1
eGlsaWFyeSBicm93c2luZyBjb250ZXh0cy4KKyAgICBpZiAobGV4aWNhbEZyYW1lICYmIGxleGlj
YWxGcmFtZS0+bG9hZGVyKCktPmlzU2FuZGJveGVkKFNhbmRib3hOYXZpZ2F0aW9uKSkKKyAgICAg
ICAgcmV0dXJuIDA7CisKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdDsKIAogICAgIC8vIEZv
ciB3aGF0ZXZlciByZWFzb24sIEZpcmVmb3ggdXNlcyB0aGUgZHluYW1pY0dsb2JhbE9iamVjdCB0
byBkZXRlcm1pbmUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNw
cAkocmV2aXNpb24gNTEwNzYpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xs
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTIsNyArMjkyLDcgQEAgYm9vbCBTY3JpcHRDb250
cm9sbGVyOjphbnlQYWdlSXNQcm9jZXNzaQogYm9vbCBTY3JpcHRDb250cm9sbGVyOjppc0VuYWJs
ZWQoKQogewogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IG1fZnJhbWUtPnNldHRpbmdzKCk7Ci0g
ICAgcmV0dXJuIG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+YWxsb3dKYXZhU2NyaXB0KHNl
dHRpbmdzICYmIHNldHRpbmdzLT5pc0phdmFTY3JpcHRFbmFibGVkKCkpOworICAgIHJldHVybiBt
X2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmFsbG93SmF2YVNjcmlwdChzZXR0aW5ncyAmJiBz
ZXR0aW5ncy0+aXNKYXZhU2NyaXB0RW5hYmxlZCgpICYmICFtX2ZyYW1lLT5sb2FkZXIoKS0+aXNT
YW5kYm94ZWQoU2FuZGJveFNjcmlwdHMpKTsKIH0KIAogdm9pZCBTY3JpcHRDb250cm9sbGVyOjph
dHRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKiBkZWJ1Z2dlcikKSW5kZXg6IFdlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJl
dmlzaW9uIDUxMDc2KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTczLDggKzIxNzMsMTAgQEAgdm9pZCBEb2N1bWVudDo6cHJvY2Vzc0h0dHBFcXVpdihj
b25zdCBTdAogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShlcXVp
diwgInNldC1jb29raWUiKSkgewogICAgICAgICAvLyBGSVhNRTogbWFrZSBzZXRDb29raWUgd29y
ayBvbiBYTUwgZG9jdW1lbnRzIHRvbzsgZS5nLiBpbiBjYXNlIG9mIDxodG1sOm1ldGEgLi4uLi4+
Ci0gICAgICAgIGlmIChpc0hUTUxEb2N1bWVudCgpKQotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
SFRNTERvY3VtZW50Kj4odGhpcyktPnNldENvb2tpZShjb250ZW50KTsKKyAgICAgICAgaWYgKGlz
SFRNTERvY3VtZW50KCkpIHsKKyAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7IC8vIEV4Y2Vw
dGlvbiAoZm9yIHNhbmRib3hlZCBkb2N1bWVudHMpIGlnbm9yZWQuCisgICAgICAgICAgICBzdGF0
aWNfY2FzdDxIVE1MRG9jdW1lbnQqPih0aGlzKS0+c2V0Q29va2llKGNvbnRlbnQsIGVjKTsKKyAg
ICAgICAgfQogICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZXF1aXYsICJjb250ZW50
LWxhbmd1YWdlIikpCiAgICAgICAgIHNldENvbnRlbnRMYW5ndWFnZShjb250ZW50KTsKICAgICBl
bHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShlcXVpdiwgIngtZG5zLXByZWZldGNoLWNvbnRyb2wi
KSkKQEAgLTI5OTIsMTEgKzI5OTQsMjAgQEAgRWxlbWVudCogRG9jdW1lbnQ6Om93bmVyRWxlbWVu
dCgpIGNvbnN0CiAgICAgcmV0dXJuIGZyYW1lKCktPm93bmVyRWxlbWVudCgpOwogfQogCi1TdHJp
bmcgRG9jdW1lbnQ6OmNvb2tpZSgpIGNvbnN0CitTdHJpbmcgRG9jdW1lbnQ6OmNvb2tpZShFeGNl
cHRpb25Db2RlJiBlYykgY29uc3QKIHsKICAgICBpZiAocGFnZSgpICYmICFwYWdlKCktPmNvb2tp
ZUVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCisgICAgLy8gRklYTUU6IFRo
ZSBIVE1MNSBET00gc3BlYyBzdGF0ZXMgdGhhdCB0aGlzIGF0dHJpYnV0ZSBjYW4gcmFpc2UgYW4K
KyAgICAvLyBJTlZBTElEX1NUQVRFX0VSUiBleGNlcHRpb24gb24gZ2V0dGluZyBpZiB0aGUgRG9j
dW1lbnQgaGFzIG5vCisgICAgLy8gYnJvd3NpbmcgY29udGV4dC4KKworICAgIGlmIChzZWN1cml0
eU9yaWdpbigpLT5pc1NhbmRib3hlZChTYW5kYm94T3JpZ2luKSkgeworICAgICAgICBlYyA9IFNF
Q1VSSVRZX0VSUjsKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIH0KKwogICAgIEtVUkwg
Y29va2llVVJMID0gdGhpcy0+Y29va2llVVJMKCk7CiAgICAgaWYgKGNvb2tpZVVSTC5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTMwMDQsMTEgKzMwMTUsMjAgQEAgU3Ry
aW5nIERvY3VtZW50Ojpjb29raWUoKSBjb25zdAogICAgIHJldHVybiBjb29raWVzKHRoaXMsIGNv
b2tpZVVSTCk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnNldENvb2tpZShjb25zdCBTdHJpbmcmIHZh
bHVlKQordm9pZCBEb2N1bWVudDo6c2V0Q29va2llKGNvbnN0IFN0cmluZyYgdmFsdWUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIGlmIChwYWdlKCkgJiYgIXBhZ2UoKS0+Y29va2llRW5hYmxl
ZCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICAvLyBGSVhNRTogVGhlIEhUTUw1IERPTSBzcGVj
IHN0YXRlcyB0aGF0IHRoaXMgYXR0cmlidXRlIGNhbiByYWlzZSBhbgorICAgIC8vIElOVkFMSURf
U1RBVEVfRVJSIGV4Y2VwdGlvbiBvbiBzZXR0aW5nIGlmIHRoZSBEb2N1bWVudCBoYXMgbm8KKyAg
ICAvLyBicm93c2luZyBjb250ZXh0LgorCisgICAgaWYgKHNlY3VyaXR5T3JpZ2luKCktPmlzU2Fu
ZGJveGVkKFNhbmRib3hPcmlnaW4pKSB7CisgICAgICAgIGVjID0gU0VDVVJJVFlfRVJSOworICAg
ICAgICByZXR1cm47CisgICAgfQorCiAgICAgS1VSTCBjb29raWVVUkwgPSB0aGlzLT5jb29raWVV
UkwoKTsKICAgICBpZiAoY29va2llVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
NDI1Nyw2ICs0Mjc3LDggQEAgdm9pZCBEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCgpCiAg
ICAgbV9jb29raWVVUkwgPSB1cmw7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c2V0U2Vj
dXJpdHlPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpKTsKIAorICAgIHVwZGF0ZVNh
bmRib3hGbGFncygpOworIAogICAgIGlmIChTZWN1cml0eU9yaWdpbjo6YWxsb3dTdWJzdGl0dXRl
RGF0YUFjY2Vzc1RvTG9jYWwoKSkgewogICAgICAgICAvLyBJZiB0aGlzIGRvY3VtZW50IHdhcyBs
b2FkZWQgd2l0aCBzdWJzdGl0dXRlRGF0YSwgdGhlbiB0aGUgZG9jdW1lbnQgY2FuCiAgICAgICAg
IC8vIGxvYWQgbG9jYWwgcmVzb3VyY2VzLiAgU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjc1NgpAQCAtNDMwNyw2ICs0MzI5LDEyIEBAIHZvaWQgRG9jdW1lbnQ6
OnNldFNlY3VyaXR5T3JpZ2luKFNlY3VyaXQKICAgICBpbml0RE5TUHJlZmV0Y2goKTsKIH0KIAor
dm9pZCBEb2N1bWVudDo6dXBkYXRlU2FuZGJveEZsYWdzKCkKK3sKKyAgICBpZiAobV9mcmFtZSAm
JiBzZWN1cml0eU9yaWdpbigpKQorICAgICAgICBzZWN1cml0eU9yaWdpbigpLT5zZXRTYW5kYm94
RmxhZ3MobV9mcmFtZS0+bG9hZGVyKCktPnNhbmRib3hGbGFncygpKTsKK30KKwogdm9pZCBEb2N1
bWVudDo6dXBkYXRlRm9jdXNBcHBlYXJhbmNlU29vbigpCiB7CiAgICAgaWYgKCFtX3VwZGF0ZUZv
Y3VzQXBwZWFyYW5jZVRpbWVyLmlzQWN0aXZlKCkpCkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDUxMDc2
KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjc1LDggKzY3
NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYsIEVsZW1lbnQq
IHRpdGxlRWxlbWVudCA9IDApOwogICAgIHZvaWQgcmVtb3ZlVGl0bGUoRWxlbWVudCogdGl0bGVF
bGVtZW50KTsKIAotICAgIFN0cmluZyBjb29raWUoKSBjb25zdDsKLSAgICB2b2lkIHNldENvb2tp
ZShjb25zdCBTdHJpbmcmKTsKKyAgICBTdHJpbmcgY29va2llKEV4Y2VwdGlvbkNvZGUmKSBjb25z
dDsKKyAgICB2b2lkIHNldENvb2tpZShjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CiAK
ICAgICBTdHJpbmcgcmVmZXJyZXIoKSBjb25zdDsKIApAQCAtODg3LDYgKzg4Nyw4IEBAIHB1Ymxp
YzoKICAgICAvLyAgICAgICB0aGF0IGFscmVhZHkgY29udGFpbnMgY29udGVudC4KICAgICB2b2lk
IHNldFNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7CiAKKyAgICB2b2lkIHVwZGF0ZVNh
bmRib3hGbGFncygpOyAvLyBTZXQgc2FuZGJveCBmbGFncyBhcyBkZXRlcm1pbmVkIGJ5IHRoZSBm
cmFtZS4KKwogICAgIGJvb2wgcHJvY2Vzc2luZ0xvYWRFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJvY2Vzc2luZ0xvYWRFdmVudDsgfQogCiAjaWYgRU5BQkxFKERBVEFCQVNFKQpJbmRleDogV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50
LmlkbAkocmV2aXNpb24gNTEwNzYpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTE2MiwxMCArMTYyLDkgQEAgbW9kdWxlIGNvcmUgewogI2VuZGlmCiAgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgVVJMOwogCi0gICAgICAgIC8vIEZJWE1F
OiB0aGUgRE9NIHNwZWMgc3RhdGVzIHRoYXQgdGhpcyBhdHRyaWJ1dGUgY2FuIAotICAgICAgICAv
LyByYWlzZSBhbiBleGNlcHRpb24gb24gc2V0dGluZy4KICAgICAgICAgICAgICAgICAgYXR0cmli
dXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIGNvb2tpZQotICAgICAgICAg
ICAgICAgICAgICAgLypzZXR0ZXIgcmFpc2VzIChET01FeGNlcHRpb24pKi87CisgICAgICAgICAg
ICAgICAgICAgICBzZXR0ZXIgcmFpc2VzIChET01FeGNlcHRpb24pLAorICAgICAgICAgICAgICAg
ICAgICAgZ2V0dGVyIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKIAogICAgICAgICAvLyBGSVhNRTog
dGhlIERPTSBzcGVjIGRvZXMgTk9UIGhhdmUgdGhpcyBhdHRyaWJ1dGUKICAgICAgICAgLy8gcmFp
c2luZyBhbiBleGNlcHRpb24uCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAJKHJl
dmlzaW9uIDUxMDc2KQorKysgV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2lu
Y2x1ZGUgIk1hcHBlZEF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIlJlbmRlckFwcGxldC5oIgorI2lu
Y2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMTA4LDkgKzEwOSw3IEBAIGJvb2wgSFRNTEFwcGxldEVsZW1lbnQ6
OnJlbmRlcmVySXNOZWVkZWQKIAogUmVuZGVyT2JqZWN0KiBIVE1MQXBwbGV0RWxlbWVudDo6Y3Jl
YXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7Ci0gICAgU2V0
dGluZ3MqIHNldHRpbmdzID0gZG9jdW1lbnQoKS0+c2V0dGluZ3MoKTsKLQotICAgIGlmIChzZXR0
aW5ncyAmJiBzZXR0aW5ncy0+aXNKYXZhRW5hYmxlZCgpKSB7CisgICAgaWYgKGNhbkVtYmVkSmF2
YSgpKSB7CiAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGFyZ3M7CiAKICAgICAgICAg
YXJncy5zZXQoImNvZGUiLCBnZXRBdHRyaWJ1dGUoY29kZUF0dHIpKTsKQEAgLTE0Miw4ICsxNDEs
NyBAQCBSZW5kZXJPYmplY3QqIEhUTUxBcHBsZXRFbGVtZW50OjpjcmVhdGVSCiAKIFJlbmRlcldp
ZGdldCogSFRNTEFwcGxldEVsZW1lbnQ6OnJlbmRlcldpZGdldEZvckpTQmluZGluZ3MoKSBjb25z
dAogewotICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50KCktPnNldHRpbmdzKCk7Ci0g
ICAgaWYgKCFzZXR0aW5ncyB8fCAhc2V0dGluZ3MtPmlzSmF2YUVuYWJsZWQoKSkKKyAgICBpZiAo
IWNhbkVtYmVkSmF2YSgpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFJlbmRlckFwcGxldCog
YXBwbGV0ID0gdG9SZW5kZXJBcHBsZXQocmVuZGVyZXIoKSk7CkBAIC0xNTMsNiArMTUxLDE1IEBA
IFJlbmRlcldpZGdldCogSFRNTEFwcGxldEVsZW1lbnQ6OnJlbmRlclcKICAgICByZXR1cm4gYXBw
bGV0OwogfQogCitib29sIEhUTUxBcHBsZXRFbGVtZW50OjpjYW5FbWJlZEphdmEoKSBjb25zdAor
eworICAgIGlmIChkb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5pc1NhbmRib3hlZChTYW5k
Ym94UGx1Z2lucykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFNldHRpbmdzKiBzZXR0
aW5ncyA9IGRvY3VtZW50KCktPnNldHRpbmdzKCk7CisgICAgcmV0dXJuIHNldHRpbmdzICYmIHNl
dHRpbmdzLT5pc0phdmFFbmFibGVkKCk7Cit9CisKIHZvaWQgSFRNTEFwcGxldEVsZW1lbnQ6OmZp
bmlzaFBhcnNpbmdDaGlsZHJlbigpCiB7CiAgICAgLy8gVGhlIHBhcnNlciBqdXN0IHJlYWNoZWQg
PC9hcHBsZXQ+LCBzbyBhbGwgdGhlIHBhcmFtcyBhcmUgYXZhaWxhYmxlIG5vdy4KSW5kZXg6IFdl
YkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9IVE1MQXBwbGV0RWxlbWVudC5oCShyZXZpc2lvbiA1MTA3NikKKysrIFdlYkNvcmUvaHRtbC9I
VE1MQXBwbGV0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw3IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCBSZW5kZXJXaWRnZXQqIHJlbmRlcldpZGdldEZvckpTQmluZGluZ3Mo
KSBjb25zdDsKIAogICAgIHZvaWQgc2V0dXBBcHBsZXQoKSBjb25zdDsKKyAgICBib29sIGNhbkVt
YmVkSmF2YSgpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50
KCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKSW5kZXg6IFdlYkNv
cmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1s
L0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgkocmV2aXNpb24gNTEwNzYpCisrKyBXZWJDb3JlL2h0bWwv
SFRNTEF0dHJpYnV0ZU5hbWVzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMjAsNiArMjIwLDcgQEAg
cm9sZQogcm93cwogcm93c3BhbgogcnVsZXMKK3NhbmRib3gKIHNjaGVtZQogc2NvcGUKIHNjcm9s
bGFtb3VudApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAJKHJldmlz
aW9uIDUxMDc2KQorKysgV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogSFRNTEZy
YW1lT3duZXJFbGVtZW50OjpIVE1MRnJhbWVPd25lckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogSFRNTEVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQsIENyZWF0ZUVsZW1lbnQpCiAgICAgLCBtX2NvbnRlbnRGcmFtZSgwKQorICAg
ICwgbV9zYW5kYm94RmxhZ3MoU2FuZGJveE5vbmUpCiB7CiB9CiAKQEAgLTY0LDYgKzY1LDE3IEBA
IERPTVdpbmRvdyogSFRNTEZyYW1lT3duZXJFbGVtZW50Ojpjb250ZW4KICAgICByZXR1cm4gbV9j
b250ZW50RnJhbWUgPyBtX2NvbnRlbnRGcmFtZS0+ZG9tV2luZG93KCkgOiAwOwogfQogCit2b2lk
IEhUTUxGcmFtZU93bmVyRWxlbWVudDo6c2V0U2FuZGJveEZsYWdzKFNhbmRib3hGbGFncyBmbGFn
cykKK3sKKyAgICBpZiAobV9zYW5kYm94RmxhZ3MgPT0gZmxhZ3MpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fc2FuZGJveEZsYWdzID0gZmxhZ3M7CisgICAgCisgICAgaWYgKEZyYW1lKiBmcmFt
ZSA9IGNvbnRlbnRGcmFtZSgpKQorICAgICAgICBmcmFtZS0+bG9hZGVyKCktPm93bmVyRWxlbWVu
dFNhbmRib3hGbGFnc0NoYW5nZWQoKTsKK30KKwogI2lmIEVOQUJMRShTVkcpCiBTVkdEb2N1bWVu
dCogSFRNTEZyYW1lT3duZXJFbGVtZW50OjpnZXRTVkdEb2N1bWVudChFeGNlcHRpb25Db2RlJiBl
YykgY29uc3QKIHsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmgJKHJldmlz
aW9uIDUxMDc2KQorKysgV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBACiAjaWZuZGVmIEhUTUxGcmFtZU93bmVyRWxlbWVu
dF9oCiAjZGVmaW5lIEhUTUxGcmFtZU93bmVyRWxlbWVudF9oCiAKKyNpbmNsdWRlICJGcmFtZUxv
YWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNDYsOSArNDcsMTMgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBTY3JvbGxiYXJN
b2RlIHNjcm9sbGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBTY3JvbGxiYXJBdXRvOyB9CiAKKyAg
ICBTYW5kYm94RmxhZ3Mgc2FuZGJveEZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9zYW5kYm94Rmxh
Z3M7IH0KKyAgICAKIHByb3RlY3RlZDoKICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqKTsKIAorICAgIHZvaWQgc2V0U2FuZGJv
eEZsYWdzKFNhbmRib3hGbGFncyk7CisgICAgCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBG
cmFtZTsKIApAQCAtNTgsNiArNjMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aWxs
UmVtb3ZlKCk7CiAKICAgICBGcmFtZSogbV9jb250ZW50RnJhbWU7CisgICAgU2FuZGJveEZsYWdz
IG1fc2FuZGJveEZsYWdzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2Vi
Q29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0
bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA1MTA3NikKKysrIFdlYkNvcmUvaHRt
bC9IVE1MSUZyYW1lRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQsNiArNCw3IEBACiAg
KiAgICAgICAgICAgKEMpIDIwMDAgU2ltb24gSGF1c21hbm4gKGhhdXNtYW5uQGtkZS5vcmcpCiAg
KiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEVyaWNzc29uIEFCLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC02Niw2ICs2Nyw0MCBAQCBib29sIEhU
TUxJRnJhbWVFbGVtZW50OjptYXBUb0VudHJ5KGNvbnN0CiAgICAgcmV0dXJuIEhUTUxGcmFtZUVs
ZW1lbnRCYXNlOjptYXBUb0VudHJ5KGF0dHJOYW1lLCByZXN1bHQpOwogfQogCitzdGF0aWMgU2Fu
ZGJveEZsYWdzIHBhcnNlU2FuZGJveEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHJpYnV0
ZSkKK3sKKyAgICBpZiAoYXR0cmlidXRlLT5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIFNhbmRi
b3hOb25lOworCisgICAgLy8gUGFyc2UgdGhlIHVub3JkZXJlZCBzZXQgb2YgdW5pcXVlIHNwYWNl
LXNlcGFyYXRlZCB0b2tlbnMuCisgICAgU2FuZGJveEZsYWdzIGZsYWdzID0gU2FuZGJveEFsbDsK
KyAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IGF0dHJpYnV0ZS0+dmFsdWUoKS5jaGFyYWN0
ZXJzKCk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gYXR0cmlidXRlLT52YWx1ZSgpLmxlbmd0aCgp
OworICAgIHVuc2lnbmVkIHN0YXJ0ID0gMDsKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICB3
aGlsZSAoc3RhcnQgPCBsZW5ndGggJiYgaXNBU0NJSVNwYWNlKGNoYXJhY3RlcnNbc3RhcnRdKSkK
KyAgICAgICAgICAgICsrc3RhcnQ7CisgICAgICAgIGlmIChzdGFydCA+PSBsZW5ndGgpCisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgdW5zaWduZWQgZW5kID0gc3RhcnQgKyAxOworICAgICAg
ICB3aGlsZSAoZW5kIDwgbGVuZ3RoICYmICFpc0FTQ0lJU3BhY2UoY2hhcmFjdGVyc1tlbmRdKSkK
KyAgICAgICAgICAgICsrZW5kOworCisgICAgICAgIC8vIFR1cm4gb2ZmIHRoZSBjb3JyZXNwb25k
aW5nIHNhbmRib3ggZmxhZyBpZiBpdCdzIHNldCBhcyAiYWxsb3dlZCIuCisgICAgICAgIFN0cmlu
ZyBzYW5kYm94VG9rZW4gPSBTdHJpbmcoY2hhcmFjdGVycyArIHN0YXJ0LCBlbmQgLSBzdGFydCk7
CisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShzYW5kYm94VG9rZW4sICJhbGxvdy1zYW1l
LW9yaWdpbiIpKQorICAgICAgICAgICAgZmxhZ3MgJj0gflNhbmRib3hPcmlnaW47CisgICAgICAg
IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHNhbmRib3hUb2tlbiwgImFsbG93LWZvcm1zIikp
CisgICAgICAgICAgICBmbGFncyAmPSB+U2FuZGJveEZvcm1zOworICAgICAgICBlbHNlIGlmIChl
cXVhbElnbm9yaW5nQ2FzZShzYW5kYm94VG9rZW4sICJhbGxvdy1zY3JpcHRzIikpCisgICAgICAg
ICAgICBmbGFncyAmPSB+U2FuZGJveFNjcmlwdHM7CisKKyAgICAgICAgc3RhcnQgPSBlbmQgKyAx
OworICAgIH0KKyAgICAKKyAgICByZXR1cm4gZmxhZ3M7Cit9CisKIHZvaWQgSFRNTElGcmFtZUVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKIHsKICAg
ICBpZiAoYXR0ci0+bmFtZSgpID09IHdpZHRoQXR0cikKQEAgLTg4LDcgKzEyMyw5IEBAIHZvaWQg
SFRNTElGcmFtZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmkKICAgICAgICAgaWYgKCFhdHRyLT5p
c051bGwoKSAmJiAhYXR0ci0+dmFsdWUoKS50b0ludCgpKQogICAgICAgICAgICAgLy8gQWRkIGEg
cnVsZSB0aGF0IG51bGxzIG91dCBvdXIgYm9yZGVyIHdpZHRoLgogICAgICAgICAgICAgYWRkQ1NT
TGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgsICIwIik7Ci0gICAgfSBlbHNlCisg
ICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gc2FuZGJveEF0dHIpCisgICAgICAgIHNldFNh
bmRib3hGbGFncyhwYXJzZVNhbmRib3hBdHRyaWJ1dGUoYXR0cikpOworICAgIGVsc2UKICAgICAg
ICAgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQog
CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGwJKHJldmlzaW9uIDUxMDc2KQorKysg
V2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzMs
NiArMzMsNyBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbQ29u
dmVydE51bGxUb051bGxTdHJpbmcsIFJlZmxlY3Q9bWFyZ2luaGVpZ2h0XSBET01TdHJpbmcgICAg
ICAgbWFyZ2luSGVpZ2h0OwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxs
VG9OdWxsU3RyaW5nLCBSZWZsZWN0PW1hcmdpbndpZHRoXSBET01TdHJpbmcgICAgICAgbWFyZ2lu
V2lkdGg7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJp
bmcsIFJlZmxlY3RdIERPTVN0cmluZyAgICAgICBuYW1lOworICAgICAgICAgICAgICAgICBhdHRy
aWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nLCBSZWZsZWN0XSBET01TdHJpbmcgICAgICAg
c2FuZGJveDsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0
cmluZywgUmVmbGVjdF0gRE9NU3RyaW5nICAgICAgIHNjcm9sbGluZzsKICAgICAgICAgICAgICAg
ICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZywgQ3VzdG9tU2V0dGVyLCBSZWZs
ZWN0XSBET01TdHJpbmcgICAgICAgc3JjOwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW0Nv
bnZlcnROdWxsVG9OdWxsU3RyaW5nLCBSZWZsZWN0XSBET01TdHJpbmcgICAgICAgd2lkdGg7Cklu
ZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAkocmV2aXNpb24g
NTEwNzYpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTIwMiwxMCArMTIwMiwxNCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OmdldENvb2tpZXMobG9uCiAgICAgICAgICAgICBWZWN0b3I8Q29va2llPiBkb2NDb29raWVz
TGlzdDsKICAgICAgICAgICAgIHJhd0Nvb2tpZXNJbXBsZW1lbnRlZCA9IGdldFJhd0Nvb2tpZXMo
ZG9jdW1lbnQsIGRvY3VtZW50LT5jb29raWVVUkwoKSwgZG9jQ29va2llc0xpc3QpOwogICAgICAg
ICAgICAgCi0gICAgICAgICAgICBpZiAoIXJhd0Nvb2tpZXNJbXBsZW1lbnRlZCkKKyAgICAgICAg
ICAgIGlmICghcmF3Q29va2llc0ltcGxlbWVudGVkKSB7CiAgICAgICAgICAgICAgICAgLy8gRklY
TUU6IFdlIG5lZWQgZHVwbGljYXRpb24gY2hlY2tpbmcgZm9yIHRoZSBTdHJpbmcgcmVwcmVzZW50
YXRpb24gb2YgY29va2llcy4KLSAgICAgICAgICAgICAgICBzdHJpbmdDb29raWVzTGlzdCArPSBk
b2N1bWVudC0+Y29va2llKCk7Ci0gICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAgICAgICAgICAgICBzdHJpbmdDb29raWVzTGlzdCAr
PSBkb2N1bWVudC0+Y29va2llKGVjKTsKKyAgICAgICAgICAgICAgICAvLyBFeGNlcHRpb25zIGFy
ZSB0aHJvd24gYnkgY29va2llKCkgaW4gc2FuZGJveGVkIGZyYW1lcy4gVGhhdCB3b24ndCBoYXBw
ZW4gaGVyZQorICAgICAgICAgICAgICAgIC8vIGJlY2F1c2UgImRvY3VtZW50IiBpcyB0aGUgZG9j
dW1lbnQgb2YgdGhlIG1haW4gZnJhbWUgb2YgdGhlIHBhZ2UuCisgICAgICAgICAgICAgICAgQVNT
RVJUKCFlYyk7CisgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGludCBjb29r
aWVzU2l6ZSA9IGRvY0Nvb2tpZXNMaXN0LnNpemUoKTsKICAgICAgICAgICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IGNvb2tpZXNTaXplOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgaWYg
KCFyYXdDb29raWVzTGlzdC5jb250YWlucyhkb2NDb29raWVzTGlzdFtpXSkpCkluZGV4OiBXZWJD
b3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAJKHJldmlzaW9uIDUxMDc2
KQorKysgV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTAwLDYgKzEwMCwxMCBAQCBib29sIHBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVj
ayhjb25zdCBSZXNvCiAgICAgaWYgKGFjY2Vzc0NvbnRyb2xPcmlnaW5TdHJpbmcgPT0gIioiICYm
ICFpbmNsdWRlQ3JlZGVudGlhbHMpCiAgICAgICAgIHJldHVybiB0cnVlOwogCisgICAgLy8gQSBz
YW5kYm94ZWQgZnJhbWUgaGFzIGEgdW5pcXVlIG9yaWdpbiAoZm9yIHNhbWUtb3JpZ2luIHB1cnBv
c2VzKS4KKyAgICBpZiAoc2VjdXJpdHlPcmlnaW4tPmlzU2FuZGJveGVkKFNhbmRib3hPcmlnaW4p
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGFj
Y2Vzc0NvbnRyb2xPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhhY2Nl
c3NDb250cm9sT3JpZ2luU3RyaW5nKTsKICAgICBpZiAoIWFjY2Vzc0NvbnRyb2xPcmlnaW4tPmlz
U2FtZVNjaGVtZUhvc3RQb3J0KHNlY3VyaXR5T3JpZ2luKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gNTEwNzYpCisrKyBXZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Niw2ICsxOTYsNyBA
QCBGcmFtZUxvYWRlcjo6RnJhbWVMb2FkZXIoRnJhbWUqIGZyYW1lLCBGCiAgICAgLCBtX2RpZFBl
cmZvcm1GaXJzdE5hdmlnYXRpb24oZmFsc2UpCiAgICAgLCBtX2xvYWRpbmdGcm9tQ2FjaGVkUGFn
ZShmYWxzZSkKICAgICAsIG1fc3VwcHJlc3NPcGVuZXJJbk5ld0ZyYW1lKGZhbHNlKQorICAgICwg
bV9zYW5kYm94RmxhZ3MoU2FuZGJveEFsbCkKICNpZm5kZWYgTkRFQlVHCiAgICAgLCBtX2RpZERp
c3BhdGNoRGlkQ29tbWl0TG9hZChmYWxzZSkKICNlbmRpZgpAQCAtMjI4LDYgKzIyOSw5IEBAIHZv
aWQgRnJhbWVMb2FkZXI6OmluaXQoKQogICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmNhbmNlbFBh
cnNpbmcoKTsKICAgICBtX2NyZWF0aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQgPSBmYWxzZTsKICAg
ICBtX2RpZENhbGxJbXBsaWNpdENsb3NlID0gdHJ1ZTsKKworICAgIC8vIFByb3BhZ2F0ZSBzYW5k
Ym94IGF0dHJpYnV0ZXMgdG8gdGhpcyBGcmFtZWxvYWRlciBhbmQgaXRzIGRlc2NlbmRhbnRzLgor
ICAgIHVwZGF0ZVNhbmRib3hGbGFncygpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpzZXREZWZl
cnNMb2FkaW5nKGJvb2wgZGVmZXJzKQpAQCAtNDM4LDYgKzQ0Miw5IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OnN1Ym1pdEZvcm0oY29uc3QgY2hhcioKICAgICBpZiAodS5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKIAorICAgIGlmIChpc1NhbmRib3hlZChTYW5kYm94Rm9ybXMpKQorICAgICAgICBy
ZXR1cm47CisKICAgICBpZiAocHJvdG9jb2xJc0phdmFTY3JpcHQodSkpIHsKICAgICAgICAgbV9p
c0V4ZWN1dGluZ0phdmFTY3JpcHRGb3JtQWN0aW9uID0gdHJ1ZTsKICAgICAgICAgbV9mcmFtZS0+
c2NyaXB0KCktPmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwodSwgZmFsc2UsIGZhbHNlKTsKQEAgLTEy
NTUsNiArMTI2Miw4IEBAIGJvb2wgRnJhbWVMb2FkZXI6OnJlcXVlc3RPYmplY3QoUmVuZGVyUGEK
ICAgICAgICAgaWYgKCFzZXR0aW5ncyB8fCAhc2V0dGluZ3MtPmFyZVBsdWdpbnNFbmFibGVkKCkg
fHwgCiAgICAgICAgICAgICAoIXNldHRpbmdzLT5pc0phdmFFbmFibGVkKCkgJiYgTUlNRVR5cGVS
ZWdpc3RyeTo6aXNKYXZhQXBwbGV0TUlNRVR5cGUobWltZVR5cGUpKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGlzU2FuZGJveGVkKFNhbmRib3hQbHVnaW5zKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJuIGxvYWRQbHVnaW4ocmVuZGVy
ZXIsIGNvbXBsZXRlZFVSTCwgbWltZVR5cGUsIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLCB1c2VG
YWxsYmFjayk7CiAgICAgfQogCkBAIC0yMTk3LDYgKzIyMDYsMTAgQEAgYm9vbCBGcmFtZUxvYWRl
cjo6c2hvdWxkQWxsb3dOYXZpZ2F0aW9uKAogICAgIGlmIChtX2ZyYW1lID09IHRhcmdldEZyYW1l
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAorICAgIC8vIEEgc2FuZGJveGVkIGZyYW1lIGNhbiBv
bmx5IG5hdmlnYXRlIGl0c2VsZiBhbmQgaXRzIGRlc2NlbmRhbnRzLgorICAgIGlmIChpc1NhbmRi
b3hlZChTYW5kYm94TmF2aWdhdGlvbikgJiYgIXRhcmdldEZyYW1lLT50cmVlKCktPmlzRGVzY2Vu
ZGFudE9mKG1fZnJhbWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICAvLyBMZXQgYSBm
cmFtZSBuYXZpZ2F0ZSB0aGUgdG9wLWxldmVsIHdpbmRvdyB0aGF0IGNvbnRhaW5zIGl0LiAgVGhp
cyBpcwogICAgIC8vIGltcG9ydGFudCB0byBhbGxvdyBiZWNhdXNlIGl0IGxldHMgYSBzaXRlICJm
cmFtZS1idXN0IiAoZXNjYXBlIGZyb20gYQogICAgIC8vIGZyYW1lIGNyZWF0ZWQgYnkgYW5vdGhl
ciB3ZWIgc2l0ZSkuCkBAIC0zODk5LDYgKzM5MTIsMjUgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlz
cGF0Y2hEaWRDbGVhcldpbmRvdwogI2VuZGlmCiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXI6OnVwZGF0
ZVNhbmRib3hGbGFncygpCit7CisgICAgU2FuZGJveEZsYWdzIGZsYWdzID0gU2FuZGJveE5vbmU7
CisgICAgaWYgKEZyYW1lKiBwYXJlbnRGcmFtZSA9IG1fZnJhbWUtPnRyZWUoKS0+cGFyZW50KCkp
CisgICAgICAgIGZsYWdzIHw9IHBhcmVudEZyYW1lLT5sb2FkZXIoKS0+c2FuZGJveEZsYWdzKCk7
CisgICAgaWYgKEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50ID0gbV9mcmFtZS0+
b3duZXJFbGVtZW50KCkpCisgICAgICAgIGZsYWdzIHw9IG93bmVyRWxlbWVudC0+c2FuZGJveEZs
YWdzKCk7CisKKyAgICBpZiAobV9zYW5kYm94RmxhZ3MgPT0gZmxhZ3MpCisgICAgICAgIHJldHVy
bjsKKyAgICAgICAgCisgICAgbV9zYW5kYm94RmxhZ3MgPSBmbGFnczsKKworICAgIG1fZnJhbWUt
PmRvY3VtZW50KCktPnVwZGF0ZVNhbmRib3hGbGFncygpOworCisgICAgZm9yIChGcmFtZSogY2hp
bGQgPSBtX2ZyYW1lLT50cmVlKCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQt
PnRyZWUoKS0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgY2hpbGQtPmxvYWRlcigpLT51cGRhdGVT
YW5kYm94RmxhZ3MoKTsKKyB9CisKIFBhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRlcjo6Y3Jl
YXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiBzaXplLCBIVE1MQXBwbGV0RWxlbWVu
dCogZWxlbWVudCwgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGFyZ3MpCiB7CiAgICAg
U3RyaW5nIGJhc2VVUkxTdHJpbmc7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHJldmlzaW9uIDUx
MDc2KQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MjUxLDYgKzI1MSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNwYXRjaERpZENsZWFyV2luZG93
T2JqZWN0c0luQWxsV29ybGRzKCk7CiAgICAgdm9pZCBkaXNwYXRjaERvY3VtZW50RWxlbWVudEF2
YWlsYWJsZSgpOwogCisgICAgdm9pZCBvd25lckVsZW1lbnRTYW5kYm94RmxhZ3NDaGFuZ2VkKCkg
eyB1cGRhdGVTYW5kYm94RmxhZ3MoKTsgfQorICAgIAorICAgIGJvb2wgaXNTYW5kYm94ZWQoU2Fu
ZGJveEZsYWdzIG1hc2spIGNvbnN0IHsgcmV0dXJuIG1fc2FuZGJveEZsYWdzICYgbWFzazsgfQor
ICAgIFNhbmRib3hGbGFncyBzYW5kYm94RmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX3NhbmRib3hG
bGFnczsgfQorCiAgICAgLy8gTWl4ZWQgY29udGVudCByZWxhdGVkIGZ1bmN0aW9ucy4KICAgICBz
dGF0aWMgYm9vbCBpc01peGVkQ29udGVudChTZWN1cml0eU9yaWdpbiogY29udGV4dCwgY29uc3Qg
S1VSTCYpOwogICAgIHZvaWQgY2hlY2tJZkRpc3BsYXlJbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlP
cmlnaW4qIGNvbnRleHQsIGNvbnN0IEtVUkwmKTsKQEAgLTQzNSw2ICs0NDAsOCBAQCBwcml2YXRl
OgogCiAgICAgYm9vbCBzaG91bGRUcmVhdFVSTEFzU2FtZUFzQ3VycmVudChjb25zdCBLVVJMJikg
Y29uc3Q7CiAKKyAgICB2b2lkIHVwZGF0ZVNhbmRib3hGbGFncygpOworICAgIAogICAgIEZyYW1l
KiBtX2ZyYW1lOwogICAgIEZyYW1lTG9hZGVyQ2xpZW50KiBtX2NsaWVudDsKIApAQCAtNTA2LDYg
KzUxMyw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2xvYWRpbmdGcm9tQ2FjaGVkUGFnZTsKICAg
ICBib29sIG1fc3VwcHJlc3NPcGVuZXJJbk5ld0ZyYW1lOwogICAgIAorICAgIFNhbmRib3hGbGFn
cyBtX3NhbmRib3hGbGFnczsKKwogI2lmbmRlZiBOREVCVUcKICAgICBib29sIG1fZGlkRGlzcGF0
Y2hEaWRDb21taXRMb2FkOwogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
clR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5o
CShyZXZpc2lvbiA1MTA3NikKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtOTIsNiArOTIsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBTZW5kUmVmZXJyZXIsCiAgICAgICAgIE5vUmVmZXJyZXIKICAgICB9OworICAgIAorICAg
IGVudW0gU2FuZGJveEZsYWcgeworICAgICAgICBTYW5kYm94Tm9uZSA9IDAsCisgICAgICAgIFNh
bmRib3hOYXZpZ2F0aW9uID0gMSwKKyAgICAgICAgU2FuZGJveFBsdWdpbnMgPSAxIDw8IDEsCisg
ICAgICAgIFNhbmRib3hPcmlnaW4gPSAxIDw8IDIsCisgICAgICAgIFNhbmRib3hGb3JtcyA9IDEg
PDwgMywKKyAgICAgICAgU2FuZGJveFNjcmlwdHMgPSAxIDw8IDQsCisgICAgICAgIFNhbmRib3hB
bGwgPSAtMSAvLyBNYXNrIHdpdGggYWxsIGJpdHMgc2V0IHRvIDEuCisgICAgfTsKKworICAgIHR5
cGVkZWYgdW5zaWduZWQgU2FuZGJveEZsYWdzOwogfQogCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUv
cGFnZS9ET01XaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cu
Y3BwCShyZXZpc2lvbiA1MTA3NikKKysrIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NjksNiArNTY5LDkgQEAgU3RvcmFnZSogRE9NV2luZG93OjpzZXNzaW9u
U3RvcmFnZSgpIGNvbgogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7
CiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgaWYgKCFk
b2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzU3RvcmFnZSgpKQorICAgICAgICBy
ZXR1cm4gMDsKIAogICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOwogICAgIGlmICgh
cGFnZSkKQEAgLTU5MSw2ICs1OTQsOSBAQCBTdG9yYWdlKiBET01XaW5kb3c6OmxvY2FsU3RvcmFn
ZSgpIGNvbnN0CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKICAg
ICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBpZiAoIWRvY3Vt
ZW50LT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NTdG9yYWdlKCkpCisgICAgICAgIHJldHVy
biAwOwogICAgICAgICAKICAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoKTsKICAgICBp
ZiAoIXBhZ2UpCkBAIC0xMTA3LDEzICsxMTEzLDE1IEBAIFBhc3NSZWZQdHI8RGF0YWJhc2U+IERP
TVdpbmRvdzo6b3BlbkRhdGEKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVybiAwOwog
Ci0gICAgRG9jdW1lbnQqIGRvYyA9IG1fZnJhbWUtPmRvY3VtZW50KCk7CisgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50LT5zZWN1
cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NEYXRhYmFzZSgpKQorICAgICAgICByZXR1cm4gMDsKIAog
ICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IG1fZnJhbWUtPnNldHRpbmdzKCk7CiAgICAgaWYgKCFz
ZXR0aW5ncyB8fCAhc2V0dGluZ3MtPmRhdGFiYXNlc0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICByZXR1cm4gRGF0YWJhc2U6Om9wZW5EYXRhYmFzZShkb2MsIG5hbWUsIHZlcnNp
b24sIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplLCBlYyk7CisgICAgcmV0dXJuIERhdGFiYXNl
OjpvcGVuRGF0YWJhc2UoZG9jdW1lbnQsIG5hbWUsIHZlcnNpb24sIGRpc3BsYXlOYW1lLCBlc3Rp
bWF0ZWRTaXplLCBlYyk7CiB9CiAjZW5kaWYKIApJbmRleDogV2ViQ29yZS9wYWdlL1NlY3VyaXR5
T3JpZ2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3Bw
CShyZXZpc2lvbiA1MTA3NikKKysrIFdlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTk1LDYgKzk1LDcgQEAgU2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3Jp
Z2luKGNvbnN0IEtVUgogICAgIDogbV9wcm90b2NvbCh1cmwucHJvdG9jb2woKS5pc051bGwoKSA/
ICIiIDogdXJsLnByb3RvY29sKCkubG93ZXIoKSkKICAgICAsIG1faG9zdCh1cmwuaG9zdCgpLmlz
TnVsbCgpID8gIiIgOiB1cmwuaG9zdCgpLmxvd2VyKCkpCiAgICAgLCBtX3BvcnQodXJsLnBvcnQo
KSkKKyAgICAsIG1fc2FuZGJveEZsYWdzKFNhbmRib3hOb25lKQogICAgICwgbV9ub0FjY2Vzcyhm
YWxzZSkKICAgICAsIG1fdW5pdmVyc2FsQWNjZXNzKGZhbHNlKQogICAgICwgbV9kb21haW5XYXNT
ZXRJbkRPTShmYWxzZSkKQEAgLTEyMiw2ICsxMjMsNyBAQCBTZWN1cml0eU9yaWdpbjo6U2VjdXJp
dHlPcmlnaW4oY29uc3QgU2VjCiAgICAgLCBtX2hvc3Qob3RoZXItPm1faG9zdC50aHJlYWRzYWZl
Q29weSgpKQogICAgICwgbV9kb21haW4ob3RoZXItPm1fZG9tYWluLnRocmVhZHNhZmVDb3B5KCkp
CiAgICAgLCBtX3BvcnQob3RoZXItPm1fcG9ydCkKKyAgICAsIG1fc2FuZGJveEZsYWdzKG90aGVy
LT5tX3NhbmRib3hGbGFncykKICAgICAsIG1fbm9BY2Nlc3Mob3RoZXItPm1fbm9BY2Nlc3MpCiAg
ICAgLCBtX3VuaXZlcnNhbEFjY2VzcyhvdGhlci0+bV91bml2ZXJzYWxBY2Nlc3MpCiAgICAgLCBt
X2RvbWFpbldhc1NldEluRE9NKG90aGVyLT5tX2RvbWFpbldhc1NldEluRE9NKQpAQCAtMTYyLDcg
KzE2NCw3IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhbkFjY2Vzcyhjb25zdCBTZWMKICAgICBp
ZiAobV91bml2ZXJzYWxBY2Nlc3MpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKG1f
bm9BY2Nlc3MgfHwgb3RoZXItPm1fbm9BY2Nlc3MpCisgICAgaWYgKG1fbm9BY2Nlc3MgfHwgb3Ro
ZXItPm1fbm9BY2Nlc3MgfHwgaXNTYW5kYm94ZWQoU2FuZGJveE9yaWdpbikgfHwgb3RoZXItPmlz
U2FuZGJveGVkKFNhbmRib3hPcmlnaW4pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAv
LyBIZXJlIGFyZSB0d28gY2FzZXMgd2hlcmUgd2Ugc2hvdWxkIHBlcm1pdCBhY2Nlc3M6CkBAIC0y
MDMsNyArMjA1LDcgQEAgYm9vbCBTZWN1cml0eU9yaWdpbjo6Y2FuUmVxdWVzdChjb25zdCBLVQog
ICAgIGlmIChtX3VuaXZlcnNhbEFjY2VzcykKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBp
ZiAobV9ub0FjY2VzcykKKyAgICBpZiAobV9ub0FjY2VzcyB8fCBpc1NhbmRib3hlZChTYW5kYm94
T3JpZ2luKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiB0YXJnZXRPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCk7CkBAIC0yODks
NyArMjkxLDcgQEAgU3RyaW5nIFNlY3VyaXR5T3JpZ2luOjp0b1N0cmluZygpIGNvbnN0CiAgICAg
aWYgKGlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuICJudWxsIjsKIAotICAgIGlmIChtX25vQWNj
ZXNzKQorICAgIGlmIChtX25vQWNjZXNzIHx8IGlzU2FuZGJveGVkKFNhbmRib3hPcmlnaW4pKQog
ICAgICAgICByZXR1cm4gIm51bGwiOwogCiAgICAgaWYgKG1fcHJvdG9jb2wgPT0gImZpbGUiKQpJ
bmRleDogV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgJKHJldmlzaW9uIDUxMDc2KQorKysgV2ViQ29yZS9wYWdl
L1NlY3VyaXR5T3JpZ2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAorI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgog
I2luY2x1ZGUgIlN0cmluZ0hhc2guaCIKIApAQCAtMTEwLDYgKzExMSwxMyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIC8vIFdBUk5JTkc6IFRoaXMgaXMgYW4gZXh0cmVtZWx5IHBvd2Vy
ZnVsIGFiaWxpdHkuICBVc2Ugd2l0aCBjYXV0aW9uIQogICAgICAgICB2b2lkIGdyYW50VW5pdmVy
c2FsQWNjZXNzKCk7CiAKKyAgICAgICAgLy8gU2FuZGJveGluZyBzdGF0dXMgYXMgZGV0ZXJtaW5l
ZCBieSB0aGUgZnJhbWUuCisgICAgICAgIHZvaWQgc2V0U2FuZGJveEZsYWdzKFNhbmRib3hGbGFn
cyBmbGFncykgeyBtX3NhbmRib3hGbGFncyA9IGZsYWdzOyB9CisgICAgICAgIGJvb2wgaXNTYW5k
Ym94ZWQoU2FuZGJveEZsYWdzIG1hc2spIGNvbnN0IHsgcmV0dXJuIG1fc2FuZGJveEZsYWdzICYg
bWFzazsgfQorCisgICAgICAgIGJvb2wgY2FuQWNjZXNzRGF0YWJhc2UoKSBjb25zdCB7IHJldHVy
biAhaXNTYW5kYm94ZWQoU2FuZGJveE9yaWdpbik7IH0KKyAgICAgICAgYm9vbCBjYW5BY2Nlc3NT
dG9yYWdlKCkgY29uc3QgeyByZXR1cm4gIWlzU2FuZGJveGVkKFNhbmRib3hPcmlnaW4pOyB9CisK
ICAgICAgICAgYm9vbCBpc1NlY3VyZVRyYW5zaXRpb25Ubyhjb25zdCBLVVJMJikgY29uc3Q7CiAK
ICAgICAgICAgLy8gVGhlIGxvY2FsIFNlY3VyaXR5T3JpZ2luIGlzIHRoZSBtb3N0IHByaXZpbGVn
ZWQgU2VjdXJpdHlPcmlnaW4uCkBAIC0xODEsNiArMTg5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBTdHJpbmcgbV9ob3N0OwogICAgICAgICBTdHJpbmcgbV9kb21haW47CiAgICAg
ICAgIHVuc2lnbmVkIHNob3J0IG1fcG9ydDsKKyAgICAgICAgU2FuZGJveEZsYWdzIG1fc2FuZGJv
eEZsYWdzOwogICAgICAgICBib29sIG1fbm9BY2Nlc3M7CiAgICAgICAgIGJvb2wgbV91bml2ZXJz
YWxBY2Nlc3M7CiAgICAgICAgIGJvb2wgbV9kb21haW5XYXNTZXRJbkRPTTsKSW5kZXg6IFdlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAJKHJldmlzaW9uIDUxMDc2KQorKysgV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTksOCArMTU5LDEwIEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2ZURhdGEoU28K
ICAgICAgICAgICAgIGlmICghbV9oYW5kc2hha2Uuc2VydmVyU2V0Q29va2llKCkuaXNFbXB0eSgp
KSB7CiAgICAgICAgICAgICAgICAgaWYgKG1fY29udGV4dC0+aXNEb2N1bWVudCgpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50
Kj4obV9jb250ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNvb2tpZXNFbmFibGVkKGRv
Y3VtZW50KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LT5zZXRDb29raWUobV9o
YW5kc2hha2Uuc2VydmVyU2V0Q29va2llKCkpOworICAgICAgICAgICAgICAgICAgICBpZiAoY29v
a2llc0VuYWJsZWQoZG9jdW1lbnQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBFeGNlcHRp
b25Db2RlIGVjOyAvLyBFeGNlcHRpb24gKGZvciBzYW5kYm94ZWQgZG9jdW1lbnRzKSBpZ25vcmVk
LgorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQtPnNldENvb2tpZShtX2hhbmRzaGFr
ZS5zZXJ2ZXJTZXRDb29raWUoKSwgZWMpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gRklYTUU6IGhhbmRsZSBz
ZXQtY29va2llMi4KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDUxMDc2KQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjkgQEAKKzIwMDktMTItMDEgIFBhdHJp
ayBQZXJzc29uICA8cGF0cmlrLmoucGVyc3NvbkBlcmljc3Nvbi5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IEhUTUw1IHNhbmRi
b3ggYXR0cmlidXRlIGZvciBpZnJhbWVzLgorICAgICAgICBodHRwOi8vd3d3LnczLm9yZy9UUi9o
dG1sNS90ZXh0LWxldmVsLXNlbWFudGljcy5odG1sI2F0dHItaWZyYW1lLXNhbmRib3gKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjg4CisKKyAgICAg
ICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvbm9uLXNhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlv
bi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVk
LWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1hbGxvd2VkLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5n
LWRpc2FsbG93ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2Vz
L3NhbmRib3hlZC1pZnJhbWUtZm9ybS1hbGxvd2VkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tZGlzYWxsb3dlZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFt
ZS1uYXZpZ2F0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2Vz
L3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1jaGlsZC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLW5hdmln
YXRlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJv
eGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXBhcmVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXNvdXJjZS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFt
ZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFt
ZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1l
LXBsdWdpbnMtZnJhbWUtYXBwbGV0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVz
L3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtZW1iZWQuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1
Z2lucy1mcmFtZS1vYmplY3QuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVz
b3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtc2NyaXB0LWR5bmFtaWMuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtc3RvcmFnZS1hbGxv
d2VkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94
ZWQtaWZyYW1lLXN0b3JhZ2UtZGlzYWxsb3dlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUt
cGFyc2luZy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZy
YW1lLWZvcm1zLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc2Fu
ZGJveGVkLWlmcmFtZS1mb3Jtcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9z
YW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tYWxsb3dlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1hbGxvd2Vk
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2
aWdhdGlvbi1wYXJlbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1l
cy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRsaW5rLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFt
ZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFt
ZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4tZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24t
d2luZG93b3Blbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQt
aWZyYW1lLXBsdWdpbnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1l
cy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9m
cmFtZXMvc2FuZGJveGVkLWlmcmFtZS1zY3JpcHRpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXNjcmlwdGluZy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXN0b3JhZ2UtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXN0
b3JhZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJj
ZXMvc2FuZGJveGVkLWlmcmFtZS1kb2N1bWVudC1jb29raWUtcmVhZC1kZW5pZWQuaHRtbDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvc2FuZGJveGVkLWlm
cmFtZS1tb2RpZnktc2VsZi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3Vy
aXR5L3Jlc291cmNlcy94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUtYXR0YWNrZXIuaHRtbDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLWRv
Y3VtZW50LWNvb2tpZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
c2VjdXJpdHkvc2FuZGJveGVkLWlmcmFtZS1kb2N1bWVudC1jb29raWUuaHRtbDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLW1vZGlmeS1zZWxm
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9zYW5k
Ym94ZWQtaWZyYW1lLW1vZGlmeS1zZWxmLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvc2VjdXJpdHkveHNzLURFTklFRC1zYW5kYm94ZWQtaWZyYW1lLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXNhbmRib3hlZC1p
ZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9h
Y2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93LWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5k
Ym94ZWQtaWZyYW1lLWFsbG93Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vz
cy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vz
cy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQuaHRtbDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJv
bC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZy
YW1lLWFsbG93LWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93
LmNnaTogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJj
ZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtaWZyYW1lLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vz
cy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQtaWZyYW1l
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3Vy
Y2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNh
cmQuY2dpOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291
cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC5jZ2k6IEFkZGVkLgor
CiAyMDA5LTExLTE3ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIE5vdCByZXZpZXdlZCwgdGVzdHMgZml4LiBGb2xsb3cgdXAgdG8gcjUxMDcyOiBtb3Zl
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0
ZS1wYXJzaW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtYXR0
cmlidXRlLXBhcnNpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAK
K1RoaXMgdGVzdCBjYXNlIHZlcmlmaWVzIHRoZSBwYXJzaW5nIG9mIHRoZSBpZnJhbWUgc2FuZGJv
eCBhdHRyaWJ1dGUuIFR3byBzZXRzIG9mIGlmcmFtZXMgYXJlIHVzZWQ6IG9uZSB3aGVyZSBzY3Jp
cHRpbmcgaXMgYWxsb3dlZCwgYW5kIGFub3RoZXIgb25lIHdoZXJlIGl0IGlzIGRpc2FsbG93ZWQu
IFRoZSB0ZXN0IHZlcmlmaWVzIHRoYXQgdGhlIGFsbG93ZWQgZnJhbWVzIGV4ZWN1dGUgc2NyaXB0
cyAoYnV0IG90aGVyIHNhbmRib3hlZCBwcm9wZXJ0aWVzIHN0aWxsIGFwcGx5IC0tIHNwZWNpZmlj
YWxseSwgZm9ybXMgYXJlIGRpc2FibGVkKSwgYW5kIHRoZSBkaXNhbGxvd2VkIG9uZXMgZG8gbm90
LiBJZiBzdWNjZXNzZnVsIHRoZSB0ZXN0IHByaW50cyAiUEFTUyIuCisKKyAgICAgICAgICAgICAg
ICAgIAorUEFTUwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFt
ZS1hdHRyaWJ1dGUtcGFyc2luZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmcuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRl
LXBhcnNpbmcuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNjUgQEAKKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKK3ZhciBmYWlsZWQgPSBm
YWxzZTsKK3ZhciBmcmFtZXMgPSAwOyAgICAgICAgIC8qIG51bWJlciBvZiBhbGxvd2VkIGZyYW1l
cyB0aGF0IGNhbGxlZCBiYWNrICovCisKK2Z1bmN0aW9uIGZhaWwobWVzc2FnZSkKK3sKKyAgICBz
ZXRTdGF0dXMoIkZBSUw6ICIgKyBtZXNzYWdlKTsKKyAgICBmYWlsZWQgPSB0cnVlOworfQorCitm
dW5jdGlvbiBzZXRTdGF0dXMoc3RhdHVzKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJ0ZXN0U3RhdHVzIikuaW5uZXJIVE1MID0gc3RhdHVzOworfQorCitmdW5jdGlvbiBhbGxvd2Vk
Q2FsbEZyb21TYW5kYm94KCkKK3sKKyAgICArK2ZyYW1lczsKK30KKworZnVuY3Rpb24gZGlzYWxs
b3dlZENhbGxGcm9tU2FuZGJveCgpCit7CisgICAgZmFpbCgiZGlzYWxsb3dlZCBzY3JpcHQgZXhl
Y3V0ZWQiKTsKK30KKworZnVuY3Rpb24gZGlzYWxsb3dlZEZvcm1TdWJtaXR0ZWQoKQoreworICAg
IGZhaWwoInNhbmRib3hpbmcgZmFpbGVkOiBmb3JtIHN1Ym1pdHRlZCBpbiBzYW5kYm94ZWQgZnJh
bWUiKTsKK30KKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBpZiAoZnJhbWVz
ID09IDUgJiYgIWZhaWxlZCkKKyAgICAgICAgc2V0U3RhdHVzKCJQQVNTIik7CisgICAgZWxzZSBp
ZiAoIWZhaWxlZCkKKyAgICAgICAgZmFpbCgic2NyaXB0aW5nIGRpc2FibGVkIGluIG9uZSBvciBt
b3JlIGZyYW1lcyB3aGVyZSBpdCBzaG91bGQgYmUgZW5hYmxlZCIpOworfQorCis8L3NjcmlwdD4K
KzwvaGVhZD4KKworPGJvZHk+CisKKyAgICA8cD5UaGlzIHRlc3QgY2FzZSB2ZXJpZmllcyB0aGUg
cGFyc2luZyBvZiB0aGUgaWZyYW1lIHNhbmRib3ggYXR0cmlidXRlLiBUd28gc2V0cyBvZiBpZnJh
bWVzCisgICAgYXJlIHVzZWQ6IG9uZSB3aGVyZSBzY3JpcHRpbmcgaXMgYWxsb3dlZCwgYW5kIGFu
b3RoZXIgb25lIHdoZXJlIGl0IGlzIGRpc2FsbG93ZWQuIFRoZSB0ZXN0CisgICAgdmVyaWZpZXMg
dGhhdCB0aGUgYWxsb3dlZCBmcmFtZXMgZXhlY3V0ZSBzY3JpcHRzIChidXQgb3RoZXIgc2FuZGJv
eGVkIHByb3BlcnRpZXMgc3RpbGwKKyAgICBhcHBseSAtLSBzcGVjaWZpY2FsbHksIGZvcm1zIGFy
ZSBkaXNhYmxlZCksIGFuZCB0aGUgZGlzYWxsb3dlZCBvbmVzIGRvIG5vdC4gSWYgc3VjY2Vzc2Z1
bAorICAgIHRoZSB0ZXN0IHByaW50cyAmcXVvdDtQQVNTJnF1b3Q7LjwvcD4KKyAgICAKKyAgICA8
IS0tIGlmcmFtZXMgd2hlcmUgc2NyaXB0IGV4ZWN1dGlvbiBpcyBhbGxvd2VkLCBidXQgb3JpZ2lu
IGlzIG5vdCBzaGFyZWQgLS0+CisKKyAgICA8IS0tIHBsYWluLCBwcm9wZXIgYXR0cmlidXRlIHZh
bHVlIC0tPgorICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyIKKyAgICAgICAgICAg
IG5hbWU9ImYxIgorICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1h
dHRyaWJ1dGUtcGFyc2luZy1hbGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorICAgIAorICAg
IDwhLS0gbGluZSBmZWVkIGNoYXJhY3RlcnMgYmVmb3JlIGFuZCBhZnRlciBhdHRyaWJ1dGUgdmFs
dWUgLS0+CisgICAgPGlmcmFtZSBzYW5kYm94PSIKKworYWxsb3ctc2NyaXB0cworCisiCisgICAg
ICAgICAgICBuYW1lPSJmMiIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1p
ZnJhbWUtYXR0cmlidXRlLXBhcnNpbmctYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKwor
ICAgIDwhLS0gcmlkaWN1bG91c2x5IGxvbmcsIGludmFsaWQgdGV4dCAod2VsbCwgZm9yIHRoZXNl
IHB1cnBvc2VzIGF0IGxlYXN0KQorICAgICAgICAgd2l0aCBub24tQVNDSUkgY2hhcmFjdGVycyBz
dXJyb3VuZGluZyBhdHRyaWJ1dGUgdmFsdWUgLS0+CisgICAgPGlmcmFtZSBzYW5kYm94PSIKKyAg
ICAgICAgRsO2ciB2YXIgdmVycywgamFnIGfDtnIsCisgICAgICAgIExvdmFyIGR1IGVuIGt5c3Mg
bWlnIGdpdmE7CisgICAgICAgIEFya2V0IGZ1bGx0IGphZyBib3JkZSBza3JpdmEsCisgICAgICAg
IE1pbmRyZSBoYXIgamFnIHNrcml2aXQgZsO2ci4KKyAgICAgICAgTWVuIG1hbiBtw6VzdGUgaMOl
bGxhIG3DpXR0YSwKKyAgICAgICAgSmFnIG1lZCB2ZXJzLCBtZWQga3lzc2FyIGR1LgorICAgICAg
ICBMw6V0IG1pZyByw6RrbmE6IETDpHIgw6RyIHNqdSEKKyAgICAgICAgRW4gZMOkcnRpbGwgZGV0
IGfDtnIgbWlnIMOldHRhLgorCisgICAgICAgIE51bXJvIMOldHRhIMOkciBmYXRhbCwKKyAgICAg
ICAgR3Jla2xhbmRzIHPDpW5nbcO2ciB2b3JvIG5pbywKKyAgICAgICAgT2NoIGVuIHN2ZW5zayBk
w6RydGlsbCBnw7ZyIHRpby4g4oCUCisgICAgICAgIEVsdmEgdmFyIGFwb3N0ZWxucyB0YWwsCisg
ICAgICAgIFR5IGphZyByw6RrbmFyIGlja2UgSnVkYXMsCisgICAgICAgIEhvbm9tLCBzb20gaSB2
w6RubmVycyBsYWcKKyAgICAgICAgS3lzc3RlIGZhbHNrdDsgZGV0IGfDtnIgZWogamFnLAorICAg
ICAgICBIZWxzdCBuw6RyIHZhY2tyYSBsw6RwcGFyIGJqdWRhcy4KKworICAgICAgICBIdXJ1IHN0
w6VyIG1pbiByw6RrbmluZyBow6RyPworICAgICAgICBBZGVydG9uOyBkZXQgw6RyIGRvY2sgbsOl
Z290LgorICAgICAgICBOaXR0b24g4oCUIHJpbW1ldCBnw7ZyIGJlc3bDpHIsCisgICAgICAgIETD
pHJmw7ZyZSBqYWcgZnlsbGVyIHRqb2dldC4KKyAgICAgICAgU3Ryb2ZlbiDDpHIgZWogZnVsbCBz
b20gamFnLAorICAgICAgICBJbiBpIGhhbW5lbiB2aWxsIGphZyBzdHlyYSwKKyAgICAgICAgRMOk
cmbDtnJlIHRpbGwgZ29kbyB0YWcKKyAgICAgICAgRGVubmEgZ8OlbmcgbWVkIHRqdWdvZnlyYS4K
KyAgICAgICAgCisgICAgICAgICdLeXNzYXJuYScgKCdUaGUga2lzc2VzJyksIEVzYWlhcyBUZWdu
w6lyLCAxNzgyLTE4NDYKKworICAgIGFsbG93LXNjcmlwdHMKKyAgICAKKyAgICAgICAgaW50IG1h
aW4odm9pZCkKKyAgICAgICAgeworICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9IgorICAg
ICAgICAgICAgbmFtZT0iZjMiCisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQt
aWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWFsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisK
KyAgICA8IS0tIHRhYiBjaGFyYWN0ZXJzIGJlZm9yZSBhbmQgYWZ0ZXIgYXR0cmlidXRlIHZhbHVl
IC0tPgorICAgIDxpZnJhbWUgc2FuZGJveD0iCQlhbGxvdy1zY3JpcHRzCQkiCisgICAgICAgICAg
ICBuYW1lPSJmNCIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUt
YXR0cmlidXRlLXBhcnNpbmctYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKworICAgIDwh
LS0gbWl4ZWQgY2FzZSAtLT4KKyAgICA8aWZyYW1lIHNhbmRib3g9IkFsTG9XLXNDcklwVHMiCisg
ICAgICAgICAgICBuYW1lPSJmNSIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hl
ZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmctYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4K
KworICAgIDwhLS0gaWZyYW1lcyB3aGVyZSBzY3JpcHQgZXhlY3V0aW9uIGlzIGRpc2FsbG93ZWQg
LS0+CisKKyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93c2NyaXB0cyIKKyAgICAgICAgICAgIHNy
Yz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmctZGlzYWxsb3dl
ZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKworICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3dzLWNy
aXB0cyIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmli
dXRlLXBhcnNpbmctZGlzYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKworICAgIDxpZnJh
bWUgc2FuZGJveD0iLWFsbG93LXNjcmlwdHMiCisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9z
YW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWRpc2FsbG93ZWQuaHRtbCI+CisgICAg
PC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93X3NjcmlwdHMiCisgICAgICAg
ICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWRp
c2FsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNhbmRib3g9ImFs
bG93U2NyaXB0cyIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUt
YXR0cmlidXRlLXBhcnNpbmctZGlzYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKworICAg
IDxpZnJhbWUgc2FuZGJveD0iYWFsbG93LXNjcmlwdHMiCisgICAgICAgICAgICBzcmM9InJlc291
cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWRpc2FsbG93ZWQuaHRtbCI+
CisgICAgPC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93LXNjcmlwdHNzIgor
ICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFy
c2luZy1kaXNhbGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorCisgICAgPGlmcmFtZSBzYW5k
Ym94CisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0
ZS1wYXJzaW5nLWRpc2FsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8cCBpZD0n
dGVzdFN0YXR1cyc+RkFJTDogU2NyaXB0IGRpZG4ndCBydW48L3A+CisKKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtZm9ybXMt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRi
b3hlZC1pZnJhbWUtZm9ybXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1mb3Jtcy1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNCBAQAorVGhpcyB0ZXN0IHJ1bnMgZml2ZSBJRnJhbWVzIHdpdGgg
Zm9ybXMgYWxsb3dlZCwgb25lIElGcmFtZSB3aXRoIGZvcm1zIGRpc2FsbG93ZWQsIHRoZW4gZml2
ZSBtb3JlIElGcmFtZXMgd2l0aCBmb3JtcyBhbGxvd2VkLiBJZiB0ZW4gZm9ybSBzdWJtaXNzaW9u
cyBhcmUgbWFkZSwgYW5kIHRoZSBkaXNhbGxvd2VkIHN1Ym1pc3Npb24gaXMgbm90IG9uZSBvZiB0
aGVtLCB3ZSBjb25zaWRlciB0aGUgdGVzdCB0byBoYXZlIHBhc3NlZC4gVGhpcyB0ZXN0IHdpbGwg
cHJpbnQgIlBBU1MiIG9uIHN1Y2Nlc3MuCisKKyAgICAgICAgICAgICAgICAgICAgCitQQVNTCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm1zLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1m
b3Jtcy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJv
eGVkLWlmcmFtZS1mb3Jtcy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk2IEBACis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
eworICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgd2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKwordmFyIHN1Ym1p
c3Npb25Db3VudCAgICAgID0gMDsKK3ZhciBkaXNhbGxvd2VkU3VibWlzc2lvbiA9IGZhbHNlOwor
CitmdW5jdGlvbiBhbGxvd2VkRm9ybVN1Ym1pdHRlZCgpCit7CisgICAgKytzdWJtaXNzaW9uQ291
bnQ7CisKKyAgICBpZiAoc3VibWlzc2lvbkNvdW50ID09IDEwKSB7CisgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0ZXN0X3N0YXR1cyIpLmlubmVySFRNTCA9IChkaXNhbGxvd2VkU3Vi
bWlzc2lvbiA/ICJGQUlMIiA6ICJQQVNTIik7CisgICAgICAKKyAgICAgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7CisgICAgfQorfQorCitmdW5jdGlvbiBkaXNhbGxvd2VkRm9ybVN1
Ym1pdHRlZCgpCit7CisgICAgZGlzYWxsb3dlZFN1Ym1pc3Npb24gPSB0cnVlOworfQorCis8L3Nj
cmlwdD4KKzwvaGVhZD4KKworPGJvZHk+CisKKyAgICA8cD5UaGlzIHRlc3QgcnVucyBmaXZlIElG
cmFtZXMgd2l0aCBmb3JtcyBhbGxvd2VkLCBvbmUgSUZyYW1lIHdpdGggZm9ybXMKKyAgICBkaXNh
bGxvd2VkLCB0aGVuIGZpdmUgbW9yZSBJRnJhbWVzIHdpdGggZm9ybXMgYWxsb3dlZC4gSWYgdGVu
IGZvcm0KKyAgICBzdWJtaXNzaW9ucyBhcmUgbWFkZSwgYW5kIHRoZSBkaXNhbGxvd2VkIHN1Ym1p
c3Npb24gaXMgbm90IG9uZSBvZiB0aGVtLAorICAgIHdlIGNvbnNpZGVyIHRoZSB0ZXN0IHRvIGhh
dmUgcGFzc2VkLiBUaGlzIHRlc3Qgd2lsbCBwcmludAorICAgICZxdW90O1BBU1MmcXVvdDsgb24g
c3VjY2Vzcy48L3A+CisKKyAgICA8IS0tIGZpdmUgSUZyYW1lcyB3aXRoIGZvcm1zIGFsbG93ZWQg
LS0+CisKKyAgICA8aWZyYW1lIHN0eWxlPSJ3aWR0aDogNjBweDsgaGVpZ2h0OiA2MHB4OyIKKyAg
ICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyIKKyAgICAgICAgc3JjPSJy
ZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWFsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJh
bWU+CisgICAgPGlmcmFtZSBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsiCisgICAg
ICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMiCisgICAgICAgIHNyYz0icmVz
b3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1hbGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1l
PgorICAgIDxpZnJhbWUgc3R5bGU9IndpZHRoOiA2MHB4OyBoZWlnaHQ6IDYwcHg7IgorICAgICAg
ICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1zIgorICAgICAgICBzcmM9InJlc291
cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4K
KyAgICA8aWZyYW1lIHN0eWxlPSJ3aWR0aDogNjBweDsgaGVpZ2h0OiA2MHB4OyIKKyAgICAgICAg
c2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyIKKyAgICAgICAgc3JjPSJyZXNvdXJj
ZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWFsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+Cisg
ICAgPGlmcmFtZSBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsiCisgICAgICAgIHNh
bmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMiCisgICAgICAgIHNyYz0icmVzb3VyY2Vz
L3NhbmRib3hlZC1pZnJhbWUtZm9ybS1hbGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorCisg
ICAgPCEtLSBvbmUgSUZyYW1lIHdpdGggZm9ybXMgZGlzYWxsb3dlZCAtLT4KKworICAgIDxpZnJh
bWUgc3R5bGU9IndpZHRoOiA2MHB4OyBoZWlnaHQ6IDYwcHg7IgorICAgICAgICBzYW5kYm94PSJh
bGxvdy1zY3JpcHRzIgorICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZv
cm0tZGlzYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKworICAgIDwhLS0gZml2ZSBtb3Jl
IElGcmFtZXMgd2l0aCBmb3JtcyBhbGxvd2VkIC0tPgorCisgICAgPGlmcmFtZSBzdHlsZT0id2lk
dGg6IDYwcHg7IGhlaWdodDogNjBweDsiCisgICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMg
YWxsb3ctZm9ybXMiCisgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9y
bS1hbGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorICAgIDxpZnJhbWUgc3R5bGU9IndpZHRo
OiA2MHB4OyBoZWlnaHQ6IDYwcHg7IgorICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFs
bG93LWZvcm1zIgorICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0t
YWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIHN0eWxlPSJ3aWR0aDog
NjBweDsgaGVpZ2h0OiA2MHB4OyIKKyAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxv
dy1mb3JtcyIKKyAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWFs
bG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBzdHlsZT0id2lkdGg6IDYw
cHg7IGhlaWdodDogNjBweDsiCisgICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ct
Zm9ybXMiCisgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1hbGxv
d2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorICAgIDxpZnJhbWUgc3R5bGU9IndpZHRoOiA2MHB4
OyBoZWlnaHQ6IDYwcHg7IgorICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZv
cm1zIgorICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tYWxsb3dl
ZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKyAgICAKKyAgICA8cCBpZD0ndGVzdF9zdGF0dXMnPkZB
SUw6IFNjcmlwdCBkaWRuJ3QgcnVuPC9wPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLWFsbG93ZWQtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hl
ZC1pZnJhbWUtbmF2aWdhdGlvbi1hbGxvd2VkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1hbGxv
d2VkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMiBAQAorVGhpcyB0ZXN0
IHZlcmlmaWVzIHRoYXQgYSBzYW5kYm94ZWQgaWZyYW1lIENBTiBuYXZpZ2F0ZSBib3RoIGl0c2Vs
ZiBhbmQgYSBjaGlsZCBpbiB0aGUgZnJhbWUgdHJlZS4gSXQgYWxzbyB2ZXJpZmllcyB0aGF0IHRo
ZSBzYW5kYm94IGF0dHJpYnV0ZSByZW1haW5zIGludGFjdCBhZnRlciBhIGZyYW1lIGhhcyBiZWVu
IG5hdmlnYXRlZCwgYW5kIHRoYXQgc2FuZGJveCBhdHRyaWJ1dGVzIGFyZSBwcm9wYWdhdGVkIHRo
cm91Z2ggdGhlIGZyYW1lIGhpZXJhcmNoeS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1BBU1MgKHNlbGYuc2FuZGJveGVkRnJhbWUuZnJhbWVXaXRoUGx1Z2luLmRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdwbHVnaW4nKS5kZXN0cm95U3RyZWFtKSA9PSB1bmRlZmluZWQgaXMgdHJ1
ZQorUEFTUyAoc2VsZi5mcmFtZVdpdGhQbHVnaW4uZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Bs
dWdpbicpLmRlc3Ryb3lTdHJlYW0pICE9IHVuZGVmaW5lZCBpcyB0cnVlCitQQVNTIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94ZWRGcmFtZUlkJykuc2FuZGJveCBpcyAnYWxsb3ctc2Ny
aXB0cyBhbGxvdy1zYW1lLW9yaWdpbicKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorICAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRi
b3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1hbGxvd2VkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLWFsbG93ZWQuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJh
bWUtbmF2aWdhdGlvbi1hbGxvd2VkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjAgQEAK
KzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7Cit9CisKK2Z1bmN0aW9uIGNoaWxkRnJhbWVXYXNOYXZpZ2F0ZWQoKQoreworICAgIC8v
IENoZWNrIHRoYXQgdGhlIGNoaWxkIGZyYW1lIHdhcyB1bmFibGUgdG8gbG9hZCBhIHBsdWdpbiwg
c2luY2UgaXRzIHBhcmVudCBpcyBzYW5kYm94ZWQuCisgICAgc2hvdWxkQmVUcnVlKCIoc2VsZi5z
YW5kYm94ZWRGcmFtZS5mcmFtZVdpdGhQbHVnaW4uZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Bs
dWdpbicpLmRlc3Ryb3lTdHJlYW0pID09IHVuZGVmaW5lZCIpOworICAgIAorICAgIC8vIENoZWNr
IGEgbm9uLXNhbmRib3hlZCBmcmFtZSBhcyB3ZWxsLCB0byBlbnN1cmUgdGhhdCB0aGUgcGx1Z2lu
IGlzIGRpc2FibGVkIGJ5IHNhbmRib3hpbmcKKyAgICAvLyBhbmQgbm90IHNvbWUgb3RoZXIgZmFp
bHVyZQorICAgIHNob3VsZEJlVHJ1ZSgiKHNlbGYuZnJhbWVXaXRoUGx1Z2luLmRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdwbHVnaW4nKS5kZXN0cm95U3RyZWFtKSAhPSB1bmRlZmluZWQiKTsKKwor
ICAgIC8vIFdoZW4gdGhlIGNoaWxkIGZyYW1lIChncmFuZGNoaWxkIG9mIHRoZSBtYWluIHdpbmRv
dykgaGFzIGJlZW4gbmF2aWdhdGVkLAorICAgIC8vIG1ha2UgdGhlIHNhbmRib3hlZCBmcmFtZSBu
YXZpZ2F0ZSBpdHNlbGYKKyAgICBzZWxmLnNhbmRib3hlZEZyYW1lLmxvY2F0aW9uLmFzc2lnbigi
amF2YXNjcmlwdDogdG9wLnNhbmRib3hXYXNOYXZpZ2F0ZWQoKTsiKTsKK30KKworZnVuY3Rpb24g
c2FuZGJveFdhc05hdmlnYXRlZCgpCit7CisgICAgc2hvdWxkQmUoImRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdzYW5kYm94ZWRGcmFtZUlkJykuc2FuZGJveCIsICInYWxsb3ctc2NyaXB0cyBhbGxv
dy1zYW1lLW9yaWdpbiciKTsKKyAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOworCisgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgd2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5
PgorICAgIDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorCisgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LXNhbWUtb3Jp
Z2luIgorICAgICAgICAgICAgbmFtZT0ic2FuZGJveGVkRnJhbWUiCisgICAgICAgICAgICBpZD0i
c2FuZGJveGVkRnJhbWVJZCIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1p
ZnJhbWUtbmF2aWdhdGlvbi1jaGlsZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKworICAgIDxpZnJh
bWUgbmFtZT0iZnJhbWVXaXRoUGx1Z2luIgorICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2Fu
ZGJveGVkLWlmcmFtZS1wbHVnaW5zLWZyYW1lLW9iamVjdC5odG1sIj4KKyAgICA8L2lmcmFtZT4K
KworICAgIDxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0
IGEgc2FuZGJveGVkIGlmcmFtZSBDQU4gbmF2aWdhdGUgYm90aCBpdHNlbGYgYW5kIGEgY2hpbGQg
aW4gdGhlIGZyYW1lIHRyZWUuICIKKyAgICAgICAgICAgICAgICArICJJdCBhbHNvIHZlcmlmaWVz
IHRoYXQgdGhlIHNhbmRib3ggYXR0cmlidXRlIHJlbWFpbnMgaW50YWN0IGFmdGVyIGEgZnJhbWUg
aGFzIGJlZW4gbmF2aWdhdGVkLCAiCisgICAgICAgICAgICAgICAgKyAiYW5kIHRoYXQgc2FuZGJv
eCBhdHRyaWJ1dGVzIGFyZSBwcm9wYWdhdGVkIHRocm91Z2ggdGhlIGZyYW1lIGhpZXJhcmNoeS4i
KTsKKyAgICB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKyAgICA8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1p
ZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJv
eGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXBhcmVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsOCBAQAorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYSBzYW5kYm94ZWQgSUZyYW1l
IGNhbm5vdCBuYXZpZ2F0ZSBhbiBhbmNlc3RvciBpbiB0aGUgZnJhbWUgdHJlZSBieSBhc3NpZ25p
bmcgdGhlIGxvY2F0aW9uIGF0dHJpYnV0ZS4KKworVGhpcyBpcyBkb25lIGJ5IGxvYWRpbmcgdGVu
IG5vbi1zYW5kYm94ZWQgSUZyYW1lcywgYW5kIGEgc2luZ2xlIHNhbmRib3hlZCBvbmUuIEV4cGVj
dCB0ZW4gZnJhbWVzIHRvIGJlIG5hdmlnYXRlZCwgYnV0IHRoZSBzYW5kYm94ZWQgb25lIHRvIG5v
dCBiZSBvbmUgb2YgdGhlbS4KKworVGhpcyB0ZXN0IHdpbGwgcHJpbnQgIlBBU1MiIG9uIHN1Y2Nl
c3MuCisKKyAgICAgICAgICAgICAgIAorUEFTUwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFt
ZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXBhcmVudC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJl
bnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hl
ZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2
OCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKKyAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisK
K3ZhciBuYXZpZ2F0ZWRGcmFtZXMgPSAwOworCitmdW5jdGlvbiBjaGVja1Jlc3VsdHMoKQorewor
ICAgIHZhciB0ZXN0U3RhdHVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3RTdGF0dXMn
KTsKKworICAgIGlmIChzZWxmLm5hdmlnYXRlZC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoJ3BhcmVu
dC5odG1sJykgPT0gLTEpCisgICAgICAgIHRlc3RTdGF0dXMuaW5uZXJIVE1MID0gJ0ZBSUw6IGRp
c2FsbG93ZWQgZnJhbWUgbmF2aWdhdGVkJzsKKyAgICBlbHNlIGlmIChuYXZpZ2F0ZWRGcmFtZXMg
PT0gMTApCisgICAgICAgIHRlc3RTdGF0dXMuaW5uZXJIVE1MID0gJ1BBU1MnOworICAgIGVsc2UK
KyAgICAgICAgdGVzdFN0YXR1cy5pbm5lckhUTUwgPSAnRkFJTDogZnJhbWVzIG5vdCBuYXZpZ2F0
ZWQgcHJvcGVybHknOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZnVu
Y3Rpb24gY291bnRGcmFtZSgpCit7CisgICAgKytuYXZpZ2F0ZWRGcmFtZXM7CisKKyAgICBpZiAo
bmF2aWdhdGVkRnJhbWVzID09IDEwKQorICAgICAgICBjaGVja1Jlc3VsdHMoKTsKK30KKworPC9z
Y3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorCisgICAgPHA+VGhpcyB0ZXN0IHZlcmlmaWVzIHRo
YXQgYSBzYW5kYm94ZWQgSUZyYW1lIGNhbm5vdCBuYXZpZ2F0ZSBhbiBhbmNlc3RvcgorICAgIGlu
IHRoZSBmcmFtZSB0cmVlIGJ5IGFzc2lnbmluZyB0aGUgbG9jYXRpb24gYXR0cmlidXRlLjwvcD4K
KworICAgIDxwPlRoaXMgaXMgZG9uZSBieSBsb2FkaW5nIHRlbiBub24tc2FuZGJveGVkIElGcmFt
ZXMsIGFuZCBhIHNpbmdsZQorICAgIHNhbmRib3hlZCBvbmUuIEV4cGVjdCB0ZW4gZnJhbWVzIHRv
IGJlIG5hdmlnYXRlZCwgYnV0IHRoZSBzYW5kYm94ZWQKKyAgICBvbmUgdG8gPGI+bm90PC9iPiBi
ZSBvbmUgb2YgdGhlbS48L3A+CisgICAgCisgICAgPHA+VGhpcyB0ZXN0IHdpbGwgcHJpbnQgJnF1
b3Q7UEFTUyZxdW90OyBvbiBzdWNjZXNzLjwvcD4KKworICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJj
ZXMvbm9uLXNhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi5odG1sIj48L2lmcmFtZT4KKyAgICA8
aWZyYW1lIHNyYz0icmVzb3VyY2VzL25vbi1zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24uaHRt
bCI+PC9pZnJhbWU+CisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9ub24tc2FuZGJveGVkLWlm
cmFtZS1uYXZpZ2F0aW9uLmh0bWwiPjwvaWZyYW1lPgorICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJj
ZXMvbm9uLXNhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi5odG1sIj48L2lmcmFtZT4KKyAgICA8
aWZyYW1lIHNyYz0icmVzb3VyY2VzL25vbi1zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24uaHRt
bCI+PC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIG5hbWU9J25hdmlnYXRlZCcKKyAgICAgICAgICAg
IHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQuaHRtbCIK
KyAgICA8L2lmcmFtZT4KKworICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvbm9uLXNhbmRib3hl
ZC1pZnJhbWUtbmF2aWdhdGlvbi5odG1sIj48L2lmcmFtZT4KKyAgICA8aWZyYW1lIHNyYz0icmVz
b3VyY2VzL25vbi1zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24uaHRtbCI+PC9pZnJhbWU+Cisg
ICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9ub24tc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9u
Lmh0bWwiPjwvaWZyYW1lPgorICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvbm9uLXNhbmRib3hl
ZC1pZnJhbWUtbmF2aWdhdGlvbi5odG1sIj48L2lmcmFtZT4KKyAgICA8aWZyYW1lIHNyYz0icmVz
b3VyY2VzL25vbi1zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24uaHRtbCI+PC9pZnJhbWU+CisK
KyAgICA8cCBpZD0ndGVzdFN0YXR1cyc+RkFJTDogU2NyaXB0IGRpZG4ndCBydW48L3A+CisgICAg
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94
ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRh
cmdldGxpbmstZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9m
cmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmstZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGEg
c2FuZGJveGVkIElGcmFtZSBjYW5ub3Qgb3BlbiBhIGxpbmsgaW4gYW5vdGhlciBmcmFtZSB1c2lu
ZyB0aGUgdGFyZ2V0IGF0dHJpYnV0ZSBvZiBhIGxpbmsuCisKK1RoaXMgaXMgZG9uZSBieSBsb2Fk
aW5nIHRlbiBub24tc2FuZGJveGVkIElGcmFtZXMsIGFuZCBhIHNpbmdsZSBzYW5kYm94ZWQgb25l
LiBJbiBhZGRpdGlvbiBlYWNoIG9mIHRoZXNlIGZyYW1lcyBoYXZlIGEgdGFyZ2V0IGZyYW1lIChz
bywgMjIgZnJhbWVzIGluIHRvdGFsKS4gRXhwZWN0IHRlbiBmcmFtZXMgdG8gYmUgYWJsZSB0byBv
cGVuIGEgbGluayBpbiB0aGVpciBjb3JyZXNwb25kaW5nIHRhcmdldCBmcmFtZSwgYnV0IHRoZSBz
YW5kYm94ZWQgb25lIHRvIG5vdCBiZSBvbmUgb2YgdGhlbS4KKworVGhpcyB0ZXN0IHdpbGwgcHJp
bnQgIlBBU1MiIG9uIHN1Y2Nlc3MuCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
CitQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5h
dmlnYXRpb24tdGFyZ2V0bGluay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRsaW5rLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmln
YXRpb24tdGFyZ2V0bGluay5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwOSBAQAorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKKyAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK3ZhciBuYXZp
Z2F0ZWRGcmFtZXMgPSAwOworCitmdW5jdGlvbiBjaGVja1Jlc3VsdHMoKQoreworICAgIHZhciB0
ZXN0U3RhdHVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3RTdGF0dXMnKTsKKworICAg
IGlmIChzZWxmLnNhbmRib3hlZF90YXJnZXQubG9jYXRpb24uaHJlZi5pbmRleE9mKCcuaHRtbCcp
ICE9IC0xKQorICAgICAgICB0ZXN0U3RhdHVzLmlubmVySFRNTCA9ICdGQUlMOiBkaXNhbGxvd2Vk
IGZyYW1lIG5hdmlnYXRlZCc7CisgICAgZWxzZSBpZiAobmF2aWdhdGVkRnJhbWVzID09IDEwKQor
ICAgICAgICB0ZXN0U3RhdHVzLmlubmVySFRNTCA9ICdQQVNTJzsKKyAgICBlbHNlCisgICAgICAg
IHRlc3RTdGF0dXMuaW5uZXJIVE1MID0gJ0ZBSUw6IGZyYW1lcyBub3QgbmF2aWdhdGVkIHByb3Bl
cmx5JzsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGNv
dW50RnJhbWUoKQoreworICAgICsrbmF2aWdhdGVkRnJhbWVzOworCisgICAgaWYgKG5hdmlnYXRl
ZEZyYW1lcyA9PSAxMCkKKyAgICAgICAgY2hlY2tSZXN1bHRzKCk7Cit9CisKKzwvc2NyaXB0Pgor
PC9oZWFkPgorCis8Ym9keT4KKworICAgIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGEgc2Fu
ZGJveGVkIElGcmFtZSBjYW5ub3Qgb3BlbiBhIGxpbmsgaW4KKyAgICBhbm90aGVyIGZyYW1lIHVz
aW5nIHRoZSA8Y29kZT50YXJnZXQ8L2NvZGU+IGF0dHJpYnV0ZSBvZiBhIGxpbmsuPC9wPgorCisg
ICAgPHA+VGhpcyBpcyBkb25lIGJ5IGxvYWRpbmcgdGVuIG5vbi1zYW5kYm94ZWQgSUZyYW1lcywg
YW5kIGEgc2luZ2xlCisgICAgc2FuZGJveGVkIG9uZS4gSW4gYWRkaXRpb24gZWFjaCBvZiB0aGVz
ZSBmcmFtZXMgaGF2ZSBhIHRhcmdldCBmcmFtZQorICAgIChzbywgMjIgZnJhbWVzIGluIHRvdGFs
KS4gRXhwZWN0IHRlbiBmcmFtZXMgdG8gYmUgYWJsZSB0byBvcGVuIGEgbGluaworICAgIGluIHRo
ZWlyIGNvcnJlc3BvbmRpbmcgdGFyZ2V0IGZyYW1lLCBidXQgdGhlIHNhbmRib3hlZCBvbmUKKyAg
ICB0byA8Yj5ub3Q8L2I+IGJlIG9uZSBvZiB0aGVtLjwvcD4KKyAgICAKKyAgICA8cD5UaGlzIHRl
c3Qgd2lsbCBwcmludCAmcXVvdDtQQVNTJnF1b3Q7IG9uIHN1Y2Nlc3MuPC9wPgorCisgICAgPGlm
cmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGlu
ay5odG1sIgorICAgICAgICAgICAgbmFtZT0iZjEiPgorICAgIDwvaWZyYW1lPgorICAgIDxpZnJh
bWUgbmFtZT0iZjFfdGFyZ2V0IiBzcmM9ImFib3V0OmJsYW5rIj48L2lmcmFtZT4KKworICAgIDxp
ZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxp
bmsuaHRtbCIKKyAgICAgICAgICAgIG5hbWU9ImYyIj4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZy
YW1lIG5hbWU9ImYyX3RhcmdldCIgc3JjPSJhYm91dDpibGFuayI+PC9pZnJhbWU+CisKKyAgICA8
aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRs
aW5rLmh0bWwiCisgICAgICAgICAgICBuYW1lPSJmMyI+CisgICAgPC9pZnJhbWU+CisgICAgPGlm
cmFtZSBuYW1lPSJmM190YXJnZXQiIHNyYz0iYWJvdXQ6YmxhbmsiPjwvaWZyYW1lPgorCisgICAg
PGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0
bGluay5odG1sIgorICAgICAgICAgICAgbmFtZT0iZjQiPgorICAgIDwvaWZyYW1lPgorICAgIDxp
ZnJhbWUgbmFtZT0iZjRfdGFyZ2V0IiBzcmM9ImFib3V0OmJsYW5rIj48L2lmcmFtZT4KKworICAg
IDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdl
dGxpbmsuaHRtbCIKKyAgICAgICAgICAgIG5hbWU9ImY1Ij4KKyAgICA8L2lmcmFtZT4KKyAgICA8
aWZyYW1lIG5hbWU9ImY1X3RhcmdldCIgc3JjPSJhYm91dDpibGFuayI+PC9pZnJhbWU+CisKKyAg
ICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJn
ZXRsaW5rLmh0bWwiCisgICAgICAgICAgICBuYW1lPSJzYW5kYm94ZWQiCisgICAgICAgICAgICBz
YW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LXNhbWUtb3JpZ2luIj4KKyAgICA8L2lmcmFtZT4K
KyAgICA8aWZyYW1lIG5hbWU9InNhbmRib3hlZF90YXJnZXQiIHNyYz0iYWJvdXQ6YmxhbmsiPjwv
aWZyYW1lPgorCisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5h
dmlnYXRpb24tdGFyZ2V0bGluay5odG1sIgorICAgICAgICAgICAgbmFtZT0iZjYiPgorICAgIDwv
aWZyYW1lPgorICAgIDxpZnJhbWUgbmFtZT0iZjZfdGFyZ2V0IiBzcmM9ImFib3V0OmJsYW5rIj48
L2lmcmFtZT4KKworICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1u
YXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbCIKKyAgICAgICAgICAgIG5hbWU9ImY3Ij4KKyAgICA8
L2lmcmFtZT4KKyAgICA8aWZyYW1lIG5hbWU9ImY3X3RhcmdldCIgc3JjPSJhYm91dDpibGFuayI+
PC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUt
bmF2aWdhdGlvbi10YXJnZXRsaW5rLmh0bWwiCisgICAgICAgICAgICBuYW1lPSJmOCI+CisgICAg
PC9pZnJhbWU+CisgICAgPGlmcmFtZSBuYW1lPSJmOF90YXJnZXQiIHNyYz0iYWJvdXQ6Ymxhbmsi
PjwvaWZyYW1lPgorCisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1l
LW5hdmlnYXRpb24tdGFyZ2V0bGluay5odG1sIgorICAgICAgICAgICAgbmFtZT0iZjkiPgorICAg
IDwvaWZyYW1lPgorICAgIDxpZnJhbWUgbmFtZT0iZjlfdGFyZ2V0IiBzcmM9ImFib3V0OmJsYW5r
Ij48L2lmcmFtZT4KKworICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFt
ZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbCIKKyAgICAgICAgICAgIG5hbWU9ImYxMCI+Cisg
ICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBuYW1lPSJmMTBfdGFyZ2V0IiBzcmM9ImFib3V0OmJs
YW5rIj48L2lmcmFtZT4KKworICAgIDxwIGlkPSd0ZXN0U3RhdHVzJz5GQUlMOiBTY3JpcHQgZGlk
bid0IHJ1bjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5h
dmlnYXRpb24td2luZG93b3Blbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNiBAQAorVmVyaWZpZXMgdGhhdCBh
IHNhbmRib3hlZCBJRnJhbWUgY2Fubm90IG9wZW4gbmV3IHdpbmRvd3MgdXNpbmcgd2luZG93Lm9w
ZW4oKS4gRXhwZWN0IHRlbiB3aW5kb3dzIHRvIGJlIG9wZW5lZCwgYnV0IHRoZSBzYW5kYm94ZWQg
SUZyYW1lIG5vdCB0byBiZSB0aGUgb3BlbmVyIG9mIGFueSBvZiB0aGVtLgorCitUaGlzIHRlc3Qg
d2lsbCBwcmludCAiUEFTUyIgb24gc3VjY2Vzcy4KKworICAgICAgICAgICAgICAgCitQQVNTCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24t
d2luZG93b3Blbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Nh
bmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24td2lu
ZG93b3Blbi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcyIEBACis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2FuT3Blbldp
bmRvd3ModHJ1ZSk7Cit9CisKK3ZhciB0ZXN0U3RhdHVzICAgICAgID0gIkZBSUw6IG5vdCBjb21w
bGV0ZWQiOwordmFyIHdpbmRvd3NPcGVuZWQgICAgPSAwOwordmFyIG1haW5XaW5kb3dMb2FkZWQg
PSBmYWxzZTsKK3ZhciB0ZXN0Q29tcGxldGVkICAgID0gZmFsc2U7CisKK2Z1bmN0aW9uIHVwZGF0
ZVN0YXR1cyhsb2FkZWQsIGRvbmUpCit7CisgICAgbWFpbldpbmRvd0xvYWRlZCB8PSBsb2FkZWQ7
CisgICAgdGVzdENvbXBsZXRlZCB8PSBkb25lOworCisgICAgaWYgKG1haW5XaW5kb3dMb2FkZWQg
JiYgdGVzdENvbXBsZXRlZCkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVz
dFN0YXR1cyIpLmlubmVySFRNTCA9IHRlc3RTdGF0dXM7CisgICAgICAgIGlmICh0ZXN0Q29tcGxl
dGVkICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHdpbmRvd09w
ZW5lZCh3aW5kb3dPcGVuZXIpCit7CisgICAgaWYgKHdpbmRvd09wZW5lciA9PSBzZWxmLnNhbmRi
b3hlZCkgeworICAgICAgICB0ZXN0U3RhdHVzID0gIkZBSUw6IHNhbmRib3hlZCBmcmFtZSBvcGVu
ZWQgd2luZG93IjsKKyAgICAgICAgdXBkYXRlU3RhdHVzKGZhbHNlLCB0cnVlKTsKKyAgICB9IGVs
c2UgeworICAgICAgICArK3dpbmRvd3NPcGVuZWQ7CisgICAgICAgIGlmICh3aW5kb3dzT3BlbmVk
ID09IDEwICYmICF0ZXN0Q29tcGxldGVkKSB7CisgICAgICAgICAgICB0ZXN0U3RhdHVzID0gIlBB
U1MiOworICAgICAgICAgICAgdXBkYXRlU3RhdHVzKGZhbHNlLCB0cnVlKTsKKyAgICAgICAgfQor
ICAgIH0KK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0idXBkYXRlU3Rh
dHVzKHRydWUsIGZhbHNlKTsiPgorCisgICAgPHA+VmVyaWZpZXMgdGhhdCBhIHNhbmRib3hlZCBJ
RnJhbWUgY2Fubm90IG9wZW4gbmV3IHdpbmRvd3MKKyAgICB1c2luZyA8Y29kZT53aW5kb3cub3Bl
bigpPC9jb2RlPi4gRXhwZWN0IHRlbiB3aW5kb3dzIHRvIGJlIG9wZW5lZCwKKyAgICBidXQgdGhl
IHNhbmRib3hlZCBJRnJhbWUgbm90IHRvIGJlIHRoZSBvcGVuZXIgb2YgYW55IG9mIHRoZW0uPC9w
PgorICAgIAorICAgIDxwPlRoaXMgdGVzdCB3aWxsIHByaW50ICZxdW90O1BBU1MmcXVvdDsgb24g
c3VjY2Vzcy48L3A+CisKKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJh
bWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0bWwiPjwvaWZyYW1lPgorICAgIDxpZnJhbWUgc3Jj
PSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4uaHRtbCI+
PC9pZnJhbWU+CisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5h
dmlnYXRpb24td2luZG93b3Blbi5odG1sIj48L2lmcmFtZT4KKyAgICA8aWZyYW1lIHNyYz0icmVz
b3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0bWwiPjwvaWZy
YW1lPgorICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0
aW9uLXdpbmRvd29wZW4uaHRtbCI+PC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNyYz0icmVzb3Vy
Y2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0bWwiCisgICAgICAg
ICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIgorICAgICAgICAgICAgbmFtZT0ic2FuZGJveGVk
Ij4KKyAgICA8L2lmcmFtZT4KKworICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVk
LWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4uaHRtbCI+PC9pZnJhbWU+CisgICAgPGlmcmFt
ZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi5o
dG1sIj48L2lmcmFtZT4KKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJh
bWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0bWwiPjwvaWZyYW1lPgorICAgIDxpZnJhbWUgc3Jj
PSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4uaHRtbCI+
PC9pZnJhbWU+CisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5h
dmlnYXRpb24td2luZG93b3Blbi5odG1sIj48L2lmcmFtZT4KKworICAgIDxwIGlkPSd0ZXN0U3Rh
dHVzJz5GQUlMOiBTY3JpcHQgZGlkbid0IHJ1bjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlm
cmFtZS1wbHVnaW5zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTcgQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHNhbmRib3hpbmcg
b2YgcGx1Z2lucyB3b3JrcyBhcyBpbnRlbmRlZC4gVGhyZWUgdGVzdHMgYXJlIG1hZGUsIGVhY2gg
aW4gb25lIHNhbmRib3hlZCBhbmQgb25lIG5vbi1zYW5kYm94ZWQgSUZyYW1lOiBhcHBsZXRzLCBl
bWJlZHMsIGFuZCBvYmplY3RzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworTk9U
RTogVGhlIGZpcnN0IHN1Yi10ZXN0IHdpbGwgZmFpbCBpbiBEdW1wUmVuZGVyVHJlZSwgc2luY2Ug
RHVtcFJlbmRlclRyZWUgZG9lcyBub3Qgc3VwcG9ydCBhcHBsZXRzLiBUaGF0IHN1Yi10ZXN0IG11
c3QgYmUgcnVuIGluIFNhZmFyaSBpbnN0ZWFkLgorCitGQUlMIChzZWxmLmFwcGxldEZyYW1lMS5k
b2N1bWVudFsnYXBwJ10uaW5pdCkgIT0gdW5kZWZpbmVkIHNob3VsZCBiZSB0cnVlLiBXYXMgZmFs
c2UuCitQQVNTIChzZWxmLmFwcGxldEZyYW1lMi5kb2N1bWVudFsnYXBwJ10uaW5pdCkgPT0gdW5k
ZWZpbmVkIGlzIHRydWUKK1BBU1MgKHNlbGYuZW1iZWRGcmFtZTEuZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3BsdWdpbicpLmRlc3Ryb3lTdHJlYW0pICE9IHVuZGVmaW5lZCBpcyB0cnVlCitQQVNT
IChzZWxmLmVtYmVkRnJhbWUyLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbHVnaW4nKS5kZXN0
cm95U3RyZWFtKSA9PSB1bmRlZmluZWQgaXMgdHJ1ZQorUEFTUyAoc2VsZi5vYmplY3RGcmFtZTEu
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BsdWdpbicpLmRlc3Ryb3lTdHJlYW0pICE9IHVuZGVm
aW5lZCBpcyB0cnVlCitQQVNTIChzZWxmLm9iamVjdEZyYW1lMi5kb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgncGx1Z2luJykuZGVzdHJveVN0cmVhbSkgPT0gdW5kZWZpbmVkIGlzIHRydWUKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorICAgICAgICAgCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1l
LXBsdWdpbnMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Nh
bmRib3hlZC1pZnJhbWUtcGx1Z2lucy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc0IEBA
Cis8aHRtbD4gCis8aGVhZD4gCis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+IAoraWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOyAKKyAKK3dpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsgCisgICAgc2hvdWxkQmVU
cnVlKCIoc2VsZi5hcHBsZXRGcmFtZTEuZG9jdW1lbnRbJ2FwcCddLmluaXQpICE9IHVuZGVmaW5l
ZCIpOworICAgIHNob3VsZEJlVHJ1ZSgiKHNlbGYuYXBwbGV0RnJhbWUyLmRvY3VtZW50WydhcHAn
XS5pbml0KSA9PSB1bmRlZmluZWQiKTsKKworICAgIHNob3VsZEJlVHJ1ZSgiKHNlbGYuZW1iZWRG
cmFtZTEuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BsdWdpbicpLmRlc3Ryb3lTdHJlYW0pICE9
IHVuZGVmaW5lZCIpOworICAgIHNob3VsZEJlVHJ1ZSgiKHNlbGYuZW1iZWRGcmFtZTIuZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3BsdWdpbicpLmRlc3Ryb3lTdHJlYW0pID09IHVuZGVmaW5lZCIp
OworCisgICAgc2hvdWxkQmVUcnVlKCIoc2VsZi5vYmplY3RGcmFtZTEuZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3BsdWdpbicpLmRlc3Ryb3lTdHJlYW0pICE9IHVuZGVmaW5lZCIpOworICAgIHNo
b3VsZEJlVHJ1ZSgiKHNlbGYub2JqZWN0RnJhbWUyLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdw
bHVnaW4nKS5kZXN0cm95U3RyZWFtKSA9PSB1bmRlZmluZWQiKTsKKworICAgIGlzU3VjY2Vzc2Z1
bGx5UGFyc2VkKCk7Cit9IAorPC9zY3JpcHQ+IAorPC9oZWFkPiAKKyAKKzxib2R5PiAKKyAgICA8
cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKyAKKyAgICA8cD5OT1RFOiBUaGUgZmlyc3Qgc3ViLXRl
c3Qgd2lsbCBmYWlsIGluIER1bXBSZW5kZXJUcmVlLCBzaW5jZSBEdW1wUmVuZGVyVHJlZQorICAg
IGRvZXMgbm90IHN1cHBvcnQgYXBwbGV0cy4gVGhhdCBzdWItdGVzdCBtdXN0IGJlIHJ1biBpbiBT
YWZhcmkgaW5zdGVhZC48L3A+IAorCisgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKyAg
ICA8IS0tIEFwcGxldHMgLS0+CisgICAgCisgICAgPGlmcmFtZSBpZD0iYXBwbGV0RnJhbWUxIiAK
KyAgICAgICAgICAgIHN0eWxlPSJ3aWR0aDogMjAwcHg7IGhlaWdodDogMTAwcHg7IiAKKyAgICAg
ICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1hcHBs
ZXQuaHRtbCI+IAorICAgIDwvaWZyYW1lPiAKKyAgICA8aWZyYW1lIGlkPSJhcHBsZXRGcmFtZTIi
IAorICAgICAgICAgICAgc3R5bGU9IndpZHRoOiAyMDBweDsgaGVpZ2h0OiAxMDBweDsiIAorICAg
ICAgICAgICAgc2FuZGJveD0iYWxsb3ctc2FtZS1vcmlnaW4gYWxsb3ctc2NyaXB0cyIgCisgICAg
ICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtYXBw
bGV0Lmh0bWwiPiAKKyAgICA8L2lmcmFtZT4gCisKKyAgICA8IS0tIEVtYmVkcyAtLT4KKyAgICAK
KyAgICA8aWZyYW1lIGlkPSJlbWJlZEZyYW1lMSIKKyAgICAgICAgICAgIHN0eWxlPSJ3aWR0aDog
MjAwcHg7IGhlaWdodDogMTAwcHg7IgorICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJv
eGVkLWlmcmFtZS1wbHVnaW5zLWZyYW1lLWVtYmVkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorICAg
IDxpZnJhbWUgaWQ9ImVtYmVkRnJhbWUyIgorICAgICAgICAgICAgc3R5bGU9IndpZHRoOiAyMDBw
eDsgaGVpZ2h0OiAxMDBweDsiCisgICAgICAgICAgICBzYW5kYm94PSJhbGxvdy1zYW1lLW9yaWdp
biIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1m
cmFtZS1lbWJlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKworICAgIDwhLS0gT2JqZWN0cyAtLT4K
KyAgICAKKyAgICA8aWZyYW1lIGlkPSJvYmplY3RGcmFtZTEiCisgICAgICAgICAgICBzdHlsZT0i
d2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDEwMHB4OyIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2Vz
L3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1vYmplY3QuaHRtbCI+CisgICAgPC9pZnJh
bWU+CisgICAgPGlmcmFtZSBpZD0ib2JqZWN0RnJhbWUyIgorICAgICAgICAgICAgc3R5bGU9Indp
ZHRoOiAyMDBweDsgaGVpZ2h0OiAxMDBweDsiCisgICAgICAgICAgICBzYW5kYm94PSJhbGxvdy1z
YW1lLW9yaWdpbiIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUt
cGx1Z2lucy1mcmFtZS1vYmplY3QuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8c2NyaXB0
PgorICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBzYW5kYm94aW5nIG9m
IHBsdWdpbnMgd29ya3MgYXMgaW50ZW5kZWQuIFRocmVlIHRlc3RzIGFyZSBtYWRlLCBlYWNoIGlu
IG9uZSBzYW5kYm94ZWQgYW5kIG9uZSBub24tc2FuZGJveGVkIElGcmFtZTogYXBwbGV0cywgZW1i
ZWRzLCBhbmQgb2JqZWN0cy4iKTsKKyAgICB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
KyAgICA8L3NjcmlwdD4KKzwvYm9keT4gCis8L2h0bWw+IApJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1zY3JpcHRpbmctZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtc2NyaXB0aW5n
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Nh
bmRib3hlZC1pZnJhbWUtc2NyaXB0aW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxMSBAQAorVmVyaWZ5IHRoYXQgc2FuZGJveGVkIGZyYW1lcyB3aXRoIHNhbmRib3g9ImFs
bG93LXNjcmlwdHMiIGNhbiBleGVjdXRlIHNjcmlwdHMsIGJ1dCBvdGhlciBzYW5kYm94ZWQgZnJh
bWVzIGNhbm5vdC4gQWxzbyB2ZXJpZnkgdGhhdCByZW1vdmluZyB0aGUgc2FuZGJveD0iYWxsb3ct
c2NyaXB0cyIgYXR0cmlidXRlIGF0IHJ1bnRpbWUgcHJldmVudHMgbmV3IHNjcmlwdHMgZnJvbSBs
YXVuY2hpbmcsIGJ1dCBleGlzdGluZyBvbmVzIGtlZXAgcnVubmluZy4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK1BBU1MgZGlzYWxsb3dlZEV4ZWN1dGVkIGlzIDAKK1BBU1MgYWxs
b3dlZEV4ZWN1dGVkIGlzIDIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorICAgCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQt
aWZyYW1lLXNjcmlwdGluZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL3NhbmRib3hlZC1pZnJhbWUtc2NyaXB0aW5nLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXNjcmlwdGluZy5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlw
dCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICB3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCit2YXIgZGlzYWxsb3dlZEV4ZWN1
dGVkID0gMDsKK3ZhciBhbGxvd2VkRXhlY3V0ZWQgPSAwOworCit3aW5kb3cub25sb2FkID0gZnVu
Y3Rpb24oKQoreworICAgIHNob3VsZEJlKCJkaXNhbGxvd2VkRXhlY3V0ZWQiLCAiMCIpOworICAg
IHNob3VsZEJlKCJhbGxvd2VkRXhlY3V0ZWQiLCAiMiIpOworCisgICAgaXNTdWNjZXNzZnVsbHlQ
YXJzZWQoKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKyAgICA8cCBpZD0iZGVz
Y3JpcHRpb24iPjwvcD4KKyAKKyAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAKKyAgICA8
aWZyYW1lIHNhbmRib3g9ImFsbG93LXNhbWUtb3JpZ2luIGFsbG93LXNjcmlwdHMiCisgICAgICAg
ICAgICBzcmM9ImphdmFzY3JpcHQ6ICsrd2luZG93LnRvcC5hbGxvd2VkRXhlY3V0ZWQ7Ij4KKyAg
ICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93LXNhbWUtb3JpZ2luIgorICAg
ICAgICAgICAgc3JjPSJqYXZhc2NyaXB0OiArK3dpbmRvdy50b3AuZGlzYWxsb3dlZEV4ZWN1dGVk
OyI+CisgICAgPC9pZnJhbWU+CisgICAgCisgICAgPGlmcmFtZSBpZD0iZnJhbWUiIHNyYz0icmVz
b3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtc2NyaXB0LWR5bmFtaWMuaHRtbCI+CisgICAgPC9pZnJh
bWU+CisKKyAgICA8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJWZXJpZnkgdGhhdCBzYW5kYm94
ZWQgZnJhbWVzIHdpdGggc2FuZGJveD0mcXVvdDthbGxvdy1zY3JpcHRzJnF1b3Q7IGNhbiBleGVj
dXRlIHNjcmlwdHMsICIKKyAgICAgICAgICAgICAgICAgKyAiYnV0IG90aGVyIHNhbmRib3hlZCBm
cmFtZXMgY2Fubm90LiBBbHNvIHZlcmlmeSB0aGF0IHJlbW92aW5nIHRoZSAiCisgICAgICAgICAg
ICAgICAgICsgInNhbmRib3g9JnF1b3Q7YWxsb3ctc2NyaXB0cyZxdW90OyBhdHRyaWJ1dGUgYXQg
cnVudGltZSBwcmV2ZW50cyBuZXcgc2NyaXB0cyBmcm9tIGxhdW5jaGluZywgIgorICAgICAgICAg
ICAgICAgICArICJidXQgZXhpc3Rpbmcgb25lcyBrZWVwIHJ1bm5pbmcuIik7CisgICAgdmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXN0b3JhZ2Ut
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRi
b3hlZC1pZnJhbWUtc3RvcmFnZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXN0b3JhZ2UtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI4IEBACitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhIHNh
bmRib3hlZCBpZnJhbWUgZG9lcyBub3QgaGF2ZSBhY2Nlc3MgdG8gYW55IHNlc3Npb24gc3RvcmFn
ZSwgbG9jYWwgc3RvcmFnZSBvciBkYXRhYmFzZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK01vc3Qgb2YgdGhlIFBBU1MgbWVzc2FnZXMgYXBwZWFyIGluIGZyYW1lcywgcHJlc2Vu
dGVkIGJ5IER1bXBSZW5kZXJUcmVlIGFmdGVyIHRoZSBtYWluIHdpbmRvdy4KKworICAKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCisKKy0tLS0tLS0t
CitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK1BB
U1Mgd2luZG93Lm9wZW5EYXRhYmFzZSgpID09IG51bGwgaXMgdHJ1ZQorUEFTUyB3aW5kb3cubG9j
YWxTdG9yYWdlID09IG51bGwgaXMgdHJ1ZQorUEFTUyB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UgPT0g
bnVsbCBpcyB0cnVlCisKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1m
cmFtZTEtLT4tLT4nCistLS0tLS0tLQorUEFTUyB3aW5kb3cub3BlbkRhdGFiYXNlKCkgIT0gbnVs
bCBpcyB0cnVlCitQQVNTIHdpbmRvdy5sb2NhbFN0b3JhZ2UgIT0gbnVsbCBpcyB0cnVlCitQQVNT
IHdpbmRvdy5zZXNzaW9uU3RvcmFnZSAhPSBudWxsIGlzIHRydWUKKwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1zdG9yYWdlLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1zdG9yYWdlLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1l
LXN0b3JhZ2UuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNyBAQAorPGh0bWw+Cis8aGVh
ZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVu
Y3Rpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKK30KKword2luZG93
Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeyAKKyAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOworfSAK
KworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KKworICAgIDxwPk1vc3Qgb2YgdGhlIFBBU1MgbWVzc2FnZXMgYXBwZWFyIGluIGZyYW1lcywg
cHJlc2VudGVkIGJ5IER1bXBSZW5kZXJUcmVlIGFmdGVyIHRoZSBtYWluIHdpbmRvdy48L3A+CisK
KyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93LXNjcmlwdHMiIHNyYz0icmVzb3VyY2VzL3NhbmRi
b3hlZC1pZnJhbWUtc3RvcmFnZS1kaXNhbGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorCisg
ICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXN0b3JhZ2UtYWxsb3dl
ZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKworICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
CisgICAgPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQg
YSBzYW5kYm94ZWQgaWZyYW1lIGRvZXMgbm90IGhhdmUgYWNjZXNzIHRvIGFueSBzZXNzaW9uIHN0
b3JhZ2UsIGxvY2FsIHN0b3JhZ2Ugb3IgZGF0YWJhc2UuIik7CisgICAgdmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvbm9uLXNhbmRib3hlZC1pZnJhbWUtbmF2
aWdhdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291
cmNlcy9ub24tc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvbm9uLXNhbmRib3hlZC1pZnJhbWUt
bmF2aWdhdGlvbi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUgQEAKKzxodG1sPgorPGJv
ZHk+CisgIDxpZnJhbWUgc3JjPSJzYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tc291cmNlLmh0
bWwiPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9m
cmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmctYWxsb3dl
ZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9z
YW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWFsbG93ZWQuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1l
LWF0dHJpYnV0ZS1wYXJzaW5nLWFsbG93ZWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
MiBAQAorPGh0bWw+Cis8c2NyaXB0PgorCit0b3AuYWxsb3dlZENhbGxGcm9tU2FuZGJveCgpOwor
Cis8L3NjcmlwdD4KKzxib2R5IG9ubG9hZD0iZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2YnKS5z
dWJtaXQoKTsiPgorICAgIDxmb3JtIGlkPSdmJyBhY3Rpb249ImphdmFzY3JpcHQ6dG9wLmRpc2Fs
bG93ZWRGb3JtU3VibWl0dGVkKCk7Ij4KKyAgICAgICAgPGlucHV0IG5hbWU9IngiIHZhbHVlPSJ5
IiB0eXBlPSJjaGVja2JveCIgY2hlY2tlZD0ieWVzIiAvPgorICAgIDwvZm9ybT4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94
ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWRpc2FsbG93ZWQuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRy
aWJ1dGUtcGFyc2luZy1kaXNhbGxvd2VkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2lu
Zy1kaXNhbGxvd2VkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNSBAQAorPGh0bWw+Cis8
c2NyaXB0PgordG9wLmRpc2FsbG93ZWRDYWxsRnJvbVNhbmRib3goKTsKKzwvc2NyaXB0PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1p
ZnJhbWUtZm9ybS1hbGxvd2VkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
cmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1hbGxvd2VkLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlm
cmFtZS1mb3JtLWFsbG93ZWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1IEBACis8Ym9k
eSBvbmxvYWQ9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmb3JtJykuc3VibWl0KCk7Ij4KKzxm
b3JtIGlkPSJmb3JtIiBhY3Rpb249ImphdmFzY3JpcHQ6d2luZG93LnRvcC5hbGxvd2VkRm9ybVN1
Ym1pdHRlZCgpOyI+CisgICAgPGlucHV0IG5hbWU9eCB2YWx1ZT15IHR5cGU9ImNoZWNrYm94IiBj
aGVja2VkPSJ5ZXMiLz4KKzwvZm9ybT4KKzwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tZGlzYWxsb3dlZC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQt
aWZyYW1lLWZvcm0tZGlzYWxsb3dlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1kaXNhbGxvd2VkLmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNiBAQAorPGJvZHkgb25sb2FkPSJkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnZm9ybScpLnN1Ym1pdCgpOyIKKyAgICAgIGJnY29sb3I9J3llbGxvdyc+
Cis8Zm9ybSBpZD0iZm9ybSIgYWN0aW9uPSJqYXZhc2NyaXB0OndpbmRvdy50b3AuZGlzYWxsb3dl
ZEZvcm1TdWJtaXR0ZWQoKTsiPgorICAgIDxpbnB1dCBuYW1lPXggdmFsdWU9eSB0eXBlPSJjaGVj
a2JveCIgY2hlY2tlZD0ieWVzIi8+Cis8L2Zvcm0+Cis8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0ZWQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVk
LWlmcmFtZS1uYXZpZ2F0ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRlZC5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDUgQEAKKzxodG1sPgorPGJvZHkgb25sb2FkPSdzZWxmLnRvcC5jb3Vu
dEZyYW1lKCk7Jz4KK25hdmlnYXRlZAorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1jaGls
ZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9z
YW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tY2hpbGQuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRp
b24tY2hpbGQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOCBAQAorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBtb2RpZnkoKQoreworICAgIHNlbGYubmF2aWdhdGVkLmxv
Y2F0aW9uLmFzc2lnbigiamF2YXNjcmlwdDogdG9wLmNoaWxkRnJhbWVXYXNOYXZpZ2F0ZWQoKTsi
KTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJtb2RpZnkoKTsiPgorICAg
IDxpZnJhbWUgbmFtZT0ibmF2aWdhdGVkIgorICAgICAgICAgICAgc3JjPSJzYW5kYm94ZWQtaWZy
YW1lLW5hdmlnYXRpb24tbmF2aWdhdGVkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorICAgIDxpZnJh
bWUgbmFtZT0iZnJhbWVXaXRoUGx1Z2luIgorICAgICAgICAgICAgc3JjPSJzYW5kYm94ZWQtaWZy
YW1lLXBsdWdpbnMtZnJhbWUtb2JqZWN0Lmh0bWwiPgorICAgIDwvaWZyYW1lPgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hl
ZC1pZnJhbWUtbmF2aWdhdGlvbi1uYXZpZ2F0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLW5h
dmlnYXRlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVz
b3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1uYXZpZ2F0ZWQuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw5IEBACis8aHRtbD4KKzxoZWFkPgorPC9oZWFkPgorPGJvZHk+Cis8
IS0tIFRoaXMgZmlsZSBpcyBpbiBhIHNlcGFyYXRlIGRvY3VtZW50IGluIG9yZGVyIHRvIHNoYXJl
IG9yaWdpbiB3aXRoIHRoZQorcGFyZW50IGRvY3VtZW50LiAtLT4KK2lubm9jZW50IGNvbnRlbnQK
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNl
cy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50Lmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdh
dGlvbi1wYXJlbnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50Lmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsOCBAQAorPGh0bWw+Cis8Ym9keT4KKyAgICA8aWZyYW1lIHNhbmRi
b3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctc2FtZS1vcmlnaW4iCisgICAgICAgICAgICBzcmM9InNh
bmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1zb3VyY2UuaHRtbCI+CisgICAgPC9pZnJhbWU+Cisg
ICAgPHAgaWQ9J2lubm9jZW50X2NvbnRlbnQnPmlubm9jZW50IGNvbnRlbnQ8L3A+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJv
eGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXNvdXJjZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tc291
cmNlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJj
ZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXNvdXJjZS5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDEyIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2Z1bmN0aW9uIG1vZGlm
eSgpCit7CisgICAgc2VsZi5wYXJlbnQubG9jYXRpb24uYXNzaWduKCdzYW5kYm94ZWQtaWZyYW1l
LW5hdmlnYXRlZC5odG1sJyk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0n
bW9kaWZ5KCk7Jz4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94
ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlv
bi10YXJnZXRsaW5rLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzEgQEAKKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0PgorCisvKgorICogU2V0IHRoZSB0YXJnZXQgb2YgdGhlIGxpbmsgdG8g
J1hfdGFyZ2V0Jywgd2hlcmUgWCBpcyB0aGUgbmFtZSBvZgorICogdGhpcyBmcmFtZS4KKyAqCisg
KiBUaGVuIGNsaWNrIHRoZSBsaW5rLgorICovCisKK2Z1bmN0aW9uIGNsaWNrX2xpbmsoKQorewor
ICAgIHZhciBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdNb3VzZUV2ZW50Jyk7CisgICAg
ZXZlbnQuaW5pdEV2ZW50KCdjbGljaycsIHRydWUsIHRydWUpOworICAgIHZhciBsaW5rID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xpbmsnKTsKKyAgICBsaW5rLnRhcmdldCA9IHNlbGYubmFt
ZSArICdfdGFyZ2V0JzsKKyAgICBsaW5rLmRpc3BhdGNoRXZlbnQoZXZlbnQpOworfQorCis8L3Nj
cmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSdjbGlja19saW5rKCk7Jz4KKworICAgIDxh
IGhyZWY9InNhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGVkLmh0bWwiIGlkPSJsaW5rIj4KKyAgICAg
ICAgKGxpbmsgdHJpZ2dlcmVkIGJ5IHNjcmlwdCkKKyAgICA8L2E+CisKKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZy
YW1lLW5hdmlnYXRpb24td2luZG93b3Blbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24td2luZG93
b3Blbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3Vy
Y2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMyBAQAorPHNjcmlwdD4KKyAgICB3aW5kb3cub3BlbigiamF2YXNjcmlw
dDogb3BlbmVyLnBhcmVudC53aW5kb3dPcGVuZWQob3BlbmVyKTsiKTsKKzwvc2NyaXB0PgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1
Z2lucy1mcmFtZS1hcHBsZXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLWZyYW1lLWFwcGxldC5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRi
b3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1hcHBsZXQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxMSBAQAorPGh0bWw+Cis8aGVhZD4KKzwvaGVhZD4KKworPGJvZHk+CisgICAgPGFwcGxl
dCBuYW1lPSJhcHAiCisgICAgICAgICAgICBjb2RlYmFzZT0iLi4vLi4vZG9tL3Jlc291cmNlcyIK
KyAgICAgICAgICAgIGNvZGU9IlRlc3RBcHBsZXQiCisgICAgPC9hcHBsZXQ+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVk
LWlmcmFtZS1wbHVnaW5zLWZyYW1lLWVtYmVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1l
bWJlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3Vy
Y2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1lbWJlZC5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDEyIEBACis8aHRtbD4KKzxoZWFkPgorPC9oZWFkPgorCis8Ym9keT4KKyAg
ICA8ZW1iZWQgaWQ9InBsdWdpbiIgCisgICAgICAgICAgIHR5cGU9ImFwcGxpY2F0aW9uL3gtd2Vi
a2l0LXRlc3QtbmV0c2NhcGUiCisgICAgICAgICAgIHNyYz0iZGF0YTp0ZXh0L3BsYWluLCIKKyAg
ICAgICAgICAgc3R5bGU9IndpZHRoOjA7IGhlaWdodDowIj4KKyAgICA8L2VtYmVkPgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRi
b3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1vYmplY3QuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLWZy
YW1lLW9iamVjdC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMv
cmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1vYmplY3QuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAorPGh0bWw+Cis8aGVhZD4KKzwvaGVhZD4KKworPGJv
ZHk+CisgICAgPG9iamVjdCBpZD0icGx1Z2luIiAKKyAgICAgICAgICAgIHR5cGU9ImFwcGxpY2F0
aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiCisgICAgICAgICAgICBzdHlsZT0id2lkdGg6MDsg
aGVpZ2h0OjAiPgorICAgIDwvb2JqZWN0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtc2NyaXB0LWR5bmFt
aWMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMv
c2FuZGJveGVkLWlmcmFtZS1zY3JpcHQtZHluYW1pYy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtc2NyaXB0LWR5
bmFtaWMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNiBAQAorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQ+CisKKyAgICBmcmFtZSA9IHdpbmRvdy50b3AuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2ZyYW1lJyk7CisKKyAgICAvLyBzZXR0aW5nIHRoZSBzYW5kYm94IGZsYWcgYXQgcnVudGlt
ZSBzaG91bGQgbm90IHRlcm1pbmF0ZSBhbHJlYWR5CisgICAgLy8gcnVubmluZyBzY3JpcHRzIChl
LmcuLCB0aGlzIG9uZSkKKworICAgIGZyYW1lLnNhbmRib3ggPSAnYWxsb3ctc2FtZS1vcmlnaW4n
OyAgIC8vIE5PIGFsbG93LXNjcmlwdHMKKworICAgICsrd2luZG93LnRvcC5hbGxvd2VkRXhlY3V0
ZWQ7CisKKyAgICAvLyBob3dldmVyLCBuZXcgc2NyaXB0cyAoc3VjaCBhcyB0aGUgb25sb2FkIG9u
ZSBiZWxvdykgc2hvdWxkCisgICAgLy8gbm90IHJ1bgorCisgICAgZnVuY3Rpb24gb25sb2FkX2hv
b2soKQorICAgIHsKKyAgICAgICAgKyt3aW5kb3cudG9wLmRpc2FsbG93ZWRFeGVjdXRlZDsKKyAg
ICB9OworCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSdvbmxvYWRfaG9vaygp
Oyc+PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3Vy
Y2VzL3NhbmRib3hlZC1pZnJhbWUtc3RvcmFnZS1hbGxvd2VkLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtc3RvcmFn
ZS1hbGxvd2VkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9y
ZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1zdG9yYWdlLWFsbG93ZWQuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxOSBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD4KKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgIHNob3Vs
ZEJlVHJ1ZSgid2luZG93Lm9wZW5EYXRhYmFzZSgpICE9IG51bGwiKTsKKyAgICBzaG91bGRCZVRy
dWUoIndpbmRvdy5sb2NhbFN0b3JhZ2UgIT0gbnVsbCIpOworICAgIHNob3VsZEJlVHJ1ZSgid2lu
ZG93LnNlc3Npb25TdG9yYWdlICE9IG51bGwiKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKyAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXN0
b3JhZ2UtZGlzYWxsb3dlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXN0b3JhZ2UtZGlzYWxsb3dlZC5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hl
ZC1pZnJhbWUtc3RvcmFnZS1kaXNhbGxvd2VkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTkgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
CisKK3dpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICBzaG91bGRCZVRydWUoIndpbmRv
dy5vcGVuRGF0YWJhc2UoKSA9PSBudWxsIik7CisgICAgc2hvdWxkQmVUcnVlKCJ3aW5kb3cubG9j
YWxTdG9yYWdlID09IG51bGwiKTsKKyAgICBzaG91bGRCZVRydWUoIndpbmRvdy5zZXNzaW9uU3Rv
cmFnZSA9PSBudWxsIik7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtZG9jdW1lbnQtY29va2llLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3NhbmRib3hlZC1pZnJhbWUtZG9jdW1lbnQtY29va2llLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc2FuZGJveGVkLWlmcmFtZS1k
b2N1bWVudC1jb29raWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAK
K1RoaXMgdGVzdCBjaGVja3MgdGhhdCBhIFNFQ1VSSVRZX0VSUiBleGNlcHRpb24gaXMgcmFpc2Vk
IHdoaWxlIGFjY2Vzc2luZyBkb2N1bWVudC5kb21haW4gaW4gYSBzYW5kYm94ZWQgaWZyYW1lICh3
aXRob3V0ICJhbGxvdy1vcmlnaW4iIHNldCkuIFRoaXMgdGVzdCB3aWxsIHByaW50ICJQQVNTIiBv
biBzdWNjZXNzLgorCisKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1m
cmFtZTAtLT4tLT4nCistLS0tLS0tLQorUEFTUwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLWRvY3VtZW50LWNvb2tpZS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc2FuZGJveGVkLWlmcmFtZS1k
b2N1bWVudC1jb29raWUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvc2FuZGJveGVkLWlmcmFtZS1kb2N1bWVudC1jb29raWUuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwyNSBAQAorPGh0bWw+Cis8aGVhZD4KKworPHNjcmlwdD4KKworaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ2hpbGRGcmFtZXNB
c1RleHQoKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorCisgICAgPHA+VGhp
cyB0ZXN0IGNoZWNrcyB0aGF0IGEgU0VDVVJJVFlfRVJSIGV4Y2VwdGlvbiBpcyByYWlzZWQgd2hp
bGUgYWNjZXNzaW5nIGRvY3VtZW50LmRvbWFpbgorICAgIGluIGEgc2FuZGJveGVkIGlmcmFtZSAo
d2l0aG91dCAmcXVvdDthbGxvdy1vcmlnaW4mcXVvdDsgc2V0KS4gVGhpcyB0ZXN0IHdpbGwgcHJp
bnQKKyAgICAmcXVvdDtQQVNTJnF1b3Q7IG9uIHN1Y2Nlc3MuPC9wPgorCisgICAgPGlmcmFtZSBz
YW5kYm94PSJhbGxvdy1zY3JpcHRzIgorICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJv
eGVkLWlmcmFtZS1kb2N1bWVudC1jb29raWUtcmVhZC1kZW5pZWQuaHRtbCI+CisgICAgPC9pZnJh
bWU+Cis8L2JvZHk+CisKKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvc2FuZGJveGVkLWlmcmFtZS1tb2RpZnktc2VsZi1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLW1v
ZGlmeS1zZWxmLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvc2FuZGJveGVkLWlmcmFtZS1tb2RpZnktc2VsZi1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBV
bnNhZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRvIGFjY2VzcyBmcmFtZSB3aXRoIFVSTCBodHRwOi8v
MTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvc2FuZGJveGVkLWlmcmFtZS1tb2RpZnktc2VsZi5odG1s
IGZyb20gZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Jlc291
cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW1vZGlmeS1zZWxmLmh0bWwuIERvbWFpbnMsIHByb3RvY29s
cyBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KKworVGhpcyBpcyBhICJzYW5pdHkiIHRlc3QgY2FzZSB0
byB2ZXJpZnkgdGhhdCBhIHNhbmRib3hlZCBmcmFtZSBjYW5ub3QgYnJlYWsgb3V0IG9mIGl0cyBz
YW5kYm94IGJ5IG1vZGlmeWluZyBpdHMgb3duIHNhbmRib3ggYXR0cmlidXRlLiBUd28gYXR0ZW1w
dHMgYXJlIG1hZGU6CisKK0ZpcnN0LCBhbiBhdHRlbXB0IGlzIG1hZGUgdG8gbW9kaWZ5IHRoZSBz
YW5kYm94IGF0dHJpYnV0ZSBvZiB0aGUgInNlbGYiIG9iamVjdCwgcmVmZXJyaW5nIHRvIHRoZSBm
cmFtZSdzIHdpbmRvdy4gVGhpcyBzaG91bGQgbm90IGhhdmUgYW55IGVmZmVjdCAodGhlIGF0dHJp
YnV0ZSBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIGlmcmFtZSBET00gbm9kZSwgbm90IHRoZSB3aW5k
b3cpLiBObyB3YXJuaW5nIGlzIGV4cGVjdGVkLgorU2Vjb25kLCBhbiBhdHRlbXB0IGlzIG1hZGUg
dG8gbW9kaWZ5IHRoZSBpZnJhbWUgRE9NIG9iamVjdCdzIHNhbmRib3ggYXR0cmlidXRlLiBBIHdh
cm5pbmcgbWVzc2FnZSAoYWJvdXQgY3Jvc3Mtc2l0ZSBzY3JpcHRpbmcpIGlzIGV4cGVjdGVkLCBh
bmQgdGhlIHNhbmRib3ggYXR0cmlidXRlIHNob3VsZCByZW1haW4gaW50YWN0LgorVGhpcyB0ZXN0
IHdpbGwgcHJpbnQgIlBBU1MiIG9uIHN1Y2Nlc3MuCisKK1BBU1MKKworCkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtbW9kaWZ5LXNlbGYuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3NhbmRib3hl
ZC1pZnJhbWUtbW9kaWZ5LXNlbGYuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvc2FuZGJveGVkLWlmcmFtZS1tb2RpZnktc2VsZi5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDQyIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKworaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworCit3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKQoreworICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgPSAoZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImYiKS5zYW5kYm94ICE9ICJhbGxvdy1zY3JpcHRzIikKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gIkZBSUw6IHNhbmRib3gg
YXR0cmlidXRlIG1vZGlmaWVkIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOiAiUEFTUyI7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4K
KyAgICA8cD5UaGlzIGlzIGEgJnF1b3Q7c2FuaXR5JnF1b3Q7IHRlc3QgY2FzZSB0byB2ZXJpZnkg
dGhhdCBhIHNhbmRib3hlZCAKKyAgICBmcmFtZSBjYW5ub3QgYnJlYWsgb3V0IG9mIGl0cyBzYW5k
Ym94IGJ5IG1vZGlmeWluZyBpdHMgb3duIHNhbmRib3gKKyAgICBhdHRyaWJ1dGUuIFR3byBhdHRl
bXB0cyBhcmUgbWFkZTo8L3A+CisgICAgCisgICAgPG9sPgorICAgICAgICA8bGk+Rmlyc3QsIGFu
IGF0dGVtcHQgaXMgbWFkZSB0byBtb2RpZnkgdGhlIHNhbmRib3ggYXR0cmlidXRlIG9mIHRoZQor
ICAgICAgICAmcXVvdDtzZWxmJnF1b3Q7IG9iamVjdCwgcmVmZXJyaW5nIHRvIHRoZSBmcmFtZSdz
IHdpbmRvdy4gVGhpcyBzaG91bGQKKyAgICAgICAgbm90IGhhdmUgYW55IGVmZmVjdCAodGhlIGF0
dHJpYnV0ZSBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIGlmcmFtZSBET00KKyAgICAgICAgbm9kZSwg
bm90IHRoZSB3aW5kb3cpLiBObyB3YXJuaW5nIGlzIGV4cGVjdGVkLjwvbGk+CisgICAgICAgIDxs
aT5TZWNvbmQsIGFuIGF0dGVtcHQgaXMgbWFkZSB0byBtb2RpZnkgdGhlIGlmcmFtZSBET00gb2Jq
ZWN0J3Mgc2FuZGJveAorICAgICAgICBhdHRyaWJ1dGUuIEEgd2FybmluZyBtZXNzYWdlIChhYm91
dCBjcm9zcy1zaXRlIHNjcmlwdGluZykgaXMgZXhwZWN0ZWQsCisgICAgICAgIGFuZCB0aGUgc2Fu
ZGJveCBhdHRyaWJ1dGUgc2hvdWxkIHJlbWFpbiBpbnRhY3QuPC9saT4KKyAgICA8L29sPgorICAg
IAorICAgIDxwPlRoaXMgdGVzdCB3aWxsIHByaW50ICZxdW90O1BBU1MmcXVvdDsgb24gc3VjY2Vz
cy48L3A+CisKKyAgICA8cCBpZD0icmVzdWx0Ij5GQUlMPC9wPgorCisgICAgPGlmcmFtZSBpZD0i
ZiIKKyAgICAgICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMiCisgICAgICAgICAgICBzcmM9
InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW1vZGlmeS1zZWxmLmh0bWwiPgorICAgIDwvaWZy
YW1lPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC1zYW5kYm94ZWQt
aWZyYW1lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkveHNzLURFTklFRC1zYW5kYm94ZWQtaWZyYW1lLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogVW5zYWZl
IEphdmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nlc3MgZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEyNy4w
LjAuMTo4MDAwL3NlY3VyaXR5L3hzcy1ERU5JRUQtc2FuZGJveGVkLWlmcmFtZS5odG1sIGZyb20g
ZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy94
c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUtYXR0YWNrZXIuaHRtbC4gRG9tYWlucywgcHJvdG9j
b2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgorCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogVW5z
YWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nlc3MgZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL3NlY3VyaXR5L3hzcy1ERU5JRUQtc2FuZGJveGVkLWlmcmFtZS5odG1sIGZy
b20gZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Jlc291cmNl
cy94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUtYXR0YWNrZXIuaHRtbC4gRG9tYWlucywgcHJv
dG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgorCitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBz
YW5kYm94ZWQgaWZyYW1lIHByZXZlbnRzIGNyb3NzLWRvbWFpbiBzY3JpcHQgYWNjZXNzLiBJdCB3
aWxsIHByaW50ICJQQVNTIiBvbiBzdWNjZXNzLgorCisKK1BBU1M6IGNyb3NzLWRvbWFpbiBzY3Jp
cHQgYWNjZXNzIGRpc2FsbG93ZWQgZnJvbSBzYW5kYm94ZWQgaWZyYW1lCkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQtc2FuZGJveGVkLWlmcmFtZS5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklF
RC1zYW5kYm94ZWQtaWZyYW1lLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQtc2FuZGJveGVkLWlmcmFtZS5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDI5IEBACis8aHRtbD4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworCit2YXIgZG9jUmVmID0gdW5kZWZpbmVkOworCit3aW5kb3cub25sb2FkID0gZnVuY3Rpb24o
KQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MID0K
KyAgICAgICAgKGRvY1JlZiA/ICJGQUlMOiBjcm9zcy1kb21haW4gc2NyaXB0IGFjY2VzcyBhbGxv
d2VkIGZyb20gc2FuZGJveGVkIGlmcmFtZSIKKyAgICAgICAgICAgICAgICA6ICJQQVNTOiBjcm9z
cy1kb21haW4gc2NyaXB0IGFjY2VzcyBkaXNhbGxvd2VkIGZyb20gc2FuZGJveGVkIGlmcmFtZSIp
OworfQorCis8L3NjcmlwdD4KKzxib2R5PgorCisgICAgPHA+VGhpcyB0ZXN0IHZlcmlmaWVzIHRo
YXQgc2FuZGJveGVkIGlmcmFtZSBwcmV2ZW50cyBjcm9zcy1kb21haW4KKyAgICBzY3JpcHQgYWNj
ZXNzLiBJdCB3aWxsIHByaW50ICZxdW90O1BBU1MmcXVvdDsgb24gc3VjY2Vzcy48L3A+CisKKyAg
ICA8aWZyYW1lIHNhbmRib3g9ImFsbG93LXNjcmlwdHMiCisgICAgICAgICAgICBzcmM9Imh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMveHNzLURFTklFRC1zYW5kYm94ZWQt
aWZyYW1lLWF0dGFja2VyLmh0bWwiPgorICAgIDwvaWZyYW1lPgorICAgIAorICAgIDxkaXYgaWQ9
ImNvbnNvbGUiPkZBSUw6IFNjcmlwdCBkaWRuJ3QgcnVuPC9kaXY+CisgICAgCis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9z
YW5kYm94ZWQtaWZyYW1lLWRvY3VtZW50LWNvb2tpZS1yZWFkLWRlbmllZC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL3NhbmRib3hl
ZC1pZnJhbWUtZG9jdW1lbnQtY29va2llLXJlYWQtZGVuaWVkLmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9zYW5kYm94ZWQtaWZy
YW1lLWRvY3VtZW50LWNvb2tpZS1yZWFkLWRlbmllZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDI1IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKworZnVuY3Rpb24gcnVuVGVzdCgp
Cit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RSZXN1bHQiKS5pbm5lckhUTUwg
PSAoZnVuY3Rpb24oKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB2YXIgY29va2llID0g
ZG9jdW1lbnQuY29va2llOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChlcnIpIHsKKyAgICAg
ICAgICAgIGlmIChlcnIubmFtZS5pbmRleE9mKCJTRUNVUklUWV9FUlIiKSAhPSAtMSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gIlBBU1MiOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuICJG
QUlMOiBTRUNVUklUWV9FUlIgbm90IHJhaXNlZCI7CisgICAgfSkoKTsKK30KKworPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKTsiPgorICAgIDxwIGlkPSJ0ZXN0UmVz
dWx0Ij5GQUlMOiBTY3JpcHQgZGlkbid0IHJ1bjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJh
bWUtbW9kaWZ5LXNlbGYuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW1vZGlmeS1zZWxmLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9z
YW5kYm94ZWQtaWZyYW1lLW1vZGlmeS1zZWxmLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTQgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorCisvLyB0aGlzIGFzc2lnbm1lbnQgc2hv
dWxkIGhhdmUgbm8gZWZmZWN0IG9uIHNhbmRib3ggc3RhdHVzCitzZWxmLnNhbmRib3ggPSAnYWxs
b3ctc2NyaXB0cyBhbGxvdy1zYW1lLW9yaWdpbiBoYWNrZWQtdmlhLXdpbmRvdy1vYmplY3QnOwor
CisvLyB0aGlzIHNob3VsZCBiZSBwcmV2ZW50ZWQgYnkgdGhlIHNhbmRib3ggJ29yaWdpbicgZmxh
ZworaWYgKHRvcC5kb2N1bWVudCkKKyAgICB0b3AuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Yn
KS5zYW5kYm94ID0gJ2FsbG93LXNjcmlwdHMgYWxsb3ctc2FtZS1vcmlnaW4gaGFja2VkLXZpYS1k
b20nOworCis8L3NjcmlwdD4KKzwvaGVhZD4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL3hzcy1ERU5JRUQtc2FuZGJveGVkLWlmcmFtZS1h
dHRhY2tlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvcmVzb3VyY2VzL3hzcy1ERU5JRUQtc2FuZGJveGVkLWlmcmFtZS1hdHRhY2tlci5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMv
eHNzLURFTklFRC1zYW5kYm94ZWQtaWZyYW1lLWF0dGFja2VyLmh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisgICAgdG9wLmRvY1JlZiA9
IHBhcmVudC5kb2N1bWVudDsgIC8vIGFjY2VzcyBwYXJlbnQncyBET00gdHJlZTogc2hvdWxkIG5v
dCBiZSBhbGxvd2VkCis8L3NjcmlwdD4KKzwvaGVhZD4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlm
cmFtZS1hbGxvdy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1hbGxvdy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOSBAQAorVGhpcyB0ZXN0IHZlcmlmaWVzIHRo
YXQgc2FuZGJveGVkIGlmcmFtZSBoYXMgWG1sSHR0cFJlcXVlc3QgYWNjZXNzIHRvIHRoZSBzZXJ2
ZXIgdGhhdCBhY2NlcHRzIGFsbCBkb21haW5zLiBJdCB3aWxsIHByaW50ICJQQVNTIiBvbiBzdWNj
ZXNzLgorCisKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAt
LT4tLT4nCistLS0tLS0tLQorUEFTUzogU2FuZGJveGVkIGlmcmFtZSBYSFIgYWNjZXNzIGFsbG93
ZWQuCisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNz
LWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1hbGxvdy5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVk
LWlmcmFtZS1hbGxvdy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93Lmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTggQEAKKzxodG1sPgorPHNjcmlwdD4KKworaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ2hpbGRGcmFtZXNB
c1RleHQoKTsKK30KKworPC9zY3JpcHQ+Cis8Ym9keT4KKyAgICA8cD5UaGlzIHRlc3QgdmVyaWZp
ZXMgdGhhdCBzYW5kYm94ZWQgaWZyYW1lIGhhcyBYbWxIdHRwUmVxdWVzdCBhY2Nlc3MKKyAgICB0
byB0aGUgc2VydmVyIHRoYXQgYWNjZXB0cyBhbGwgZG9tYWlucy4gSXQgd2lsbCBwcmludCAmcXVv
dDtQQVNTJnF1b3Q7IG9uIHN1Y2Nlc3MuPC9wPgorICAgIAorICAgIDxpZnJhbWUgc2FuZGJveD0i
YWxsb3ctc2NyaXB0cyIgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAveG1saHR0cHJlcXVlc3Qv
cmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtYWxsb3ctaWZyYW1lLmh0
bWwiIHN0eWxlPSJ3aWR0aDogNTAwcHg7Ij4KKyAgICA8L2lmcmFtZT4gCisgICAgCis8L2JvZHk+
IAorPC9odG1sPiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
YWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNv
bnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1z
YW5kYm94ZWQtaWZyYW1lLWRlbmllZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsOCBAQAorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgc2FuZGJveGVkIGlmcmFtZSBkb2VzIG5v
dCBoYXZlIFhtbEh0dHBSZXF1ZXN0IGFjY2VzcyB0byBpdHMgc2VydmVyLiBJdCB3aWxsIHByaW50
ICJQQVNTIiBvbiBzdWNjZXNzLgorCisKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0
aCAvLzwhLS1mcmFtZTAtLT4tLT4nCistLS0tLS0tLQorUEFTUzogRXhjZXB0aW9uIHRocm93bi4g
U2FuZGJveGVkIGlmcmFtZSBYSFIgYWNjZXNzIHdhcyBkZW5pZWQgaW4gJ3NlbmQnLiBbTkVUV09S
S19FUlI6IFhNTEh0dHBSZXF1ZXN0IEV4Y2VwdGlvbiAxMDFdLgpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1l
LWRlbmllZC13aXRob3V0LXdpbGRjYXJkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hl
ZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJv
bC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC13aXRob3V0LXdpbGRjYXJkLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMCBAQAorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgc2Fu
ZGJveGVkIGlmcmFtZSBkb2VzIG5vdCBoYXZlIFhtbEh0dHBSZXF1ZXN0IGFjY2VzcyB0byBpdHMg
c2VydmVyIHdpdGggIkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiIgc2V0IHRvIGl0cyBvd24g
b3JpZ2luICgxMjcuMC4wLjEpLgorCitUaGlzIHRlc3Qgd2lsbCBwcmludCAiUEFTUyIgb24gc3Vj
Y2Vzcy4KKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUw
LS0+LS0+JworLS0tLS0tLS0KK1BBU1M6IEV4Y2VwdGlvbiB0aHJvd24uIFNhbmRib3hlZCBpZnJh
bWUgWEhSIGFjY2VzcyB3YXMgZGVuaWVkIGluICdzZW5kJy4gW05FVFdPUktfRVJSOiBYTUxIdHRw
UmVxdWVzdCBFeGNlcHRpb24gMTAxXS4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtd2l0aG91
dC13aWxkY2FyZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtd2l0aG91
dC13aWxkY2FyZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC13aXRo
b3V0LXdpbGRjYXJkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjIgQEAKKzxodG1sPgor
PHNjcmlwdD4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKK30KKworPC9zY3JpcHQ+Cis8Ym9keT4KKworICAgIDxw
PlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHNhbmRib3hlZCBpZnJhbWUgZG9lcyBub3QgaGF2ZSBY
bWxIdHRwUmVxdWVzdCBhY2Nlc3MgdG8KKyAgICBpdHMgc2VydmVyIHdpdGggIkFjY2Vzcy1Db250
cm9sLUFsbG93LU9yaWdpbiIgc2V0IHRvIGl0cyBvd24gb3JpZ2luICgxMjcuMC4wLjEpLjwvcD4K
KyAgICAKKyAgICA8cD5UaGlzIHRlc3Qgd2lsbCBwcmludCAmcXVvdDtQQVNTJnF1b3Q7IG9uIHN1
Y2Nlc3MuPC9wPgorCisgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIgorICAgICAg
ICAgICAgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2Vz
L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQt
aWZyYW1lLmh0bWwiIHN0eWxlPSJ3aWR0aDogNTAwcHg7Ij4KKyAgICA8L2lmcmFtZT4KKyAgICAK
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250
cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1p
ZnJhbWUtZGVuaWVkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTkgQEAKKzxodG1sPiAK
KzxzY3JpcHQ+CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Cit9CisKKzwvc2NyaXB0PgorCis8Ym9keT4gCisgICAg
PHA+VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgc2FuZGJveGVkIGlmcmFtZSBkb2VzIG5vdCBoYXZl
IFhtbEh0dHBSZXF1ZXN0IGFjY2VzcworICAgIHRvIGl0cyBzZXJ2ZXIuIEl0IHdpbGwgcHJpbnQg
JnF1b3Q7UEFTUyZxdW90OyBvbiBzdWNjZXNzLjwvcD4KKyAgICAKKyAgICA8aWZyYW1lIHNhbmRi
b3g9ImFsbG93LXNjcmlwdHMiCisgICAgICAgICAgICBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFt
ZS1kZW5pZWQtaWZyYW1lLmh0bWwiIHN0eWxlPSJ3aWR0aDogNTAwcHg7Ij4KKyAgICA8L2lmcmFt
ZT4gCis8L2JvZHk+IAorPC9odG1sPiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtYWxs
b3ctaWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxo
dHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1hbGxv
dy1pZnJhbWUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtYWxs
b3ctaWZyYW1lLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjUgQEAKKzxodG1sPiAKKzxi
b2R5PiAKKzxwcmUgaWQ9J2NvbnNvbGUnPjwvcHJlPiAKKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0Ij4gCisKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1M
ID0gKGZ1bmN0aW9uKCkgeyAKKyAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0OyAKKyAK
KyAgICB0cnkgeyAKKyAgICAgICAgeGhyLm9wZW4oIkdFVCIsICJodHRwOi8vMTI3LjAuMC4xOjgw
MDAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJh
bWUtYWxsb3cuY2dpIiwgZmFsc2UpOyAKKyAgICB9IGNhdGNoKGUpIHsgCisgICAgICAgIHJldHVy
biAiRkFJTDogRXhjZXB0aW9uIHRocm93bi4gU2FuZGJveGVkIGlmcmFtZSBYSFIgYWNjZXNzIGlz
IG5vdCBhbGxvd2VkIGluICdvcGVuJy4gWyIgKyBlLm1lc3NhZ2UgKyAiXS4iOyAKKyAgICB9IAor
IAorICAgIHRyeSB7IAorICAgICAgICB4aHIuc2VuZCgpOyAKKyAgICB9IGNhdGNoKGUpIHsgCisg
ICAgICAgIHJldHVybiAiRkFJTDogRXhjZXB0aW9uIHRocm93bi4gU2FuZGJveGVkIGlmcmFtZSBY
SFIgYWNjZXNzIGlzIG5vdCBhbGxvd2VkIGluICdzZW5kJy4gWyIgKyBlLm1lc3NhZ2UgKyAiXS4i
OyAKKyAgICB9IAorIAorICAgIHJldHVybiB4aHIucmVzcG9uc2VUZXh0OyAKK30pKCk7IAorPC9z
Y3JpcHQ+IAorPC9ib2R5PiAKKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUt
YWxsb3cuY2dpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtYWxsb3cuY2dp
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9y
ZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1hbGxvdy5jZ2kJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsOCBAQAorIyEvdXNyL2Jpbi9wZXJsIC13VAordXNlIHN0cmljdDsK
KworcHJpbnQgIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpblxuIjsKK3ByaW50ICJBY2Nlc3MtQ29u
dHJvbC1BbGxvdy1DcmVkZW50aWFsczogdHJ1ZVxuIjsKK3ByaW50ICJBY2Nlc3MtQ29udHJvbC1B
bGxvdy1PcmlnaW46ICpcblxuIjsKKworcHJpbnQgIlBBU1M6IFNhbmRib3hlZCBpZnJhbWUgWEhS
IGFjY2VzcyBhbGxvd2VkLlxuIjsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVk
LWlmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVk
LWlmcmFtZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxo
dHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5p
ZWQtaWZyYW1lLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjcgQEAKKzxodG1sPiAKKzxi
b2R5PiAKKzxwcmUgaWQ9J2NvbnNvbGUnPjwvcHJlPiAKKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0Ij4gCisKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1M
ID0gKGZ1bmN0aW9uKCkgeworICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3Q7IAorIAor
IAorICAgIHRyeSB7IAorICAgICAgICB4aHIub3BlbigiR0VUIiwgImh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlm
cmFtZS1kZW5pZWQuY2dpIiwgZmFsc2UpOyAKKyAgICB9IGNhdGNoKGUpIHsgCisgICAgICAgIHJl
dHVybiAiRkFJTDogRXhjZXB0aW9uIHRocm93bi4gU2FuZGJveGVkIGlmcmFtZSBYSFIgYWNjZXNz
IGlzIG5vdCBhbGxvd2VkIGluICdvcGVuJy4gWyIgKyBlLm1lc3NhZ2UgKyAiXS4iOyAKKyAgICB9
IAorIAorICAgIHRyeSB7IAorICAgICAgICB4aHIuc2VuZCgpOyAKKyAgICB9IGNhdGNoKGUpIHsg
CisgICAgICAgIHJldHVybiAiUEFTUzogRXhjZXB0aW9uIHRocm93bi4gU2FuZGJveGVkIGlmcmFt
ZSBYSFIgYWNjZXNzIHdhcyBkZW5pZWQgaW4gJ3NlbmQnLiBbIiArIGUubWVzc2FnZSArICJdLiI7
IAorICAgIH0KKyAKKyAgICByZXR1cm4geGhyLnJlc3BvbnNlVGV4dDsgCit9KSgpOworICAKKzwv
c2NyaXB0PiAKKzwvYm9keT4gCis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1l
LWRlbmllZC13aXRob3V0LXdpbGRjYXJkLWlmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9s
LXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQtaWZyYW1lLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291
cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC13aXRob3V0LXdpbGRj
YXJkLWlmcmFtZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2IEBACis8aHRtbD4KKzxi
b2R5PgorPHByZSBpZD0nY29uc29sZSc+PC9wcmU+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCI+CisKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MID0g
KGZ1bmN0aW9uKCkgeworICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3Q7CisKKyAgICB0
cnkgeworICAgICAgICB4aHIub3BlbigiR0VUIiwgImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC94bWxo
dHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5p
ZWQtd2l0aG91dC13aWxkY2FyZC5jZ2kiLCBmYWxzZSk7CisgICAgfSBjYXRjaChlKSB7CisgICAg
ICAgIHJldHVybiAiRkFJTDogRXhjZXB0aW9uIHRocm93bi4gU2FuZGJveGVkIGlmcmFtZSBYSFIg
YWNjZXNzIGlzIG5vdCBhbGxvd2VkIGluICdvcGVuJy4gWyIgKyBlLm1lc3NhZ2UgKyAiXS4iOwor
ICAgIH0KKworICAgIHRyeSB7CisgICAgICAgIHhoci5zZW5kKCk7CisgICAgfSBjYXRjaChlKSB7
CisgICAgICAgIHJldHVybiAiUEFTUzogRXhjZXB0aW9uIHRocm93bi4gU2FuZGJveGVkIGlmcmFt
ZSBYSFIgYWNjZXNzIHdhcyBkZW5pZWQgaW4gJ3NlbmQnLiBbIiArIGUubWVzc2FnZSArICJdLiI7
CisgICAgfQorCisgICAgcmV0dXJuIHhoci5yZXNwb25zZVRleHQ7Cit9KSgpOworCis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVk
LXdpdGhvdXQtd2lsZGNhcmQuY2dpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJh
bWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQuY2dpCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2Fu
ZGJveGVkLWlmcmFtZS1kZW5pZWQtd2l0aG91dC13aWxkY2FyZC5jZ2kJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsOCBAQAorIyEvdXNyL2Jpbi9wZXJsIC13VAordXNlIHN0cmljdDsKKworcHJpbnQg
IkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpblxuIjsKK3ByaW50ICJBY2Nlc3MtQ29udHJvbC1BbGxv
dy1DcmVkZW50aWFsczogdHJ1ZVxuIjsKK3ByaW50ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1Pcmln
aW46IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMFxuXG4iOworCitwcmludCAiRkFJTDogU2FuZGJveGVk
IGlmcmFtZSBYSFIgYWNjZXNzIGFsbG93ZWQuXG4iOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlm
cmFtZS1kZW5pZWQuY2dpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVu
aWVkLmNnaQkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLmNn
aQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2IEBACisjIS91c3IvYmluL3BlcmwgLXdUCit1c2Ug
c3RyaWN0OworCitwcmludCAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluXG5cbiI7CisKK3ByaW50
ICJGQUlMOiBTYW5kYm94ZWQgaWZyYW1lIFhIUiBhY2Nlc3MgYWxsb3dlZC5cbiI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44108</attachid>
            <date>2009-12-01 15:28:57 -0800</date>
            <delta_ts>2009-12-01 17:47:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-21288-20091201152856.patch</filename>
            <type>text/plain</type>
            <size>98178</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxMTA0ZDM2Li5iOGRiOTdmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjkgQEAKKzIwMDktMTIt
MDEgIFBhdHJpayBQZXJzc29uICA8cGF0cmlrLmoucGVyc3NvbkBlcmljc3Nvbi5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgSW1wbGVtZW50IEhUTUw1
IHNhbmRib3ggYXR0cmlidXRlIGZvciBpZnJhbWVzLgorICAgICAgICBodHRwOi8vd3d3LnczLm9y
Zy9UUi9odG1sNS90ZXh0LWxldmVsLXNlbWFudGljcy5odG1sI2F0dHItaWZyYW1lLXNhbmRib3gK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjg4CisK
KyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvbm9uLXNhbmRib3hlZC1pZnJhbWUtbmF2
aWdhdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2Fu
ZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1hbGxvd2VkLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1w
YXJzaW5nLWRpc2FsbG93ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVz
b3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1hbGxvd2VkLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tZGlzYWxsb3dl
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVk
LWlmcmFtZS1uYXZpZ2F0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVz
b3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1jaGlsZC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9u
LW5hdmlnYXRlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMv
c2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXBhcmVudC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXNvdXJj
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVk
LWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVu
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQt
aWZyYW1lLXBsdWdpbnMtZnJhbWUtYXBwbGV0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtZW1iZWQuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJh
bWUtcGx1Z2lucy1mcmFtZS1vYmplY3QuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFt
ZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtc2NyaXB0LWR5bmFtaWMuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtc3RvcmFn
ZS1hbGxvd2VkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNlcy9z
YW5kYm94ZWQtaWZyYW1lLXN0b3JhZ2UtZGlzYWxsb3dlZC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRy
aWJ1dGUtcGFyc2luZy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94
ZWQtaWZyYW1lLWZvcm1zLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFt
ZXMvc2FuZGJveGVkLWlmcmFtZS1mb3Jtcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zy
YW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tYWxsb3dlZC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1h
bGxvd2VkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJh
bWUtbmF2aWdhdGlvbi1wYXJlbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRs
aW5rLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJveGVk
LWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4tZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmln
YXRpb24td2luZG93b3Blbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5k
Ym94ZWQtaWZyYW1lLXBsdWdpbnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1zY3JpcHRpbmctZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXNjcmlwdGluZy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXN0b3JhZ2Ut
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZy
YW1lLXN0b3JhZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9y
ZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1kb2N1bWVudC1jb29raWUtcmVhZC1kZW5pZWQuaHRt
bDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvc2FuZGJv
eGVkLWlmcmFtZS1tb2RpZnktc2VsZi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3NlY3VyaXR5L3Jlc291cmNlcy94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUtYXR0YWNrZXIu
aHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZy
YW1lLWRvY3VtZW50LWNvb2tpZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvc2VjdXJpdHkvc2FuZGJveGVkLWlmcmFtZS1kb2N1bWVudC1jb29raWUuaHRtbDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLW1vZGlm
eS1zZWxmLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0
eS9zYW5kYm94ZWQtaWZyYW1lLW1vZGlmeS1zZWxmLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC1zYW5kYm94ZWQtaWZyYW1lLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXNhbmRi
b3hlZC1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVx
dWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93LWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJv
bC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQu
aHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3Mt
Y29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94
ZWQtaWZyYW1lLWFsbG93LWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1l
LWFsbG93LmNnaTogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9y
ZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtaWZyYW1lLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2Vz
L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQt
aWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
cmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQt
d2lsZGNhcmQuY2dpOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC5jZ2k6IEFk
ZGVkLgorCiAyMDA5LTEyLTAxICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL25vbi1zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24u
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9ub24tc2FuZGJveGVkLWlm
cmFtZS1uYXZpZ2F0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MmU0OWZhZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291
cmNlcy9ub24tc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLmh0bWwKQEAgLTAsMCArMSw1IEBA
Cis8aHRtbD4KKzxib2R5PgorICA8aWZyYW1lIHNyYz0ic2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0
aW9uLXNvdXJjZS5odG1sIj48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJp
YnV0ZS1wYXJzaW5nLWFsbG93ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291
cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWFsbG93ZWQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42N2ZmOTdjCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtYXR0
cmlidXRlLXBhcnNpbmctYWxsb3dlZC5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzxodG1sPgorPHNj
cmlwdD4KKwordG9wLmFsbG93ZWRDYWxsRnJvbVNhbmRib3goKTsKKworPC9zY3JpcHQ+Cis8Ym9k
eSBvbmxvYWQ9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmJykuc3VibWl0KCk7Ij4KKyAgICA8
Zm9ybSBpZD0nZicgYWN0aW9uPSJqYXZhc2NyaXB0OnRvcC5kaXNhbGxvd2VkRm9ybVN1Ym1pdHRl
ZCgpOyI+CisgICAgICAgIDxpbnB1dCBuYW1lPSJ4IiB2YWx1ZT0ieSIgdHlwZT0iY2hlY2tib3gi
IGNoZWNrZWQ9InllcyIgLz4KKyAgICA8L2Zvcm0+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1h
dHRyaWJ1dGUtcGFyc2luZy1kaXNhbGxvd2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1l
cy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1kaXNhbGxvd2Vk
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjI0NzkzNgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQt
aWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWRpc2FsbG93ZWQuaHRtbApAQCAtMCwwICsxLDUgQEAK
KzxodG1sPgorPHNjcmlwdD4KK3RvcC5kaXNhbGxvd2VkQ2FsbEZyb21TYW5kYm94KCk7Cis8L3Nj
cmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291
cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tYWxsb3dlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1hbGxvd2VkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDM1MTlmZQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZv
cm0tYWxsb3dlZC5odG1sCkBAIC0wLDAgKzEsNSBAQAorPGJvZHkgb25sb2FkPSJkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnZm9ybScpLnN1Ym1pdCgpOyI+Cis8Zm9ybSBpZD0iZm9ybSIgYWN0aW9u
PSJqYXZhc2NyaXB0OndpbmRvdy50b3AuYWxsb3dlZEZvcm1TdWJtaXR0ZWQoKTsiPgorICAgIDxp
bnB1dCBuYW1lPXggdmFsdWU9eSB0eXBlPSJjaGVja2JveCIgY2hlY2tlZD0ieWVzIi8+Cis8L2Zv
cm0+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJj
ZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWRpc2FsbG93ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tZGlzYWxsb3dlZC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxOWFmYjMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFt
ZS1mb3JtLWRpc2FsbG93ZWQuaHRtbApAQCAtMCwwICsxLDYgQEAKKzxib2R5IG9ubG9hZD0iZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Zvcm0nKS5zdWJtaXQoKTsiCisgICAgICBiZ2NvbG9yPSd5
ZWxsb3cnPgorPGZvcm0gaWQ9ImZvcm0iIGFjdGlvbj0iamF2YXNjcmlwdDp3aW5kb3cudG9wLmRp
c2FsbG93ZWRGb3JtU3VibWl0dGVkKCk7Ij4KKyAgICA8aW5wdXQgbmFtZT14IHZhbHVlPXkgdHlw
ZT0iY2hlY2tib3giIGNoZWNrZWQ9InllcyIvPgorPC9mb3JtPgorPC9ib2R5PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2
aWdhdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVk
LWlmcmFtZS1uYXZpZ2F0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5jMTM4MGNiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVz
b3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGVkLmh0bWwKQEAgLTAsMCArMSw1IEBACis8
aHRtbD4KKzxib2R5IG9ubG9hZD0nc2VsZi50b3AuY291bnRGcmFtZSgpOyc+CituYXZpZ2F0ZWQK
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jl
c291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tY2hpbGQuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tY2hp
bGQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OWI3NjUxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hl
ZC1pZnJhbWUtbmF2aWdhdGlvbi1jaGlsZC5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gbW9kaWZ5KCkKK3sKKyAgICBzZWxmLm5hdmlnYXRl
ZC5sb2NhdGlvbi5hc3NpZ24oImphdmFzY3JpcHQ6IHRvcC5jaGlsZEZyYW1lV2FzTmF2aWdhdGVk
KCk7Iik7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ibW9kaWZ5KCk7Ij4K
KyAgICA8aWZyYW1lIG5hbWU9Im5hdmlnYXRlZCIKKyAgICAgICAgICAgIHNyYz0ic2FuZGJveGVk
LWlmcmFtZS1uYXZpZ2F0aW9uLW5hdmlnYXRlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKyAgICA8
aWZyYW1lIG5hbWU9ImZyYW1lV2l0aFBsdWdpbiIKKyAgICAgICAgICAgIHNyYz0ic2FuZGJveGVk
LWlmcmFtZS1wbHVnaW5zLWZyYW1lLW9iamVjdC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNl
cy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tbmF2aWdhdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLW5hdmln
YXRlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkOGU3ODgKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJv
eGVkLWlmcmFtZS1uYXZpZ2F0aW9uLW5hdmlnYXRlZC5odG1sCkBAIC0wLDAgKzEsOSBAQAorPGh0
bWw+Cis8aGVhZD4KKzwvaGVhZD4KKzxib2R5PgorPCEtLSBUaGlzIGZpbGUgaXMgaW4gYSBzZXBh
cmF0ZSBkb2N1bWVudCBpbiBvcmRlciB0byBzaGFyZSBvcmlnaW4gd2l0aCB0aGUKK3BhcmVudCBk
b2N1bWVudC4gLS0+Citpbm5vY2VudCBjb250ZW50Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1u
YXZpZ2F0aW9uLXBhcmVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2Vz
L3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi42YjM0MWExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJl
bnQuaHRtbApAQCAtMCwwICsxLDggQEAKKzxodG1sPgorPGJvZHk+CisgICAgPGlmcmFtZSBzYW5k
Ym94PSJhbGxvdy1zY3JpcHRzIGFsbG93LXNhbWUtb3JpZ2luIgorICAgICAgICAgICAgc3JjPSJz
YW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tc291cmNlLmh0bWwiPgorICAgIDwvaWZyYW1lPgor
ICAgIDxwIGlkPSdpbm5vY2VudF9jb250ZW50Jz5pbm5vY2VudCBjb250ZW50PC9wPgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2Vz
L3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1zb3VyY2UuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tc291cmNlLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDEzMzIwYQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZy
YW1lLW5hdmlnYXRpb24tc291cmNlLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBtb2RpZnkoKQoreworICAgIHNlbGYucGFyZW50LmxvY2F0
aW9uLmFzc2lnbignc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0ZWQuaHRtbCcpOworfQorPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9J21vZGlmeSgpOyc+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVk
LWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlMTU2YzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFt
ZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbApAQCAtMCwwICsxLDMxIEBACis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdD4KKworLyoKKyAqIFNldCB0aGUgdGFyZ2V0IG9mIHRoZSBsaW5rIHRvICdY
X3RhcmdldCcsIHdoZXJlIFggaXMgdGhlIG5hbWUgb2YKKyAqIHRoaXMgZnJhbWUuCisgKgorICog
VGhlbiBjbGljayB0aGUgbGluay4KKyAqLworCitmdW5jdGlvbiBjbGlja19saW5rKCkKK3sKKyAg
ICB2YXIgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnTW91c2VFdmVudCcpOworICAgIGV2
ZW50LmluaXRFdmVudCgnY2xpY2snLCB0cnVlLCB0cnVlKTsKKyAgICB2YXIgbGluayA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdsaW5rJyk7CisgICAgbGluay50YXJnZXQgPSBzZWxmLm5hbWUg
KyAnX3RhcmdldCc7CisgICAgbGluay5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKK30KKworPC9zY3Jp
cHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0nY2xpY2tfbGluaygpOyc+CisKKyAgICA8YSBo
cmVmPSJzYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRlZC5odG1sIiBpZD0ibGluayI+CisgICAgICAg
IChsaW5rIHRyaWdnZXJlZCBieSBzY3JpcHQpCisgICAgPC9hPgorCis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVk
LWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwNTYwYTAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFt
ZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4uaHRtbApAQCAtMCwwICsxLDMgQEAKKzxzY3JpcHQ+Cisg
ICAgd2luZG93Lm9wZW4oImphdmFzY3JpcHQ6IG9wZW5lci5wYXJlbnQud2luZG93T3BlbmVkKG9w
ZW5lcik7Iik7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtYXBwbGV0Lmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5z
LWZyYW1lLWFwcGxldC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2
YmI5ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJj
ZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLWZyYW1lLWFwcGxldC5odG1sCkBAIC0wLDAgKzEs
MTEgQEAKKzxodG1sPgorPGhlYWQ+Cis8L2hlYWQ+CisKKzxib2R5PgorICAgIDxhcHBsZXQgbmFt
ZT0iYXBwIgorICAgICAgICAgICAgY29kZWJhc2U9Ii4uLy4uL2RvbS9yZXNvdXJjZXMiCisgICAg
ICAgICAgICBjb2RlPSJUZXN0QXBwbGV0IgorICAgIDwvYXBwbGV0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hl
ZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1lbWJlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFt
ZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFtZS1lbWJlZC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwMGVkN2MKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1w
bHVnaW5zLWZyYW1lLWVtYmVkLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPGh0bWw+Cis8aGVhZD4K
KzwvaGVhZD4KKworPGJvZHk+CisgICAgPGVtYmVkIGlkPSJwbHVnaW4iIAorICAgICAgICAgICB0
eXBlPSJhcHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0LW5ldHNjYXBlIgorICAgICAgICAgICBzcmM9
ImRhdGE6dGV4dC9wbGFpbiwiCisgICAgICAgICAgIHN0eWxlPSJ3aWR0aDowOyBoZWlnaHQ6MCI+
CisgICAgPC9lbWJlZD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtb2Jq
ZWN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlm
cmFtZS1wbHVnaW5zLWZyYW1lLW9iamVjdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmQ3MjQ4Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLWZyYW1lLW9iamVjdC5odG1s
CkBAIC0wLDAgKzEsMTEgQEAKKzxodG1sPgorPGhlYWQ+Cis8L2hlYWQ+CisKKzxib2R5PgorICAg
IDxvYmplY3QgaWQ9InBsdWdpbiIgCisgICAgICAgICAgICB0eXBlPSJhcHBsaWNhdGlvbi94LXdl
YmtpdC10ZXN0LW5ldHNjYXBlIgorICAgICAgICAgICAgc3R5bGU9IndpZHRoOjA7IGhlaWdodDow
Ij4KKyAgICA8L29iamVjdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXNjcmlwdC1keW5hbWlj
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFt
ZS1zY3JpcHQtZHluYW1pYy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
Ljk5OGY2ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNv
dXJjZXMvc2FuZGJveGVkLWlmcmFtZS1zY3JpcHQtZHluYW1pYy5odG1sCkBAIC0wLDAgKzEsMjYg
QEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorCisgICAgZnJhbWUgPSB3aW5kb3cudG9wLmRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdmcmFtZScpOworCisgICAgLy8gc2V0dGluZyB0aGUgc2Fu
ZGJveCBmbGFnIGF0IHJ1bnRpbWUgc2hvdWxkIG5vdCB0ZXJtaW5hdGUgYWxyZWFkeQorICAgIC8v
IHJ1bm5pbmcgc2NyaXB0cyAoZS5nLiwgdGhpcyBvbmUpCisKKyAgICBmcmFtZS5zYW5kYm94ID0g
J2FsbG93LXNhbWUtb3JpZ2luJzsgICAvLyBOTyBhbGxvdy1zY3JpcHRzCisKKyAgICArK3dpbmRv
dy50b3AuYWxsb3dlZEV4ZWN1dGVkOworCisgICAgLy8gaG93ZXZlciwgbmV3IHNjcmlwdHMgKHN1
Y2ggYXMgdGhlIG9ubG9hZCBvbmUgYmVsb3cpIHNob3VsZAorICAgIC8vIG5vdCBydW4KKworICAg
IGZ1bmN0aW9uIG9ubG9hZF9ob29rKCkKKyAgICB7CisgICAgICAgICsrd2luZG93LnRvcC5kaXNh
bGxvd2VkRXhlY3V0ZWQ7CisgICAgfTsKKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9u
bG9hZD0nb25sb2FkX2hvb2soKTsnPjwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXN0b3JhZ2UtYWxs
b3dlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NhbmRib3hlZC1p
ZnJhbWUtc3RvcmFnZS1hbGxvd2VkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNTE3MDVmYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXN0b3JhZ2UtYWxsb3dlZC5odG1sCkBAIC0wLDAg
KzEsMTkgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+CisKK3dpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICBzaG91bGRCZVRydWUoIndp
bmRvdy5vcGVuRGF0YWJhc2UoKSAhPSBudWxsIik7CisgICAgc2hvdWxkQmVUcnVlKCJ3aW5kb3cu
bG9jYWxTdG9yYWdlICE9IG51bGwiKTsKKyAgICBzaG91bGRCZVRydWUoIndpbmRvdy5zZXNzaW9u
U3RvcmFnZSAhPSBudWxsIik7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAg
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1zdG9yYWdl
LWRpc2FsbG93ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5k
Ym94ZWQtaWZyYW1lLXN0b3JhZ2UtZGlzYWxsb3dlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmVlNDZiYWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1zdG9yYWdlLWRpc2FsbG93ZWQu
aHRtbApAQCAtMCwwICsxLDE5IEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0PgorCit3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgc2hv
dWxkQmVUcnVlKCJ3aW5kb3cub3BlbkRhdGFiYXNlKCkgPT0gbnVsbCIpOworICAgIHNob3VsZEJl
VHJ1ZSgid2luZG93LmxvY2FsU3RvcmFnZSA9PSBudWxsIik7CisgICAgc2hvdWxkQmVUcnVlKCJ3
aW5kb3cuc2Vzc2lvblN0b3JhZ2UgPT0gbnVsbCIpOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRy
aWJ1dGUtcGFyc2luZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5k
Ym94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOGQ2NTAyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitUaGlzIHRlc3QgY2FzZSB2ZXJpZmllcyB0aGUgcGFy
c2luZyBvZiB0aGUgaWZyYW1lIHNhbmRib3ggYXR0cmlidXRlLiBUd28gc2V0cyBvZiBpZnJhbWVz
IGFyZSB1c2VkOiBvbmUgd2hlcmUgc2NyaXB0aW5nIGlzIGFsbG93ZWQsIGFuZCBhbm90aGVyIG9u
ZSB3aGVyZSBpdCBpcyBkaXNhbGxvd2VkLiBUaGUgdGVzdCB2ZXJpZmllcyB0aGF0IHRoZSBhbGxv
d2VkIGZyYW1lcyBleGVjdXRlIHNjcmlwdHMgKGJ1dCBvdGhlciBzYW5kYm94ZWQgcHJvcGVydGll
cyBzdGlsbCBhcHBseSAtLSBzcGVjaWZpY2FsbHksIGZvcm1zIGFyZSBkaXNhYmxlZCksIGFuZCB0
aGUgZGlzYWxsb3dlZCBvbmVzIGRvIG5vdC4gSWYgc3VjY2Vzc2Z1bCB0aGUgdGVzdCBwcmludHMg
IlBBU1MiLgorCisgICAgICAgICAgICAgICAgICAKK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmcuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNp
bmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Y2VkMzY0Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1h
dHRyaWJ1dGUtcGFyc2luZy5odG1sCkBAIC0wLDAgKzEsMTY1IEBACis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdD4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICB3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCit2YXIgZmFpbGVkID0gZmFsc2U7
Cit2YXIgZnJhbWVzID0gMDsgICAgICAgICAvKiBudW1iZXIgb2YgYWxsb3dlZCBmcmFtZXMgdGhh
dCBjYWxsZWQgYmFjayAqLworCitmdW5jdGlvbiBmYWlsKG1lc3NhZ2UpCit7CisgICAgc2V0U3Rh
dHVzKCJGQUlMOiAiICsgbWVzc2FnZSk7CisgICAgZmFpbGVkID0gdHJ1ZTsKK30KKworZnVuY3Rp
b24gc2V0U3RhdHVzKHN0YXR1cykKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVz
dFN0YXR1cyIpLmlubmVySFRNTCA9IHN0YXR1czsKK30KKworZnVuY3Rpb24gYWxsb3dlZENhbGxG
cm9tU2FuZGJveCgpCit7CisgICAgKytmcmFtZXM7Cit9CisKK2Z1bmN0aW9uIGRpc2FsbG93ZWRD
YWxsRnJvbVNhbmRib3goKQoreworICAgIGZhaWwoImRpc2FsbG93ZWQgc2NyaXB0IGV4ZWN1dGVk
Iik7Cit9CisKK2Z1bmN0aW9uIGRpc2FsbG93ZWRGb3JtU3VibWl0dGVkKCkKK3sKKyAgICBmYWls
KCJzYW5kYm94aW5nIGZhaWxlZDogZm9ybSBzdWJtaXR0ZWQgaW4gc2FuZGJveGVkIGZyYW1lIik7
Cit9CisKK3dpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpCit7CisgICAgaWYgKGZyYW1lcyA9PSA1
ICYmICFmYWlsZWQpCisgICAgICAgIHNldFN0YXR1cygiUEFTUyIpOworICAgIGVsc2UgaWYgKCFm
YWlsZWQpCisgICAgICAgIGZhaWwoInNjcmlwdGluZyBkaXNhYmxlZCBpbiBvbmUgb3IgbW9yZSBm
cmFtZXMgd2hlcmUgaXQgc2hvdWxkIGJlIGVuYWJsZWQiKTsKK30KKworPC9zY3JpcHQ+Cis8L2hl
YWQ+CisKKzxib2R5PgorCisgICAgPHA+VGhpcyB0ZXN0IGNhc2UgdmVyaWZpZXMgdGhlIHBhcnNp
bmcgb2YgdGhlIGlmcmFtZSBzYW5kYm94IGF0dHJpYnV0ZS4gVHdvIHNldHMgb2YgaWZyYW1lcwor
ICAgIGFyZSB1c2VkOiBvbmUgd2hlcmUgc2NyaXB0aW5nIGlzIGFsbG93ZWQsIGFuZCBhbm90aGVy
IG9uZSB3aGVyZSBpdCBpcyBkaXNhbGxvd2VkLiBUaGUgdGVzdAorICAgIHZlcmlmaWVzIHRoYXQg
dGhlIGFsbG93ZWQgZnJhbWVzIGV4ZWN1dGUgc2NyaXB0cyAoYnV0IG90aGVyIHNhbmRib3hlZCBw
cm9wZXJ0aWVzIHN0aWxsCisgICAgYXBwbHkgLS0gc3BlY2lmaWNhbGx5LCBmb3JtcyBhcmUgZGlz
YWJsZWQpLCBhbmQgdGhlIGRpc2FsbG93ZWQgb25lcyBkbyBub3QuIElmIHN1Y2Nlc3NmdWwKKyAg
ICB0aGUgdGVzdCBwcmludHMgJnF1b3Q7UEFTUyZxdW90Oy48L3A+CisgICAgCisgICAgPCEtLSBp
ZnJhbWVzIHdoZXJlIHNjcmlwdCBleGVjdXRpb24gaXMgYWxsb3dlZCwgYnV0IG9yaWdpbiBpcyBu
b3Qgc2hhcmVkIC0tPgorCisgICAgPCEtLSBwbGFpbiwgcHJvcGVyIGF0dHJpYnV0ZSB2YWx1ZSAt
LT4KKyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93LXNjcmlwdHMiCisgICAgICAgICAgICBuYW1l
PSJmMSIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmli
dXRlLXBhcnNpbmctYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKyAgICAKKyAgICA8IS0t
IGxpbmUgZmVlZCBjaGFyYWN0ZXJzIGJlZm9yZSBhbmQgYWZ0ZXIgYXR0cmlidXRlIHZhbHVlIC0t
PgorICAgIDxpZnJhbWUgc2FuZGJveD0iCisKK2FsbG93LXNjcmlwdHMKKworIgorICAgICAgICAg
ICAgbmFtZT0iZjIiCisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1l
LWF0dHJpYnV0ZS1wYXJzaW5nLWFsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8
IS0tIHJpZGljdWxvdXNseSBsb25nLCBpbnZhbGlkIHRleHQgKHdlbGwsIGZvciB0aGVzZSBwdXJw
b3NlcyBhdCBsZWFzdCkKKyAgICAgICAgIHdpdGggbm9uLUFTQ0lJIGNoYXJhY3RlcnMgc3Vycm91
bmRpbmcgYXR0cmlidXRlIHZhbHVlIC0tPgorICAgIDxpZnJhbWUgc2FuZGJveD0iCisgICAgICAg
IEbDtnIgdmFyIHZlcnMsIGphZyBnw7ZyLAorICAgICAgICBMb3ZhciBkdSBlbiBreXNzIG1pZyBn
aXZhOworICAgICAgICBBcmtldCBmdWxsdCBqYWcgYm9yZGUgc2tyaXZhLAorICAgICAgICBNaW5k
cmUgaGFyIGphZyBza3Jpdml0IGbDtnIuCisgICAgICAgIE1lbiBtYW4gbcOlc3RlIGjDpWxsYSBt
w6V0dGEsCisgICAgICAgIEphZyBtZWQgdmVycywgbWVkIGt5c3NhciBkdS4KKyAgICAgICAgTMOl
dCBtaWcgcsOka25hOiBEw6RyIMOkciBzanUhCisgICAgICAgIEVuIGTDpHJ0aWxsIGRldCBnw7Zy
IG1pZyDDpXR0YS4KKworICAgICAgICBOdW1ybyDDpXR0YSDDpHIgZmF0YWwsCisgICAgICAgIEdy
ZWtsYW5kcyBzw6VuZ23DtnIgdm9ybyBuaW8sCisgICAgICAgIE9jaCBlbiBzdmVuc2sgZMOkcnRp
bGwgZ8O2ciB0aW8uIOKAlAorICAgICAgICBFbHZhIHZhciBhcG9zdGVsbnMgdGFsLAorICAgICAg
ICBUeSBqYWcgcsOka25hciBpY2tlIEp1ZGFzLAorICAgICAgICBIb25vbSwgc29tIGkgdsOkbm5l
cnMgbGFnCisgICAgICAgIEt5c3N0ZSBmYWxza3Q7IGRldCBnw7ZyIGVqIGphZywKKyAgICAgICAg
SGVsc3QgbsOkciB2YWNrcmEgbMOkcHBhciBianVkYXMuCisKKyAgICAgICAgSHVydSBzdMOlciBt
aW4gcsOka25pbmcgaMOkcj8KKyAgICAgICAgQWRlcnRvbjsgZGV0IMOkciBkb2NrIG7DpWdvdC4K
KyAgICAgICAgTml0dG9uIOKAlCByaW1tZXQgZ8O2ciBiZXN2w6RyLAorICAgICAgICBEw6RyZsO2
cmUgamFnIGZ5bGxlciB0am9nZXQuCisgICAgICAgIFN0cm9mZW4gw6RyIGVqIGZ1bGwgc29tIGph
ZywKKyAgICAgICAgSW4gaSBoYW1uZW4gdmlsbCBqYWcgc3R5cmEsCisgICAgICAgIETDpHJmw7Zy
ZSB0aWxsIGdvZG8gdGFnCisgICAgICAgIERlbm5hIGfDpW5nIG1lZCB0anVnb2Z5cmEuCisgICAg
ICAgIAorICAgICAgICAnS3lzc2FybmEnICgnVGhlIGtpc3NlcycpLCBFc2FpYXMgVGVnbsOpciwg
MTc4Mi0xODQ2CisKKyAgICBhbGxvdy1zY3JpcHRzCisgICAgCisgICAgICAgIGludCBtYWluKHZv
aWQpCisgICAgICAgIHsKKyAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfSIKKyAgICAgICAg
ICAgIG5hbWU9ImYzIgorICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFt
ZS1hdHRyaWJ1dGUtcGFyc2luZy1hbGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorCisgICAg
PCEtLSB0YWIgY2hhcmFjdGVycyBiZWZvcmUgYW5kIGFmdGVyIGF0dHJpYnV0ZSB2YWx1ZSAtLT4K
KyAgICA8aWZyYW1lIHNhbmRib3g9IgkJYWxsb3ctc2NyaXB0cwkJIgorICAgICAgICAgICAgbmFt
ZT0iZjQiCisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJp
YnV0ZS1wYXJzaW5nLWFsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8IS0tIG1p
eGVkIGNhc2UgLS0+CisgICAgPGlmcmFtZSBzYW5kYm94PSJBbExvVy1zQ3JJcFRzIgorICAgICAg
ICAgICAgbmFtZT0iZjUiCisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZy
YW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWFsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAg
ICA8IS0tIGlmcmFtZXMgd2hlcmUgc2NyaXB0IGV4ZWN1dGlvbiBpcyBkaXNhbGxvd2VkIC0tPgor
CisgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvd3NjcmlwdHMiCisgICAgICAgICAgICBzcmM9InJl
c291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWRpc2FsbG93ZWQuaHRt
bCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93cy1jcmlwdHMi
CisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1w
YXJzaW5nLWRpc2FsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNh
bmRib3g9Ii1hbGxvdy1zY3JpcHRzIgorICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJv
eGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1kaXNhbGxvd2VkLmh0bWwiPgorICAgIDwvaWZy
YW1lPgorCisgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvd19zY3JpcHRzIgorICAgICAgICAgICAg
c3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1kaXNhbGxv
d2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorCisgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvd1Nj
cmlwdHMiCisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJp
YnV0ZS1wYXJzaW5nLWRpc2FsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8aWZy
YW1lIHNhbmRib3g9ImFhbGxvdy1zY3JpcHRzIgorICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMv
c2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1kaXNhbGxvd2VkLmh0bWwiPgorICAg
IDwvaWZyYW1lPgorCisgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zY3JpcHRzcyIKKyAgICAg
ICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmct
ZGlzYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKworICAgIDxpZnJhbWUgc2FuZGJveAor
ICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFy
c2luZy1kaXNhbGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorCisgICAgPHAgaWQ9J3Rlc3RT
dGF0dXMnPkZBSUw6IFNjcmlwdCBkaWRuJ3QgcnVuPC9wPgorCis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm1z
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUt
Zm9ybXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5
MjNmNTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94
ZWQtaWZyYW1lLWZvcm1zLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1RoaXMgdGVzdCBy
dW5zIGZpdmUgSUZyYW1lcyB3aXRoIGZvcm1zIGFsbG93ZWQsIG9uZSBJRnJhbWUgd2l0aCBmb3Jt
cyBkaXNhbGxvd2VkLCB0aGVuIGZpdmUgbW9yZSBJRnJhbWVzIHdpdGggZm9ybXMgYWxsb3dlZC4g
SWYgdGVuIGZvcm0gc3VibWlzc2lvbnMgYXJlIG1hZGUsIGFuZCB0aGUgZGlzYWxsb3dlZCBzdWJt
aXNzaW9uIGlzIG5vdCBvbmUgb2YgdGhlbSwgd2UgY29uc2lkZXIgdGhlIHRlc3QgdG8gaGF2ZSBw
YXNzZWQuIFRoaXMgdGVzdCB3aWxsIHByaW50ICJQQVNTIiBvbiBzdWNjZXNzLgorCisgICAgICAg
ICAgICAgICAgICAgIAorUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMv
c2FuZGJveGVkLWlmcmFtZS1mb3Jtcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2Fu
ZGJveGVkLWlmcmFtZS1mb3Jtcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmMyZjhlNjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9z
YW5kYm94ZWQtaWZyYW1lLWZvcm1zLmh0bWwKQEAgLTAsMCArMSw5NiBAQAorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICB3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK3ZhciBzdWJtaXNzaW9uQ291
bnQgICAgICA9IDA7Cit2YXIgZGlzYWxsb3dlZFN1Ym1pc3Npb24gPSBmYWxzZTsKKworZnVuY3Rp
b24gYWxsb3dlZEZvcm1TdWJtaXR0ZWQoKQoreworICAgICsrc3VibWlzc2lvbkNvdW50OworCisg
ICAgaWYgKHN1Ym1pc3Npb25Db3VudCA9PSAxMCkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgidGVzdF9zdGF0dXMiKS5pbm5lckhUTUwgPSAoZGlzYWxsb3dlZFN1Ym1pc3Npb24g
PyAiRkFJTCIgOiAiUEFTUyIpOworICAgICAgCisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworICAgIH0KK30KKworZnVuY3Rpb24gZGlzYWxsb3dlZEZvcm1TdWJtaXR0ZWQo
KQoreworICAgIGRpc2FsbG93ZWRTdWJtaXNzaW9uID0gdHJ1ZTsKK30KKworPC9zY3JpcHQ+Cis8
L2hlYWQ+CisKKzxib2R5PgorCisgICAgPHA+VGhpcyB0ZXN0IHJ1bnMgZml2ZSBJRnJhbWVzIHdp
dGggZm9ybXMgYWxsb3dlZCwgb25lIElGcmFtZSB3aXRoIGZvcm1zCisgICAgZGlzYWxsb3dlZCwg
dGhlbiBmaXZlIG1vcmUgSUZyYW1lcyB3aXRoIGZvcm1zIGFsbG93ZWQuIElmIHRlbiBmb3JtCisg
ICAgc3VibWlzc2lvbnMgYXJlIG1hZGUsIGFuZCB0aGUgZGlzYWxsb3dlZCBzdWJtaXNzaW9uIGlz
IG5vdCBvbmUgb2YgdGhlbSwKKyAgICB3ZSBjb25zaWRlciB0aGUgdGVzdCB0byBoYXZlIHBhc3Nl
ZC4gVGhpcyB0ZXN0IHdpbGwgcHJpbnQKKyAgICAmcXVvdDtQQVNTJnF1b3Q7IG9uIHN1Y2Nlc3Mu
PC9wPgorCisgICAgPCEtLSBmaXZlIElGcmFtZXMgd2l0aCBmb3JtcyBhbGxvd2VkIC0tPgorCisg
ICAgPGlmcmFtZSBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsiCisgICAgICAgIHNh
bmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMiCisgICAgICAgIHNyYz0icmVzb3VyY2Vz
L3NhbmRib3hlZC1pZnJhbWUtZm9ybS1hbGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorICAg
IDxpZnJhbWUgc3R5bGU9IndpZHRoOiA2MHB4OyBoZWlnaHQ6IDYwcHg7IgorICAgICAgICBzYW5k
Ym94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1zIgorICAgICAgICBzcmM9InJlc291cmNlcy9z
YW5kYm94ZWQtaWZyYW1lLWZvcm0tYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKyAgICA8
aWZyYW1lIHN0eWxlPSJ3aWR0aDogNjBweDsgaGVpZ2h0OiA2MHB4OyIKKyAgICAgICAgc2FuZGJv
eD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyIKKyAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2Fu
ZGJveGVkLWlmcmFtZS1mb3JtLWFsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisgICAgPGlm
cmFtZSBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsiCisgICAgICAgIHNhbmRib3g9
ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMiCisgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRi
b3hlZC1pZnJhbWUtZm9ybS1hbGxvd2VkLmh0bWwiPgorICAgIDwvaWZyYW1lPgorICAgIDxpZnJh
bWUgc3R5bGU9IndpZHRoOiA2MHB4OyBoZWlnaHQ6IDYwcHg7IgorICAgICAgICBzYW5kYm94PSJh
bGxvdy1zY3JpcHRzIGFsbG93LWZvcm1zIgorICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94
ZWQtaWZyYW1lLWZvcm0tYWxsb3dlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKworICAgIDwhLS0g
b25lIElGcmFtZSB3aXRoIGZvcm1zIGRpc2FsbG93ZWQgLS0+CisKKyAgICA8aWZyYW1lIHN0eWxl
PSJ3aWR0aDogNjBweDsgaGVpZ2h0OiA2MHB4OyIKKyAgICAgICAgc2FuZGJveD0iYWxsb3ctc2Ny
aXB0cyIKKyAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWRpc2Fs
bG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8IS0tIGZpdmUgbW9yZSBJRnJhbWVz
IHdpdGggZm9ybXMgYWxsb3dlZCAtLT4KKworICAgIDxpZnJhbWUgc3R5bGU9IndpZHRoOiA2MHB4
OyBoZWlnaHQ6IDYwcHg7IgorICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZv
cm1zIgorICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tYWxsb3dl
ZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIHN0eWxlPSJ3aWR0aDogNjBweDsg
aGVpZ2h0OiA2MHB4OyIKKyAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3Jt
cyIKKyAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWFsbG93ZWQu
aHRtbCI+CisgICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBzdHlsZT0id2lkdGg6IDYwcHg7IGhl
aWdodDogNjBweDsiCisgICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMi
CisgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1hbGxvd2VkLmh0
bWwiPgorICAgIDwvaWZyYW1lPgorICAgIDxpZnJhbWUgc3R5bGU9IndpZHRoOiA2MHB4OyBoZWln
aHQ6IDYwcHg7IgorICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1zIgor
ICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tYWxsb3dlZC5odG1s
Ij4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIHN0eWxlPSJ3aWR0aDogNjBweDsgaGVpZ2h0
OiA2MHB4OyIKKyAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyIKKyAg
ICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWFsbG93ZWQuaHRtbCI+
CisgICAgPC9pZnJhbWU+CisgICAgCisgICAgPHAgaWQ9J3Rlc3Rfc3RhdHVzJz5GQUlMOiBTY3Jp
cHQgZGlkbid0IHJ1bjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1hbGxvd2VkLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdh
dGlvbi1hbGxvd2VkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5jZTU5YjM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMv
c2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLWFsbG93ZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTIgQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGEgc2FuZGJveGVkIGlmcmFtZSBDQU4g
bmF2aWdhdGUgYm90aCBpdHNlbGYgYW5kIGEgY2hpbGQgaW4gdGhlIGZyYW1lIHRyZWUuIEl0IGFs
c28gdmVyaWZpZXMgdGhhdCB0aGUgc2FuZGJveCBhdHRyaWJ1dGUgcmVtYWlucyBpbnRhY3QgYWZ0
ZXIgYSBmcmFtZSBoYXMgYmVlbiBuYXZpZ2F0ZWQsIGFuZCB0aGF0IHNhbmRib3ggYXR0cmlidXRl
cyBhcmUgcHJvcGFnYXRlZCB0aHJvdWdoIHRoZSBmcmFtZSBoaWVyYXJjaHkuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIChzZWxmLnNhbmRib3hlZEZyYW1lLmZyYW1lV2l0
aFBsdWdpbi5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGx1Z2luJykuZGVzdHJveVN0cmVhbSkg
PT0gdW5kZWZpbmVkIGlzIHRydWUKK1BBU1MgKHNlbGYuZnJhbWVXaXRoUGx1Z2luLmRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdwbHVnaW4nKS5kZXN0cm95U3RyZWFtKSAhPSB1bmRlZmluZWQgaXMg
dHJ1ZQorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJveGVkRnJhbWVJZCcpLnNh
bmRib3ggaXMgJ2FsbG93LXNjcmlwdHMgYWxsb3ctc2FtZS1vcmlnaW4nCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKyAgCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tYWxsb3dlZC5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9u
LWFsbG93ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OTRlOGRl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlm
cmFtZS1uYXZpZ2F0aW9uLWFsbG93ZWQuaHRtbApAQCAtMCwwICsxLDYwIEBACis8aHRtbD4KKzxo
ZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1m
dW5jdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7CisgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKyAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQor
CitmdW5jdGlvbiBjaGlsZEZyYW1lV2FzTmF2aWdhdGVkKCkKK3sKKyAgICAvLyBDaGVjayB0aGF0
IHRoZSBjaGlsZCBmcmFtZSB3YXMgdW5hYmxlIHRvIGxvYWQgYSBwbHVnaW4sIHNpbmNlIGl0cyBw
YXJlbnQgaXMgc2FuZGJveGVkLgorICAgIHNob3VsZEJlVHJ1ZSgiKHNlbGYuc2FuZGJveGVkRnJh
bWUuZnJhbWVXaXRoUGx1Z2luLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbHVnaW4nKS5kZXN0
cm95U3RyZWFtKSA9PSB1bmRlZmluZWQiKTsKKyAgICAKKyAgICAvLyBDaGVjayBhIG5vbi1zYW5k
Ym94ZWQgZnJhbWUgYXMgd2VsbCwgdG8gZW5zdXJlIHRoYXQgdGhlIHBsdWdpbiBpcyBkaXNhYmxl
ZCBieSBzYW5kYm94aW5nCisgICAgLy8gYW5kIG5vdCBzb21lIG90aGVyIGZhaWx1cmUKKyAgICBz
aG91bGRCZVRydWUoIihzZWxmLmZyYW1lV2l0aFBsdWdpbi5kb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgncGx1Z2luJykuZGVzdHJveVN0cmVhbSkgIT0gdW5kZWZpbmVkIik7CisKKyAgICAvLyBXaGVu
IHRoZSBjaGlsZCBmcmFtZSAoZ3JhbmRjaGlsZCBvZiB0aGUgbWFpbiB3aW5kb3cpIGhhcyBiZWVu
IG5hdmlnYXRlZCwKKyAgICAvLyBtYWtlIHRoZSBzYW5kYm94ZWQgZnJhbWUgbmF2aWdhdGUgaXRz
ZWxmCisgICAgc2VsZi5zYW5kYm94ZWRGcmFtZS5sb2NhdGlvbi5hc3NpZ24oImphdmFzY3JpcHQ6
IHRvcC5zYW5kYm94V2FzTmF2aWdhdGVkKCk7Iik7Cit9CisKK2Z1bmN0aW9uIHNhbmRib3hXYXNO
YXZpZ2F0ZWQoKQoreworICAgIHNob3VsZEJlKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Fu
ZGJveGVkRnJhbWVJZCcpLnNhbmRib3giLCAiJ2FsbG93LXNjcmlwdHMgYWxsb3ctc2FtZS1vcmln
aW4nIik7CisgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKKworICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKyAgICA8cCBp
ZD0iZGVzY3JpcHRpb24iPjwvcD4KKyAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworICAg
IDxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1zYW1lLW9yaWdpbiIKKyAgICAg
ICAgICAgIG5hbWU9InNhbmRib3hlZEZyYW1lIgorICAgICAgICAgICAgaWQ9InNhbmRib3hlZEZy
YW1lSWQiCisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmln
YXRpb24tY2hpbGQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIG5hbWU9ImZy
YW1lV2l0aFBsdWdpbiIKKyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJh
bWUtcGx1Z2lucy1mcmFtZS1vYmplY3QuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAgICA8c2Ny
aXB0PgorICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhIHNhbmRib3hl
ZCBpZnJhbWUgQ0FOIG5hdmlnYXRlIGJvdGggaXRzZWxmIGFuZCBhIGNoaWxkIGluIHRoZSBmcmFt
ZSB0cmVlLiAiCisgICAgICAgICAgICAgICAgKyAiSXQgYWxzbyB2ZXJpZmllcyB0aGF0IHRoZSBz
YW5kYm94IGF0dHJpYnV0ZSByZW1haW5zIGludGFjdCBhZnRlciBhIGZyYW1lIGhhcyBiZWVuIG5h
dmlnYXRlZCwgIgorICAgICAgICAgICAgICAgICsgImFuZCB0aGF0IHNhbmRib3ggYXR0cmlidXRl
cyBhcmUgcHJvcGFnYXRlZCB0aHJvdWdoIHRoZSBmcmFtZSBoaWVyYXJjaHkuIik7CisgICAgdmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1l
LW5hdmlnYXRpb24tcGFyZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4YTg2ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGEg
c2FuZGJveGVkIElGcmFtZSBjYW5ub3QgbmF2aWdhdGUgYW4gYW5jZXN0b3IgaW4gdGhlIGZyYW1l
IHRyZWUgYnkgYXNzaWduaW5nIHRoZSBsb2NhdGlvbiBhdHRyaWJ1dGUuCisKK1RoaXMgaXMgZG9u
ZSBieSBsb2FkaW5nIHRlbiBub24tc2FuZGJveGVkIElGcmFtZXMsIGFuZCBhIHNpbmdsZSBzYW5k
Ym94ZWQgb25lLiBFeHBlY3QgdGVuIGZyYW1lcyB0byBiZSBuYXZpZ2F0ZWQsIGJ1dCB0aGUgc2Fu
ZGJveGVkIG9uZSB0byBub3QgYmUgb25lIG9mIHRoZW0uCisKK1RoaXMgdGVzdCB3aWxsIHByaW50
ICJQQVNTIiBvbiBzdWNjZXNzLgorCisgICAgICAgICAgICAgICAKK1BBU1MKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJl
bnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdh
dGlvbi1wYXJlbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Mzc5
ZTk5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVk
LWlmcmFtZS1uYXZpZ2F0aW9uLXBhcmVudC5odG1sCkBAIC0wLDAgKzEsNjggQEAKKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Cisg
ICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICB3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCit2YXIgbmF2aWdhdGVk
RnJhbWVzID0gMDsKKworZnVuY3Rpb24gY2hlY2tSZXN1bHRzKCkKK3sKKyAgICB2YXIgdGVzdFN0
YXR1cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0U3RhdHVzJyk7CisKKyAgICBpZiAo
c2VsZi5uYXZpZ2F0ZWQubG9jYXRpb24uaHJlZi5pbmRleE9mKCdwYXJlbnQuaHRtbCcpID09IC0x
KQorICAgICAgICB0ZXN0U3RhdHVzLmlubmVySFRNTCA9ICdGQUlMOiBkaXNhbGxvd2VkIGZyYW1l
IG5hdmlnYXRlZCc7CisgICAgZWxzZSBpZiAobmF2aWdhdGVkRnJhbWVzID09IDEwKQorICAgICAg
ICB0ZXN0U3RhdHVzLmlubmVySFRNTCA9ICdQQVNTJzsKKyAgICBlbHNlCisgICAgICAgIHRlc3RT
dGF0dXMuaW5uZXJIVE1MID0gJ0ZBSUw6IGZyYW1lcyBub3QgbmF2aWdhdGVkIHByb3Blcmx5JzsK
KworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGNvdW50RnJh
bWUoKQoreworICAgICsrbmF2aWdhdGVkRnJhbWVzOworCisgICAgaWYgKG5hdmlnYXRlZEZyYW1l
cyA9PSAxMCkKKyAgICAgICAgY2hlY2tSZXN1bHRzKCk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFk
PgorCis8Ym9keT4KKworICAgIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGEgc2FuZGJveGVk
IElGcmFtZSBjYW5ub3QgbmF2aWdhdGUgYW4gYW5jZXN0b3IKKyAgICBpbiB0aGUgZnJhbWUgdHJl
ZSBieSBhc3NpZ25pbmcgdGhlIGxvY2F0aW9uIGF0dHJpYnV0ZS48L3A+CisKKyAgICA8cD5UaGlz
IGlzIGRvbmUgYnkgbG9hZGluZyB0ZW4gbm9uLXNhbmRib3hlZCBJRnJhbWVzLCBhbmQgYSBzaW5n
bGUKKyAgICBzYW5kYm94ZWQgb25lLiBFeHBlY3QgdGVuIGZyYW1lcyB0byBiZSBuYXZpZ2F0ZWQs
IGJ1dCB0aGUgc2FuZGJveGVkCisgICAgb25lIHRvIDxiPm5vdDwvYj4gYmUgb25lIG9mIHRoZW0u
PC9wPgorICAgIAorICAgIDxwPlRoaXMgdGVzdCB3aWxsIHByaW50ICZxdW90O1BBU1MmcXVvdDsg
b24gc3VjY2Vzcy48L3A+CisKKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL25vbi1zYW5kYm94
ZWQtaWZyYW1lLW5hdmlnYXRpb24uaHRtbCI+PC9pZnJhbWU+CisgICAgPGlmcmFtZSBzcmM9InJl
c291cmNlcy9ub24tc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLmh0bWwiPjwvaWZyYW1lPgor
ICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvbm9uLXNhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlv
bi5odG1sIj48L2lmcmFtZT4KKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL25vbi1zYW5kYm94
ZWQtaWZyYW1lLW5hdmlnYXRpb24uaHRtbCI+PC9pZnJhbWU+CisgICAgPGlmcmFtZSBzcmM9InJl
c291cmNlcy9ub24tc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLmh0bWwiPjwvaWZyYW1lPgor
CisgICAgPGlmcmFtZSBuYW1lPSduYXZpZ2F0ZWQnCisgICAgICAgICAgICBzcmM9InJlc291cmNl
cy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50Lmh0bWwiCisgICAgPC9pZnJhbWU+
CisKKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL25vbi1zYW5kYm94ZWQtaWZyYW1lLW5hdmln
YXRpb24uaHRtbCI+PC9pZnJhbWU+CisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9ub24tc2Fu
ZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLmh0bWwiPjwvaWZyYW1lPgorICAgIDxpZnJhbWUgc3Jj
PSJyZXNvdXJjZXMvbm9uLXNhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi5odG1sIj48L2lmcmFt
ZT4KKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL25vbi1zYW5kYm94ZWQtaWZyYW1lLW5hdmln
YXRpb24uaHRtbCI+PC9pZnJhbWU+CisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9ub24tc2Fu
ZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLmh0bWwiPjwvaWZyYW1lPgorCisgICAgPHAgaWQ9J3Rl
c3RTdGF0dXMnPkZBSUw6IFNjcmlwdCBkaWRuJ3QgcnVuPC9wPgorICAgIAorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFt
ZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmstZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9m
cmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmstZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3OTUyNmYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRp
b24tdGFyZ2V0bGluay1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitUaGlzIHRlc3QgdmVy
aWZpZXMgdGhhdCBhIHNhbmRib3hlZCBJRnJhbWUgY2Fubm90IG9wZW4gYSBsaW5rIGluIGFub3Ro
ZXIgZnJhbWUgdXNpbmcgdGhlIHRhcmdldCBhdHRyaWJ1dGUgb2YgYSBsaW5rLgorCitUaGlzIGlz
IGRvbmUgYnkgbG9hZGluZyB0ZW4gbm9uLXNhbmRib3hlZCBJRnJhbWVzLCBhbmQgYSBzaW5nbGUg
c2FuZGJveGVkIG9uZS4gSW4gYWRkaXRpb24gZWFjaCBvZiB0aGVzZSBmcmFtZXMgaGF2ZSBhIHRh
cmdldCBmcmFtZSAoc28sIDIyIGZyYW1lcyBpbiB0b3RhbCkuIEV4cGVjdCB0ZW4gZnJhbWVzIHRv
IGJlIGFibGUgdG8gb3BlbiBhIGxpbmsgaW4gdGhlaXIgY29ycmVzcG9uZGluZyB0YXJnZXQgZnJh
bWUsIGJ1dCB0aGUgc2FuZGJveGVkIG9uZSB0byBub3QgYmUgb25lIG9mIHRoZW0uCisKK1RoaXMg
dGVzdCB3aWxsIHByaW50ICJQQVNTIiBvbiBzdWNjZXNzLgorCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIAorUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMv
c2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRsaW5rLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDAxMmVkYgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlv
bi10YXJnZXRsaW5rLmh0bWwKQEAgLTAsMCArMSwxMDkgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgd2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICB3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCit2YXIgbmF2aWdhdGVkRnJhbWVzID0gMDsK
KworZnVuY3Rpb24gY2hlY2tSZXN1bHRzKCkKK3sKKyAgICB2YXIgdGVzdFN0YXR1cyA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0U3RhdHVzJyk7CisKKyAgICBpZiAoc2VsZi5zYW5kYm94
ZWRfdGFyZ2V0LmxvY2F0aW9uLmhyZWYuaW5kZXhPZignLmh0bWwnKSAhPSAtMSkKKyAgICAgICAg
dGVzdFN0YXR1cy5pbm5lckhUTUwgPSAnRkFJTDogZGlzYWxsb3dlZCBmcmFtZSBuYXZpZ2F0ZWQn
OworICAgIGVsc2UgaWYgKG5hdmlnYXRlZEZyYW1lcyA9PSAxMCkKKyAgICAgICAgdGVzdFN0YXR1
cy5pbm5lckhUTUwgPSAnUEFTUyc7CisgICAgZWxzZQorICAgICAgICB0ZXN0U3RhdHVzLmlubmVy
SFRNTCA9ICdGQUlMOiBmcmFtZXMgbm90IG5hdmlnYXRlZCBwcm9wZXJseSc7CisKKyAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBjb3VudEZyYW1lKCkKK3sKKyAg
ICArK25hdmlnYXRlZEZyYW1lczsKKworICAgIGlmIChuYXZpZ2F0ZWRGcmFtZXMgPT0gMTApCisg
ICAgICAgIGNoZWNrUmVzdWx0cygpOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+
CisKKyAgICA8cD5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhIHNhbmRib3hlZCBJRnJhbWUgY2Fu
bm90IG9wZW4gYSBsaW5rIGluCisgICAgYW5vdGhlciBmcmFtZSB1c2luZyB0aGUgPGNvZGU+dGFy
Z2V0PC9jb2RlPiBhdHRyaWJ1dGUgb2YgYSBsaW5rLjwvcD4KKworICAgIDxwPlRoaXMgaXMgZG9u
ZSBieSBsb2FkaW5nIHRlbiBub24tc2FuZGJveGVkIElGcmFtZXMsIGFuZCBhIHNpbmdsZQorICAg
IHNhbmRib3hlZCBvbmUuIEluIGFkZGl0aW9uIGVhY2ggb2YgdGhlc2UgZnJhbWVzIGhhdmUgYSB0
YXJnZXQgZnJhbWUKKyAgICAoc28sIDIyIGZyYW1lcyBpbiB0b3RhbCkuIEV4cGVjdCB0ZW4gZnJh
bWVzIHRvIGJlIGFibGUgdG8gb3BlbiBhIGxpbmsKKyAgICBpbiB0aGVpciBjb3JyZXNwb25kaW5n
IHRhcmdldCBmcmFtZSwgYnV0IHRoZSBzYW5kYm94ZWQgb25lCisgICAgdG8gPGI+bm90PC9iPiBi
ZSBvbmUgb2YgdGhlbS48L3A+CisgICAgCisgICAgPHA+VGhpcyB0ZXN0IHdpbGwgcHJpbnQgJnF1
b3Q7UEFTUyZxdW90OyBvbiBzdWNjZXNzLjwvcD4KKworICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJj
ZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbCIKKyAgICAgICAg
ICAgIG5hbWU9ImYxIj4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIG5hbWU9ImYxX3Rhcmdl
dCIgc3JjPSJhYm91dDpibGFuayI+PC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNyYz0icmVzb3Vy
Y2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRsaW5rLmh0bWwiCisgICAgICAg
ICAgICBuYW1lPSJmMiI+CisgICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBuYW1lPSJmMl90YXJn
ZXQiIHNyYz0iYWJvdXQ6YmxhbmsiPjwvaWZyYW1lPgorCisgICAgPGlmcmFtZSBzcmM9InJlc291
cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay5odG1sIgorICAgICAg
ICAgICAgbmFtZT0iZjMiPgorICAgIDwvaWZyYW1lPgorICAgIDxpZnJhbWUgbmFtZT0iZjNfdGFy
Z2V0IiBzcmM9ImFib3V0OmJsYW5rIj48L2lmcmFtZT4KKworICAgIDxpZnJhbWUgc3JjPSJyZXNv
dXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbCIKKyAgICAg
ICAgICAgIG5hbWU9ImY0Ij4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIG5hbWU9ImY0X3Rh
cmdldCIgc3JjPSJhYm91dDpibGFuayI+PC9pZnJhbWU+CisKKyAgICA8aWZyYW1lIHNyYz0icmVz
b3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRsaW5rLmh0bWwiCisgICAg
ICAgICAgICBuYW1lPSJmNSI+CisgICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBuYW1lPSJmNV90
YXJnZXQiIHNyYz0iYWJvdXQ6YmxhbmsiPjwvaWZyYW1lPgorCisgICAgPGlmcmFtZSBzcmM9InJl
c291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay5odG1sIgorICAg
ICAgICAgICAgbmFtZT0ic2FuZGJveGVkIgorICAgICAgICAgICAgc2FuZGJveD0iYWxsb3ctc2Ny
aXB0cyBhbGxvdy1zYW1lLW9yaWdpbiI+CisgICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBuYW1l
PSJzYW5kYm94ZWRfdGFyZ2V0IiBzcmM9ImFib3V0OmJsYW5rIj48L2lmcmFtZT4KKworICAgIDxp
ZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxp
bmsuaHRtbCIKKyAgICAgICAgICAgIG5hbWU9ImY2Ij4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZy
YW1lIG5hbWU9ImY2X3RhcmdldCIgc3JjPSJhYm91dDpibGFuayI+PC9pZnJhbWU+CisKKyAgICA8
aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJnZXRs
aW5rLmh0bWwiCisgICAgICAgICAgICBuYW1lPSJmNyI+CisgICAgPC9pZnJhbWU+CisgICAgPGlm
cmFtZSBuYW1lPSJmN190YXJnZXQiIHNyYz0iYWJvdXQ6YmxhbmsiPjwvaWZyYW1lPgorCisgICAg
PGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0
bGluay5odG1sIgorICAgICAgICAgICAgbmFtZT0iZjgiPgorICAgIDwvaWZyYW1lPgorICAgIDxp
ZnJhbWUgbmFtZT0iZjhfdGFyZ2V0IiBzcmM9ImFib3V0OmJsYW5rIj48L2lmcmFtZT4KKworICAg
IDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdl
dGxpbmsuaHRtbCIKKyAgICAgICAgICAgIG5hbWU9ImY5Ij4KKyAgICA8L2lmcmFtZT4KKyAgICA8
aWZyYW1lIG5hbWU9ImY5X3RhcmdldCIgc3JjPSJhYm91dDpibGFuayI+PC9pZnJhbWU+CisKKyAg
ICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10YXJn
ZXRsaW5rLmh0bWwiCisgICAgICAgICAgICBuYW1lPSJmMTAiPgorICAgIDwvaWZyYW1lPgorICAg
IDxpZnJhbWUgbmFtZT0iZjEwX3RhcmdldCIgc3JjPSJhYm91dDpibGFuayI+PC9pZnJhbWU+CisK
KyAgICA8cCBpZD0ndGVzdFN0YXR1cyc+RkFJTDogU2NyaXB0IGRpZG4ndCBydW48L3A+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94
ZWQtaWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24td2luZG93b3Blbi1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjBlZTAyZAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUt
bmF2aWdhdGlvbi13aW5kb3dvcGVuLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKK1Zlcmlm
aWVzIHRoYXQgYSBzYW5kYm94ZWQgSUZyYW1lIGNhbm5vdCBvcGVuIG5ldyB3aW5kb3dzIHVzaW5n
IHdpbmRvdy5vcGVuKCkuIEV4cGVjdCB0ZW4gd2luZG93cyB0byBiZSBvcGVuZWQsIGJ1dCB0aGUg
c2FuZGJveGVkIElGcmFtZSBub3QgdG8gYmUgdGhlIG9wZW5lciBvZiBhbnkgb2YgdGhlbS4KKwor
VGhpcyB0ZXN0IHdpbGwgcHJpbnQgIlBBU1MiIG9uIHN1Y2Nlc3MuCisKKyAgICAgICAgICAgICAg
IAorUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlm
cmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDI0ZjJmYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVu
Lmh0bWwKQEAgLTAsMCArMSw3MiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisKK2lmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldENhbk9wZW5XaW5kb3dzKHRydWUpOworfQorCit2
YXIgdGVzdFN0YXR1cyAgICAgICA9ICJGQUlMOiBub3QgY29tcGxldGVkIjsKK3ZhciB3aW5kb3dz
T3BlbmVkICAgID0gMDsKK3ZhciBtYWluV2luZG93TG9hZGVkID0gZmFsc2U7Cit2YXIgdGVzdENv
bXBsZXRlZCAgICA9IGZhbHNlOworCitmdW5jdGlvbiB1cGRhdGVTdGF0dXMobG9hZGVkLCBkb25l
KQoreworICAgIG1haW5XaW5kb3dMb2FkZWQgfD0gbG9hZGVkOworICAgIHRlc3RDb21wbGV0ZWQg
fD0gZG9uZTsKKworICAgIGlmIChtYWluV2luZG93TG9hZGVkICYmIHRlc3RDb21wbGV0ZWQpIHsK
KyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RTdGF0dXMiKS5pbm5lckhUTUwg
PSB0ZXN0U3RhdHVzOworICAgICAgICBpZiAodGVzdENvbXBsZXRlZCAmJiB3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7CisgICAgfQorfQorCitmdW5jdGlvbiB3aW5kb3dPcGVuZWQod2luZG93T3BlbmVyKQor
eworICAgIGlmICh3aW5kb3dPcGVuZXIgPT0gc2VsZi5zYW5kYm94ZWQpIHsKKyAgICAgICAgdGVz
dFN0YXR1cyA9ICJGQUlMOiBzYW5kYm94ZWQgZnJhbWUgb3BlbmVkIHdpbmRvdyI7CisgICAgICAg
IHVwZGF0ZVN0YXR1cyhmYWxzZSwgdHJ1ZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgKyt3aW5k
b3dzT3BlbmVkOworICAgICAgICBpZiAod2luZG93c09wZW5lZCA9PSAxMCAmJiAhdGVzdENvbXBs
ZXRlZCkgeworICAgICAgICAgICAgdGVzdFN0YXR1cyA9ICJQQVNTIjsKKyAgICAgICAgICAgIHVw
ZGF0ZVN0YXR1cyhmYWxzZSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKzwvc2NyaXB0
PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InVwZGF0ZVN0YXR1cyh0cnVlLCBmYWxzZSk7Ij4K
KworICAgIDxwPlZlcmlmaWVzIHRoYXQgYSBzYW5kYm94ZWQgSUZyYW1lIGNhbm5vdCBvcGVuIG5l
dyB3aW5kb3dzCisgICAgdXNpbmcgPGNvZGU+d2luZG93Lm9wZW4oKTwvY29kZT4uIEV4cGVjdCB0
ZW4gd2luZG93cyB0byBiZSBvcGVuZWQsCisgICAgYnV0IHRoZSBzYW5kYm94ZWQgSUZyYW1lIG5v
dCB0byBiZSB0aGUgb3BlbmVyIG9mIGFueSBvZiB0aGVtLjwvcD4KKyAgICAKKyAgICA8cD5UaGlz
IHRlc3Qgd2lsbCBwcmludCAmcXVvdDtQQVNTJnF1b3Q7IG9uIHN1Y2Nlc3MuPC9wPgorCisgICAg
PGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24td2luZG93
b3Blbi5odG1sIj48L2lmcmFtZT4KKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hl
ZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0bWwiPjwvaWZyYW1lPgorICAgIDxpZnJh
bWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4u
aHRtbCI+PC9pZnJhbWU+CisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZy
YW1lLW5hdmlnYXRpb24td2luZG93b3Blbi5odG1sIj48L2lmcmFtZT4KKyAgICA8aWZyYW1lIHNy
Yz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0bWwi
PjwvaWZyYW1lPgorCisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1l
LW5hdmlnYXRpb24td2luZG93b3Blbi5odG1sIgorICAgICAgICAgICAgc2FuZGJveD0iYWxsb3ct
c2NyaXB0cyIKKyAgICAgICAgICAgIG5hbWU9InNhbmRib3hlZCI+CisgICAgPC9pZnJhbWU+CisK
KyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13
aW5kb3dvcGVuLmh0bWwiPjwvaWZyYW1lPgorICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2Fu
ZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4uaHRtbCI+PC9pZnJhbWU+CisgICAg
PGlmcmFtZSBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24td2luZG93
b3Blbi5odG1sIj48L2lmcmFtZT4KKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3NhbmRib3hl
ZC1pZnJhbWUtbmF2aWdhdGlvbi13aW5kb3dvcGVuLmh0bWwiPjwvaWZyYW1lPgorICAgIDxpZnJh
bWUgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4u
aHRtbCI+PC9pZnJhbWU+CisKKyAgICA8cCBpZD0ndGVzdFN0YXR1cyc+RkFJTDogU2NyaXB0IGRp
ZG4ndCBydW48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNWJiMjczCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE3IEBACitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBzYW5k
Ym94aW5nIG9mIHBsdWdpbnMgd29ya3MgYXMgaW50ZW5kZWQuIFRocmVlIHRlc3RzIGFyZSBtYWRl
LCBlYWNoIGluIG9uZSBzYW5kYm94ZWQgYW5kIG9uZSBub24tc2FuZGJveGVkIElGcmFtZTogYXBw
bGV0cywgZW1iZWRzLCBhbmQgb2JqZWN0cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK05PVEU6IFRoZSBmaXJzdCBzdWItdGVzdCB3aWxsIGZhaWwgaW4gRHVtcFJlbmRlclRyZWUs
IHNpbmNlIER1bXBSZW5kZXJUcmVlIGRvZXMgbm90IHN1cHBvcnQgYXBwbGV0cy4gVGhhdCBzdWIt
dGVzdCBtdXN0IGJlIHJ1biBpbiBTYWZhcmkgaW5zdGVhZC4KKworRkFJTCAoc2VsZi5hcHBsZXRG
cmFtZTEuZG9jdW1lbnRbJ2FwcCddLmluaXQpICE9IHVuZGVmaW5lZCBzaG91bGQgYmUgdHJ1ZS4g
V2FzIGZhbHNlLgorUEFTUyAoc2VsZi5hcHBsZXRGcmFtZTIuZG9jdW1lbnRbJ2FwcCddLmluaXQp
ID09IHVuZGVmaW5lZCBpcyB0cnVlCitQQVNTIChzZWxmLmVtYmVkRnJhbWUxLmRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdwbHVnaW4nKS5kZXN0cm95U3RyZWFtKSAhPSB1bmRlZmluZWQgaXMgdHJ1
ZQorUEFTUyAoc2VsZi5lbWJlZEZyYW1lMi5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGx1Z2lu
JykuZGVzdHJveVN0cmVhbSkgPT0gdW5kZWZpbmVkIGlzIHRydWUKK1BBU1MgKHNlbGYub2JqZWN0
RnJhbWUxLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbHVnaW4nKS5kZXN0cm95U3RyZWFtKSAh
PSB1bmRlZmluZWQgaXMgdHJ1ZQorUEFTUyAoc2VsZi5vYmplY3RGcmFtZTIuZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3BsdWdpbicpLmRlc3Ryb3lTdHJlYW0pID09IHVuZGVmaW5lZCBpcyB0cnVl
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKyAgICAg
ICAgIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFt
ZS1wbHVnaW5zLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1l
LXBsdWdpbnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjQwNjkx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlm
cmFtZS1wbHVnaW5zLmh0bWwKQEAgLTAsMCArMSw3NCBAQAorPGh0bWw+IAorPGhlYWQ+IAorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0PiAKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IAorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsgCisgCit3aW5kb3cub25s
b2FkID0gZnVuY3Rpb24oKSB7IAorICAgIHNob3VsZEJlVHJ1ZSgiKHNlbGYuYXBwbGV0RnJhbWUx
LmRvY3VtZW50WydhcHAnXS5pbml0KSAhPSB1bmRlZmluZWQiKTsKKyAgICBzaG91bGRCZVRydWUo
IihzZWxmLmFwcGxldEZyYW1lMi5kb2N1bWVudFsnYXBwJ10uaW5pdCkgPT0gdW5kZWZpbmVkIik7
CisKKyAgICBzaG91bGRCZVRydWUoIihzZWxmLmVtYmVkRnJhbWUxLmRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdwbHVnaW4nKS5kZXN0cm95U3RyZWFtKSAhPSB1bmRlZmluZWQiKTsKKyAgICBzaG91
bGRCZVRydWUoIihzZWxmLmVtYmVkRnJhbWUyLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbHVn
aW4nKS5kZXN0cm95U3RyZWFtKSA9PSB1bmRlZmluZWQiKTsKKworICAgIHNob3VsZEJlVHJ1ZSgi
KHNlbGYub2JqZWN0RnJhbWUxLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbHVnaW4nKS5kZXN0
cm95U3RyZWFtKSAhPSB1bmRlZmluZWQiKTsKKyAgICBzaG91bGRCZVRydWUoIihzZWxmLm9iamVj
dEZyYW1lMi5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGx1Z2luJykuZGVzdHJveVN0cmVhbSkg
PT0gdW5kZWZpbmVkIik7CisKKyAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOworfSAKKzwvc2Ny
aXB0PiAKKzwvaGVhZD4gCisgCis8Ym9keT4gCisgICAgPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+
CisgCisgICAgPHA+Tk9URTogVGhlIGZpcnN0IHN1Yi10ZXN0IHdpbGwgZmFpbCBpbiBEdW1wUmVu
ZGVyVHJlZSwgc2luY2UgRHVtcFJlbmRlclRyZWUKKyAgICBkb2VzIG5vdCBzdXBwb3J0IGFwcGxl
dHMuIFRoYXQgc3ViLXRlc3QgbXVzdCBiZSBydW4gaW4gU2FmYXJpIGluc3RlYWQuPC9wPiAKKwor
ICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCisgICAgPCEtLSBBcHBsZXRzIC0tPgorICAg
IAorICAgIDxpZnJhbWUgaWQ9ImFwcGxldEZyYW1lMSIgCisgICAgICAgICAgICBzdHlsZT0id2lk
dGg6IDIwMHB4OyBoZWlnaHQ6IDEwMHB4OyIgCisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9z
YW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtYXBwbGV0Lmh0bWwiPiAKKyAgICA8L2lmcmFt
ZT4gCisgICAgPGlmcmFtZSBpZD0iYXBwbGV0RnJhbWUyIiAKKyAgICAgICAgICAgIHN0eWxlPSJ3
aWR0aDogMjAwcHg7IGhlaWdodDogMTAwcHg7IiAKKyAgICAgICAgICAgIHNhbmRib3g9ImFsbG93
LXNhbWUtb3JpZ2luIGFsbG93LXNjcmlwdHMiIAorICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMv
c2FuZGJveGVkLWlmcmFtZS1wbHVnaW5zLWZyYW1lLWFwcGxldC5odG1sIj4gCisgICAgPC9pZnJh
bWU+IAorCisgICAgPCEtLSBFbWJlZHMgLS0+CisgICAgCisgICAgPGlmcmFtZSBpZD0iZW1iZWRG
cmFtZTEiCisgICAgICAgICAgICBzdHlsZT0id2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDEwMHB4OyIK
KyAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy1mcmFt
ZS1lbWJlZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKyAgICA8aWZyYW1lIGlkPSJlbWJlZEZyYW1l
MiIKKyAgICAgICAgICAgIHN0eWxlPSJ3aWR0aDogMjAwcHg7IGhlaWdodDogMTAwcHg7IgorICAg
ICAgICAgICAgc2FuZGJveD0iYWxsb3ctc2FtZS1vcmlnaW4iCisgICAgICAgICAgICBzcmM9InJl
c291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtZW1iZWQuaHRtbCI+CisgICAg
PC9pZnJhbWU+CisKKyAgICA8IS0tIE9iamVjdHMgLS0+CisgICAgCisgICAgPGlmcmFtZSBpZD0i
b2JqZWN0RnJhbWUxIgorICAgICAgICAgICAgc3R5bGU9IndpZHRoOiAyMDBweDsgaGVpZ2h0OiAx
MDBweDsiCisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdp
bnMtZnJhbWUtb2JqZWN0Lmh0bWwiPgorICAgIDwvaWZyYW1lPgorICAgIDxpZnJhbWUgaWQ9Im9i
amVjdEZyYW1lMiIKKyAgICAgICAgICAgIHN0eWxlPSJ3aWR0aDogMjAwcHg7IGhlaWdodDogMTAw
cHg7IgorICAgICAgICAgICAgc2FuZGJveD0iYWxsb3ctc2FtZS1vcmlnaW4iCisgICAgICAgICAg
ICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXBsdWdpbnMtZnJhbWUtb2JqZWN0Lmh0
bWwiPgorICAgIDwvaWZyYW1lPgorCisgICAgPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGhp
cyB0ZXN0IHZlcmlmaWVzIHRoYXQgc2FuZGJveGluZyBvZiBwbHVnaW5zIHdvcmtzIGFzIGludGVu
ZGVkLiBUaHJlZSB0ZXN0cyBhcmUgbWFkZSwgZWFjaCBpbiBvbmUgc2FuZGJveGVkIGFuZCBvbmUg
bm9uLXNhbmRib3hlZCBJRnJhbWU6IGFwcGxldHMsIGVtYmVkcywgYW5kIG9iamVjdHMuIik7Cisg
ICAgdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+
IAorPC9odG1sPiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hl
ZC1pZnJhbWUtc2NyaXB0aW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3NhbmRib3hlZC1pZnJhbWUtc2NyaXB0aW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi43NzZhNWM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1zY3JpcHRpbmctZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTEgQEAKK1ZlcmlmeSB0aGF0IHNhbmRib3hlZCBmcmFtZXMgd2l0aCBzYW5kYm94
PSJhbGxvdy1zY3JpcHRzIiBjYW4gZXhlY3V0ZSBzY3JpcHRzLCBidXQgb3RoZXIgc2FuZGJveGVk
IGZyYW1lcyBjYW5ub3QuIEFsc28gdmVyaWZ5IHRoYXQgcmVtb3ZpbmcgdGhlIHNhbmRib3g9ImFs
bG93LXNjcmlwdHMiIGF0dHJpYnV0ZSBhdCBydW50aW1lIHByZXZlbnRzIG5ldyBzY3JpcHRzIGZy
b20gbGF1bmNoaW5nLCBidXQgZXhpc3Rpbmcgb25lcyBrZWVwIHJ1bm5pbmcuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRpc2FsbG93ZWRFeGVjdXRlZCBpcyAwCitQQVNT
IGFsbG93ZWRFeGVjdXRlZCBpcyAyCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKyAgIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMv
c2FuZGJveGVkLWlmcmFtZS1zY3JpcHRpbmcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3NhbmRib3hlZC1pZnJhbWUtc2NyaXB0aW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMjI1OTc0ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtc2NyaXB0aW5nLmh0bWwKQEAgLTAsMCArMSw0NiBAQAor
PGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKwordmFyIGRpc2FsbG93ZWRFeGVjdXRlZCA9IDA7Cit2YXIgYWxsb3dlZEV4ZWN1
dGVkID0gMDsKKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBzaG91bGRCZSgi
ZGlzYWxsb3dlZEV4ZWN1dGVkIiwgIjAiKTsKKyAgICBzaG91bGRCZSgiYWxsb3dlZEV4ZWN1dGVk
IiwgIjIiKTsKKworICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7Cit9Cis8L3NjcmlwdD4KKzwv
aGVhZD4KKworPGJvZHk+CisgICAgPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CisgCisgICAgPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+CisgCisgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zYW1l
LW9yaWdpbiBhbGxvdy1zY3JpcHRzIgorICAgICAgICAgICAgc3JjPSJqYXZhc2NyaXB0OiArK3dp
bmRvdy50b3AuYWxsb3dlZEV4ZWN1dGVkOyI+CisgICAgPC9pZnJhbWU+CisgICAgPGlmcmFtZSBz
YW5kYm94PSJhbGxvdy1zYW1lLW9yaWdpbiIKKyAgICAgICAgICAgIHNyYz0iamF2YXNjcmlwdDog
Kyt3aW5kb3cudG9wLmRpc2FsbG93ZWRFeGVjdXRlZDsiPgorICAgIDwvaWZyYW1lPgorICAgIAor
ICAgIDxpZnJhbWUgaWQ9ImZyYW1lIiBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXNj
cmlwdC1keW5hbWljLmh0bWwiPgorICAgIDwvaWZyYW1lPgorCisgICAgPHNjcmlwdD4KKyAgICBk
ZXNjcmlwdGlvbigiVmVyaWZ5IHRoYXQgc2FuZGJveGVkIGZyYW1lcyB3aXRoIHNhbmRib3g9JnF1
b3Q7YWxsb3ctc2NyaXB0cyZxdW90OyBjYW4gZXhlY3V0ZSBzY3JpcHRzLCAiCisgICAgICAgICAg
ICAgICAgICsgImJ1dCBvdGhlciBzYW5kYm94ZWQgZnJhbWVzIGNhbm5vdC4gQWxzbyB2ZXJpZnkg
dGhhdCByZW1vdmluZyB0aGUgIgorICAgICAgICAgICAgICAgICArICJzYW5kYm94PSZxdW90O2Fs
bG93LXNjcmlwdHMmcXVvdDsgYXR0cmlidXRlIGF0IHJ1bnRpbWUgcHJldmVudHMgbmV3IHNjcmlw
dHMgZnJvbSBsYXVuY2hpbmcsICIKKyAgICAgICAgICAgICAgICAgKyAiYnV0IGV4aXN0aW5nIG9u
ZXMga2VlcCBydW5uaW5nLiIpOworICAgIHZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
ICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1zdG9yYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtc3RvcmFnZS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTI2MmE0YQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtc3RvcmFnZS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwyOCBAQAorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYSBz
YW5kYm94ZWQgaWZyYW1lIGRvZXMgbm90IGhhdmUgYWNjZXNzIHRvIGFueSBzZXNzaW9uIHN0b3Jh
Z2UsIGxvY2FsIHN0b3JhZ2Ugb3IgZGF0YWJhc2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitNb3N0IG9mIHRoZSBQQVNTIG1lc3NhZ2VzIGFwcGVhciBpbiBmcmFtZXMsIHByZXNl
bnRlZCBieSBEdW1wUmVuZGVyVHJlZSBhZnRlciB0aGUgbWFpbiB3aW5kb3cuCisKKyAgCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKworCistLS0tLS0t
LQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0tLS0tCitQ
QVNTIHdpbmRvdy5vcGVuRGF0YWJhc2UoKSA9PSBudWxsIGlzIHRydWUKK1BBU1Mgd2luZG93Lmxv
Y2FsU3RvcmFnZSA9PSBudWxsIGlzIHRydWUKK1BBU1Mgd2luZG93LnNlc3Npb25TdG9yYWdlID09
IG51bGwgaXMgdHJ1ZQorCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0t
ZnJhbWUxLS0+LS0+JworLS0tLS0tLS0KK1BBU1Mgd2luZG93Lm9wZW5EYXRhYmFzZSgpICE9IG51
bGwgaXMgdHJ1ZQorUEFTUyB3aW5kb3cubG9jYWxTdG9yYWdlICE9IG51bGwgaXMgdHJ1ZQorUEFT
UyB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UgIT0gbnVsbCBpcyB0cnVlCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtc3RvcmFnZS5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1zdG9yYWdlLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjYyMmI1ZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtc3RvcmFnZS5odG1sCkBA
IC0wLDAgKzEsMzcgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENoaWxk
RnJhbWVzQXNUZXh0KCk7Cit9CisKK3dpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsgCisgICAg
aXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKK30gCisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
CisgICAgPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CisKKyAgICA8cD5Nb3N0IG9mIHRoZSBQQVNT
IG1lc3NhZ2VzIGFwcGVhciBpbiBmcmFtZXMsIHByZXNlbnRlZCBieSBEdW1wUmVuZGVyVHJlZSBh
ZnRlciB0aGUgbWFpbiB3aW5kb3cuPC9wPgorCisgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1z
Y3JpcHRzIiBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXN0b3JhZ2UtZGlzYWxsb3dl
ZC5odG1sIj4KKyAgICA8L2lmcmFtZT4KKworICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2Fu
ZGJveGVkLWlmcmFtZS1zdG9yYWdlLWFsbG93ZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+CisKKyAg
ICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworICAgIDxzY3JpcHQ+CisgICAgZGVzY3JpcHRp
b24oIlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGEgc2FuZGJveGVkIGlmcmFtZSBkb2VzIG5vdCBo
YXZlIGFjY2VzcyB0byBhbnkgc2Vzc2lvbiBzdG9yYWdlLCBsb2NhbCBzdG9yYWdlIG9yIGRhdGFi
YXNlLiIpOworICAgIHZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworICAgIDwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1kb2N1bWVudC1jb29raWUtcmVhZC1k
ZW5pZWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL3Nh
bmRib3hlZC1pZnJhbWUtZG9jdW1lbnQtY29va2llLXJlYWQtZGVuaWVkLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNlNzRiMgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUt
ZG9jdW1lbnQtY29va2llLXJlYWQtZGVuaWVkLmh0bWwKQEAgLTAsMCArMSwyNSBAQAorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0ZXN0UmVzdWx0IikuaW5uZXJIVE1MID0gKGZ1bmN0aW9uKCkgewor
ICAgICAgICB0cnkgeworICAgICAgICAgICAgdmFyIGNvb2tpZSA9IGRvY3VtZW50LmNvb2tpZTsK
KyAgICAgICAgfQorICAgICAgICBjYXRjaCAoZXJyKSB7CisgICAgICAgICAgICBpZiAoZXJyLm5h
bWUuaW5kZXhPZigiU0VDVVJJVFlfRVJSIikgIT0gLTEpCisgICAgICAgICAgICAgICAgcmV0dXJu
ICJQQVNTIjsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiAiRkFJTDogU0VDVVJJVFlfRVJS
IG5vdCByYWlzZWQiOworICAgIH0pKCk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkg
b25sb2FkPSJydW5UZXN0KCk7Ij4KKyAgICA8cCBpZD0idGVzdFJlc3VsdCI+RkFJTDogU2NyaXB0
IGRpZG4ndCBydW48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW1vZGlmeS1z
ZWxmLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9zYW5k
Ym94ZWQtaWZyYW1lLW1vZGlmeS1zZWxmLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uOTUzOWMwYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvcmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtbW9kaWZ5LXNlbGYuaHRtbApA
QCAtMCwwICsxLDE0IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKworLy8gdGhpcyBhc3Np
Z25tZW50IHNob3VsZCBoYXZlIG5vIGVmZmVjdCBvbiBzYW5kYm94IHN0YXR1cworc2VsZi5zYW5k
Ym94ID0gJ2FsbG93LXNjcmlwdHMgYWxsb3ctc2FtZS1vcmlnaW4gaGFja2VkLXZpYS13aW5kb3ct
b2JqZWN0JzsKKworLy8gdGhpcyBzaG91bGQgYmUgcHJldmVudGVkIGJ5IHRoZSBzYW5kYm94ICdv
cmlnaW4nIGZsYWcKK2lmICh0b3AuZG9jdW1lbnQpCisgICAgdG9wLmRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdmJykuc2FuZGJveCA9ICdhbGxvdy1zY3JpcHRzIGFsbG93LXNhbWUtb3JpZ2luIGhh
Y2tlZC12aWEtZG9tJzsKKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy94c3MtREVOSUVELXNh
bmRib3hlZC1pZnJhbWUtYXR0YWNrZXIuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvcmVzb3VyY2VzL3hzcy1ERU5JRUQtc2FuZGJveGVkLWlmcmFtZS1hdHRhY2tlci5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyMGE2NjAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy94c3MtREVO
SUVELXNhbmRib3hlZC1pZnJhbWUtYXR0YWNrZXIuaHRtbApAQCAtMCwwICsxLDcgQEAKKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0PgorICAgIHRvcC5kb2NSZWYgPSBwYXJlbnQuZG9jdW1lbnQ7ICAv
LyBhY2Nlc3MgcGFyZW50J3MgRE9NIHRyZWU6IHNob3VsZCBub3QgYmUgYWxsb3dlZAorPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtZG9jdW1lbnQtY29va2llLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc2FuZGJveGVkLWlmcmFtZS1kb2N1bWVu
dC1jb29raWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmVhMTdjZmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3NhbmRib3hlZC1pZnJhbWUtZG9jdW1lbnQtY29va2llLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDggQEAKK1RoaXMgdGVzdCBjaGVja3MgdGhhdCBhIFNFQ1VSSVRZX0VSUiBleGNlcHRpb24g
aXMgcmFpc2VkIHdoaWxlIGFjY2Vzc2luZyBkb2N1bWVudC5kb21haW4gaW4gYSBzYW5kYm94ZWQg
aWZyYW1lICh3aXRob3V0ICJhbGxvdy1vcmlnaW4iIHNldCkuIFRoaXMgdGVzdCB3aWxsIHByaW50
ICJQQVNTIiBvbiBzdWNjZXNzLgorCisKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0
aCAvLzwhLS1mcmFtZTAtLT4tLT4nCistLS0tLS0tLQorUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLWRvY3VtZW50LWNvb2tp
ZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1l
LWRvY3VtZW50LWNvb2tpZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjY4YjFiM2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3NhbmRib3hlZC1pZnJhbWUtZG9jdW1lbnQtY29va2llLmh0bWwKQEAgLTAsMCArMSwyNSBA
QAorPGh0bWw+Cis8aGVhZD4KKworPHNjcmlwdD4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKK30KKworPC9zY3Jp
cHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorCisgICAgPHA+VGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGEg
U0VDVVJJVFlfRVJSIGV4Y2VwdGlvbiBpcyByYWlzZWQgd2hpbGUgYWNjZXNzaW5nIGRvY3VtZW50
LmRvbWFpbgorICAgIGluIGEgc2FuZGJveGVkIGlmcmFtZSAod2l0aG91dCAmcXVvdDthbGxvdy1v
cmlnaW4mcXVvdDsgc2V0KS4gVGhpcyB0ZXN0IHdpbGwgcHJpbnQKKyAgICAmcXVvdDtQQVNTJnF1
b3Q7IG9uIHN1Y2Nlc3MuPC9wPgorCisgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zY3JpcHRz
IgorICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1kb2N1bWVudC1j
b29raWUtcmVhZC1kZW5pZWQuaHRtbCI+CisgICAgPC9pZnJhbWU+Cis8L2JvZHk+CisKKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc2FuZGJveGVk
LWlmcmFtZS1tb2RpZnktc2VsZi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtbW9kaWZ5LXNlbGYtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzYzQwZGEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtbW9kaWZ5
LXNlbGYtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGlu
ZSAxOiBVbnNhZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRvIGFjY2VzcyBmcmFtZSB3aXRoIFVSTCBo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvc2FuZGJveGVkLWlmcmFtZS1tb2RpZnktc2Vs
Zi5odG1sIGZyb20gZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5
L3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLW1vZGlmeS1zZWxmLmh0bWwuIERvbWFpbnMsIHBy
b3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KKworVGhpcyBpcyBhICJzYW5pdHkiIHRlc3Qg
Y2FzZSB0byB2ZXJpZnkgdGhhdCBhIHNhbmRib3hlZCBmcmFtZSBjYW5ub3QgYnJlYWsgb3V0IG9m
IGl0cyBzYW5kYm94IGJ5IG1vZGlmeWluZyBpdHMgb3duIHNhbmRib3ggYXR0cmlidXRlLiBUd28g
YXR0ZW1wdHMgYXJlIG1hZGU6CisKK0ZpcnN0LCBhbiBhdHRlbXB0IGlzIG1hZGUgdG8gbW9kaWZ5
IHRoZSBzYW5kYm94IGF0dHJpYnV0ZSBvZiB0aGUgInNlbGYiIG9iamVjdCwgcmVmZXJyaW5nIHRv
IHRoZSBmcmFtZSdzIHdpbmRvdy4gVGhpcyBzaG91bGQgbm90IGhhdmUgYW55IGVmZmVjdCAodGhl
IGF0dHJpYnV0ZSBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIGlmcmFtZSBET00gbm9kZSwgbm90IHRo
ZSB3aW5kb3cpLiBObyB3YXJuaW5nIGlzIGV4cGVjdGVkLgorU2Vjb25kLCBhbiBhdHRlbXB0IGlz
IG1hZGUgdG8gbW9kaWZ5IHRoZSBpZnJhbWUgRE9NIG9iamVjdCdzIHNhbmRib3ggYXR0cmlidXRl
LiBBIHdhcm5pbmcgbWVzc2FnZSAoYWJvdXQgY3Jvc3Mtc2l0ZSBzY3JpcHRpbmcpIGlzIGV4cGVj
dGVkLCBhbmQgdGhlIHNhbmRib3ggYXR0cmlidXRlIHNob3VsZCByZW1haW4gaW50YWN0LgorVGhp
cyB0ZXN0IHdpbGwgcHJpbnQgIlBBU1MiIG9uIHN1Y2Nlc3MuCisKK1BBU1MKKworCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtbW9k
aWZ5LXNlbGYuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc2FuZGJveGVk
LWlmcmFtZS1tb2RpZnktc2VsZi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjQxNjYwYmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3NhbmRib3hlZC1pZnJhbWUtbW9kaWZ5LXNlbGYuaHRtbApAQCAtMCwwICsxLDQyIEBA
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCit3
aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZXN1bHQiKS5pbm5lckhUTUwgPSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImYiKS5zYW5k
Ym94ICE9ICJhbGxvdy1zY3JpcHRzIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID8gIkZBSUw6IHNhbmRib3ggYXR0cmlidXRlIG1vZGlmaWVkIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiUEFTUyI7Cit9
CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKyAgICA8cD5UaGlzIGlzIGEgJnF1b3Q7
c2FuaXR5JnF1b3Q7IHRlc3QgY2FzZSB0byB2ZXJpZnkgdGhhdCBhIHNhbmRib3hlZCAKKyAgICBm
cmFtZSBjYW5ub3QgYnJlYWsgb3V0IG9mIGl0cyBzYW5kYm94IGJ5IG1vZGlmeWluZyBpdHMgb3du
IHNhbmRib3gKKyAgICBhdHRyaWJ1dGUuIFR3byBhdHRlbXB0cyBhcmUgbWFkZTo8L3A+CisgICAg
CisgICAgPG9sPgorICAgICAgICA8bGk+Rmlyc3QsIGFuIGF0dGVtcHQgaXMgbWFkZSB0byBtb2Rp
ZnkgdGhlIHNhbmRib3ggYXR0cmlidXRlIG9mIHRoZQorICAgICAgICAmcXVvdDtzZWxmJnF1b3Q7
IG9iamVjdCwgcmVmZXJyaW5nIHRvIHRoZSBmcmFtZSdzIHdpbmRvdy4gVGhpcyBzaG91bGQKKyAg
ICAgICAgbm90IGhhdmUgYW55IGVmZmVjdCAodGhlIGF0dHJpYnV0ZSBpcyBhc3NvY2lhdGVkIHdp
dGggdGhlIGlmcmFtZSBET00KKyAgICAgICAgbm9kZSwgbm90IHRoZSB3aW5kb3cpLiBObyB3YXJu
aW5nIGlzIGV4cGVjdGVkLjwvbGk+CisgICAgICAgIDxsaT5TZWNvbmQsIGFuIGF0dGVtcHQgaXMg
bWFkZSB0byBtb2RpZnkgdGhlIGlmcmFtZSBET00gb2JqZWN0J3Mgc2FuZGJveAorICAgICAgICBh
dHRyaWJ1dGUuIEEgd2FybmluZyBtZXNzYWdlIChhYm91dCBjcm9zcy1zaXRlIHNjcmlwdGluZykg
aXMgZXhwZWN0ZWQsCisgICAgICAgIGFuZCB0aGUgc2FuZGJveCBhdHRyaWJ1dGUgc2hvdWxkIHJl
bWFpbiBpbnRhY3QuPC9saT4KKyAgICA8L29sPgorICAgIAorICAgIDxwPlRoaXMgdGVzdCB3aWxs
IHByaW50ICZxdW90O1BBU1MmcXVvdDsgb24gc3VjY2Vzcy48L3A+CisKKyAgICA8cCBpZD0icmVz
dWx0Ij5GQUlMPC9wPgorCisgICAgPGlmcmFtZSBpZD0iZiIKKyAgICAgICAgICAgIHNhbmRib3g9
ImFsbG93LXNjcmlwdHMiCisgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZy
YW1lLW1vZGlmeS1zZWxmLmh0bWwiPgorICAgIDwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXNh
bmRib3hlZC1pZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5NjcwZWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQtc2FuZGJveGVkLWlmcmFtZS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogVW5z
YWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nlc3MgZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL3NlY3VyaXR5L3hzcy1ERU5JRUQtc2FuZGJveGVkLWlmcmFtZS5odG1sIGZy
b20gZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Jlc291cmNl
cy94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUtYXR0YWNrZXIuaHRtbC4gRG9tYWlucywgcHJv
dG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgorCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTog
VW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nlc3MgZnJhbWUgd2l0aCBVUkwgaHR0cDov
LzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3hzcy1ERU5JRUQtc2FuZGJveGVkLWlmcmFtZS5odG1s
IGZyb20gZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Jlc291
cmNlcy94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUtYXR0YWNrZXIuaHRtbC4gRG9tYWlucywg
cHJvdG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgorCitUaGlzIHRlc3QgdmVyaWZpZXMgdGhh
dCBzYW5kYm94ZWQgaWZyYW1lIHByZXZlbnRzIGNyb3NzLWRvbWFpbiBzY3JpcHQgYWNjZXNzLiBJ
dCB3aWxsIHByaW50ICJQQVNTIiBvbiBzdWNjZXNzLgorCisKK1BBU1M6IGNyb3NzLWRvbWFpbiBz
Y3JpcHQgYWNjZXNzIGRpc2FsbG93ZWQgZnJvbSBzYW5kYm94ZWQgaWZyYW1lCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQtc2FuZGJveGVkLWlm
cmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXNh
bmRib3hlZC1pZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41
NWFhZGNiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS94c3MtREVOSUVELXNhbmRib3hlZC1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDI5IEBACis8aHRt
bD4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCit2YXIgZG9jUmVmID0gdW5kZWZpbmVk
OworCit3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKQoreworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MID0KKyAgICAgICAgKGRvY1JlZiA/ICJGQUlMOiBj
cm9zcy1kb21haW4gc2NyaXB0IGFjY2VzcyBhbGxvd2VkIGZyb20gc2FuZGJveGVkIGlmcmFtZSIK
KyAgICAgICAgICAgICAgICA6ICJQQVNTOiBjcm9zcy1kb21haW4gc2NyaXB0IGFjY2VzcyBkaXNh
bGxvd2VkIGZyb20gc2FuZGJveGVkIGlmcmFtZSIpOworfQorCis8L3NjcmlwdD4KKzxib2R5Pgor
CisgICAgPHA+VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgc2FuZGJveGVkIGlmcmFtZSBwcmV2ZW50
cyBjcm9zcy1kb21haW4KKyAgICBzY3JpcHQgYWNjZXNzLiBJdCB3aWxsIHByaW50ICZxdW90O1BB
U1MmcXVvdDsgb24gc3VjY2Vzcy48L3A+CisKKyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93LXNj
cmlwdHMiCisgICAgICAgICAgICBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9y
ZXNvdXJjZXMveHNzLURFTklFRC1zYW5kYm94ZWQtaWZyYW1lLWF0dGFja2VyLmh0bWwiPgorICAg
IDwvaWZyYW1lPgorICAgIAorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPkZBSUw6IFNjcmlwdCBkaWRu
J3QgcnVuPC9kaXY+CisgICAgCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1p
ZnJhbWUtYWxsb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRw
cmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93LWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjBjYjc0Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29u
dHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAK
K1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHNhbmRib3hlZCBpZnJhbWUgaGFzIFhtbEh0dHBSZXF1
ZXN0IGFjY2VzcyB0byB0aGUgc2VydmVyIHRoYXQgYWNjZXB0cyBhbGwgZG9tYWlucy4gSXQgd2ls
bCBwcmludCAiUEFTUyIgb24gc3VjY2Vzcy4KKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1m
cmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK1BBU1M6IFNhbmRib3hlZCBp
ZnJhbWUgWEhSIGFjY2VzcyBhbGxvd2VkLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtYWxs
b3cuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNv
bnRyb2wtc2FuZGJveGVkLWlmcmFtZS1hbGxvdy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmRjMDExNzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtYWxs
b3cuaHRtbApAQCAtMCwwICsxLDE4IEBACis8aHRtbD4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7
Cit9CisKKzwvc2NyaXB0PgorPGJvZHk+CisgICAgPHA+VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQg
c2FuZGJveGVkIGlmcmFtZSBoYXMgWG1sSHR0cFJlcXVlc3QgYWNjZXNzCisgICAgdG8gdGhlIHNl
cnZlciB0aGF0IGFjY2VwdHMgYWxsIGRvbWFpbnMuIEl0IHdpbGwgcHJpbnQgJnF1b3Q7UEFTUyZx
dW90OyBvbiBzdWNjZXNzLjwvcD4KKyAgICAKKyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93LXNj
cmlwdHMiIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNl
cy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93LWlmcmFtZS5odG1sIiBzdHls
ZT0id2lkdGg6IDUwMHB4OyI+CisgICAgPC9pZnJhbWU+IAorICAgIAorPC9ib2R5PiAKKzwvaHRt
bD4gCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Fj
Y2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVk
LWlmcmFtZS1kZW5pZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjFkNzYwY2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHNhbmRi
b3hlZCBpZnJhbWUgZG9lcyBub3QgaGF2ZSBYbWxIdHRwUmVxdWVzdCBhY2Nlc3MgdG8gaXRzIHNl
cnZlci4gSXQgd2lsbCBwcmludCAiUEFTUyIgb24gc3VjY2Vzcy4KKworCisKKy0tLS0tLS0tCitG
cmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK1BBU1M6
IEV4Y2VwdGlvbiB0aHJvd24uIFNhbmRib3hlZCBpZnJhbWUgWEhSIGFjY2VzcyB3YXMgZGVuaWVk
IGluICdzZW5kJy4gW05FVFdPUktfRVJSOiBYTUxIdHRwUmVxdWVzdCBFeGNlcHRpb24gMTAxXS4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNz
LWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtd2l0aG91dC13aWxkY2FyZC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250
cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4NDAxM2IKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250
cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHNhbmRib3hlZCBpZnJh
bWUgZG9lcyBub3QgaGF2ZSBYbWxIdHRwUmVxdWVzdCBhY2Nlc3MgdG8gaXRzIHNlcnZlciB3aXRo
ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4iIHNldCB0byBpdHMgb3duIG9yaWdpbiAoMTI3
LjAuMC4xKS4KKworVGhpcyB0ZXN0IHdpbGwgcHJpbnQgIlBBU1MiIG9uIHN1Y2Nlc3MuCisKKwor
CistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0t
LS0tLS0tCitQQVNTOiBFeGNlcHRpb24gdGhyb3duLiBTYW5kYm94ZWQgaWZyYW1lIFhIUiBhY2Nl
c3Mgd2FzIGRlbmllZCBpbiAnc2VuZCcuIFtORVRXT1JLX0VSUjogWE1MSHR0cFJlcXVlc3QgRXhj
ZXB0aW9uIDEwMV0uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2ls
ZGNhcmQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNz
LWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtd2l0aG91dC13aWxkY2FyZC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjNDhkYzgKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9s
LXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQuaHRtbApAQCAtMCwwICsx
LDIyIEBACis8aHRtbD4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Cit9CisKKzwvc2NyaXB0Pgor
PGJvZHk+CisKKyAgICA8cD5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBzYW5kYm94ZWQgaWZyYW1l
IGRvZXMgbm90IGhhdmUgWG1sSHR0cFJlcXVlc3QgYWNjZXNzIHRvCisgICAgaXRzIHNlcnZlciB3
aXRoICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4iIHNldCB0byBpdHMgb3duIG9yaWdpbiAo
MTI3LjAuMC4xKS48L3A+CisgICAgCisgICAgPHA+VGhpcyB0ZXN0IHdpbGwgcHJpbnQgJnF1b3Q7
UEFTUyZxdW90OyBvbiBzdWNjZXNzLjwvcD4KKworICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3ct
c2NyaXB0cyIKKyAgICAgICAgICAgIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3htbGh0dHBy
ZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC13
aXRob3V0LXdpbGRjYXJkLWlmcmFtZS5odG1sIiBzdHlsZT0id2lkdGg6IDUwMHB4OyI+CisgICAg
PC9pZnJhbWU+CisgICAgCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJh
bWUtZGVuaWVkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Fj
Y2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uY2QxYTdkMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlm
cmFtZS1kZW5pZWQuaHRtbApAQCAtMCwwICsxLDE5IEBACis8aHRtbD4gCis8c2NyaXB0PgorCitp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBDaGlsZEZyYW1l
c0FzVGV4dCgpOworfQorCis8L3NjcmlwdD4KKworPGJvZHk+IAorICAgIDxwPlRoaXMgdGVzdCB2
ZXJpZmllcyB0aGF0IHNhbmRib3hlZCBpZnJhbWUgZG9lcyBub3QgaGF2ZSBYbWxIdHRwUmVxdWVz
dCBhY2Nlc3MKKyAgICB0byBpdHMgc2VydmVyLiBJdCB3aWxsIHByaW50ICZxdW90O1BBU1MmcXVv
dDsgb24gc3VjY2Vzcy48L3A+CisgICAgCisgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zY3Jp
cHRzIgorICAgICAgICAgICAgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAveG1saHR0cHJlcXVl
c3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWlmcmFt
ZS5odG1sIiBzdHlsZT0id2lkdGg6IDUwMHB4OyI+CisgICAgPC9pZnJhbWU+IAorPC9ib2R5PiAK
KzwvaHRtbD4gCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93LWlmcmFt
ZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMv
YWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1hbGxvdy1pZnJhbWUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODNlN2NiCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNv
bnRyb2wtc2FuZGJveGVkLWlmcmFtZS1hbGxvdy1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDI1IEBA
Cis8aHRtbD4gCis8Ym9keT4gCis8cHJlIGlkPSdjb25zb2xlJz48L3ByZT4gCis8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCI+IAorCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29s
ZScpLmlubmVySFRNTCA9IChmdW5jdGlvbigpIHsgCisgICAgdmFyIHhociA9IG5ldyBYTUxIdHRw
UmVxdWVzdDsgCisgCisgICAgdHJ5IHsgCisgICAgICAgIHhoci5vcGVuKCJHRVQiLCAiaHR0cDov
LzEyNy4wLjAuMTo4MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1z
YW5kYm94ZWQtaWZyYW1lLWFsbG93LmNnaSIsIGZhbHNlKTsgCisgICAgfSBjYXRjaChlKSB7IAor
ICAgICAgICByZXR1cm4gIkZBSUw6IEV4Y2VwdGlvbiB0aHJvd24uIFNhbmRib3hlZCBpZnJhbWUg
WEhSIGFjY2VzcyBpcyBub3QgYWxsb3dlZCBpbiAnb3BlbicuIFsiICsgZS5tZXNzYWdlICsgIl0u
IjsgCisgICAgfSAKKyAKKyAgICB0cnkgeyAKKyAgICAgICAgeGhyLnNlbmQoKTsgCisgICAgfSBj
YXRjaChlKSB7IAorICAgICAgICByZXR1cm4gIkZBSUw6IEV4Y2VwdGlvbiB0aHJvd24uIFNhbmRi
b3hlZCBpZnJhbWUgWEhSIGFjY2VzcyBpcyBub3QgYWxsb3dlZCBpbiAnc2VuZCcuIFsiICsgZS5t
ZXNzYWdlICsgIl0uIjsgCisgICAgfSAKKyAKKyAgICByZXR1cm4geGhyLnJlc3BvbnNlVGV4dDsg
Cit9KSgpOyAKKzwvc2NyaXB0PiAKKzwvYm9keT4gCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJv
bC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93LmNnaSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtYWxs
b3cuY2dpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzMzM3NmYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291
cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93LmNnaQpAQCAtMCwwICsx
LDggQEAKKyMhL3Vzci9iaW4vcGVybCAtd1QKK3VzZSBzdHJpY3Q7CisKK3ByaW50ICJDb250ZW50
LVR5cGU6IHRleHQvcGxhaW5cbiI7CitwcmludCAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctQ3JlZGVu
dGlhbHM6IHRydWVcbiI7CitwcmludCAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luOiAqXG5c
biI7CisKK3ByaW50ICJQQVNTOiBTYW5kYm94ZWQgaWZyYW1lIFhIUiBhY2Nlc3MgYWxsb3dlZC5c
biI7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jl
c291cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC1pZnJhbWUuaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vz
cy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmNWEyM2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJv
bC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDI3IEBACis8
aHRtbD4gCis8Ym9keT4gCis8cHJlIGlkPSdjb25zb2xlJz48L3ByZT4gCis8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCI+IAorCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScp
LmlubmVySFRNTCA9IChmdW5jdGlvbigpIHsKKyAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1
ZXN0OyAKKyAKKyAKKyAgICB0cnkgeyAKKyAgICAgICAgeGhyLm9wZW4oIkdFVCIsICJodHRwOi8v
MTI3LjAuMC4xOjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNh
bmRib3hlZC1pZnJhbWUtZGVuaWVkLmNnaSIsIGZhbHNlKTsgCisgICAgfSBjYXRjaChlKSB7IAor
ICAgICAgICByZXR1cm4gIkZBSUw6IEV4Y2VwdGlvbiB0aHJvd24uIFNhbmRib3hlZCBpZnJhbWUg
WEhSIGFjY2VzcyBpcyBub3QgYWxsb3dlZCBpbiAnb3BlbicuIFsiICsgZS5tZXNzYWdlICsgIl0u
IjsgCisgICAgfSAKKyAKKyAgICB0cnkgeyAKKyAgICAgICAgeGhyLnNlbmQoKTsgCisgICAgfSBj
YXRjaChlKSB7IAorICAgICAgICByZXR1cm4gIlBBU1M6IEV4Y2VwdGlvbiB0aHJvd24uIFNhbmRi
b3hlZCBpZnJhbWUgWEhSIGFjY2VzcyB3YXMgZGVuaWVkIGluICdzZW5kJy4gWyIgKyBlLm1lc3Nh
Z2UgKyAiXS4iOyAKKyAgICB9CisgCisgICAgcmV0dXJuIHhoci5yZXNwb25zZVRleHQ7IAorfSko
KTsKKyAgCis8L3NjcmlwdD4gCis8L2JvZHk+IAorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wt
c2FuZGJveGVkLWlmcmFtZS1kZW5pZWQtd2l0aG91dC13aWxkY2FyZC1pZnJhbWUuaHRtbCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250
cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQtaWZyYW1lLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTBmMDdjMAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2Fj
Y2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQtaWZy
YW1lLmh0bWwKQEAgLTAsMCArMSwyNiBAQAorPGh0bWw+Cis8Ym9keT4KKzxwcmUgaWQ9J2NvbnNv
bGUnPjwvcHJlPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCitkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IChmdW5jdGlvbigpIHsKKyAgICB2
YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0OworCisgICAgdHJ5IHsKKyAgICAgICAgeGhyLm9w
ZW4oIkdFVCIsICJodHRwOi8vMTI3LjAuMC4xOjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2Vz
L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQu
Y2dpIiwgZmFsc2UpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICByZXR1cm4gIkZBSUw6IEV4
Y2VwdGlvbiB0aHJvd24uIFNhbmRib3hlZCBpZnJhbWUgWEhSIGFjY2VzcyBpcyBub3QgYWxsb3dl
ZCBpbiAnb3BlbicuIFsiICsgZS5tZXNzYWdlICsgIl0uIjsKKyAgICB9CisKKyAgICB0cnkgewor
ICAgICAgICB4aHIuc2VuZCgpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICByZXR1cm4gIlBB
U1M6IEV4Y2VwdGlvbiB0aHJvd24uIFNhbmRib3hlZCBpZnJhbWUgWEhSIGFjY2VzcyB3YXMgZGVu
aWVkIGluICdzZW5kJy4gWyIgKyBlLm1lc3NhZ2UgKyAiXS4iOworICAgIH0KKworICAgIHJldHVy
biB4aHIucmVzcG9uc2VUZXh0OworfSkoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291
cmNlcy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC13aXRob3V0LXdpbGRj
YXJkLmNnaSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2Vz
L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQu
Y2dpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2ZTYxNjkKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNl
cy9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC13aXRob3V0LXdpbGRjYXJk
LmNnaQpAQCAtMCwwICsxLDggQEAKKyMhL3Vzci9iaW4vcGVybCAtd1QKK3VzZSBzdHJpY3Q7CisK
K3ByaW50ICJDb250ZW50LVR5cGU6IHRleHQvcGxhaW5cbiI7CitwcmludCAiQWNjZXNzLUNvbnRy
b2wtQWxsb3ctQ3JlZGVudGlhbHM6IHRydWVcbiI7CitwcmludCAiQWNjZXNzLUNvbnRyb2wtQWxs
b3ctT3JpZ2luOiBodHRwOi8vMTI3LjAuMC4xOjgwMDBcblxuIjsKKworcHJpbnQgIkZBSUw6IFNh
bmRib3hlZCBpZnJhbWUgWEhSIGFjY2VzcyBhbGxvd2VkLlxuIjsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9s
LXNhbmRib3hlZC1pZnJhbWUtZGVuaWVkLmNnaSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVu
aWVkLmNnaQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTljNDEzCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNv
dXJjZXMvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5pZWQuY2dpCkBAIC0wLDAg
KzEsNiBAQAorIyEvdXNyL2Jpbi9wZXJsIC13VAordXNlIHN0cmljdDsKKworcHJpbnQgIkNvbnRl
bnQtVHlwZTogdGV4dC9wbGFpblxuXG4iOworCitwcmludCAiRkFJTDogU2FuZGJveGVkIGlmcmFt
ZSBYSFIgYWNjZXNzIGFsbG93ZWQuXG4iOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3NjgyMmFjLi5jMDJiNzc5IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBA
CisyMDA5LTEyLTAxICBQYXRyaWsgUGVyc3NvbiAgPHBhdHJpay5qLnBlcnNzb25AZXJpY3Nzb24u
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEltcGxl
bWVudCBIVE1MNSBzYW5kYm94IGF0dHJpYnV0ZSBmb3IgaWZyYW1lcy4KKyAgICAgICAgaHR0cDov
L3d3dy53My5vcmcvVFIvaHRtbDUvdGV4dC1sZXZlbC1zZW1hbnRpY3MuaHRtbCNhdHRyLWlmcmFt
ZS1zYW5kYm94CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTI4OAorCisgICAgICAgIFRlc3RzOiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWF0
dHJpYnV0ZS1wYXJzaW5nLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZnJhbWVzL3NhbmRib3hl
ZC1pZnJhbWUtZm9ybXMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9mcmFtZXMvc2FuZGJveGVk
LWlmcmFtZS1uYXZpZ2F0aW9uLWFsbG93ZWQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9mcmFt
ZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXBhcmVudC5odG1sCisgICAgICAgICAgICAg
ICBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdGFyZ2V0bGluay5odG1s
CisgICAgICAgICAgICAgICBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24t
d2luZG93b3Blbi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZy
YW1lLXBsdWdpbnMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlm
cmFtZS1zY3JpcHRpbmcuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9mcmFtZXMvc2FuZGJveGVk
LWlmcmFtZS1zdG9yYWdlLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkv
c2FuZGJveGVkLWlmcmFtZS1kb2N1bWVudC1jb29raWUuaHRtbAorICAgICAgICAgICAgICAgaHR0
cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLW1vZGlmeS1zZWxmLmh0bWwKKyAgICAg
ICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC1zYW5kYm94ZWQtaWZyYW1l
Lmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNv
bnRyb2wtc2FuZGJveGVkLWlmcmFtZS1hbGxvdy5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtZGVuaWVk
LXdpdGhvdXQtd2lsZGNhcmQuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy94bWxodHRw
cmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC5odG1sCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6IHNhbmRib3hpbmcgbmF2
aWdhdGlvbgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV2luZG93KToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDogc2FuZGJveGluZyBzY3JpcHRzCisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjppc0VuYWJsZWQpOgorICAgICAgICAqIGRvbS9E
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cHJvY2Vzc0h0dHBFcXVp
dik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y29va2llKTogcmFpc2UgZXhjZXB0aW9u
IHdoZW4gYWNjZXNzZWQgZnJvbSBzYW5kYm94CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
c2V0Q29va2llKTogcmFpc2UgZXhjZXB0aW9uIHdoZW4gYWNjZXNzZWQgZnJvbSBzYW5kYm94Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCk6IHVwZGFlIHNh
bmRib3ggc3RhdHVzCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXBkYXRlU2FuZGJveEZs
YWdzKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
aWRsOgorICAgICAgICAqIGh0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwOiBzYW5kYm94aW5nIGFw
cGxldHMKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50OjpjcmVhdGVSZW5kZXJl
cik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudDo6cmVuZGVyV2lkZ2V0Rm9y
SlNCaW5kaW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudDo6Y2FuRW1i
ZWRKYXZhKToKKyAgICAgICAgKiBodG1sL0hUTUxBcHBsZXRFbGVtZW50Lmg6CisgICAgICAgICog
aHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW46CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVPd25l
ckVsZW1lbnQuY3BwOiBtYW5hZ2VtZW50IG9mIHNhbmRib3ggZmxhZ3MgYXMgc3RhdGVkIGluIGF0
dHJpYnV0ZQorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50OjpIVE1MRnJh
bWVPd25lckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50
OjpzZXRTYW5kYm94RmxhZ3MpOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50
Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQ6OnNhbmRib3hGbGFn
cyk6CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHA6IHNhbmRib3ggYXR0cmli
dXRlIHBhcnNpbmcKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlU2FuZGJveEF0dHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUp
OgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnRyb2xsZXI6OmdldENvb2tpZXMpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpbkFj
Y2Vzc0NvbnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFzc2VzQWNjZXNzQ29udHJvbENo
ZWNrKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OkZyYW1lTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzdWJtaXRGb3JtKTog
c2FuZGJveGluZyBmb3JtcworICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnJlcXVlc3RP
YmplY3QpOiBzYW5kYm94aW5nIHBsdWdpbnMKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
OjpzaG91bGRBbGxvd05hdmlnYXRpb24pOiBzYW5kYm94aW5nIG5hdmlnYXRpb24KKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjp1cGRhdGVTYW5kYm94RmxhZ3MpOiBwcm9wYWdhdGlvbiBv
ZiBzYW5kYm94IGZsYWdzCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6b3duZXJFbGVtZW50U2FuZGJveEZsYWdzQ2hhbmdlZCk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6aXNTYW5kYm94ZWQpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OnNhbmRib3hGbGFncyk6CisgICAgICAgICogbG9hZGVyL0Zy
YW1lTG9hZGVyVHlwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgICogcGFnZS9E
T01XaW5kb3cuY3BwOiBkaXNhYmxlIHN0b3JhZ2UgYW5kIGRhdGFiYXNlcyBpbiBzYW5kYm94ZWQg
ZnJhbWVzCisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnNlc3Npb25TdG9yYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6bG9jYWxTdG9yYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVdpbmRvdzo6b3BlbkRhdGFiYXNlKToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3Jp
Z2luLmNwcDogYWRkZWQgc2FuZGJveGluZyBzdGF0dXMKKyAgICAgICAgKFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbjo6Y2FuQWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjYW5S
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjp0b1N0cmluZyk6Cisg
ICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW46OnNldFNhbmRib3hGbGFncyk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbjo6aXNTYW5kYm94ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNh
bkFjY2Vzc0RhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjYW5B
Y2Nlc3NTdG9yYWdlKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2ZURhdGEpOgor
CiAyMDA5LTEyLTAxICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmNwcAppbmRleCA4MDE1YWNhLi44YmE3YjkxIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApAQCAtNzQ0LDYgKzc0NCwxMCBAQCBzdGF0aWMgRnJh
bWUqIGNyZWF0ZVdpbmRvdyhFeGVjU3RhdGUqIGV4ZWMsIEZyYW1lKiBsZXhpY2FsRnJhbWUsIEZy
YW1lKiBkeW5hbWljRgogICAgIEFTU0VSVChsZXhpY2FsRnJhbWUpOwogICAgIEFTU0VSVChkeW5h
bWljRnJhbWUpOwogCisgICAgLy8gU2FuZGJveGVkIGlmcmFtZXMgY2Fubm90IG9wZW4gbmV3IGF1
eGlsaWFyeSBicm93c2luZyBjb250ZXh0cy4KKyAgICBpZiAobGV4aWNhbEZyYW1lICYmIGxleGlj
YWxGcmFtZS0+bG9hZGVyKCktPmlzU2FuZGJveGVkKFNhbmRib3hOYXZpZ2F0aW9uKSkKKyAgICAg
ICAgcmV0dXJuIDA7CisKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdDsKIAogICAgIC8vIEZv
ciB3aGF0ZXZlciByZWFzb24sIEZpcmVmb3ggdXNlcyB0aGUgZHluYW1pY0dsb2JhbE9iamVjdCB0
byBkZXRlcm1pbmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4
IGMwNTMxYzMuLjNjNDQwZGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
LmNwcApAQCAtMjg5LDcgKzI4OSw3IEBAIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6YW55UGFnZUlz
UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkgY29uc3QKIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6aXNF
bmFibGVkKCkKIHsKICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBtX2ZyYW1lLT5zZXR0aW5ncygp
OwotICAgIHJldHVybiBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmFsbG93SmF2YVNjcmlw
dChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+aXNKYXZhU2NyaXB0RW5hYmxlZCgpKTsKKyAgICByZXR1
cm4gbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5hbGxvd0phdmFTY3JpcHQoc2V0dGluZ3Mg
JiYgc2V0dGluZ3MtPmlzSmF2YVNjcmlwdEVuYWJsZWQoKSAmJiAhbV9mcmFtZS0+bG9hZGVyKCkt
PmlzU2FuZGJveGVkKFNhbmRib3hTY3JpcHRzKSk7CiB9CiAKIHZvaWQgU2NyaXB0Q29udHJvbGxl
cjo6YXR0YWNoRGVidWdnZXIoSlNDOjpEZWJ1Z2dlciogZGVidWdnZXIpCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXgg
ZWRmNTBjMS4uNDg2ODNmYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisr
KyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMjE4MSw4ICsyMTgxLDEwIEBAIHZvaWQg
RG9jdW1lbnQ6OnByb2Nlc3NIdHRwRXF1aXYoY29uc3QgU3RyaW5nJiBlcXVpdiwgY29uc3QgU3Ry
aW5nJiBjb250ZW50KQogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2Fz
ZShlcXVpdiwgInNldC1jb29raWUiKSkgewogICAgICAgICAvLyBGSVhNRTogbWFrZSBzZXRDb29r
aWUgd29yayBvbiBYTUwgZG9jdW1lbnRzIHRvbzsgZS5nLiBpbiBjYXNlIG9mIDxodG1sOm1ldGEg
Li4uLi4+Ci0gICAgICAgIGlmIChpc0hUTUxEb2N1bWVudCgpKQotICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8SFRNTERvY3VtZW50Kj4odGhpcyktPnNldENvb2tpZShjb250ZW50KTsKKyAgICAgICAg
aWYgKGlzSFRNTERvY3VtZW50KCkpIHsKKyAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7IC8v
IEV4Y2VwdGlvbiAoZm9yIHNhbmRib3hlZCBkb2N1bWVudHMpIGlnbm9yZWQuCisgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPih0aGlzKS0+c2V0Q29va2llKGNvbnRlbnQsIGVj
KTsKKyAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZXF1aXYsICJj
b250ZW50LWxhbmd1YWdlIikpCiAgICAgICAgIHNldENvbnRlbnRMYW5ndWFnZShjb250ZW50KTsK
ICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShlcXVpdiwgIngtZG5zLXByZWZldGNoLWNv
bnRyb2wiKSkKQEAgLTMwMDAsMTEgKzMwMDIsMjAgQEAgRWxlbWVudCogRG9jdW1lbnQ6Om93bmVy
RWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGZyYW1lKCktPm93bmVyRWxlbWVudCgpOwogfQog
Ci1TdHJpbmcgRG9jdW1lbnQ6OmNvb2tpZSgpIGNvbnN0CitTdHJpbmcgRG9jdW1lbnQ6OmNvb2tp
ZShFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsKICAgICBpZiAocGFnZSgpICYmICFwYWdlKCkt
PmNvb2tpZUVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCisgICAgLy8gRklY
TUU6IFRoZSBIVE1MNSBET00gc3BlYyBzdGF0ZXMgdGhhdCB0aGlzIGF0dHJpYnV0ZSBjYW4gcmFp
c2UgYW4KKyAgICAvLyBJTlZBTElEX1NUQVRFX0VSUiBleGNlcHRpb24gb24gZ2V0dGluZyBpZiB0
aGUgRG9jdW1lbnQgaGFzIG5vCisgICAgLy8gYnJvd3NpbmcgY29udGV4dC4KKworICAgIGlmIChz
ZWN1cml0eU9yaWdpbigpLT5pc1NhbmRib3hlZChTYW5kYm94T3JpZ2luKSkgeworICAgICAgICBl
YyA9IFNFQ1VSSVRZX0VSUjsKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIH0KKwogICAg
IEtVUkwgY29va2llVVJMID0gdGhpcy0+Y29va2llVVJMKCk7CiAgICAgaWYgKGNvb2tpZVVSTC5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTMwMTIsMTEgKzMwMjMsMjAg
QEAgU3RyaW5nIERvY3VtZW50Ojpjb29raWUoKSBjb25zdAogICAgIHJldHVybiBjb29raWVzKHRo
aXMsIGNvb2tpZVVSTCk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnNldENvb2tpZShjb25zdCBTdHJp
bmcmIHZhbHVlKQordm9pZCBEb2N1bWVudDo6c2V0Q29va2llKGNvbnN0IFN0cmluZyYgdmFsdWUs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmIChwYWdlKCkgJiYgIXBhZ2UoKS0+Y29va2ll
RW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICAvLyBGSVhNRTogVGhlIEhUTUw1IERP
TSBzcGVjIHN0YXRlcyB0aGF0IHRoaXMgYXR0cmlidXRlIGNhbiByYWlzZSBhbgorICAgIC8vIElO
VkFMSURfU1RBVEVfRVJSIGV4Y2VwdGlvbiBvbiBzZXR0aW5nIGlmIHRoZSBEb2N1bWVudCBoYXMg
bm8KKyAgICAvLyBicm93c2luZyBjb250ZXh0LgorCisgICAgaWYgKHNlY3VyaXR5T3JpZ2luKCkt
PmlzU2FuZGJveGVkKFNhbmRib3hPcmlnaW4pKSB7CisgICAgICAgIGVjID0gU0VDVVJJVFlfRVJS
OworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgS1VSTCBjb29raWVVUkwgPSB0aGlzLT5j
b29raWVVUkwoKTsKICAgICBpZiAoY29va2llVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtNDI2NSw2ICs0Mjg1LDggQEAgdm9pZCBEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4
dCgpCiAgICAgbV9jb29raWVVUkwgPSB1cmw7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
c2V0U2VjdXJpdHlPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpKTsKIAorICAgIHVw
ZGF0ZVNhbmRib3hGbGFncygpOworIAogICAgIGlmIChTZWN1cml0eU9yaWdpbjo6YWxsb3dTdWJz
dGl0dXRlRGF0YUFjY2Vzc1RvTG9jYWwoKSkgewogICAgICAgICAvLyBJZiB0aGlzIGRvY3VtZW50
IHdhcyBsb2FkZWQgd2l0aCBzdWJzdGl0dXRlRGF0YSwgdGhlbiB0aGUgZG9jdW1lbnQgY2FuCiAg
ICAgICAgIC8vIGxvYWQgbG9jYWwgcmVzb3VyY2VzLiAgU2VlIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjc1NgpAQCAtNDMxNSw2ICs0MzM3LDEyIEBAIHZvaWQgRG9j
dW1lbnQ6OnNldFNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbikK
ICAgICBpbml0RE5TUHJlZmV0Y2goKTsKIH0KIAordm9pZCBEb2N1bWVudDo6dXBkYXRlU2FuZGJv
eEZsYWdzKCkKK3sKKyAgICBpZiAobV9mcmFtZSAmJiBzZWN1cml0eU9yaWdpbigpKQorICAgICAg
ICBzZWN1cml0eU9yaWdpbigpLT5zZXRTYW5kYm94RmxhZ3MobV9mcmFtZS0+bG9hZGVyKCktPnNh
bmRib3hGbGFncygpKTsKK30KKwogdm9pZCBEb2N1bWVudDo6dXBkYXRlRm9jdXNBcHBlYXJhbmNl
U29vbigpCiB7CiAgICAgaWYgKCFtX3VwZGF0ZUZvY3VzQXBwZWFyYW5jZVRpbWVyLmlzQWN0aXZl
KCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaAppbmRleCBlNWI5ODRjLi4zYWVlMmQ2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCisrKyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTY3NSw4ICs2NzUsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmcmLCBFbGVtZW50KiB0aXRs
ZUVsZW1lbnQgPSAwKTsKICAgICB2b2lkIHJlbW92ZVRpdGxlKEVsZW1lbnQqIHRpdGxlRWxlbWVu
dCk7CiAKLSAgICBTdHJpbmcgY29va2llKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRDb29raWUoY29u
c3QgU3RyaW5nJik7CisgICAgU3RyaW5nIGNvb2tpZShFeGNlcHRpb25Db2RlJikgY29uc3Q7Cisg
ICAgdm9pZCBzZXRDb29raWUoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAg
U3RyaW5nIHJlZmVycmVyKCkgY29uc3Q7CiAKQEAgLTg4Nyw2ICs4ODcsOCBAQCBwdWJsaWM6CiAg
ICAgLy8gICAgICAgdGhhdCBhbHJlYWR5IGNvbnRhaW5zIGNvbnRlbnQuCiAgICAgdm9pZCBzZXRT
ZWN1cml0eU9yaWdpbihTZWN1cml0eU9yaWdpbiopOwogCisgICAgdm9pZCB1cGRhdGVTYW5kYm94
RmxhZ3MoKTsgLy8gU2V0IHNhbmRib3ggZmxhZ3MgYXMgZGV0ZXJtaW5lZCBieSB0aGUgZnJhbWUu
CisKICAgICBib29sIHByb2Nlc3NpbmdMb2FkRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nl
c3NpbmdMb2FkRXZlbnQ7IH0KIAogI2lmIEVOQUJMRShEQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmlkbCBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAppbmRleCA3
NmE0ZWRiLi4yMTBmNWZmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKKysr
IGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCkBAIC0xNjIsMTAgKzE2Miw5IEBAIG1vZHVsZSBj
b3JlIHsKICNlbmRpZgogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIFVSTDsK
IAotICAgICAgICAvLyBGSVhNRTogdGhlIERPTSBzcGVjIHN0YXRlcyB0aGF0IHRoaXMgYXR0cmli
dXRlIGNhbiAKLSAgICAgICAgLy8gcmFpc2UgYW4gZXhjZXB0aW9uIG9uIHNldHRpbmcuCiAgICAg
ICAgICAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmlu
ZyBjb29raWUKLSAgICAgICAgICAgICAgICAgICAgIC8qc2V0dGVyIHJhaXNlcyAoRE9NRXhjZXB0
aW9uKSovOworICAgICAgICAgICAgICAgICAgICAgc2V0dGVyIHJhaXNlcyAoRE9NRXhjZXB0aW9u
KSwKKyAgICAgICAgICAgICAgICAgICAgIGdldHRlciByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAK
ICAgICAgICAgLy8gRklYTUU6IHRoZSBET00gc3BlYyBkb2VzIE5PVCBoYXZlIHRoaXMgYXR0cmli
dXRlCiAgICAgICAgIC8vIHJhaXNpbmcgYW4gZXhjZXB0aW9uLgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxl
bWVudC5jcHAKaW5kZXggNDYwNDVkNi4uZjY3ZTlkYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1s
L0hUTUxBcHBsZXRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1l
bnQuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVk
ZSAiTWFwcGVkQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiUmVuZGVyQXBwbGV0LmgiCisjaW5jbHVk
ZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC0xMDgsOSArMTA5LDcgQEAgYm9vbCBIVE1MQXBwbGV0RWxlbWVudDo6cmVu
ZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCiAKIFJlbmRlck9iamVjdCogSFRNTEFw
cGxldEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqIHN0
eWxlKQogewotICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50KCktPnNldHRpbmdzKCk7
Ci0KLSAgICBpZiAoc2V0dGluZ3MgJiYgc2V0dGluZ3MtPmlzSmF2YUVuYWJsZWQoKSkgeworICAg
IGlmIChjYW5FbWJlZEphdmEoKSkgewogICAgICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBh
cmdzOwogCiAgICAgICAgIGFyZ3Muc2V0KCJjb2RlIiwgZ2V0QXR0cmlidXRlKGNvZGVBdHRyKSk7
CkBAIC0xNDIsOCArMTQxLDcgQEAgUmVuZGVyT2JqZWN0KiBIVE1MQXBwbGV0RWxlbWVudDo6Y3Jl
YXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSogc3R5bGUKIAogUmVuZGVyV2lk
Z2V0KiBIVE1MQXBwbGV0RWxlbWVudDo6cmVuZGVyV2lkZ2V0Rm9ySlNCaW5kaW5ncygpIGNvbnN0
CiB7Ci0gICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZG9jdW1lbnQoKS0+c2V0dGluZ3MoKTsKLSAg
ICBpZiAoIXNldHRpbmdzIHx8ICFzZXR0aW5ncy0+aXNKYXZhRW5hYmxlZCgpKQorICAgIGlmICgh
Y2FuRW1iZWRKYXZhKCkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgUmVuZGVyQXBwbGV0KiBh
cHBsZXQgPSB0b1JlbmRlckFwcGxldChyZW5kZXJlcigpKTsKQEAgLTE1Myw2ICsxNTEsMTUgQEAg
UmVuZGVyV2lkZ2V0KiBIVE1MQXBwbGV0RWxlbWVudDo6cmVuZGVyV2lkZ2V0Rm9ySlNCaW5kaW5n
cygpIGNvbnN0CiAgICAgcmV0dXJuIGFwcGxldDsKIH0KIAorYm9vbCBIVE1MQXBwbGV0RWxlbWVu
dDo6Y2FuRW1iZWRKYXZhKCkgY29uc3QKK3sKKyAgICBpZiAoZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKS0+aXNTYW5kYm94ZWQoU2FuZGJveFBsdWdpbnMpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudCgpLT5zZXR0aW5ncygpOwor
ICAgIHJldHVybiBzZXR0aW5ncyAmJiBzZXR0aW5ncy0+aXNKYXZhRW5hYmxlZCgpOworfQorCiB2
b2lkIEhUTUxBcHBsZXRFbGVtZW50OjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKQogewogICAgIC8v
IFRoZSBwYXJzZXIganVzdCByZWFjaGVkIDwvYXBwbGV0Piwgc28gYWxsIHRoZSBwYXJhbXMgYXJl
IGF2YWlsYWJsZSBub3cuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1l
bnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5oCmluZGV4IGJhYWFiMzguLmE1
M2JkNWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5oCisrKyBi
L1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5oCkBAIC01MSw2ICs1MSw3IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCBSZW5kZXJXaWRnZXQqIHJlbmRlcldpZGdldEZvckpTQmluZGluZ3Mo
KSBjb25zdDsKIAogICAgIHZvaWQgc2V0dXBBcHBsZXQoKSBjb25zdDsKKyAgICBib29sIGNhbkVt
YmVkSmF2YSgpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50
KCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4gYi9XZWJDb3JlL2h0bWwvSFRNTEF0
dHJpYnV0ZU5hbWVzLmluCmluZGV4IDc3MTY0YTUuLjY5NmY0ZTAgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KKysrIGIvV2ViQ29yZS9odG1sL0hUTUxBdHRy
aWJ1dGVOYW1lcy5pbgpAQCAtMjIyLDYgKzIyMiw3IEBAIHJvbGUKIHJvd3MKIHJvd3NwYW4KIHJ1
bGVzCitzYW5kYm94CiBzY2hlbWUKIHNjb3BlCiBzY3JvbGxhbW91bnQKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZU93bmVyRWxlbWVudC5jcHAKaW5kZXggODQ5NThjMi4uNzU5OGRhMiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1s
L0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogSFRNTEZyYW1lT3duZXJFbGVtZW50OjpIVE1MRnJhbWVPd25lckVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogSFRN
TEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIENyZWF0ZUVsZW1lbnQpCiAgICAgLCBtX2NvbnRl
bnRGcmFtZSgwKQorICAgICwgbV9zYW5kYm94RmxhZ3MoU2FuZGJveE5vbmUpCiB7CiB9CiAKQEAg
LTY0LDYgKzY1LDE3IEBAIERPTVdpbmRvdyogSFRNTEZyYW1lT3duZXJFbGVtZW50Ojpjb250ZW50
V2luZG93KCkgY29uc3QKICAgICByZXR1cm4gbV9jb250ZW50RnJhbWUgPyBtX2NvbnRlbnRGcmFt
ZS0+ZG9tV2luZG93KCkgOiAwOwogfQogCit2b2lkIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6c2V0
U2FuZGJveEZsYWdzKFNhbmRib3hGbGFncyBmbGFncykKK3sKKyAgICBpZiAobV9zYW5kYm94Rmxh
Z3MgPT0gZmxhZ3MpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc2FuZGJveEZsYWdzID0gZmxh
Z3M7CisgICAgCisgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGNvbnRlbnRGcmFtZSgpKQorICAgICAg
ICBmcmFtZS0+bG9hZGVyKCktPm93bmVyRWxlbWVudFNhbmRib3hGbGFnc0NoYW5nZWQoKTsKK30K
KwogI2lmIEVOQUJMRShTVkcpCiBTVkdEb2N1bWVudCogSFRNTEZyYW1lT3duZXJFbGVtZW50Ojpn
ZXRTVkdEb2N1bWVudChFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MRnJh
bWVPd25lckVsZW1lbnQuaAppbmRleCAxNDM3ZTJjLi4zMDhhMTAwIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZU93bmVyRWxlbWVudC5oCkBAIC0yMSw2ICsyMSw3IEBACiAjaWZuZGVmIEhUTUxGcmFtZU93
bmVyRWxlbWVudF9oCiAjZGVmaW5lIEhUTUxGcmFtZU93bmVyRWxlbWVudF9oCiAKKyNpbmNsdWRl
ICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNDYsOSArNDcsMTMgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBT
Y3JvbGxiYXJNb2RlIHNjcm9sbGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBTY3JvbGxiYXJBdXRv
OyB9CiAKKyAgICBTYW5kYm94RmxhZ3Mgc2FuZGJveEZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9z
YW5kYm94RmxhZ3M7IH0KKyAgICAKIHByb3RlY3RlZDoKICAgICBIVE1MRnJhbWVPd25lckVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqKTsKIAorICAgIHZvaWQg
c2V0U2FuZGJveEZsYWdzKFNhbmRib3hGbGFncyk7CisgICAgCiBwcml2YXRlOgogICAgIGZyaWVu
ZCBjbGFzcyBGcmFtZTsKIApAQCAtNTgsNiArNjMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCB3aWxsUmVtb3ZlKCk7CiAKICAgICBGcmFtZSogbV9jb250ZW50RnJhbWU7CisgICAgU2Fu
ZGJveEZsYWdzIG1fc2FuZGJveEZsYWdzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcCBiL1dlYkNvcmUv
aHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKaW5kZXggY2FlOWI4ZC4uYTJmMjg3ZSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0
bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCkBAIC00LDYgKzQsNyBAQAogICogICAgICAgICAgIChD
KSAyMDAwIFNpbW9uIEhhdXNtYW5uIChoYXVzbWFubkBrZGUub3JnKQogICogICAgICAgICAgIChD
KSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQogICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA2LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwOSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwpAQCAtNjYsNiArNjcsNDAgQEAgYm9vbCBIVE1MSUZyYW1lRWxlbWVu
dDo6bWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgTWFwcGVkQXR0cmli
dXQKICAgICByZXR1cm4gSFRNTEZyYW1lRWxlbWVudEJhc2U6Om1hcFRvRW50cnkoYXR0ck5hbWUs
IHJlc3VsdCk7CiB9CiAKK3N0YXRpYyBTYW5kYm94RmxhZ3MgcGFyc2VTYW5kYm94QXR0cmlidXRl
KE1hcHBlZEF0dHJpYnV0ZSogYXR0cmlidXRlKQoreworICAgIGlmIChhdHRyaWJ1dGUtPmlzTnVs
bCgpKQorICAgICAgICByZXR1cm4gU2FuZGJveE5vbmU7CisKKyAgICAvLyBQYXJzZSB0aGUgdW5v
cmRlcmVkIHNldCBvZiB1bmlxdWUgc3BhY2Utc2VwYXJhdGVkIHRva2Vucy4KKyAgICBTYW5kYm94
RmxhZ3MgZmxhZ3MgPSBTYW5kYm94QWxsOworICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0g
YXR0cmlidXRlLT52YWx1ZSgpLmNoYXJhY3RlcnMoKTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBh
dHRyaWJ1dGUtPnZhbHVlKCkubGVuZ3RoKCk7CisgICAgdW5zaWduZWQgc3RhcnQgPSAwOworICAg
IHdoaWxlICh0cnVlKSB7CisgICAgICAgIHdoaWxlIChzdGFydCA8IGxlbmd0aCAmJiBpc0FTQ0lJ
U3BhY2UoY2hhcmFjdGVyc1tzdGFydF0pKQorICAgICAgICAgICAgKytzdGFydDsKKyAgICAgICAg
aWYgKHN0YXJ0ID49IGxlbmd0aCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB1bnNpZ25l
ZCBlbmQgPSBzdGFydCArIDE7CisgICAgICAgIHdoaWxlIChlbmQgPCBsZW5ndGggJiYgIWlzQVND
SUlTcGFjZShjaGFyYWN0ZXJzW2VuZF0pKQorICAgICAgICAgICAgKytlbmQ7CisKKyAgICAgICAg
Ly8gVHVybiBvZmYgdGhlIGNvcnJlc3BvbmRpbmcgc2FuZGJveCBmbGFnIGlmIGl0J3Mgc2V0IGFz
ICJhbGxvd2VkIi4KKyAgICAgICAgU3RyaW5nIHNhbmRib3hUb2tlbiA9IFN0cmluZyhjaGFyYWN0
ZXJzICsgc3RhcnQsIGVuZCAtIHN0YXJ0KTsKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KHNhbmRib3hUb2tlbiwgImFsbG93LXNhbWUtb3JpZ2luIikpCisgICAgICAgICAgICBmbGFncyAm
PSB+U2FuZGJveE9yaWdpbjsKKyAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uoc2Fu
ZGJveFRva2VuLCAiYWxsb3ctZm9ybXMiKSkKKyAgICAgICAgICAgIGZsYWdzICY9IH5TYW5kYm94
Rm9ybXM7CisgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHNhbmRib3hUb2tlbiwg
ImFsbG93LXNjcmlwdHMiKSkKKyAgICAgICAgICAgIGZsYWdzICY9IH5TYW5kYm94U2NyaXB0czsK
KworICAgICAgICBzdGFydCA9IGVuZCArIDE7CisgICAgfQorICAgIAorICAgIHJldHVybiBmbGFn
czsKK30KKwogdm9pZCBIVE1MSUZyYW1lRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFw
cGVkQXR0cmlidXRlKiBhdHRyKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gd2lkdGhBdHRy
KQpAQCAtODgsNyArMTIzLDkgQEAgdm9pZCBIVE1MSUZyYW1lRWxlbWVudDo6cGFyc2VNYXBwZWRB
dHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogICAgICAgICBpZiAoIWF0dHItPmlzTnVs
bCgpICYmICFhdHRyLT52YWx1ZSgpLnRvSW50KCkpCiAgICAgICAgICAgICAvLyBBZGQgYSBydWxl
IHRoYXQgbnVsbHMgb3V0IG91ciBib3JkZXIgd2lkdGguCiAgICAgICAgICAgICBhZGRDU1NMZW5n
dGgoYXR0ciwgQ1NTUHJvcGVydHlCb3JkZXJXaWR0aCwgIjAiKTsKLSAgICB9IGVsc2UKKyAgICB9
IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBzYW5kYm94QXR0cikKKyAgICAgICAgc2V0U2FuZGJv
eEZsYWdzKHBhcnNlU2FuZGJveEF0dHJpYnV0ZShhdHRyKSk7CisgICAgZWxzZQogICAgICAgICBI
VE1MRnJhbWVFbGVtZW50QmFzZTo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGwgYi9XZWJDb3JlL2h0
bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCmluZGV4IGUyODhiNTQuLmRhZDg0MTYgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGwKKysrIGIvV2ViQ29yZS9odG1s
L0hUTUxJRnJhbWVFbGVtZW50LmlkbApAQCAtMzMsNiArMzMsNyBAQCBtb2R1bGUgaHRtbCB7CiAg
ICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmcsIFJlZmxl
Y3Q9bWFyZ2luaGVpZ2h0XSBET01TdHJpbmcgICAgICAgbWFyZ2luSGVpZ2h0OwogICAgICAgICAg
ICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nLCBSZWZsZWN0PW1hcmdp
bndpZHRoXSBET01TdHJpbmcgICAgICAgbWFyZ2luV2lkdGg7CiAgICAgICAgICAgICAgICAgIGF0
dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmcsIFJlZmxlY3RdIERPTVN0cmluZyAgICAg
ICBuYW1lOworICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3Ry
aW5nLCBSZWZsZWN0XSBET01TdHJpbmcgICAgICAgc2FuZGJveDsKICAgICAgICAgICAgICAgICAg
YXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZywgUmVmbGVjdF0gRE9NU3RyaW5nICAg
ICAgIHNjcm9sbGluZzsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRv
TnVsbFN0cmluZywgQ3VzdG9tU2V0dGVyLCBSZWZsZWN0XSBET01TdHJpbmcgICAgICAgc3JjOwog
ICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nLCBSZWZs
ZWN0XSBET01TdHJpbmcgICAgICAgd2lkdGg7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuY3BwCmluZGV4IGE4OGEyOTkuLjNiMjExODEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC0xMjAzLDEwICsxMjAzLDE1IEBAIHZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6Z2V0Q29va2llcyhsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBo
b3N0KQogICAgICAgICAgICAgVmVjdG9yPENvb2tpZT4gZG9jQ29va2llc0xpc3Q7CiAgICAgICAg
ICAgICByYXdDb29raWVzSW1wbGVtZW50ZWQgPSBnZXRSYXdDb29raWVzKGRvY3VtZW50LCBkb2N1
bWVudC0+Y29va2llVVJMKCksIGRvY0Nvb2tpZXNMaXN0KTsKICAgICAgICAgICAgIAotICAgICAg
ICAgICAgaWYgKCFyYXdDb29raWVzSW1wbGVtZW50ZWQpCi0gICAgICAgICAgICAgICAgLy8gRklY
TUU6V2UgbmVlZCBkdXBsaWNhdGlvbiBjaGVja2luZyBmb3IgdGhlIFN0cmluZyByZXByZXNlbnRh
dGlvbiBvZiBjb29raWVzLgorICAgICAgICAgICAgaWYgKCFyYXdDb29raWVzSW1wbGVtZW50ZWQp
IHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2UgbmVlZCBkdXBsaWNhdGlvbiBjaGVja2lu
ZyBmb3IgdGhlIFN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBjb29raWVzLgogICAgICAgICAgICAg
ICAgIHN0cmluZ0Nvb2tpZXNMaXN0ICs9IGRvY3VtZW50LT5jb29raWUoKTsKLSAgICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgICAgICAg
ICAgICAgIHN0cmluZ0Nvb2tpZXNMaXN0ICs9IGRvY3VtZW50LT5jb29raWUoZWMpOworICAgICAg
ICAgICAgICAgIC8vIEV4Y2VwdGlvbnMgYXJlIHRocm93biBieSBjb29raWUoKSBpbiBzYW5kYm94
ZWQgZnJhbWVzLiBUaGF0IHdvbid0IGhhcHBlbiBoZXJlCisgICAgICAgICAgICAgICAgLy8gYmVj
YXVzZSAiZG9jdW1lbnQiIGlzIHRoZSBkb2N1bWVudCBvZiB0aGUgbWFpbiBmcmFtZSBvZiB0aGUg
cGFnZS4KKyAgICAgICAgICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgaW50IGNvb2tpZXNTaXplID0gZG9jQ29va2llc0xpc3Quc2l6ZSgp
OwogICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY29va2llc1NpemU7IGkrKykg
ewogICAgICAgICAgICAgICAgICAgICBpZiAoIXJhd0Nvb2tpZXNMaXN0LmNvbnRhaW5zKGRvY0Nv
b2tpZXNMaXN0W2ldKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNj
ZXNzQ29udHJvbC5jcHAgYi9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wu
Y3BwCmluZGV4IGYwZjhiNmEuLjdhMjEyODAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0Ny
b3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmln
aW5BY2Nlc3NDb250cm9sLmNwcApAQCAtMTAwLDYgKzEwMCwxMCBAQCBib29sIHBhc3Nlc0FjY2Vz
c0NvbnRyb2xDaGVjayhjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vbCBpbmNs
dWRlQ3JlZAogICAgIGlmIChhY2Nlc3NDb250cm9sT3JpZ2luU3RyaW5nID09ICIqIiAmJiAhaW5j
bHVkZUNyZWRlbnRpYWxzKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAorICAgIC8vIEEgc2FuZGJv
eGVkIGZyYW1lIGhhcyBhIHVuaXF1ZSBvcmlnaW4gKGZvciBzYW1lLW9yaWdpbiBwdXJwb3Nlcyku
CisgICAgaWYgKHNlY3VyaXR5T3JpZ2luLT5pc1NhbmRib3hlZChTYW5kYm94T3JpZ2luKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBhY2Nlc3ND
b250cm9sT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoYWNjZXNzQ29u
dHJvbE9yaWdpblN0cmluZyk7CiAgICAgaWYgKCFhY2Nlc3NDb250cm9sT3JpZ2luLT5pc1NhbWVT
Y2hlbWVIb3N0UG9ydChzZWN1cml0eU9yaWdpbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcAppbmRleCAzNzQ1Y2QxLi41MjQ1M2M2IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCkBAIC0xOTYsNiArMTk2LDcgQEAgRnJhbWVMb2FkZXI6OkZyYW1lTG9hZGVyKEZyYW1l
KiBmcmFtZSwgRnJhbWVMb2FkZXJDbGllbnQqIGNsaWVudCkKICAgICAsIG1fZGlkUGVyZm9ybUZp
cnN0TmF2aWdhdGlvbihmYWxzZSkKICAgICAsIG1fbG9hZGluZ0Zyb21DYWNoZWRQYWdlKGZhbHNl
KQogICAgICwgbV9zdXBwcmVzc09wZW5lckluTmV3RnJhbWUoZmFsc2UpCisgICAgLCBtX3NhbmRi
b3hGbGFncyhTYW5kYm94QWxsKQogI2lmbmRlZiBOREVCVUcKICAgICAsIG1fZGlkRGlzcGF0Y2hE
aWRDb21taXRMb2FkKGZhbHNlKQogI2VuZGlmCkBAIC0yMjgsNiArMjI5LDkgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6aW5pdCgpCiAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y2FuY2VsUGFyc2luZygp
OwogICAgIG1fY3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVudCA9IGZhbHNlOwogICAgIG1fZGlk
Q2FsbEltcGxpY2l0Q2xvc2UgPSB0cnVlOworCisgICAgLy8gUHJvcGFnYXRlIHNhbmRib3ggYXR0
cmlidXRlcyB0byB0aGlzIEZyYW1lbG9hZGVyIGFuZCBpdHMgZGVzY2VuZGFudHMuCisgICAgdXBk
YXRlU2FuZGJveEZsYWdzKCk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OnNldERlZmVyc0xvYWRp
bmcoYm9vbCBkZWZlcnMpCkBAIC00MzgsNiArNDQyLDkgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c3Vi
bWl0Rm9ybShjb25zdCBjaGFyKiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdXJsLCBQYXNzUmVmUHRy
PEYKICAgICBpZiAodS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChpc1Nh
bmRib3hlZChTYW5kYm94Rm9ybXMpKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAocHJvdG9j
b2xJc0phdmFTY3JpcHQodSkpIHsKICAgICAgICAgbV9pc0V4ZWN1dGluZ0phdmFTY3JpcHRGb3Jt
QWN0aW9uID0gdHJ1ZTsKICAgICAgICAgbV9mcmFtZS0+c2NyaXB0KCktPmV4ZWN1dGVJZkphdmFT
Y3JpcHRVUkwodSwgZmFsc2UsIGZhbHNlKTsKQEAgLTEyNTUsNiArMTI2Miw4IEBAIGJvb2wgRnJh
bWVMb2FkZXI6OnJlcXVlc3RPYmplY3QoUmVuZGVyUGFydCogcmVuZGVyZXIsIGNvbnN0IFN0cmlu
ZyYgdXJsLCBjb25zdCBBCiAgICAgICAgIGlmICghc2V0dGluZ3MgfHwgIXNldHRpbmdzLT5hcmVQ
bHVnaW5zRW5hYmxlZCgpIHx8IAogICAgICAgICAgICAgKCFzZXR0aW5ncy0+aXNKYXZhRW5hYmxl
ZCgpICYmIE1JTUVUeXBlUmVnaXN0cnk6OmlzSmF2YUFwcGxldE1JTUVUeXBlKG1pbWVUeXBlKSkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChpc1NhbmRib3hlZChTYW5k
Ym94UGx1Z2lucykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiBs
b2FkUGx1Z2luKHJlbmRlcmVyLCBjb21wbGV0ZWRVUkwsIG1pbWVUeXBlLCBwYXJhbU5hbWVzLCBw
YXJhbVZhbHVlcywgdXNlRmFsbGJhY2spOwogICAgIH0KIApAQCAtMjE5Nyw2ICsyMjA2LDEwIEBA
IGJvb2wgRnJhbWVMb2FkZXI6OnNob3VsZEFsbG93TmF2aWdhdGlvbihGcmFtZSogdGFyZ2V0RnJh
bWUpIGNvbnN0CiAgICAgaWYgKG1fZnJhbWUgPT0gdGFyZ2V0RnJhbWUpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCisgICAgLy8gQSBzYW5kYm94ZWQgZnJhbWUgY2FuIG9ubHkgbmF2aWdhdGUgaXRz
ZWxmIGFuZCBpdHMgZGVzY2VuZGFudHMuCisgICAgaWYgKGlzU2FuZGJveGVkKFNhbmRib3hOYXZp
Z2F0aW9uKSAmJiAhdGFyZ2V0RnJhbWUtPnRyZWUoKS0+aXNEZXNjZW5kYW50T2YobV9mcmFtZSkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIC8vIExldCBhIGZyYW1lIG5hdmlnYXRlIHRo
ZSB0b3AtbGV2ZWwgd2luZG93IHRoYXQgY29udGFpbnMgaXQuICBUaGlzIGlzCiAgICAgLy8gaW1w
b3J0YW50IHRvIGFsbG93IGJlY2F1c2UgaXQgbGV0cyBhIHNpdGUgImZyYW1lLWJ1c3QiIChlc2Nh
cGUgZnJvbSBhCiAgICAgLy8gZnJhbWUgY3JlYXRlZCBieSBhbm90aGVyIHdlYiBzaXRlKS4KQEAg
LTM5MDUsNiArMzkxOCwyNSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENsZWFyV2lu
ZG93T2JqZWN0SW5Xb3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxkKQogI2VuZGlmCiB9CiAKK3Zv
aWQgRnJhbWVMb2FkZXI6OnVwZGF0ZVNhbmRib3hGbGFncygpCit7CisgICAgU2FuZGJveEZsYWdz
IGZsYWdzID0gU2FuZGJveE5vbmU7CisgICAgaWYgKEZyYW1lKiBwYXJlbnRGcmFtZSA9IG1fZnJh
bWUtPnRyZWUoKS0+cGFyZW50KCkpCisgICAgICAgIGZsYWdzIHw9IHBhcmVudEZyYW1lLT5sb2Fk
ZXIoKS0+c2FuZGJveEZsYWdzKCk7CisgICAgaWYgKEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3du
ZXJFbGVtZW50ID0gbV9mcmFtZS0+b3duZXJFbGVtZW50KCkpCisgICAgICAgIGZsYWdzIHw9IG93
bmVyRWxlbWVudC0+c2FuZGJveEZsYWdzKCk7CisKKyAgICBpZiAobV9zYW5kYm94RmxhZ3MgPT0g
ZmxhZ3MpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgbV9zYW5kYm94RmxhZ3MgPSBm
bGFnczsKKworICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZVNhbmRib3hGbGFncygpOwor
CisgICAgZm9yIChGcmFtZSogY2hpbGQgPSBtX2ZyYW1lLT50cmVlKCktPmZpcnN0Q2hpbGQoKTsg
Y2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgY2hp
bGQtPmxvYWRlcigpLT51cGRhdGVTYW5kYm94RmxhZ3MoKTsKKyB9CisKIFBhc3NSZWZQdHI8V2lk
Z2V0PiBGcmFtZUxvYWRlcjo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiBz
aXplLCBIVE1MQXBwbGV0RWxlbWVudCogZWxlbWVudCwgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0
cmluZz4mIGFyZ3MpCiB7CiAgICAgU3RyaW5nIGJhc2VVUkxTdHJpbmc7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
aAppbmRleCAyMTZiYzUzLi42YzY3NmI5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5oCisrKyBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTI1MSw2ICsy
NTEsMTEgQEAgcHVibGljOgogICAgIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdHNJ
bkFsbFdvcmxkcygpOwogICAgIHZvaWQgZGlzcGF0Y2hEb2N1bWVudEVsZW1lbnRBdmFpbGFibGUo
KTsKIAorICAgIHZvaWQgb3duZXJFbGVtZW50U2FuZGJveEZsYWdzQ2hhbmdlZCgpIHsgdXBkYXRl
U2FuZGJveEZsYWdzKCk7IH0KKyAgICAKKyAgICBib29sIGlzU2FuZGJveGVkKFNhbmRib3hGbGFn
cyBtYXNrKSBjb25zdCB7IHJldHVybiBtX3NhbmRib3hGbGFncyAmIG1hc2s7IH0KKyAgICBTYW5k
Ym94RmxhZ3Mgc2FuZGJveEZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9zYW5kYm94RmxhZ3M7IH0K
KwogICAgIC8vIE1peGVkIGNvbnRlbnQgcmVsYXRlZCBmdW5jdGlvbnMuCiAgICAgc3RhdGljIGJv
b2wgaXNNaXhlZENvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIGNvbnRleHQsIGNvbnN0IEtVUkwmKTsK
ICAgICB2b2lkIGNoZWNrSWZEaXNwbGF5SW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiBj
b250ZXh0LCBjb25zdCBLVVJMJik7CkBAIC00MzUsNiArNDQwLDggQEAgcHJpdmF0ZToKIAogICAg
IGJvb2wgc2hvdWxkVHJlYXRVUkxBc1NhbWVBc0N1cnJlbnQoY29uc3QgS1VSTCYpIGNvbnN0Owog
CisgICAgdm9pZCB1cGRhdGVTYW5kYm94RmxhZ3MoKTsKKyAgICAKICAgICBGcmFtZSogbV9mcmFt
ZTsKICAgICBGcmFtZUxvYWRlckNsaWVudCogbV9jbGllbnQ7CiAKQEAgLTUwNiw2ICs1MTMsOCBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9sb2FkaW5nRnJvbUNhY2hlZFBhZ2U7CiAgICAgYm9vbCBt
X3N1cHByZXNzT3BlbmVySW5OZXdGcmFtZTsKICAgICAKKyAgICBTYW5kYm94RmxhZ3MgbV9zYW5k
Ym94RmxhZ3M7CisKICNpZm5kZWYgTkRFQlVHCiAgICAgYm9vbCBtX2RpZERpc3BhdGNoRGlkQ29t
bWl0TG9hZDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJU
eXBlcy5oIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCmluZGV4IGU3ZDUxYzcu
LmQ3MTI2M2IgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAor
KysgYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgKQEAgLTkyLDYgKzkyLDE4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU2VuZFJlZmVycmVyLAogICAgICAgICBOb1Jl
ZmVycmVyCiAgICAgfTsKKyAgICAKKyAgICBlbnVtIFNhbmRib3hGbGFnIHsKKyAgICAgICAgU2Fu
ZGJveE5vbmUgPSAwLAorICAgICAgICBTYW5kYm94TmF2aWdhdGlvbiA9IDEsCisgICAgICAgIFNh
bmRib3hQbHVnaW5zID0gMSA8PCAxLAorICAgICAgICBTYW5kYm94T3JpZ2luID0gMSA8PCAyLAor
ICAgICAgICBTYW5kYm94Rm9ybXMgPSAxIDw8IDMsCisgICAgICAgIFNhbmRib3hTY3JpcHRzID0g
MSA8PCA0LAorICAgICAgICBTYW5kYm94QWxsID0gLTEgLy8gTWFzayB3aXRoIGFsbCBiaXRzIHNl
dCB0byAxLgorICAgIH07CisKKyAgICB0eXBlZGVmIHVuc2lnbmVkIFNhbmRib3hGbGFnczsKIH0K
IAogI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDU4ZjU0YmQuLjhiYjcwZTAgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cu
Y3BwCkBAIC01NjksNiArNTY5LDkgQEAgU3RvcmFnZSogRE9NV2luZG93OjpzZXNzaW9uU3RvcmFn
ZSgpIGNvbnN0CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKICAg
ICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBpZiAoIWRvY3Vt
ZW50LT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NTdG9yYWdlKCkpCisgICAgICAgIHJldHVy
biAwOwogCiAgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCk7CiAgICAgaWYgKCFwYWdl
KQpAQCAtNTkxLDYgKzU5NCw5IEBAIFN0b3JhZ2UqIERPTVdpbmRvdzo6bG9jYWxTdG9yYWdlKCkg
Y29uc3QKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOwogICAgIGlm
ICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiAwOworICAgIAorICAgIGlmICghZG9jdW1lbnQt
PnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc1N0b3JhZ2UoKSkKKyAgICAgICAgcmV0dXJuIDA7
CiAgICAgICAgIAogICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOwogICAgIGlmICgh
cGFnZSkKQEAgLTExMDcsMTMgKzExMTMsMTUgQEAgUGFzc1JlZlB0cjxEYXRhYmFzZT4gRE9NV2lu
ZG93OjpvcGVuRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHYKICAg
ICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgRG9jdW1lbnQqIGRvYyA9
IG1fZnJhbWUtPmRvY3VtZW50KCk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9mcmFtZS0+
ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nl
c3NEYXRhYmFzZSgpKQorICAgICAgICByZXR1cm4gMDsKIAogICAgIFNldHRpbmdzKiBzZXR0aW5n
cyA9IG1fZnJhbWUtPnNldHRpbmdzKCk7CiAgICAgaWYgKCFzZXR0aW5ncyB8fCAhc2V0dGluZ3Mt
PmRhdGFiYXNlc0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gRGF0
YWJhc2U6Om9wZW5EYXRhYmFzZShkb2MsIG5hbWUsIHZlcnNpb24sIGRpc3BsYXlOYW1lLCBlc3Rp
bWF0ZWRTaXplLCBlYyk7CisgICAgcmV0dXJuIERhdGFiYXNlOjpvcGVuRGF0YWJhc2UoZG9jdW1l
bnQsIG5hbWUsIHZlcnNpb24sIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplLCBlYyk7CiB9CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcCBiL1dl
YkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggYjYyNWZiYS4uOWE0MTNiMSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9XZWJDb3JlL3Bh
Z2UvU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC05NSw2ICs5NSw3IEBAIFNlY3VyaXR5T3JpZ2luOjpT
ZWN1cml0eU9yaWdpbihjb25zdCBLVVJMJiB1cmwpCiAgICAgOiBtX3Byb3RvY29sKHVybC5wcm90
b2NvbCgpLmlzTnVsbCgpID8gIiIgOiB1cmwucHJvdG9jb2woKS5sb3dlcigpKQogICAgICwgbV9o
b3N0KHVybC5ob3N0KCkuaXNOdWxsKCkgPyAiIiA6IHVybC5ob3N0KCkubG93ZXIoKSkKICAgICAs
IG1fcG9ydCh1cmwucG9ydCgpKQorICAgICwgbV9zYW5kYm94RmxhZ3MoU2FuZGJveE5vbmUpCiAg
ICAgLCBtX25vQWNjZXNzKGZhbHNlKQogICAgICwgbV91bml2ZXJzYWxBY2Nlc3MoZmFsc2UpCiAg
ICAgLCBtX2RvbWFpbldhc1NldEluRE9NKGZhbHNlKQpAQCAtMTI3LDYgKzEyOCw3IEBAIFNlY3Vy
aXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiogb3RoZXIpCiAg
ICAgLCBtX2hvc3Qob3RoZXItPm1faG9zdC50aHJlYWRzYWZlQ29weSgpKQogICAgICwgbV9kb21h
aW4ob3RoZXItPm1fZG9tYWluLnRocmVhZHNhZmVDb3B5KCkpCiAgICAgLCBtX3BvcnQob3RoZXIt
Pm1fcG9ydCkKKyAgICAsIG1fc2FuZGJveEZsYWdzKG90aGVyLT5tX3NhbmRib3hGbGFncykKICAg
ICAsIG1fbm9BY2Nlc3Mob3RoZXItPm1fbm9BY2Nlc3MpCiAgICAgLCBtX3VuaXZlcnNhbEFjY2Vz
cyhvdGhlci0+bV91bml2ZXJzYWxBY2Nlc3MpCiAgICAgLCBtX2RvbWFpbldhc1NldEluRE9NKG90
aGVyLT5tX2RvbWFpbldhc1NldEluRE9NKQpAQCAtMTY3LDcgKzE2OSw3IEBAIGJvb2wgU2VjdXJp
dHlPcmlnaW46OmNhbkFjY2Vzcyhjb25zdCBTZWN1cml0eU9yaWdpbiogb3RoZXIpIGNvbnN0CiAg
ICAgaWYgKG1fdW5pdmVyc2FsQWNjZXNzKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlm
IChtX25vQWNjZXNzIHx8IG90aGVyLT5tX25vQWNjZXNzKQorICAgIGlmIChtX25vQWNjZXNzIHx8
IG90aGVyLT5tX25vQWNjZXNzIHx8IGlzU2FuZGJveGVkKFNhbmRib3hPcmlnaW4pIHx8IG90aGVy
LT5pc1NhbmRib3hlZChTYW5kYm94T3JpZ2luKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgLy8gSGVyZSBhcmUgdHdvIGNhc2VzIHdoZXJlIHdlIHNob3VsZCBwZXJtaXQgYWNjZXNzOgpA
QCAtMjA4LDcgKzIxMCw3IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhblJlcXVlc3QoY29uc3Qg
S1VSTCYgdXJsKSBjb25zdAogICAgIGlmIChtX3VuaXZlcnNhbEFjY2VzcykKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKLSAgICBpZiAobV9ub0FjY2VzcykKKyAgICBpZiAobV9ub0FjY2VzcyB8fCBp
c1NhbmRib3hlZChTYW5kYm94T3JpZ2luKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0YXJnZXRPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlKHVybCk7CkBAIC0yOTYsNyArMjk4LDcgQEAgU3RyaW5nIFNlY3VyaXR5T3JpZ2luOjp0b1N0
cmluZygpIGNvbnN0CiAgICAgaWYgKGlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuICJudWxsIjsK
IAotICAgIGlmIChtX25vQWNjZXNzKQorICAgIGlmIChtX25vQWNjZXNzIHx8IGlzU2FuZGJveGVk
KFNhbmRib3hPcmlnaW4pKQogICAgICAgICByZXR1cm4gIm51bGwiOwogCiAgICAgaWYgKG1fcHJv
dG9jb2wgPT0gImZpbGUiKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
LmggYi9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAppbmRleCA3YzMyZjAzLi5iZjMyMjFm
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAorKysgYi9XZWJDb3Jl
L3BhZ2UvU2VjdXJpdHlPcmlnaW4uaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCisjaW5jbHVkZSAiRnJh
bWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAi
U3RyaW5nSGFzaC5oIgogCkBAIC0xMTAsNiArMTExLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgLy8gV0FSTklORzogVGhpcyBpcyBhbiBleHRyZW1lbHkgcG93ZXJmdWwgYWJpbGl0
eS4gIFVzZSB3aXRoIGNhdXRpb24hCiAgICAgICAgIHZvaWQgZ3JhbnRVbml2ZXJzYWxBY2Nlc3Mo
KTsKIAorICAgICAgICAvLyBTYW5kYm94aW5nIHN0YXR1cyBhcyBkZXRlcm1pbmVkIGJ5IHRoZSBm
cmFtZS4KKyAgICAgICAgdm9pZCBzZXRTYW5kYm94RmxhZ3MoU2FuZGJveEZsYWdzIGZsYWdzKSB7
IG1fc2FuZGJveEZsYWdzID0gZmxhZ3M7IH0KKyAgICAgICAgYm9vbCBpc1NhbmRib3hlZChTYW5k
Ym94RmxhZ3MgbWFzaykgY29uc3QgeyByZXR1cm4gbV9zYW5kYm94RmxhZ3MgJiBtYXNrOyB9CisK
KyAgICAgICAgYm9vbCBjYW5BY2Nlc3NEYXRhYmFzZSgpIGNvbnN0IHsgcmV0dXJuICFpc1NhbmRi
b3hlZChTYW5kYm94T3JpZ2luKTsgfQorICAgICAgICBib29sIGNhbkFjY2Vzc1N0b3JhZ2UoKSBj
b25zdCB7IHJldHVybiAhaXNTYW5kYm94ZWQoU2FuZGJveE9yaWdpbik7IH0KKwogICAgICAgICBi
b29sIGlzU2VjdXJlVHJhbnNpdGlvblRvKGNvbnN0IEtVUkwmKSBjb25zdDsKIAogICAgICAgICAv
LyBUaGUgbG9jYWwgU2VjdXJpdHlPcmlnaW4gaXMgdGhlIG1vc3QgcHJpdmlsZWdlZCBTZWN1cml0
eU9yaWdpbi4KQEAgLTE4MSw2ICsxODksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IFN0cmluZyBtX2hvc3Q7CiAgICAgICAgIFN0cmluZyBtX2RvbWFpbjsKICAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgbV9wb3J0OworICAgICAgICBTYW5kYm94RmxhZ3MgbV9zYW5kYm94RmxhZ3M7CiAg
ICAgICAgIGJvb2wgbV9ub0FjY2VzczsKICAgICAgICAgYm9vbCBtX3VuaXZlcnNhbEFjY2VzczsK
ICAgICAgICAgYm9vbCBtX2RvbWFpbldhc1NldEluRE9NOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93
ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldENoYW5uZWwuY3BwCmluZGV4IGExMTA3NDYuLjJkZGU3NzAgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9XZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTE1OSw4ICsxNTksMTAgQEAgdm9pZCBXZWJTb2Nr
ZXRDaGFubmVsOjpkaWRSZWNlaXZlRGF0YShTb2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSwgY29u
c3QgY2hhciogZGEKICAgICAgICAgICAgIGlmICghbV9oYW5kc2hha2Uuc2VydmVyU2V0Q29va2ll
KCkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKG1fY29udGV4dC0+aXNEb2N1bWVu
dCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19j
YXN0PERvY3VtZW50Kj4obV9jb250ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNvb2tp
ZXNFbmFibGVkKGRvY3VtZW50KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LT5z
ZXRDb29raWUobV9oYW5kc2hha2Uuc2VydmVyU2V0Q29va2llKCkpOworICAgICAgICAgICAgICAg
ICAgICBpZiAoY29va2llc0VuYWJsZWQoZG9jdW1lbnQpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBFeGNlcHRpb25Db2RlIGVjOyAvLyBFeGNlcHRpb24gKGZvciBzYW5kYm94ZWQgZG9jdW1l
bnRzKSBpZ25vcmVkLgorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQtPnNldENvb2tp
ZShtX2hhbmRzaGFrZS5zZXJ2ZXJTZXRDb29raWUoKSwgZWMpOworICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gRklY
TUU6IGhhbmRsZSBzZXQtY29va2llMi4K
</data>
<flag name="review"
          id="25884"
          type_id="1"
          status="-"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="25885"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44618</attachid>
            <date>2009-12-10 08:21:23 -0800</date>
            <delta_ts>2009-12-10 08:58:16 -0800</delta_ts>
            <desc>Test case for &quot;about:blank&quot; potential issue</desc>
            <filename>sandbox-aboutblank.patch</filename>
            <type>text/plain</type>
            <size>3298</size>
            <attacher name="Patrik Persson">patrik.j.persson</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDUxOTQ4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDktMTItMTAgIFBhdHJpayBQZXJzc29uICA8
cGF0cmlrLmoucGVyc3NvbkBlcmljc3Nvbi5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdCBjYXNlIHRvIHZlcmlmeSB0aGF0IHNhbmRib3hp
bmcgJ2Fib3V0OmJsYW5rJyBkb2VzIG5vdCBtYWtlCisgICAgICAgIHRoZSBjb250YWluaW5nIGZy
YW1lIHNhbmRib3hlZC4KKwkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMjg4I2MyOAorCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3Nh
bmRib3hlZC1pZnJhbWUtYWJvdXQtYmxhbmsuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9m
cmFtZXMvc2FuZGJveGVkLWlmcmFtZS1hYm91dC1ibGFuay1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtYWJvdXQtYmxhbmsuaHRtbDog
QWRkZWQuCisKIDIwMDktMTItMTAgIEVyaWMgWi4gQXllcnMgIDx6dW5kZWxAZ29vZ2xlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1hYm91dC1ibGFuay1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1hYm91
dC1ibGFuay1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9zYW5kYm94ZWQtaWZyYW1lLWFib3V0LWJsYW5rLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxMSBAQAorCitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBzYW5kYm94aW5n
ICdhYm91dDpibGFuaycgZG9lcyBub3QgbWFrZSB0aGUgY29udGFpbmluZyBmcmFtZSBzYW5kYm94
ZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGNvbnRhaW5pbmcgZnJh
bWUgd2FzIGFibGUgdG8gaW5zdGFudGlhdGUgcGx1Z2luCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFt
ZXMvc2FuZGJveGVkLWlmcmFtZS1hYm91dC1ibGFuay5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtYWJvdXQtYmxhbmsuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtYWJv
dXQtYmxhbmsuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBAQAorPGh0bWw+Cis8aGVh
ZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVu
Y3Rpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKK3dpbmRv
dy5vbmxvYWQgPSBmdW5jdGlvbigpIHsgCisgICAgaWYgKHNlbGYuY29udGFpbmluZ19mcmFtZS5k
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGx1Z2luJykuZGVzdHJveVN0cmVhbSkKKyAgICAgICAg
dGVzdFBhc3NlZCgiY29udGFpbmluZyBmcmFtZSB3YXMgYWJsZSB0byBpbnN0YW50aWF0ZSBwbHVn
aW4iKTsKKyAgICBlbHNlCisgICAgICAgIHRlc3RGYWlsZWQoImNvbnRhaW5pbmcgZnJhbWUgd2Fz
IHVuYWJsZSB0byBpbnN0YW50aWF0ZSBwbHVnaW4iKTsKKworICAgIGlzU3VjY2Vzc2Z1bGx5UGFy
c2VkKCk7Cit9IAorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxpZnJhbWUgbmFt
ZT0iY29udGFpbmluZ19mcmFtZSIKKwkgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFt
ZS1hYm91dC1ibGFuay5odG1sIj4KKyAgICA8L2lmcmFtZT4KKworICAgIDxwIGlkPSJkZXNjcmlw
dGlvbiI+PC9wPgorCisgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKyAgICA8c2NyaXB0
PgorICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBzYW5kYm94aW5nICdh
Ym91dDpibGFuaycgZG9lcyBub3QgbWFrZSB0aGUgY29udGFpbmluZyBmcmFtZSBzYW5kYm94ZWQu
Iik7CisgICAgdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgICAgPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMv
c2FuZGJveGVkLWlmcmFtZS1hYm91dC1ibGFuay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWFib3V0LWJsYW5rLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2Fu
ZGJveGVkLWlmcmFtZS1hYm91dC1ibGFuay5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEz
IEBACis8aHRtbD4KKzxoZWFkPgorPC9oZWFkPgorPGJvZHk+CisgICAgPGlmcmFtZSBzcmM9ImFi
b3V0OmJsYW5rIiBzYW5kYm94PgorICAgIDwvaWZyYW1lPgorICAgIDxlbWJlZCBpZD0icGx1Z2lu
IiAKKyAgICAgICAgICAgdHlwZT0iYXBwbGljYXRpb24veC13ZWJraXQtdGVzdC1uZXRzY2FwZSIK
KyAgICAgICAgICAgc3JjPSJkYXRhOnRleHQvcGxhaW4sIgorICAgICAgICAgICBzdHlsZT0id2lk
dGg6MDsgaGVpZ2h0OjAiPgorICAgIDwvZW1iZWQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="26518"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="26519"
          type_id="3"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>