<?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>195499</bug_id>
          
          <creation_ts>2019-03-08 17:14:23 -0800</creation_ts>
          <short_desc>Add SPI to retrieve the set of text inputs in a given rect, and later focus one</short_desc>
          <delta_ts>2020-03-02 11:53:58 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=196007</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=208352</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1514273</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-03-08 17:14:23 -0800</bug_when>
    <thetext>Add SPI to retrieve the set of text inputs in a given rect, and later focus one</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1514276</commentid>
    <comment_count>1</comment_count>
      <attachid>364094</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-03-08 17:18:28 -0800</bug_when>
    <thetext>Created attachment 364094
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1514280</commentid>
    <comment_count>2</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-03-08 17:21:51 -0800</bug_when>
    <thetext>Not quite ready yet</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1514578</commentid>
    <comment_count>3</comment_count>
      <attachid>364094</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-03-10 14:06:17 -0700</bug_when>
    <thetext>Comment on attachment 364094
Patch

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

Some comments because I didn’t notice the &quot;not ready&quot; in time

&gt; Source/WebKit/Shared/TextInputContext.cpp:36
&gt; +TextInputContext::~TextInputContext()
&gt; +{
&gt; +}

Can use &quot;= default&quot; here instead of an empty body. Some people seem to prefer that; not sure how I feel.

&gt; Source/WebKit/Shared/TextInputContext.h:29
&gt; +#include &lt;WebCore/Element.h&gt;

Since we’re including the entire header here we don’t need the same include in the .cpp file. If we put a forward declaration here, that would be different.

&gt; Source/WebKit/Shared/TextInputContext.h:39
&gt; +    WebCore::FloatRect rect;
&gt; +
&gt; +    String identifier;
&gt; +
&gt; +    RefPtr&lt;WebCore::Element&gt; element;

I think we could consider just putting these three in a single paragraph.

&gt; Source/WebKit/Shared/TextInputContext.h:41
&gt; +    ~TextInputContext();

Given all the headers included here, I don’t think this needs to be done to get the constructor out of line. Maybe left over from when we were not including Element.h yet?

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:4836
&gt; +        for (WebKit::TextInputContext&amp; context : contexts)

I personally find auto&amp; appealing for uses like this.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:4837
&gt; +            [elements addObject:[[[_WKTextInputContext alloc] _initWithIdentifier:context.identifier boundingRect:context.rect] autorelease]];

Using autorelease here is OK, but using adoptNS/get instead lets us do the same thing without the overhead of adding all the objects to an autorelease pool. ARC would perform the same optimization, I believe.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:4839
&gt; +        capturedCompletionHandler(elements.autorelease());

No need to autorelease since we aren’t returning a value, but rather passing in a value. Just get() should be sufficient and more efficient.

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKTextInputContext.h:31
&gt; +// identifiers can be compared with isEqual.

Is there some way to make this more binding thing at the language level rather than just a comment? For ObjC? For Swift?

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKTextInputContext.mm:31
&gt; +- (instancetype)_initWithIdentifier:(id&lt;NSObject, NSCopying&gt;)identifier boundingRect:(CGRect)boundingRect

What about just plain &quot;init&quot;? Is it allowed? If not, should we override it to raise an exception? Is there something we need to do in the @interface to make that clear?

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6465
&gt; +static IntRect elementRectInWindowCoordinates(const Node&amp; node, const Frame&amp; frame)

Take an Element&amp; instead of a Node&amp;?

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6481
&gt; +        if (!element.isTextField() &amp;&amp; !is&lt;HTMLTextAreaElement&gt;(element))

With this pattern recurring over and over again, is there some place we should leave a helper that does just the right thing?

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6489
&gt; +    if (element.isRootEditableElement())
&gt; +        return true;
&gt; +
&gt; +    return false;

Maybe just a return statement?

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6514
&gt; +            IntRect elementRect = elementRectInWindowCoordinates(*node, *frame);

Could stick an Element&amp; in a local variable instead of using *node here and below.

&gt; Source/WebKit/WebProcess/WebPage/WebPage.messages.in:549
&gt; +    TextInputContextsInRect(WebCore::FloatRect rect) -&gt; (Vector&lt;struct WebKit::TextInputContext&gt; contexts) Async

Can we make message handling smart enough to not make extra copies of the Vector as we pass it within the process? I understand, of course, that semantically as the message goes across processes it’s the Vector, not a reference to it. But I worry that we make copies wastefully when just passing up and down.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1514597</commentid>
    <comment_count>4</comment_count>
      <attachid>364202</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-03-10 15:52:00 -0700</bug_when>
    <thetext>Created attachment 364202
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1514602</commentid>
    <comment_count>5</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-03-10 16:03:58 -0700</bug_when>
    <thetext>Oop, I didn&apos;t see your comments till I uploaded a new patch.

(In reply to Darin Adler from comment #3)
&gt; Comment on attachment 364094 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=364094&amp;action=review
&gt; 
&gt; Some comments because I didn’t notice the &quot;not ready&quot; in time
&gt; 
&gt; &gt; Source/WebKit/Shared/TextInputContext.cpp:36
&gt; &gt; +TextInputContext::~TextInputContext()
&gt; &gt; +{
&gt; &gt; +}
&gt; 
&gt; Can use &quot;= default&quot; here instead of an empty body. Some people seem to
&gt; prefer that; not sure how I feel.

I got rid of this.

&gt; &gt; Source/WebKit/Shared/TextInputContext.h:29
&gt; &gt; +#include &lt;WebCore/Element.h&gt;
&gt; 
&gt; Since we’re including the entire header here we don’t need the same include
&gt; in the .cpp file. If we put a forward declaration here, that would be
&gt; different.

Yep, this is gone in the new patch.

&gt; &gt; Source/WebKit/Shared/TextInputContext.h:39
&gt; &gt; +    WebCore::FloatRect rect;
&gt; &gt; +
&gt; &gt; +    String identifier;
&gt; &gt; +
&gt; &gt; +    RefPtr&lt;WebCore::Element&gt; element;
&gt; 
&gt; I think we could consider just putting these three in a single paragraph.

I think this makes more sense in the new patch.

&gt; &gt; Source/WebKit/Shared/TextInputContext.h:41
&gt; &gt; +    ~TextInputContext();
&gt; 
&gt; Given all the headers included here, I don’t think this needs to be done to
&gt; get the constructor out of line. Maybe left over from when we were not
&gt; including Element.h yet?

Correct.

&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:4836
&gt; &gt; +        for (WebKit::TextInputContext&amp; context : contexts)
&gt; 
&gt; I personally find auto&amp; appealing for uses like this.

Fair!

&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:4837
&gt; &gt; +            [elements addObject:[[[_WKTextInputContext alloc] _initWithIdentifier:context.identifier boundingRect:context.rect] autorelease]];
&gt; 
&gt; Using autorelease here is OK, but using adoptNS/get instead lets us do the
&gt; same thing without the overhead of adding all the objects to an autorelease
&gt; pool. ARC would perform the same optimization, I believe.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:4839
&gt; &gt; +        capturedCompletionHandler(elements.autorelease());
&gt; 
&gt; No need to autorelease since we aren’t returning a value, but rather passing
&gt; in a value. Just get() should be sufficient and more efficient.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/_WKTextInputContext.h:31
&gt; &gt; +// identifiers can be compared with isEqual.
&gt; 
&gt; Is there some way to make this more binding thing at the language level
&gt; rather than just a comment? For ObjC? For Swift?

Conforming to NSObject implies this. Anyway, this is gone in the new patch because now we just use the whole object.

&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/_WKTextInputContext.mm:31
&gt; &gt; +- (instancetype)_initWithIdentifier:(id&lt;NSObject, NSCopying&gt;)identifier boundingRect:(CGRect)boundingRect
&gt; 
&gt; What about just plain &quot;init&quot;? Is it allowed? If not, should we override it
&gt; to raise an exception? Is there something we need to do in the @interface to
&gt; make that clear?

Since all properties are readonly, -init is not useful, so I guess I will NS_UNAVAILABLE it and make it return nil like usual.

&gt; &gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6465
&gt; &gt; +static IntRect elementRectInWindowCoordinates(const Node&amp; node, const Frame&amp; frame)
&gt; 
&gt; Take an Element&amp; instead of a Node&amp;?
&gt; 
&gt; &gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6481
&gt; &gt; +        if (!element.isTextField() &amp;&amp; !is&lt;HTMLTextAreaElement&gt;(element))
&gt; 
&gt; With this pattern recurring over and over again, is there some place we
&gt; should leave a helper that does just the right thing?

Yeah, Wenson and I have been talking about a &quot;I&apos;m a text field&quot; helper because it seems crazy so many people have to ask the same set of questions.

&gt; &gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6489
&gt; &gt; +    if (element.isRootEditableElement())
&gt; &gt; +        return true;
&gt; &gt; +
&gt; &gt; +    return false;
&gt; 
&gt; Maybe just a return statement?
&gt; 
&gt; &gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6514
&gt; &gt; +            IntRect elementRect = elementRectInWindowCoordinates(*node, *frame);
&gt; 
&gt; Could stick an Element&amp; in a local variable instead of using *node here and
&gt; below.

Done.

&gt; &gt; Source/WebKit/WebProcess/WebPage/WebPage.messages.in:549
&gt; &gt; +    TextInputContextsInRect(WebCore::FloatRect rect) -&gt; (Vector&lt;struct WebKit::TextInputContext&gt; contexts) Async
&gt; 
&gt; Can we make message handling smart enough to not make extra copies of the
&gt; Vector as we pass it within the process? I understand, of course, that
&gt; semantically as the message goes across processes it’s the Vector, not a
&gt; reference to it. But I worry that we make copies wastefully when just
&gt; passing up and down.

Interesting! I think the generated code does The Right Thing and that if I make this a Vector reference in the message receipt function all will be well (and that&apos;s what everyone else does...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1514607</commentid>
    <comment_count>6</comment_count>
      <attachid>364206</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-03-10 16:06:46 -0700</bug_when>
    <thetext>Created attachment 364206
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1514611</commentid>
    <comment_count>7</comment_count>
      <attachid>364206</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-03-10 16:12:48 -0700</bug_when>
    <thetext>Comment on attachment 364206
Patch

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

&gt; Source/WebCore/dom/Document.cpp:8629
&gt; +    for (auto it = m_identifiedElementsMap.begin(); it != m_identifiedElementsMap.end(); ++it) {
&gt; +        if (it-&gt;value == identifier)
&gt; +            return it-&gt;key;
&gt; +    }

For a two way map, we have often used a pair of maps rather than make one direction slow. I suppose, though, since we are doing this only once per user event, it doesn’t need to be faster than it is. I think the name should imply slowness, like searchForElementByIdentifier, and we could use the name that implies speed if we kept dual direction maps.

&gt; Source/WebCore/dom/Document.cpp:8631
&gt; +    return nil;

nullptr

&gt; Source/WebCore/dom/Document.h:393
&gt; +    WEBCORE_EXPORT Element *elementWithIdentifier(const ElementIdentifier&amp;);

Element*, with the space after the *.

&gt; Source/WebKit/Shared/TextInputContext.h:29
&gt; +#include &lt;WebCore/Element.h&gt;

Do we need to include this to get the two identifier types? Or is there another way? Probably no big deal either way.

&gt; Source/WebKit/Shared/TextInputContext.h:47
&gt; +    bool operator==(const TextInputContext&amp; other) const
&gt; +    {
&gt; +        return boundingRect == other.boundingRect
&gt; +            &amp;&amp; webPageIdentifier == other.webPageIdentifier
&gt; +            &amp;&amp; documentIdentifier == other.documentIdentifier
&gt; +            &amp;&amp; elementIdentifier == other.elementIdentifier;
&gt; +    }

I prefer free functions for these rather than member functions. Not sure if others on our project agree. Can still be an inline in the header.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:4833
&gt; +    _page-&gt;textInputContextsInRect(rect, [capturedCompletionHandler = makeBlockPtr(completionHandler)] (Vector&lt;WebKit::TextInputContext&gt; contexts) {

Still surprised that we need use an interface here that involves copying the Vector as part of calling the completion handler. Writing it this way does make someone copy the vector, I think. But not sure what our options are for avoiding that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1514659</commentid>
    <comment_count>8</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-03-10 19:39:34 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #7)
&gt; Comment on attachment 364206 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=364206&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:8629
&gt; &gt; +    for (auto it = m_identifiedElementsMap.begin(); it != m_identifiedElementsMap.end(); ++it) {
&gt; &gt; +        if (it-&gt;value == identifier)
&gt; &gt; +            return it-&gt;key;
&gt; &gt; +    }
&gt; 
&gt; For a two way map, we have often used a pair of maps rather than make one
&gt; direction slow. I suppose, though, since we are doing this only once per
&gt; user event, it doesn’t need to be faster than it is. I think the name should
&gt; imply slowness, like searchForElementByIdentifier, and we could use the name
&gt; that implies speed if we kept dual direction maps.

I considered the two-map thing, but didn&apos;t think it was likely worth the memory (and made the &quot;fast&quot; one the one that happens more often, like you say). If we expand usage of &quot;identified elements&quot; we might want to do it. In the meantime I&apos;ll make it clear that it&apos;s the slow path in the name. Good idea!

&gt; &gt; Source/WebCore/dom/Document.cpp:8631
&gt; &gt; +    return nil;
&gt; 
&gt; nullptr
&gt; 
&gt; &gt; Source/WebCore/dom/Document.h:393
&gt; &gt; +    WEBCORE_EXPORT Element *elementWithIdentifier(const ElementIdentifier&amp;);
&gt; 
&gt; Element*, with the space after the *.

Heh, from the last two comments you can tell I&apos;ve been writing a disproportionate amount of ObjC recently.

&gt; &gt; Source/WebKit/Shared/TextInputContext.h:29
&gt; &gt; +#include &lt;WebCore/Element.h&gt;
&gt; 
&gt; Do we need to include this to get the two identifier types? Or is there
&gt; another way? Probably no big deal either way.
&gt; 
&gt; &gt; Source/WebKit/Shared/TextInputContext.h:47
&gt; &gt; +    bool operator==(const TextInputContext&amp; other) const
&gt; &gt; +    {
&gt; &gt; +        return boundingRect == other.boundingRect
&gt; &gt; +            &amp;&amp; webPageIdentifier == other.webPageIdentifier
&gt; &gt; +            &amp;&amp; documentIdentifier == other.documentIdentifier
&gt; &gt; +            &amp;&amp; elementIdentifier == other.elementIdentifier;
&gt; &gt; +    }
&gt; 
&gt; I prefer free functions for these rather than member functions. Not sure if
&gt; others on our project agree. Can still be an inline in the header.

Seems to be more common, yes.

&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:4833
&gt; &gt; +    _page-&gt;textInputContextsInRect(rect, [capturedCompletionHandler = makeBlockPtr(completionHandler)] (Vector&lt;WebKit::TextInputContext&gt; contexts) {
&gt; 
&gt; Still surprised that we need use an interface here that involves copying the
&gt; Vector as part of calling the completion handler. Writing it this way does
&gt; make someone copy the vector, I think. But not sure what our options are for
&gt; avoiding that.

Heh, you&apos;re right, there are still copies. I&apos;ll poke around.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1514661</commentid>
    <comment_count>9</comment_count>
      <attachid>364223</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-03-10 19:52:59 -0700</bug_when>
    <thetext>Created attachment 364223
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1514670</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-10 20:32:06 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 364223:

storage/indexeddb/get-keyrange-private.html bug 195540 (author: beidson@apple.com)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1514671</commentid>
    <comment_count>11</comment_count>
      <attachid>364223</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-10 20:32:56 -0700</bug_when>
    <thetext>Comment on attachment 364223
Patch

Clearing flags on attachment: 364223

Committed r242696: &lt;https://trac.webkit.org/changeset/242696&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1514672</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-10 20:32:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1514682</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-10 21:01:52 -0700</bug_when>
    <thetext>&lt;rdar://problem/48757036&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1514795</commentid>
    <comment_count>14</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-03-11 09:22:50 -0700</bug_when>
    <thetext>The new API test WebKit.RequestTextInputContext added in https://trac.webkit.org/changeset/242696/webkit

is crashing on iOS:

Crashed

    TestWebKitAPI.WebKit.RequestTextInputContext
        Child process terminated with signal 11: Segmentation fault

build:
https://build.webkit.org/builders/Apple%20iOS%2012%20Simulator%20Release%20WK2%20%28Tests%29/builds/3060</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1514866</commentid>
    <comment_count>15</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-03-11 10:42:36 -0700</bug_when>
    <thetext>(In reply to Truitt Savell from comment #14)
&gt; The new API test WebKit.RequestTextInputContext added in
&gt; https://trac.webkit.org/changeset/242696/webkit
&gt; 
&gt; is crashing on iOS:
&gt; 
&gt; Crashed
&gt; 
&gt;     TestWebKitAPI.WebKit.RequestTextInputContext
&gt;         Child process terminated with signal 11: Segmentation fault
&gt; 
&gt; build:
&gt; https://build.webkit.org/builders/
&gt; Apple%20iOS%2012%20Simulator%20Release%20WK2%20%28Tests%29/builds/3060

Odd, I tested it in the sim built against the public SDK (which should match that). I&apos;ll take a look.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>364094</attachid>
            <date>2019-03-08 17:18:28 -0800</date>
            <delta_ts>2019-03-08 17:24:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195499-20190308171827.patch</filename>
            <type>text/plain</type>
            <size>51623</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyNjQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzBkZDY0NGE1NDRiZjRi
MWZjYzY4M2QwOTU1NzU4NTczZjc5ODBlYS4uNWQ4MTUzYzEwM2NkODQ0NzQzZmVjMmFiZDFmZTE1
MDU1NzI4ZDZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTAzLTA4ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTUEkgdG8g
cmV0cmlldmUgdGhlIHNldCBvZiB0ZXh0IGlucHV0cyBpbiBhIGdpdmVuIHJlY3QsIGFuZCBsYXRl
ciBmb2N1cyBvbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5NTQ5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5ldyBBUEkgdGVzdHM6IFdlYktpdC5SZXF1ZXN0VGV4dElucHV0Q29udGV4dCBhbmQgV2Vi
S2l0LkZvY3VzVGV4dElucHV0Q29udGV4dAorCisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAg
ICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Lmg6CisKIDIwMTktMDMtMDggIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL0ZpbGVBUEkvcmVhZGluZy1kYXRhLXNlY3Rpb24vZmlsZXJlYWRlcl9l
cnJvci5odG1sIGlzIGEgZmxha3kgY3Jhc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNDMzYjU0YjQxMTgzMzQzMDUx
ZmY2MGM2MGU5ZWZmOGUzOGVmYjE2Yy4uZTgwMTU1MDA3NmU5NmY1NGI2NjIxOGFmMTcxZTc4Njli
NWJmZmU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MiBAQAorMjAxOS0wMy0wOCAgVGltIEhvcnRv
biAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU1BJIHRvIHJldHJp
ZXZlIHRoZSBzZXQgb2YgdGV4dCBpbnB1dHMgaW4gYSBnaXZlbiByZWN0LCBhbmQgbGF0ZXIgZm9j
dXMgb25lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTU0OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNoYXJlZC9UZXh0SW5wdXRD
b250ZXh0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlRleHRJbnB1dENvbnRleHQ6On5U
ZXh0SW5wdXRDb250ZXh0KToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJLaXQ6OlRl
eHRJbnB1dENvbnRleHQ+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdl
YktpdDo6VGV4dElucHV0Q29udGV4dD46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1RleHRJ
bnB1dENvbnRleHQuaDogQWRkZWQuCisgICAgICAgIEFkZCBUZXh0SW5wdXRDb250ZXh0LCB3aGlj
aCByZXByZXNlbnRzIGEgbWluaW1hbCBzZXQgb2YgaW5mb3JtYXRpb24KKyAgICAgICAgYWJvdXQg
YSB0ZXh0IGZpZWxkLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNl
c0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6Y29t
cGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfZm9jdXNUZXh0SW5wdXRD
b250ZXh0OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICBBZGQgU1BJIHRoYXQgYWxsb3dzIGNsaWVu
dHMgdG8gYXN5bmNocm9ub3VzbHkgcmVxdWVzdCB0ZXh0IGlucHV0CisgICAgICAgIGNvbnRleHRz
IGZvciBhIGdpdmVuIHJlY3QsIGFuZCBsYXRlciBmb2N1cyBhIGdpdmVuIGNvbnRleHQuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRJbnB1dENvbnRleHQuaDogQWRkZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0SW5wdXRDb250ZXh0Lm1tOiBB
ZGRlZC4KKyAgICAgICAgKC1bX1dLVGV4dElucHV0Q29udGV4dCBfaW5pdFdpdGhJZGVudGlmaWVy
OmJvdW5kaW5nUmVjdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRJ
bnB1dENvbnRleHRJbnRlcm5hbC5oOiBBZGRlZC4KKyAgICAgICAgQWRkIGFuIFNQSSBvYmplY3Qg
dGhhdCBleHBvc2VzIGEgcmVhZC1vbmx5IHdpbmRvdyBvbiBhIFRleHRJbnB1dENvbnRleHQgdG8g
Y2xpZW50cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnRleHRJbnB1dENvbnRleHRzSW5SZWN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpmb2N1c1RleHRJbnB1dENvbnRleHQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgUGx1bWJpbmcgZnJvbSBXS1dlYlZpZXc8LT5XZWJQ
YWdlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRTdGFydFBhZ2VUcmFuc2l0aW9uKToKKyAgICAgICAgQ2xl
YXIgdGhlIHN0b3JlZCBzZXQgb2YgdGV4dCBpbnB1dCBjb250ZXh0cyBvbiBuYXZpZ2F0aW9uLCBz
byB3ZSBkb24ndAorICAgICAgICBob2xkIG9uIHRvIGVsZW1lbnRzIGZvciB0b28gbG9uZy4gSWRl
YWxseSB0aGV5IHdvdWxkIGp1c3QgYmUgd2VhaworICAgICAgICByZWZlcmVuY2VzLCBidXQgd2Ug
Y3VycmVudGx5IGRvbid0IGhhdmUgc3VjaCBhIG1lY2hhbmlzbS4KKworICAgICAgICAoV2ViS2l0
OjplbGVtZW50UmVjdEluV2luZG93Q29vcmRpbmF0ZXMpOgorICAgICAgICAoV2ViS2l0Ojppc0Vk
aXRhYmxlVGV4dElucHV0RWxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnRleHRJ
bnB1dENvbnRleHRzSW5SZWN0KToKKyAgICAgICAgU2VhcmNoIHRoZSBET00gZm9yIHRleHQgaW5w
dXQgY29udGV4dHM6IDxpbnB1dCB0eXBlPSd0ZXh0Jz4gKG9yIG90aGVyCisgICAgICAgIGZvcm0g
ZmllbGRzIHRoYXQgZmFsbCBiYWNrIG9uIHRleHQgZmllbGQgYmVoYXZpb3IpLCA8dGV4dGFyZWE+
LCBhbmQKKyAgICAgICAgY29udGVudGVkaXRhYmxlIHJvb3RzLiBBc3NpZ24gdGhlbSBhbiBJRCwg
YW5kIGhvbGQgb24gdG8gdGhlbSBzbyB0aGF0CisgICAgICAgIHdlIGNhbiBtYXAgYW4gSUQgYmFj
ayB0byBhbiBFbGVtZW50IHRvIGZvY3VzIGl0IGxhdGVyLgorCisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmZvY3VzVGV4dElucHV0Q29udGV4dCk6CisgICAgICAgIEZpbmQgdGhlIGVsZW1lbnQg
Zm9yIGEgZ2l2ZW4gdGV4dCBpbnB1dCBjb250ZXh0IGlkZW50aWZpZXIgYW5kIGZvY3VzIGl0LAor
ICAgICAgICBpZiBpdCdzIHN0aWxsIGluIGEgZG9jdW1lbnQuCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluOgorCiAyMDE5LTAzLTA4ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFz
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPUyBVSS1zaWRlIGNvbXBvc2l0aW5nXSBNb3Vz
ZSBoYW5kbGluZyBjYW4gdHJpZ2dlciBhIGNyYXNoIGJlZm9yZSB3ZSBoYXZlIGEgc2Nyb2xsaW5n
IHRyZWUgcm9vdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggYTYzYzE5NGI4YjUwNzM3MzFjZDkxOTFiMzMxMjYx
ZjBmODg4NzBjNi4uMjM2OWVhMjAzNmQ4ZjMzZWY1OWIwM2Q5ZDE2ODhkOTZhMjI1MTgyMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5oCkBAIC0yODMsNyArMjgzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29s
IGNhbkNvbnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAg
IGJvb2wgaXNSb290RWRpdGFibGVFbGVtZW50KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBpc1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBF
bGVtZW50KiByb290RWRpdGFibGVFbGVtZW50KCkgY29uc3Q7CiAKICAgICAvLyBDYWxsZWQgYnkg
dGhlIHBhcnNlciB3aGVuIHRoaXMgZWxlbWVudCdzIGNsb3NlIHRhZyBpcyByZWFjaGVkLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCmluZGV4
IGIxZTM1Y2I3NzZhOGZlMTUxNWY3MTZhNzJmYzczZTkyNGExYzJiZjEuLmNmOGM3NDRiNzAzZmM1
NGViNTkzOTE0MDNiNjE5ZjJkNTYzZWVmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgKQEAgLTk4LDYgKzk4LDggQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2hvd1BsYWNlaG9sZGVySWZOZWNlc3NhcnkoKTsKICNl
bmRpZgogCisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBib29sIGlzSW5uZXJUZXh0RWxlbWVu
dEVkaXRhYmxlKCkgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICBIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBIVE1MRm9ybUVsZW1lbnQq
KTsKICAgICBib29sIGlzUGxhY2Vob2xkZXJFbXB0eSgpIGNvbnN0OwpAQCAtMTA3LDcgKzEwOSw3
IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgZGlzYWJsZWRTdGF0ZUNoYW5nZWQoKSBvdmVycmlk
ZTsKICAgICB2b2lkIHJlYWRPbmx5U3RhdGVDaGFuZ2VkKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBib29sIGlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxlKCkgY29uc3Q7CisKICAgICB2b2lkIHVw
ZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSgpOwogCiAgICAgdm9pZCBjYWNoZVNlbGVj
dGlvbihpbnQgc3RhcnQsIGludCBlbmQsIFRleHRGaWVsZFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJl
Y3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCBiZmFi
MDNhYjRjMDNlNWFiNWZkYzdjNTkwYWFhYTA3MjViYzZmZjllLi44ZGVmODQ1N2U4MzdkMDA2YjYz
NWNkOGNjOWQ2ZWVkZWMzZDAyYzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkKQEAgLTQ1Myw2ICs0NTMsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToK
ICAgICAgICAgJ1dlYktpdDo6V2ViTW91c2VFdmVudCc6IFsnIldlYkV2ZW50LmgiJ10sCiAgICAg
ICAgICdXZWJLaXQ6OldlYlRvdWNoRXZlbnQnOiBbJyJXZWJFdmVudC5oIiddLAogICAgICAgICAn
V2ViS2l0OjpXZWJXaGVlbEV2ZW50JzogWyciV2ViRXZlbnQuaCInXSwKKyAgICAgICAgJ3N0cnVj
dCBXZWJLaXQ6OlRleHRJbnB1dENvbnRleHQnOiBbJyJUZXh0SW5wdXRDb250ZXh0LmgiJ10sCiAg
ICAgICAgICdzdHJ1Y3QgV2ViS2l0OjpXZWJVc2VyU2NyaXB0RGF0YSc6IFsnIldlYlVzZXJDb250
ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oIiddLAogICAgICAgICAnc3RydWN0IFdlYktpdDo6V2Vi
VXNlclN0eWxlU2hlZXREYXRhJzogWyciV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVz
LmgiJ10sCiAgICAgICAgICdzdHJ1Y3QgV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlckRh
dGEnOiBbJyJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCInXSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RleHRJbnB1dENvbnRleHQuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvVGV4dElucHV0Q29udGV4dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjczMTM5OGI0NWNh
Y2ZiZmU2ZTMzY2E3ZWUzZGE4MmQ0MzZmMDZiYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1RleHRJbnB1dENvbnRleHQuY3BwCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGV4dElucHV0Q29udGV4dC5o
IgorCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9FbGVtZW50Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitUZXh0SW5wdXRDb250ZXh0Ojp+
VGV4dElucHV0Q29udGV4dCgpCit7Cit9CisKK30KKworbmFtZXNwYWNlIElQQyB7CisKK3ZvaWQg
QXJndW1lbnRDb2RlcjxXZWJLaXQ6OlRleHRJbnB1dENvbnRleHQ+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgV2ViS2l0OjpUZXh0SW5wdXRDb250ZXh0JiBjb250ZXh0KQoreworICAg
IGVuY29kZXIgPDwgY29udGV4dC5yZWN0OworICAgIGVuY29kZXIgPDwgY29udGV4dC5pZGVudGlm
aWVyOworfQorCitPcHRpb25hbDxXZWJLaXQ6OlRleHRJbnB1dENvbnRleHQ+IEFyZ3VtZW50Q29k
ZXI8V2ViS2l0OjpUZXh0SW5wdXRDb250ZXh0Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7
CisgICAgV2ViS2l0OjpUZXh0SW5wdXRDb250ZXh0IGNvbnRleHQ7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShjb250ZXh0LnJlY3QpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoY29udGV4dC5pZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBjb250ZXh0OworfQorCit9CisKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RleHRJbnB1dENvbnRleHQuaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1RleHRJbnB1dENvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NTczY2Q5OTI0MGZiZTBh
MTQzMjNiODllNDI0OGY2ZGNhMzQ3OTdjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvVGV4dElucHV0Q29udGV4dC5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9FbGVtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBUZXh0SW5wdXRDb250ZXh0IHsKKyAgICBXZWJDb3Jl
OjpGbG9hdFJlY3QgcmVjdDsKKworICAgIFN0cmluZyBpZGVudGlmaWVyOworCisgICAgUmVmUHRy
PFdlYkNvcmU6OkVsZW1lbnQ+IGVsZW1lbnQ7CisKKyAgICB+VGV4dElucHV0Q29udGV4dCgpOwor
fTsKKworfQorCituYW1lc3BhY2UgSVBDIHsKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8V2ViS2l0OjpUZXh0SW5wdXRDb250ZXh0PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVu
Y29kZXImLCBjb25zdCBXZWJLaXQ6OlRleHRJbnB1dENvbnRleHQmKTsKKyAgICBzdGF0aWMgT3B0
aW9uYWw8V2ViS2l0OjpUZXh0SW5wdXRDb250ZXh0PiBkZWNvZGUoRGVjb2RlciYpOworfTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0CmluZGV4IDRhYjFmYTAwM2JhMWM0MmYyN2Y2ZDQ3YTEzNjljNGUzZjliMjQ1MjAu
LjFjNjQ2YmRjMWRiNmUzMmUwZWMzMDkwZjUyNmUyMDlkMzJjYzQ3NDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApA
QCAtMTI4LDYgKzEyOCw3IEBAIFNoYXJlZC9TaGFyZWRTdHJpbmdIYXNoU3RvcmUuY3BwCiBTaGFy
ZWQvU2hhcmVkU3RyaW5nSGFzaFRhYmxlUmVhZE9ubHkuY3BwCiBTaGFyZWQvU2hhcmVkU3RyaW5n
SGFzaFRhYmxlLmNwcAogU2hhcmVkL1N0YXRpc3RpY3NEYXRhLmNwcAorU2hhcmVkL1RleHRJbnB1
dENvbnRleHQuY3BwCiBTaGFyZWQvVG91Y2hCYXJNZW51RGF0YS5jcHAKIFNoYXJlZC9Ub3VjaEJh
ck1lbnVJdGVtRGF0YS5jcHAKIFNoYXJlZC9VUkxTY2hlbWVUYXNrUGFyYW1ldGVycy5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dAppbmRleCBhNzMwYTU1ZDEzYWE3MTM0ZjY3YmM1M2JkOWQxOTBhNWE1
YWUyMDBlLi5jYThlZjhmYWM4M2VkNjg1ODBmMjIyMjJkOTIzOTA1NzY3NGU5MmE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9T
b3VyY2VzQ29jb2EudHh0CkBAIC0yNTQsNiArMjU0LDcgQEAgVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tMaW5rSWNvblBhcmFtZXRlcnMubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3Bl
Y3RvclZpZXdDb250cm9sbGVyLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1Nlc3Npb25TdGF0
ZS5tbQorVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0SW5wdXRDb250ZXh0Lm1tCiBVSVByb2Nl
c3MvQVBJL0NvY29hL19XS1RodW1ibmFpbFZpZXcubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
VXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2Vy
Q29udGVudEZpbHRlci5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KaW5kZXggNzk2NWExZWRlYjA3YzAzMDE4MDFhZTY0NTZiZjAyZjIwMTcyZjYx
MC4uYzkwMzBkMjM4MWQ2NjMxOGU0M2E5N2YzMDgyODZmODg1NzRlM2ZjNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC00OSw2ICs0OSw3
IEBACiAjaW1wb3J0ICJSZW1vdGVPYmplY3RSZWdpc3RyeS5oIgogI2ltcG9ydCAiUmVtb3RlT2Jq
ZWN0UmVnaXN0cnlNZXNzYWdlcy5oIgogI2ltcG9ydCAiU2FmZUJyb3dzaW5nV2FybmluZy5oIgor
I2ltcG9ydCAiVGV4dElucHV0Q29udGV4dC5oIgogI2ltcG9ydCAiVUlEZWxlZ2F0ZS5oIgogI2lt
cG9ydCAiVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuaCIKICNpbXBvcnQgIlZlcnNpb25DaGVja3Mu
aCIKQEAgLTk2LDYgKzk3LDcgQEAKICNpbXBvcnQgIl9XS0luc3BlY3RvckludGVybmFsLmgiCiAj
aW1wb3J0ICJfV0tSZW1vdGVPYmplY3RSZWdpc3RyeUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tT
ZXNzaW9uU3RhdGVJbnRlcm5hbC5oIgorI2ltcG9ydCAiX1dLVGV4dElucHV0Q29udGV4dEludGVy
bmFsLmgiCiAjaW1wb3J0ICJfV0tWaXNpdGVkTGlua1N0b3JlSW50ZXJuYWwuaCIKICNpbXBvcnQg
Il9XS1dlYnNpdGVQb2xpY2llc0ludGVybmFsLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNz
Q29udGV4dENHLmg+CkBAIC00ODI2LDYgKzQ4MjgsMzQgQEAgLSAodm9pZClfa2lsbFdlYkNvbnRl
bnRQcm9jZXNzQW5kUmVzZXRTdGF0ZQogICAgIH0KIH0KIAorLSAodm9pZClfcmVxdWVzdFRleHRJ
bnB1dENvbnRleHRzSW5SZWN0OihDR1JlY3QpcmVjdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZChe
KShOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4gKikpY29tcGxldGlvbkhhbmRsZXIKK3sK
KyAgICBfcGFnZS0+dGV4dElucHV0Q29udGV4dHNJblJlY3QocmVjdCwgW2NhcHR1cmVkQ29tcGxl
dGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoVmVjdG9yPFdl
YktpdDo6VGV4dElucHV0Q29udGV4dD4gY29udGV4dHMpIHsKKyAgICAgICAgUmV0YWluUHRyPE5T
TXV0YWJsZUFycmF5PiBlbGVtZW50cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdF0pOworCisgICAgICAgIGZvciAoV2ViS2l0OjpUZXh0SW5wdXRDb250ZXh0JiBjb250ZXh0
IDogY29udGV4dHMpCisgICAgICAgICAgICBbZWxlbWVudHMgYWRkT2JqZWN0OltbW19XS1RleHRJ
bnB1dENvbnRleHQgYWxsb2NdIF9pbml0V2l0aElkZW50aWZpZXI6Y29udGV4dC5pZGVudGlmaWVy
IGJvdW5kaW5nUmVjdDpjb250ZXh0LnJlY3RdIGF1dG9yZWxlYXNlXV07CisKKyAgICAgICAgY2Fw
dHVyZWRDb21wbGV0aW9uSGFuZGxlcihlbGVtZW50cy5hdXRvcmVsZWFzZSgpKTsKKyAgICB9KTsK
K30KKworLSAodm9pZClfZm9jdXNUZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5wdXRDb250ZXh0
ICopdGV4dElucHV0Q29udGV4dCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShCT09MKSljb21w
bGV0aW9uSGFuZGxlcgoreworICAgIGlmICghW3RleHRJbnB1dENvbnRleHQuaWRlbnRpZmllciBp
c0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKE5PKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE5TU3RyaW5nICppZGVudGlm
aWVyID0gKE5TU3RyaW5nICopdGV4dElucHV0Q29udGV4dC5pZGVudGlmaWVyOworCisgICAgW3Nl
bGYgYmVjb21lRmlyc3RSZXNwb25kZXJdOworCisgICAgX3BhZ2UtPmZvY3VzVGV4dElucHV0Q29u
dGV4dChpZGVudGlmaWVyLCBbY2FwdHVyZWRDb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0
cihjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgc3VjY2VzcykgeworICAgICAgICBjYXB0dXJlZENv
bXBsZXRpb25IYW5kbGVyKHN1Y2Nlc3MpOworICAgIH0pOworfQorCiAjaWYgUExBVEZPUk0oTUFD
KQogLSAodm9pZClfc2V0U2hvdWxkU3VwcHJlc3NGaXJzdFJlc3BvbmRlckNoYW5nZXM6KEJPT0wp
c2hvdWxkU3VwcHJlc3MKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IGVkNjM2MmQ0NjgwYTYxNzg1ODBlYjc0ZjFj
YzFmMzE1ZGZlNjIyOWQuLmVjNjkxYzYxOGU3MWVkYzQxNzI0YjcwNmRiMWExZjYwNzg2NjhjYTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1ByaXZhdGUuaApAQCAtMTExLDYgKzExMSw3IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRl
Z2VyLCBfV0tSZWN0RWRnZSkgewogQGNsYXNzIF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5OwogQGNs
YXNzIF9XS1NhZmVCcm93c2luZ1dhcm5pbmc7CiBAY2xhc3MgX1dLU2Vzc2lvblN0YXRlOworQGNs
YXNzIF9XS1RleHRJbnB1dENvbnRleHQ7CiBAY2xhc3MgX1dLVGh1bWJuYWlsVmlldzsKIEBjbGFz
cyBfV0tXZWJzaXRlUG9saWNpZXM7CiBAY2xhc3MgX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyOwpA
QCAtNDE4LDYgKzQxOSwxMCBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLUmVj
dEVkZ2UpIHsKIC0gKHZvaWQpX3N0b3BBbGxNZWRpYVBsYXliYWNrOwogLSAodm9pZClfc3VzcGVu
ZEFsbE1lZGlhUGxheWJhY2s7CiAtICh2b2lkKV9yZXN1bWVBbGxNZWRpYVBsYXliYWNrOworCist
ICh2b2lkKV9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6KENHUmVjdClyZWN0IGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqKSlj
b21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX2ZvY3VzVGV4dElucHV0Q29udGV4dDooX1dLVGV4dElu
cHV0Q29udGV4dCAqKXRleHRJbnB1dEVsZW1lbnQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXiko
Qk9PTCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CisKIEBlbmQKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0SW5wdXRD
b250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dElucHV0
Q29udGV4dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyM2Y2NDEwYzMzZWRiZDZiNWMxY2NmYWNjN2IyNTgwNDMx
YmVlMGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLVGV4dElucHV0Q29udGV4dC5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKK1dLX0NMQVNTX0FWQUlMQUJMRShtYWNv
c3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSkKK0BpbnRlcmZhY2UgX1dLVGV4dElucHV0
Q29udGV4dCA6IE5TT2JqZWN0CisKKy8vIGlkZW50aWZpZXJzIGNhbiBiZSBjb21wYXJlZCB3aXRo
IGlzRXF1YWwuCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIGlkPE5TT2JqZWN0LCBO
U0NvcHlpbmc+IGlkZW50aWZpZXI7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIENH
UmVjdCBib3VuZGluZ1JlY3Q7CisKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0SW5wdXRDb250ZXh0Lm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRJbnB1dENvbnRleHQubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjNj
ODEzNmE3M2YxNDk0N2VmYWEzNWZmNzFjOTllYjk0NmRhMDIxNwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0SW5wdXRDb250ZXh0Lm1t
CkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBv
cnQgIl9XS1RleHRJbnB1dENvbnRleHRJbnRlcm5hbC5oIgorCitAaW1wbGVtZW50YXRpb24gX1dL
VGV4dElucHV0Q29udGV4dAorCistIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoSWRlbnRpZmllcjoo
aWQ8TlNPYmplY3QsIE5TQ29weWluZz4paWRlbnRpZmllciBib3VuZGluZ1JlY3Q6KENHUmVjdCli
b3VuZGluZ1JlY3QKK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikK
KyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF9pZGVudGlmaWVyID0gaWRlbnRpZmllcjsKKyAg
ICBfYm91bmRpbmdSZWN0ID0gYm91bmRpbmdSZWN0OworCisgICAgcmV0dXJuIHNlbGY7Cit9CisK
K0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tU
ZXh0SW5wdXRDb250ZXh0SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tUZXh0SW5wdXRDb250ZXh0SW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hODllOGFkYTA5
ODMzOTA1OGM5YTk2OGExNzJmZjc5MzJhNmExZGY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRJbnB1dENvbnRleHRJbnRlcm5hbC5o
CkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJfV0tUZXh0SW5wdXRDb250
ZXh0LmgiCisKK0BpbnRlcmZhY2UgX1dLVGV4dElucHV0Q29udGV4dCAoKQorCistIChpbnN0YW5j
ZXR5cGUpX2luaXRXaXRoSWRlbnRpZmllcjooaWQ8TlNPYmplY3QsIE5TQ29weWluZz4paWRlbnRp
ZmllciBib3VuZGluZ1JlY3Q6KENHUmVjdClib3VuZGluZ1JlY3Q7CisKK0BlbmQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDRiYWZkMzBhNDZhNTc5NmNlNWM3
MDZjZmQxYzcxOWEyZDRiMzI1ZTQuLjM1Yzg0YWUzOGIzYWY4MjFjMjUyNDYyYWYwMTBkNjdhOTU3
Y2ZmYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtODMs
NiArODMsNyBAQAogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKICNpbmNs
dWRlICJUZXh0Q2hlY2tlci5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyU3RhdGUuaCIKKyNpbmNs
dWRlICJUZXh0SW5wdXRDb250ZXh0LmgiCiAjaW5jbHVkZSAiVUlNZXNzYWdlUG9ydENoYW5uZWxQ
cm92aWRlci5oIgogI2luY2x1ZGUgIlVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzLmgiCiAjaW5jbHVk
ZSAiVW5kb09yUmVkby5oIgpAQCAtODgwOSw2ICs4ODEwLDI2IEBAIHZvaWQgV2ViUGFnZVByb3h5
Ojp3ZWJWaWV3RGlkTW92ZVRvV2luZG93KCkKICAgICB9CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5
Ojp0ZXh0SW5wdXRDb250ZXh0c0luUmVjdChXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViS2l0OjpUZXh0SW5wdXRDb250ZXh0Pik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFpc1ZhbGlkKCkpIHsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fcHJvY2Vz
cy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlRl
eHRJbnB1dENvbnRleHRzSW5SZWN0KHJlY3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
bV9wYWdlSUQpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6Zm9jdXNUZXh0SW5wdXRDb250ZXh0
KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkgeworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBt
X3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQ
YWdlOjpGb2N1c1RleHRJbnB1dENvbnRleHQoaWRlbnRpZmllciksIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCBtX3BhZ2VJRCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5k
ZWYgTUVSR0VfV0hFRUxfRVZFTlRTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CmluZGV4IGQyMTA4NTk2MmNhYjY3YjEyMDk5NmQ2ZTg1MWMxZWRiY2IzZTFkZjguLmE2ZTU2Mjg4
ZDc0MmQ4YjlmNjc4OTg0MTdhOTA5YjIxYTI1NGM2ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCkBAIC0yNzUsNiArMjc1LDcgQEAgc3RydWN0IEludGVyYWN0aW9uSW5m
b3JtYXRpb25SZXF1ZXN0Owogc3RydWN0IExvYWRQYXJhbWV0ZXJzOwogc3RydWN0IFBsYXRmb3Jt
UG9wdXBNZW51RGF0YTsKIHN0cnVjdCBQcmludEluZm87CitzdHJ1Y3QgVGV4dElucHV0Q29udGV4
dDsKIHN0cnVjdCBXZWJQb3B1cEl0ZW07CiBzdHJ1Y3QgVVJMU2NoZW1lVGFza1BhcmFtZXRlcnM7
CiAKQEAgLTYwNiw2ICs2MDcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXF1ZXN0Rm9udEF0dHJp
YnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6Rm9udEF0
dHJpYnV0ZXMmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBmb250QXR0cmli
dXRlc0NhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzJiwgQ2FsbGJhY2tJRCk7
CiAKKyAgICB2b2lkIHRleHRJbnB1dENvbnRleHRzSW5SZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViS2l0OjpUZXh0SW5wdXRDb250ZXh0Pik+
JiYpOworICAgIHZvaWQgZm9jdXNUZXh0SW5wdXRDb250ZXh0KGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIGRvdWJsZSBkaXNwbGF5ZWRDb250ZW50U2NhbGUoKSBjb25zdCB7IHJl
dHVybiBtX2xhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUuc2NhbGUoKTsgfQogICAgIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYgZXhwb3NlZENvbnRlbnRSZWN0KCkgY29uc3QgeyByZXR1cm4g
bV9sYXN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlLmV4cG9zZWRDb250ZW50UmVjdCgpOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3
Nzk1ZGRhMTQ3NWNhMjBkYmM0MzVmYmM5MzI3MWJjZmE0M2RlM2Q5Li5mYzg2MDRmMmI1YWZjMWNi
MmZhZjY2NjMzZGY5NTkxOWM0ZDE4Y2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTcyNyw2ICs3MjcsOSBAQAogCQkyRERGNzMxNTE4
RTk1MDYwMDA0RjVBNjYgLyogUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRERGNzMxMzE4RTk1
MDYwMDA0RjVBNjYgLyogUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLmggKi87IH07
CiAJCTJERTY5NDNEMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9s
bGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJERTY5NDNCMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRp
b25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJMkRFNjk0M0UxOEJEMkE2
ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRFNjk0M0MxOEJEMkE2
ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oICovOyB9
OworCQkyREU5QjEzNTIyMzFCNUIyMDA1Mjg3QjcgLyogVGV4dElucHV0Q29udGV4dC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRFOUIxMzMyMjMxQjVC
MjAwNTI4N0I3IC8qIFRleHRJbnB1dENvbnRleHQuaCAqLzsgfTsKKwkJMkRFOUIxM0EyMjMxRjYx
QzAwNTI4N0I3IC8qIF9XS1RleHRJbnB1dENvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERTlCMTM4MjIzMUY2MUMwMDUyODdCNyAvKiBfV0tU
ZXh0SW5wdXRDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMkRFOUIxM0MyMjMxRjc3QzAwNTI4N0I3IC8qIF9XS1RleHRJbnB1dENvbnRl
eHRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkRFOUIxM0IyMjMxRjc3QzAwNTI4N0I3IC8qIF9XS1RleHRJbnB1dENvbnRleHRJbnRlcm5h
bC5oICovOyB9OwogCQkyREVBQzVDRjFBQzM2OEJCMDBBMTk1RDggLyogX1dLRmluZE9wdGlvbnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERUFDNUNF
MUFDMzY4QkIwMEExOTVEOCAvKiBfV0tGaW5kT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJERUIxRDJFMjEyNzQ3MzYwMDkzMzkwNiAv
KiBBcmd1bWVudENvZGVyc0NGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBQUYwQzQ5MTJCMTYzMzQwMDhFNDlFMiAvKiBBcmd1bWVudENvZGVyc0NG
LmNwcCAqLzsgfTsKIAkJMkRGNkZFNTIyMTJFMTEwOTAwNDY5MDMwIC8qIFdlYlBhZ2UuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5NjNENkExMTNE
RDE5MjAwNTc0QkUyIC8qIFdlYlBhZ2UuY3BwICovOyB9OwpAQCAtMjc4Niw2ICsyNzg5LDExIEBA
CiAJCTJEREY3MzE0MThFOTUwNjAwMDRGNUE2NiAvKiBSZW1vdGVMYXllckJhY2tpbmdTdG9yZUNv
bGxlY3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZW1v
dGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTJERTY5NDNCMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250
cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBw
YXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVy
TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsK
IAkJMkRFNjk0M0MxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xs
ZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTbWFydE1hZ25p
ZmljYXRpb25Db250cm9sbGVyTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktp
dDIvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBC
VUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTJERTlCMTMzMjIzMUI1QjIwMDUyODdCNyAvKiBUZXh0
SW5wdXRDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRJbnB1
dENvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkRFOUIxMzQyMjMxQjVC
MjAwNTI4N0I3IC8qIFRleHRJbnB1dENvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gVGV4dElucHV0Q29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTJERTlCMTM3MjIzMUY2MUMwMDUyODdCNyAvKiBfV0tUZXh0SW5wdXRDb250ZXh0
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLVGV4dElucHV0
Q29udGV4dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkRFOUIxMzgyMjMxRjYx
QzAwNTI4N0I3IC8qIF9XS1RleHRJbnB1dENvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gX1dLVGV4dElucHV0Q29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkyREU5QjEzQjIyMzFGNzdDMDA1Mjg3QjcgLyogX1dLVGV4dElucHV0Q29udGV4dElu
dGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1RleHRJbnB1dENv
bnRleHRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREVBQzVDRTFB
QzM2OEJCMDBBMTk1RDggLyogX1dLRmluZE9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gX1dLRmluZE9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkRGMzk2MkEyMUM4REM1MDAwODgzNUUzIC8qIFdLSW5rUGlja2VyVmlldy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgbmFtZSA9IFdLSW5rUGlja2VyVmlldy5tbTsgcGF0aCA9IGlvcy9XS0lua1BpY2tl
clZpZXcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJERjM5NjJCMjFDOERDNTAw
MDg4MzVFMyAvKiBXS0lua1BpY2tlclZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tJbmtQaWNrZXJW
aWV3Lmg7IHBhdGggPSBpb3MvV0tJbmtQaWNrZXJWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC01MTA1LDYgKzUxMTMsOCBAQAogCQkJCTUyNzJCMjg4MTQwNjk4NUQwMDk2QTVE
MCAvKiBTdGF0aXN0aWNzRGF0YS5jcHAgKi8sCiAJCQkJNTI3MkIyODkxNDA2OTg1RDAwOTZBNUQw
IC8qIFN0YXRpc3RpY3NEYXRhLmggKi8sCiAJCQkJMUE1RTREQTMxMkQzQkQzRDAwOTlBMkJCIC8q
IFRleHRDaGVja2VyU3RhdGUuaCAqLywKKwkJCQkyREU5QjEzNDIyMzFCNUIyMDA1Mjg3QjcgLyog
VGV4dElucHV0Q29udGV4dC5jcHAgKi8sCisJCQkJMkRFOUIxMzMyMjMxQjVCMjAwNTI4N0I3IC8q
IFRleHRJbnB1dENvbnRleHQuaCAqLywKIAkJCQkyRkQ0M0I5MjFGQTAwNkEzMDA4M0Y1MUMgLyog
VG91Y2hCYXJNZW51RGF0YS5jcHAgKi8sCiAJCQkJMkZENDNCOTExRkEwMDZBMTAwODNGNTFDIC8q
IFRvdWNoQmFyTWVudURhdGEuaCAqLywKIAkJCQkyRjgwOURENTFGQkQxQkM5MDA1RkU2M0EgLyog
VG91Y2hCYXJNZW51SXRlbURhdGEuY3BwICovLApAQCAtNjA3OCw2ICs2MDg4LDkgQEAKIAkJCQkx
QTAwMkQzRjE5NkIzMjk0MDBCOUFENDQgLyogX1dLU2Vzc2lvblN0YXRlLmggKi8sCiAJCQkJMUEw
MDJEM0UxOTZCMzI5NDAwQjlBRDQ0IC8qIF9XS1Nlc3Npb25TdGF0ZS5tbSAqLywKIAkJCQkxQTAw
MkQ0MjE5NkIzMzcwMDBCOUFENDQgLyogX1dLU2Vzc2lvblN0YXRlSW50ZXJuYWwuaCAqLywKKwkJ
CQkyREU5QjEzODIyMzFGNjFDMDA1Mjg3QjcgLyogX1dLVGV4dElucHV0Q29udGV4dC5oICovLAor
CQkJCTJERTlCMTM3MjIzMUY2MUMwMDUyODdCNyAvKiBfV0tUZXh0SW5wdXRDb250ZXh0Lm1tICov
LAorCQkJCTJERTlCMTNCMjIzMUY3N0MwMDUyODdCNyAvKiBfV0tUZXh0SW5wdXRDb250ZXh0SW50
ZXJuYWwuaCAqLywKIAkJCQkyRDZCMzcxOTE4QTk2N0FEMDA0MkFFODAgLyogX1dLVGh1bWJuYWls
Vmlldy5oICovLAogCQkJCTJENkIzNzFBMThBOTY3QUQwMDQyQUU4MCAvKiBfV0tUaHVtYm5haWxW
aWV3Lm1tICovLAogCQkJCTJEQUNFNjREMThBREJGRjAwMEU0Q0E3NiAvKiBfV0tUaHVtYm5haWxW
aWV3SW50ZXJuYWwuaCAqLywKQEAgLTg5MzUsNiArODk0OCw4IEBACiAJCQkJMzc2MzExRkUxQTNG
QjYwMDAwNUEyRTUxIC8qIF9XS1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlSW50ZXJuYWwuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBMDAyRDQ0MTk2QjMzODkwMEI5QUQ0NCAvKiBfV0tTZXNzaW9u
U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMDAyRDQzMTk2QjMzNzAwMEI5QUQ0NCAvKiBf
V0tTZXNzaW9uU3RhdGVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkRFOUIxM0EyMjMx
RjYxQzAwNTI4N0I3IC8qIF9XS1RleHRJbnB1dENvbnRleHQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTJERTlCMTNDMjIzMUY3N0MwMDUyODdCNyAvKiBfV0tUZXh0SW5wdXRDb250ZXh0SW50ZXJuYWwu
aCBpbiBIZWFkZXJzICovLAogCQkJCTJENkIzNzFCMThBOTY3QUQwMDQyQUU4MCAvKiBfV0tUaHVt
Ym5haWxWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQkyREFDRTY0RTE4QURCRkYwMDBFNENBNzYg
LyogX1dLVGh1bWJuYWlsVmlld0ludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUU3MTg5
QzIxRjc5RDlFMDA1NUU5NzUgLyogX1dLVG91Y2hFdmVudEdlbmVyYXRvci5oIGluIEhlYWRlcnMg
Ki8sCkBAIC05NDAyLDYgKzk0MTcsNyBAQAogCQkJCTFBQTQxN0NCMTJDMDBDQ0EwMDJCRTY3QiAv
KiBUZXh0Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTNDRkJCQzgyMjI0RDFCNTAwMjY2
NTQ2IC8qIFRleHRDaGVja2VyQ29tcGxldGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1RTRE
QTQxMkQzQkQzRDAwOTlBMkJCIC8qIFRleHRDaGVja2VyU3RhdGUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTJERTlCMTM1MjIzMUI1QjIwMDUyODdCNyAvKiBUZXh0SW5wdXRDb250ZXh0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDRTFBMEJENzFBNDhFNkM2MDA1NEVGNzQgLyogVGV4dElucHV0U1BJLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUFGMjYzOTE0Njg3QzM5MDA0QTFFOEEgLyogVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWEuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRjA1RDg3MTQ2ODgz
NDgwMDhCMUU4MSAvKiBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5LmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
aW5kZXggNzg1YWE0MmU4OThmMGYzOGI5OGY4YTZkZWY4MGVhMzA1NGYxOWVjZS4uMDRmOWViNjdh
ZTkzNThhMzE4YTczYTgzODM5MDIzMThmZGY3NWJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTMxMjAsNiArMzEyMCw3IEBAIHZvaWQgV2Vi
UGFnZTo6ZGlkU3RhcnRQYWdlVHJhbnNpdGlvbigpCiAgICAgbV9oYXNFdmVyRm9jdXNlZEVsZW1l
bnREdWVUb1VzZXJJbnRlcmFjdGlvblNpbmNlUGFnZVRyYW5zaXRpb24gPSBmYWxzZTsKICAgICBt
X2lzRm9jdXNpbmdFbGVtZW50RHVlVG9Vc2VySW50ZXJhY3Rpb24gPSBmYWxzZTsKICAgICBtX2xh
c3RFZGl0b3JTdGF0ZVdhc0NvbnRlbnRFZGl0YWJsZSA9IEVkaXRvclN0YXRlSXNDb250ZW50RWRp
dGFibGU6OlVuc2V0OworICAgIG1fY3VycmVudFRleHRJbnB1dENvbnRleHRzLmNsZWFyKCk7CiAj
aWYgUExBVEZPUk0oTUFDKQogICAgIGlmIChoYXNQcmV2aW91c2x5Rm9jdXNlZER1ZVRvVXNlcklu
dGVyYWN0aW9uKQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldEhhc0hh
ZFNlbGVjdGlvbkNoYW5nZXNGcm9tVXNlckludGVyYWN0aW9uKG1faGFzRXZlckZvY3VzZWRFbGVt
ZW50RHVlVG9Vc2VySW50ZXJhY3Rpb25TaW5jZVBhZ2VUcmFuc2l0aW9uKSk7CkBAIC02NDYxLDYg
KzY0NjIsOTEgQEAgV2ViQ29yZTo6SW50UmVjdCBXZWJQYWdlOjpyZWN0Rm9yRWxlbWVudEF0SW50
ZXJhY3Rpb25Mb2NhdGlvbigpIGNvbnN0CiAKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIAorc3RhdGljIEludFJlY3QgZWxlbWVudFJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzKGNvbnN0
IE5vZGUmIG5vZGUsIGNvbnN0IEZyYW1lJiBmcmFtZSkKK3sKKyAgICBhdXRvKiB2aWV3ID0gZnJh
bWUudmlldygpOworICAgIGlmICghdmlldykKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1
dG8qIHJlbmRlcmVyID0gbm9kZS5yZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXIpCisgICAg
ICAgIHJldHVybiB7IH07CisKKyAgICByZXR1cm4gdmlldy0+Y29udGVudHNUb1dpbmRvdyhyZW5k
ZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSk7Cit9CisKK3N0YXRpYyBib29sIGlzRWRp
dGFibGVUZXh0SW5wdXRFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgaWYgKGlzPEhU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50PihlbGVtZW50KSkgeworICAgICAgICBpZiAoIWVsZW1l
bnQuaXNUZXh0RmllbGQoKSAmJiAhaXM8SFRNTFRleHRBcmVhRWxlbWVudD4oZWxlbWVudCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudD4oZWxlbWVudCkuaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUo
KTsKKyAgICB9CisKKyAgICBpZiAoZWxlbWVudC5pc1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2ViUGFn
ZTo6dGV4dElucHV0Q29udGV4dHNJblJlY3QoV2ViQ29yZTo6RmxvYXRSZWN0IHNlYXJjaFJlY3Qs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYktpdDo6VGV4dElucHV0Q29udGV4dD4p
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFZlY3RvcjxXZWJLaXQ6OlRleHRJbnB1dENv
bnRleHQ+IHRleHRJbnB1dENvbnRleHRzOworCisgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV9w
YWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5l
eHQoKSkgeworICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsK
KyAgICAgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
IERlcXVlPE5vZGUqPiBub2Rlc1RvU2VhcmNoOworICAgICAgICBub2Rlc1RvU2VhcmNoLmFwcGVu
ZChkb2N1bWVudCk7CisgICAgICAgIHdoaWxlICghbm9kZXNUb1NlYXJjaC5pc0VtcHR5KCkpIHsK
KyAgICAgICAgICAgIGF1dG8gbm9kZSA9IG5vZGVzVG9TZWFyY2gudGFrZUZpcnN0KCk7CisKKyAg
ICAgICAgICAgIC8vIEl0IGlzIHBvc3NpYmxlIHRvIGhhdmUgbmVzdGVkIHRleHQgaW5wdXQgY29u
dGV4dHMgKGUuZy4gPGlucHV0IHR5cGU9J3RleHQnPiBpbnNpZGUgY29udGVudGVkaXRhYmxlKSBi
dXQKKyAgICAgICAgICAgIC8vIGluIHRoaXMgY2FzZSB3ZSBqdXN0IHRha2UgdGhlIG91dGVybW9z
dCBjb250ZXh0IGFuZCBza2lwIHRoZSByZXN0LgorICAgICAgICAgICAgaWYgKCFpczxFbGVtZW50
Pigqbm9kZSkgfHwgIWlzRWRpdGFibGVUZXh0SW5wdXRFbGVtZW50KGRvd25jYXN0PEVsZW1lbnQ+
KCpub2RlKSkpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGF1dG8qIGNoaWxkID0gbm9kZS0+Zmly
c3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAg
ICAgICAgICAgICAgbm9kZXNUb1NlYXJjaC5hcHBlbmQoY2hpbGQpOworICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBJbnRSZWN0IGVsZW1lbnRS
ZWN0ID0gZWxlbWVudFJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzKCpub2RlLCAqZnJhbWUpOworICAg
ICAgICAgICAgaWYgKCFzZWFyY2hSZWN0LmludGVyc2VjdHMoZWxlbWVudFJlY3QpKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBXZWJLaXQ6OlRleHRJbnB1dENvbnRl
eHQgY29udGV4dDsKKyAgICAgICAgICAgIGNvbnRleHQuaWRlbnRpZmllciA9IGNyZWF0ZUNhbm9u
aWNhbFVVSURTdHJpbmcoKTsKKyAgICAgICAgICAgIGNvbnRleHQucmVjdCA9IGVsZW1lbnRSZWN0
OworICAgICAgICAgICAgY29udGV4dC5lbGVtZW50ID0gJmRvd25jYXN0PEVsZW1lbnQ+KCpub2Rl
KTsKKworICAgICAgICAgICAgdGV4dElucHV0Q29udGV4dHMuYXBwZW5kKGNvbnRleHQpOworICAg
ICAgICB9CisgICAgfQorCisgICAgbV9jdXJyZW50VGV4dElucHV0Q29udGV4dHMgPSB0ZXh0SW5w
dXRDb250ZXh0czsKKyAgICBjb21wbGV0aW9uSGFuZGxlcih0ZXh0SW5wdXRDb250ZXh0cyk7Cit9
CisKK3ZvaWQgV2ViUGFnZTo6Zm9jdXNUZXh0SW5wdXRDb250ZXh0KGNvbnN0IFN0cmluZyYgaWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3sKKyAgICBib29sIGZvY3VzZWQgPSBmYWxzZTsKKworICAgIGZvciAoYXV0byYgY29udGV4
dCA6IG1fY3VycmVudFRleHRJbnB1dENvbnRleHRzKSB7CisgICAgICAgIGlmIChjb250ZXh0Lmlk
ZW50aWZpZXIgIT0gaWRlbnRpZmllcikKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
IGlmICghY29udGV4dC5lbGVtZW50LT5pc0Nvbm5lY3RlZCgpKQorICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgY29udGV4dC5lbGVtZW50LT5mb2N1cygpOworICAgICAgICBmb2N1c2VkID0g
dHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY29tcGxldGlvbkhhbmRsZXIoZm9j
dXNlZCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmlu
ZGV4IDI4ZTU2NzljN2M4OGEyNTc1ZDAwNGE1YzAzNjRlODNhYjA2MjYwYWYuLjY3ZjMyMTI5MGQ0
YWY0YTA4MGI0ZjViODg3ZTY3MjFhOTU3YzZlZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTI1MSw2ICsyNTEsNyBAQCBzdHJ1Y3QgSW50ZXJhY3Rp
b25JbmZvcm1hdGlvbkF0UG9zaXRpb247CiBzdHJ1Y3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJl
cXVlc3Q7CiBzdHJ1Y3QgTG9hZFBhcmFtZXRlcnM7CiBzdHJ1Y3QgUHJpbnRJbmZvOworc3RydWN0
IFRleHRJbnB1dENvbnRleHQ7CiBzdHJ1Y3QgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0Owogc3Ry
dWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM7CiBzdHJ1Y3QgV2ViUHJlZmVyZW5jZXNTdG9y
ZTsKQEAgLTU5Miw2ICs1OTMsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCB2aWV3cG9ydFByb3BlcnRp
ZXNEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMmKTsKICAgICB2b2lk
IGV4ZWN1dGVFZGl0Q29tbWFuZFdpdGhDYWxsYmFjayhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIGFyZ3VtZW50LCBDYWxsYmFja0lEKTsKIAorICAgIHZvaWQgdGV4dElucHV0Q29udGV4dHNJ
blJlY3QoV2ViQ29yZTo6RmxvYXRSZWN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxX
ZWJLaXQ6OlRleHRJbnB1dENvbnRleHQ+KT4mJik7CisgICAgdm9pZCBmb2N1c1RleHRJbnB1dENv
bnRleHQoY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBzY3JlZW5T
aXplKCkgY29uc3Q7CiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIGF2YWlsYWJsZVNjcmVlblNpemUo
KSBjb25zdDsKQEAgLTE4NDYsNiArMTg1MCw4IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBib29sIG1fa2V5Ym9hcmRJc0F0dGFjaGVkIHsgZmFsc2UgfTsKICNlbmRp
ZgorCisgICAgVmVjdG9yPFdlYktpdDo6VGV4dElucHV0Q29udGV4dD4gbV9jdXJyZW50VGV4dElu
cHV0Q29udGV4dHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IGNj
ZTc3MjIyNmE1OWI4NzVhYTYwOGI4ZjJhN2EwMzBjNmYwNmZmMmYuLjExOGQ2YWFiOWI1Y2YwNjk4
MmQ0ZGJhNGQ4NGM3MTUwYWFkYjllZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNTQ1LDQgKzU0NSw3IEBAIG1l
c3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogCiAgICAgVXBkYXRlQ3VycmVudE1v
ZGlmaWVyU3RhdGUoT3B0aW9uU2V0PFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyPiBt
b2RpZmllcnMpCiAgICAgU2ltdWxhdGVEZXZpY2VPcmllbnRhdGlvbkNoYW5nZShkb3VibGUgYWxw
aGEsIGRvdWJsZSBiZXRhLCBkb3VibGUgZ2FtbWEpCisKKyAgICBUZXh0SW5wdXRDb250ZXh0c0lu
UmVjdChXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCkgLT4gKFZlY3RvcjxzdHJ1Y3QgV2ViS2l0OjpU
ZXh0SW5wdXRDb250ZXh0PiBjb250ZXh0cykgQXN5bmMKKyAgICBGb2N1c1RleHRJbnB1dENvbnRl
eHQoU3RyaW5nIGlkZW50aWZpZXIpIC0+IChib29sIHN1Y2Nlc3MpIEFzeW5jCiB9CmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTE5MWIxZWVmZjU4
MjIxOTY5NDVlZWMyNzBmMjIzMThmNzdmNmJjNS4uNGE0OWY5OTg3ZWQxMWNmYjNmNGJhMDc4NWFl
NDE3YzQ4ZDg4NjY3ZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE5LTAzLTA4ICBUaW0gSG9ydG9uICA8dGltb3Ro
eV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTUEkgdG8gcmV0cmlldmUgdGhlIHNl
dCBvZiB0ZXh0IGlucHV0cyBpbiBhIGdpdmVuIHJlY3QsIGFuZCBsYXRlciBmb2N1cyBvbmUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTQ5OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXF1ZXN0VGV4dElucHV0Q29udGV4dC5t
bTogQWRkZWQuCisgICAgICAgICgtW1dLV2ViVmlldyBzeW5jaHJvbm91c2x5UmVxdWVzdFRleHRJ
bnB1dENvbnRleHRzSW5SZWN0Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgc3luY2hyb25vdXNs
eUZvY3VzVGV4dElucHV0Q29udGV4dDpdKToKKyAgICAgICAgKGFwcGx5U3R5bGUpOgorICAgICAg
ICAoYXBwbHlJZnJhbWUpOgorICAgICAgICAoVEVTVCk6CisgICAgICAgIEFkZCBzb21lIHRlc3Rz
IGZvciB0aGlzIFNQSS4KKwogMjAxOS0wMy0wOCAgRGllZ28gUGlubyBHYXJjaWEgIDxkcGlub0Bp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFNldmVyYWwgSW5wdXRNZXRob2RGaWx0ZXIgdGVz
dHMgYXJlIGZhaWxpbmcKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzhjMGNiMjE0ZDYwNmVh
M2IxZDhiOWFiYzM5YTNmYTFkYTRkYmJkZi4uZjNhOTkwZGM5NjlmODAyNWVlMmVjOGJjNDM1MGM2
MjhkYjQ0N2UzMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkyLDYgKzkyLDcgQEAKIAkJ
MkQxNjQ2RTIxRDE4NjJDRDAwMDE1QTFBIC8qIERlZmVycmVkVmlld0luV2luZG93U3RhdGVDaGFu
Z2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDE2
NDZFMTFEMTg2MkNEMDAwMTVBMUEgLyogRGVmZXJyZWRWaWV3SW5XaW5kb3dTdGF0ZUNoYW5nZS5t
bSAqLzsgfTsKIAkJMkQxQzA0QTcxRDc2Mjk4QjAwMEE2ODE2IC8qIFRlc3ROYXZpZ2F0aW9uRGVs
ZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
RDFDMDRBNjFENzYyOThCMDAwQTY4MTYgLyogVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5tbSAqLzsg
fTsKIAkJMkQyMUZFNTkxRjA0NjQyOTAwQjU4RTdEIC8qIFdLUERGVmlld1N0YWJsZVByZXNlbnRh
dGlvblVwZGF0ZUNhbGxiYWNrLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkQyMUZFNTgxRjA0NjQyODAwQjU4RTdEIC8qIFdLUERGVmlld1N0YWJsZVBy
ZXNlbnRhdGlvblVwZGF0ZUNhbGxiYWNrLm1tICovOyB9OworCQkyRDJCRUIyRDIyMzI0RTVGMDA1
NTQ0Q0EgLyogUmVxdWVzdFRleHRJbnB1dENvbnRleHQubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDJCRUIyQzIyMzI0RTVGMDA1NTQ0Q0EgLyogUmVx
dWVzdFRleHRJbnB1dENvbnRleHQubW0gKi87IH07CiAJCTJEM0NBM0E4MjIxREY0QjQwMDg4RTgw
MyAvKiBQYWdlT3ZlcmxheVBsdWdpbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJEM0NBM0E0MjIxREYyMzkwMDg4RTgwMyAvKiBQYWdlT3ZlcmxheVBs
dWdpbi5tbSAqLzsgfTsKIAkJMkQ0Q0Y4QkQxRDgzNjBDQzAwMDFDRThEIC8qIFdLVGh1bWJuYWls
Vmlldy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJE
NENGOEJDMUQ4MzYwQ0MwMDAxQ0U4RCAvKiBXS1RodW1ibmFpbFZpZXcubW0gKi87IH07CiAJCTJE
NTFBMEM3MUM4QkYwMEMwMDc2NUM0NSAvKiBET01IVE1MVmlkZW9FbGVtZW50V3JhcHBlci5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENTFBMEM1MUM4
QkYwMDQwMDc2NUM0NSAvKiBET01IVE1MVmlkZW9FbGVtZW50V3JhcHBlci5tbSAqLzsgfTsKQEAg
LTE0MjYsNiArMTQyNyw3IEBACiAJCTJEMUMwNEE2MUQ3NjI5OEIwMDBBNjgxNiAvKiBUZXN0TmF2
aWdhdGlvbkRlbGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1l
ID0gVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5tbTsgcGF0aCA9IGNvY29hL1Rlc3ROYXZpZ2F0aW9u
RGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEMUZFMEFGMUFENDY1
QzEwMDZDRDlFNiAvKiBGaXhlZExheW91dFNpemUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBGaXhlZExheW91dFNpemUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTJEMjFGRTU4MUYwNDY0MjgwMEI1OEU3RCAvKiBXS1BERlZpZXdTdGFibGVQcmVz
ZW50YXRpb25VcGRhdGVDYWxsYmFjay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdLUERGVmlld1N0YWJsZVByZXNlbnRhdGlvblVwZGF0ZUNhbGxiYWNrLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRDJCRUIyQzIyMzI0RTVGMDA1NTQ0Q0EgLyog
UmVxdWVzdFRleHRJbnB1dENvbnRleHQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBSZXF1ZXN0VGV4dElucHV0Q29udGV4dC5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMkQzQ0EzQTQyMjFERjIzOTAwODhFODAzIC8qIFBhZ2VPdmVybGF5UGx1Z2lu
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGFnZU92ZXJsYXlQ
bHVnaW4ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENENGOEJDMUQ4MzYwQ0Mw
MDAxQ0U4RCAvKiBXS1RodW1ibmFpbFZpZXcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IG5hbWUgPSBXS1RodW1ibmFpbFZpZXcubW07IHBhdGggPSBXZWJLaXQvV0tUaHVtYm5h
aWxWaWV3Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDUxQTBDNTFDOEJGMDA0
MDA3NjVDNDUgLyogRE9NSFRNTFZpZGVvRWxlbWVudFdyYXBwZXIubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01IVE1MVmlkZW9FbGVtZW50V3JhcHBlci5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1ODYsNiArMjU4OCw3IEBACiAJCQkJNTJE
NUQ2QkQyMUI5RjFCMjAwNDZBQkE2IC8qIFJlbmRlcmluZ1Byb2dyZXNzLm1tICovLAogCQkJCTUy
RDVENkJFMjFCOUYxQjIwMDQ2QUJBNiAvKiBSZW5kZXJpbmdQcm9ncmVzc1BsdWdJbi5tbSAqLywK
IAkJCQk1MkQ1RDZCRjIxQjlGMUIyMDA0NkFCQTYgLyogUmVuZGVyaW5nUHJvZ3Jlc3NQcm90b2Nv
bC5oICovLAorCQkJCTJEMkJFQjJDMjIzMjRFNUYwMDU1NDRDQSAvKiBSZXF1ZXN0VGV4dElucHV0
Q29udGV4dC5tbSAqLywKIAkJCQlDRDlFMjkyQjFDOTBBNzFGMDAwQkI4MDAgLyogUmVxdWlyZXNV
c2VyQWN0aW9uRm9yUGxheWJhY2subW0gKi8sCiAJCQkJNTFDOEUxQTQxRjI2QUM1NDAwQkY3MzFC
IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MubW0gKi8sCiAJCQkJNUNDQjEwRTAyMTM0NTc5RDAw
QUM1QUYwIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIubW0gKi8sCkBAIC00MjE5LDYgKzQyMjIsNyBA
QAogCQkJCUExMkREQkZCMUU4MzZGMDcwMENGNkNBRSAvKiBSZW5kZXJlZEltYWdlV2l0aE9wdGlv
bnMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MkQ1RDZDMDIxQjlGMUIzMDA0NkFCQTYgLyogUmVu
ZGVyaW5nUHJvZ3Jlc3MubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNDY0QUY5MjIwQkI2NkVBMDA3
RjlCMTggLyogUmVuZGVyaW5nUHJvZ3Jlc3NUZXN0cy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTJE
MkJFQjJEMjIzMjRFNUYwMDU1NDRDQSAvKiBSZXF1ZXN0VGV4dElucHV0Q29udGV4dC5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTdDODNFMEM0MUQwQTY1NDIwMEZFQkNGMyAvKiBSZXF1aXJlc1VzZXJB
Y3Rpb25Gb3JQbGF5YmFjay5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjBFMUE0MTFBRTYw
MDQ0N0M0QyAvKiBSZXNpemVSZXZlcnNlUGFnaW5hdGVkV2ViVmlldy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3Q0NFN0YwRjFBNDExQUU2MDA0NDdDNEMgLyogUmVzaXplV2luZG93QWZ0ZXJDcmFz
aC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvUmVxdWVzdFRleHRJbnB1dENvbnRleHQubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlcXVlc3RUZXh0SW5wdXRDb250ZXh0Lm1tCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM1YWRkZDA3NzIyZTc5NzU3ODQ0NzdmM2M2ZGY3NDg0Zjk0ZWI3OTgKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlcXVlc3RU
ZXh0SW5wdXRDb250ZXh0Lm1tCkBAIC0wLDAgKzEsMTkxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCAiY29uZmlnLmgiCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJU
ZXN0LmgiCisjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCisjaW1wb3J0ICJUZXN0
V0tXZWJWaWV3LmgiCisjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaD4K
KyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV2Vi
S2l0Lmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLVGV4dElucHV0Q29udGV4dC5oPgorI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgorCisjZGVmaW5lIEVYUEVDVF9SRUNUX0VRKHhFeHBlY3RlZCwgeUV4
cGVjdGVkLCB3aWR0aEV4cGVjdGVkLCBoZWlnaHRFeHBlY3RlZCwgcmVjdCkgXAorICAgIEVYUEVD
VF9ET1VCTEVfRVEoeEV4cGVjdGVkLCByZWN0Lm9yaWdpbi54KTsgXAorICAgIEVYUEVDVF9ET1VC
TEVfRVEoeUV4cGVjdGVkLCByZWN0Lm9yaWdpbi55KTsgXAorICAgIEVYUEVDVF9ET1VCTEVfRVEo
d2lkdGhFeHBlY3RlZCwgcmVjdC5zaXplLndpZHRoKTsgXAorICAgIEVYUEVDVF9ET1VCTEVfRVEo
aGVpZ2h0RXhwZWN0ZWQsIHJlY3Quc2l6ZS5oZWlnaHQpOworCitAaW1wbGVtZW50YXRpb24gV0tX
ZWJWaWV3IChTeW5jaHJvbm91c1RleHRJbnB1dENvbnRleHQpCisKKy0gKE5TQXJyYXk8X1dLVGV4
dElucHV0Q29udGV4dCAqPiAqKXN5bmNocm9ub3VzbHlSZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJ
blJlY3Q6KENHUmVjdClyZWN0Cit7CisgICAgX19ibG9jayBib29sIGZpbmlzaGVkID0gZmFsc2U7
CisgICAgX19ibG9jayBSZXRhaW5QdHI8TlNBcnJheTxfV0tUZXh0SW5wdXRDb250ZXh0ICo+PiBy
ZXN1bHQ7CisgICAgW3NlbGYgX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDpyZWN0IGNv
bXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxfV0tUZXh0SW5wdXRDb250ZXh0ICo+ICpjb250ZXh0
cykgeworICAgICAgICByZXN1bHQgPSBjb250ZXh0czsKKyAgICAgICAgZmluaXNoZWQgPSB0cnVl
OworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZmluaXNoZWQpOworICAg
IHJldHVybiByZXN1bHQuYXV0b3JlbGVhc2UoKTsKK30KKworLSAoQk9PTClzeW5jaHJvbm91c2x5
Rm9jdXNUZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5wdXRDb250ZXh0ICopY29udGV4dAorewor
ICAgIF9fYmxvY2sgYm9vbCBmaW5pc2hlZCA9IGZhbHNlOworICAgIF9fYmxvY2sgYm9vbCBzdWNj
ZXNzID0gZmFsc2U7CisgICAgW3NlbGYgX2ZvY3VzVGV4dElucHV0Q29udGV4dDpjb250ZXh0IGNv
bXBsZXRpb25IYW5kbGVyOl4oQk9PTCBpbm5lclN1Y2Nlc3MpIHsKKyAgICAgICAgc3VjY2VzcyA9
IGlubmVyU3VjY2VzczsKKyAgICAgICAgZmluaXNoZWQgPSB0cnVlOworICAgIH1dOworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZmluaXNoZWQpOworICAgIHJldHVybiBzdWNjZXNzOwor
fQorCitAZW5kCisKK3N0YXRpYyBOU1N0cmluZyAqYXBwbHlTdHlsZShOU1N0cmluZyAqSFRNTFN0
cmluZykKK3sKKyAgICByZXR1cm4gW0AiPHN0eWxlPmJvZHkgeyBtYXJnaW46IDA7IH0gaWZyYW1l
IHsgYm9yZGVyOiBub25lOyB9PC9zdHlsZT4iIHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5nOkhUTUxT
dHJpbmddOworfQorCitzdGF0aWMgTlNTdHJpbmcgKmFwcGx5SWZyYW1lKE5TU3RyaW5nICpIVE1M
U3RyaW5nKQoreworICAgIHJldHVybiBhcHBseVN0eWxlKFtOU1N0cmluZyBzdHJpbmdXaXRoRm9y
bWF0OkAiPGlmcmFtZSBzcmM9XCJkYXRhOnRleHQvaHRtbCwlQFwiIHN0eWxlPSdwb3NpdGlvbjog
YWJzb2x1dGU7IHRvcDogMjAwcHg7Jz4iLCBbYXBwbHlTdHlsZShIVE1MU3RyaW5nKSBzdHJpbmdC
eUFkZGluZ1BlcmNlbnRFbmNvZGluZ1dpdGhBbGxvd2VkQ2hhcmFjdGVyczpbTlNDaGFyYWN0ZXJT
ZXQgVVJMUGF0aEFsbG93ZWRDaGFyYWN0ZXJTZXRdXV0pOworfQorCitURVNUKFdlYktpdCwgUmVx
dWVzdFRleHRJbnB1dENvbnRleHQpCit7CisgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3Vy
YXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOworICAgIFdLUHJlZmVyZW5jZXNTZXRUaHJlYWRlZFNjcm9sbGluZ0VuYWJs
ZWQoKFdLUHJlZmVyZW5jZXNSZWYpW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdLCBmYWxzZSk7
CisgICAgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIE5TQXJyYXk8X1dLVGV4
dElucHV0Q29udGV4dCAqPiAqY29udGV4dHM7CisKKyAgICAvLyBCYXNpYyBpbnB1dHMuCisKKyAg
ICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6YXBwbHlTdHlsZShAIjxpbnB1
dCB0eXBlPSd0ZXh0JyBzdHlsZT0nd2lkdGg6IDUwcHg7IGhlaWdodDogNTBweDsnPiIpXTsKKyAg
ICBjb250ZXh0cyA9IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlSZXF1ZXN0VGV4dElucHV0Q29udGV4
dHNJblJlY3Q6W3dlYlZpZXcgZnJhbWVdXTsKKyAgICBFWFBFQ1RfRVEoMVVMLCBjb250ZXh0cy5j
b3VudCk7CisgICAgRVhQRUNUX1JFQ1RfRVEoMCwgMCwgNTAsIDUwLCBjb250ZXh0c1swXS5ib3Vu
ZGluZ1JlY3QpOworCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOmFw
cGx5U3R5bGUoQCI8dGV4dGFyZWEgc3R5bGU9J3dpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsn
PjwvdGV4dGFyZWE+IildOworICAgIGNvbnRleHRzID0gW3dlYlZpZXcgc3luY2hyb25vdXNseVJl
cXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDpbd2ViVmlldyBmcmFtZV1dOworICAgIEVYUEVD
VF9FUSgxVUwsIGNvbnRleHRzLmNvdW50KTsKKyAgICBFWFBFQ1RfUkVDVF9FUSgwLCAwLCAxMDAs
IDEwMCwgY29udGV4dHNbMF0uYm91bmRpbmdSZWN0KTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9u
b3VzbHlMb2FkSFRNTFN0cmluZzphcHBseVN0eWxlKEAiPGRpdiBjb250ZW50ZWRpdGFibGUgc3R5
bGU9J3dpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsnPjwvZGl2PiIpXTsKKyAgICBjb250ZXh0
cyA9IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlSZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6
W3dlYlZpZXcgZnJhbWVdXTsKKyAgICBFWFBFQ1RfRVEoMVVMLCBjb250ZXh0cy5jb3VudCk7Cisg
ICAgRVhQRUNUX1JFQ1RfRVEoMCwgMCwgMTAwLCAxMDAsIGNvbnRleHRzWzBdLmJvdW5kaW5nUmVj
dCk7CisKKyAgICAvLyBCYXNpYyBpbnB1dHMgaW5zaWRlIHN1YmZyYW1lLgorCisgICAgW3dlYlZp
ZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOmFwcGx5SWZyYW1lKEAiPGlucHV0IHR5cGU9
J3RleHQnIHN0eWxlPSd3aWR0aDogNTBweDsgaGVpZ2h0OiA1MHB4Oyc+IildOworICAgIGNvbnRl
eHRzID0gW3dlYlZpZXcgc3luY2hyb25vdXNseVJlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVj
dDpbd2ViVmlldyBmcmFtZV1dOworICAgIEVYUEVDVF9FUSgxVUwsIGNvbnRleHRzLmNvdW50KTsK
KyAgICBFWFBFQ1RfUkVDVF9FUSgwLCAyMDAsIDUwLCA1MCwgY29udGV4dHNbMF0uYm91bmRpbmdS
ZWN0KTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzphcHBseUlm
cmFtZShAIjx0ZXh0YXJlYSBzdHlsZT0nd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4Oyc+PC90
ZXh0YXJlYT4iKV07CisgICAgY29udGV4dHMgPSBbd2ViVmlldyBzeW5jaHJvbm91c2x5UmVxdWVz
dFRleHRJbnB1dENvbnRleHRzSW5SZWN0Olt3ZWJWaWV3IGZyYW1lXV07CisgICAgRVhQRUNUX0VR
KDFVTCwgY29udGV4dHMuY291bnQpOworICAgIEVYUEVDVF9SRUNUX0VRKDAsIDIwMCwgMTAwLCAx
MDAsIGNvbnRleHRzWzBdLmJvdW5kaW5nUmVjdCk7CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91
c2x5TG9hZEhUTUxTdHJpbmc6YXBwbHlJZnJhbWUoQCI8ZGl2IGNvbnRlbnRlZGl0YWJsZSBzdHls
ZT0nd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4Oyc+PC9kaXY+IildOworICAgIGNvbnRleHRz
ID0gW3dlYlZpZXcgc3luY2hyb25vdXNseVJlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDpb
d2ViVmlldyBmcmFtZV1dOworICAgIEVYUEVDVF9FUSgxVUwsIGNvbnRleHRzLmNvdW50KTsKKyAg
ICBFWFBFQ1RfUkVDVF9FUSgwLCAyMDAsIDEwMCwgMTAwLCBjb250ZXh0c1swXS5ib3VuZGluZ1Jl
Y3QpOworCisgICAgLy8gUmVhZCBvbmx5IGlucHV0czsgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZC4K
KworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzphcHBseVN0eWxlKEAi
PGlucHV0IHR5cGU9J3RleHQnIHN0eWxlPSd3aWR0aDogNTBweDsgaGVpZ2h0OiA1MHB4OycgcmVh
ZG9ubHk+IildOworICAgIGNvbnRleHRzID0gW3dlYlZpZXcgc3luY2hyb25vdXNseVJlcXVlc3RU
ZXh0SW5wdXRDb250ZXh0c0luUmVjdDpbd2ViVmlldyBmcmFtZV1dOworICAgIEVYUEVDVF9FUSgw
VUwsIGNvbnRleHRzLmNvdW50KTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRN
TFN0cmluZzphcHBseVN0eWxlKEAiPHRleHRhcmVhIHN0eWxlPSd3aWR0aDogMTAwcHg7IGhlaWdo
dDogMTAwcHg7JyByZWFkb25seT4iKV07CisgICAgY29udGV4dHMgPSBbd2ViVmlldyBzeW5jaHJv
bm91c2x5UmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0Olt3ZWJWaWV3IGZyYW1lXV07Cisg
ICAgRVhQRUNUX0VRKDBVTCwgY29udGV4dHMuY291bnQpOworCisgICAgLy8gSW5wdXRzIG91dHNp
ZGUgdGhlIHJlcXVlc3RlZCByZWN0OyBzaG91bGQgbm90IGJlIGluY2x1ZGVkLgorCisgICAgW3dl
YlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOmFwcGx5U3R5bGUoQCI8aW5wdXQgdHlw
ZT0ndGV4dCcgc3R5bGU9J3dpZHRoOiA1MHB4OyBoZWlnaHQ6IDUwcHg7Jz4iKV07CisgICAgY29u
dGV4dHMgPSBbd2ViVmlldyBzeW5jaHJvbm91c2x5UmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5S
ZWN0OkNHUmVjdE1ha2UoMTAwLCAxMDAsIDEwMCwgMTAwKV07CisgICAgRVhQRUNUX0VRKDBVTCwg
Y29udGV4dHMuY291bnQpOworCisgICAgLy8gSW5wdXRzIHNjcm9sbGVkIG91dHNpZGUgdGhlIHJl
cXVlc3RlZCByZWN0OyBzaG91bGQgbm90IGJlIGluY2x1ZGVkLgorCisgICAgW3dlYlZpZXcgc3lu
Y2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOmFwcGx5U3R5bGUoQCI8aW5wdXQgdHlwZT0ndGV4dCcg
c3R5bGU9J3dpZHRoOiA1MHB4OyBoZWlnaHQ6IDUwcHg7Jz48YnI+PGRpdiBzdHlsZT0nd2lkdGg6
IDEwMHB4OyBoZWlnaHQ6IDUwMDBweDsnPjwvZGl2PiIpXTsKKyAgICBbd2ViVmlldyBvYmplY3RC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAid2luZG93LnNjcm9sbFRvKDAsIDUwMDApOyJdOworICAg
IFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKyAgICBjb250ZXh0cyA9
IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlSZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6W3dl
YlZpZXcgZnJhbWVdXTsKKyAgICBFWFBFQ1RfRVEoMFVMLCBjb250ZXh0cy5jb3VudCk7CisKKyAg
ICAvLyBJbnB1dHMgc2Nyb2xsZWQgaW50byB0aGUgcmVxdWVzdGVkIHJlY3QuCisKKyAgICBbd2Vi
VmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6YXBwbHlTdHlsZShAIjxpbnB1dCB0eXBl
PSd0ZXh0JyBzdHlsZT0nd2lkdGg6IDUwcHg7IGhlaWdodDogNTBweDsgcG9zaXRpb246IGFic29s
dXRlOyB0b3A6IDUwMDBweDsnPjxicj48ZGl2IHN0eWxlPSd3aWR0aDogMTAwcHg7IGhlaWdodDog
MTAwMDBweDsnPjwvZGl2PiIpXTsKKyAgICBbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OkAid2luZG93LnNjcm9sbFRvKDAsIDUwMDApOyJdOworICAgIFt3ZWJWaWV3IHdhaXRG
b3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKyAgICBjb250ZXh0cyA9IFt3ZWJWaWV3IHN5bmNo
cm9ub3VzbHlSZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6W3dlYlZpZXcgZnJhbWVdXTsK
KyAgICBFWFBFQ1RfRVEoMVVMLCBjb250ZXh0cy5jb3VudCk7CisgICAgRVhQRUNUX1JFQ1RfRVEo
MCwgMCwgNTAsIDUwLCBjb250ZXh0c1swXS5ib3VuZGluZ1JlY3QpOworCisgICAgLy8gTXVsdGlw
bGUgaW5wdXRzLgorCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOmFw
cGx5U3R5bGUoQCI8aW5wdXQgdHlwZT0ndGV4dCcgc3R5bGU9J3dpZHRoOiA1MHB4OyBoZWlnaHQ6
IDUwcHg7Jz48YnIvPjxpbnB1dCB0eXBlPSd0ZXh0JyBzdHlsZT0nd2lkdGg6IDUwcHg7IGhlaWdo
dDogNTBweDsnPjxici8+PGlucHV0IHR5cGU9J3RleHQnIHN0eWxlPSd3aWR0aDogNTBweDsgaGVp
Z2h0OiA1MHB4Oyc+IildOworICAgIGNvbnRleHRzID0gW3dlYlZpZXcgc3luY2hyb25vdXNseVJl
cXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDpbd2ViVmlldyBmcmFtZV1dOworICAgIEVYUEVD
VF9FUSgzVUwsIGNvbnRleHRzLmNvdW50KTsKKyAgICBFWFBFQ1RfUkVDVF9FUSgwLCAwLCA1MCwg
NTAsIGNvbnRleHRzWzBdLmJvdW5kaW5nUmVjdCk7CisgICAgRVhQRUNUX1JFQ1RfRVEoMCwgNTAs
IDUwLCA1MCwgY29udGV4dHNbMV0uYm91bmRpbmdSZWN0KTsKKyAgICBFWFBFQ1RfUkVDVF9FUSgw
LCAxMDAsIDUwLCA1MCwgY29udGV4dHNbMl0uYm91bmRpbmdSZWN0KTsKKworICAgIC8vIE5lc3Rl
ZCA8aW5wdXQ+LWluc2lkZS1jb250ZW50ZWRpdGFibGUuIE9ubHkgdGhlIGNvbnRlbnRlZGl0YWJs
ZSBpcyBjb25zaWRlcmVkLgorCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3Ry
aW5nOmFwcGx5U3R5bGUoQCI8ZGl2IGNvbnRlbnRlZGl0YWJsZSBzdHlsZT0nd2lkdGg6IDEwMHB4
OyBoZWlnaHQ6IDEwMHB4Oyc+PGlucHV0IHR5cGU9J3RleHQnIHN0eWxlPSd3aWR0aDogNTBweDsg
aGVpZ2h0OiA1MHB4Oyc+PC9kaXY+IildOworICAgIGNvbnRleHRzID0gW3dlYlZpZXcgc3luY2hy
b25vdXNseVJlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDpbd2ViVmlldyBmcmFtZV1dOwor
ICAgIEVYUEVDVF9FUSgxVUwsIGNvbnRleHRzLmNvdW50KTsKKyAgICBFWFBFQ1RfUkVDVF9FUSgw
LCAwLCAxMDAsIDEwMCwgY29udGV4dHNbMF0uYm91bmRpbmdSZWN0KTsKK30KKworVEVTVChXZWJL
aXQsIEZvY3VzVGV4dElucHV0Q29udGV4dCkKK3sKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29u
ZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7CisgICAgV0tQcmVmZXJlbmNlc1NldFRocmVhZGVkU2Nyb2xsaW5n
RW5hYmxlZCgoV0tQcmVmZXJlbmNlc1JlZilbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10sIGZh
bHNlKTsKKyAgICBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tU
ZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2
MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgTlNBcnJheTxf
V0tUZXh0SW5wdXRDb250ZXh0ICo+ICpjb250ZXh0czsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9u
b3VzbHlMb2FkSFRNTFN0cmluZzphcHBseVN0eWxlKEAiPGlucHV0IGlkPSd0ZXN0JyB0eXBlPSd0
ZXh0JyBzdHlsZT0nd2lkdGg6IDUwcHg7IGhlaWdodDogNTBweDsnPiIpXTsKKyAgICBjb250ZXh0
cyA9IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlSZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6
W3dlYlZpZXcgZnJhbWVdXTsKKyAgICBFWFBFQ1RfRVEoMVVMLCBjb250ZXh0cy5jb3VudCk7CisK
KyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBzeW5jaHJvbm91c2x5Rm9jdXNUZXh0SW5wdXRDb250
ZXh0OmNvbnRleHRzLmZpcnN0T2JqZWN0XSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJ0ZXN0Iiwg
W3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmFjdGl2ZUVs
ZW1lbnQuaWQiXSk7CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6
QCIiXTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgc3luY2hyb25vdXNseUZvY3VzVGV4dElu
cHV0Q29udGV4dDpjb250ZXh0cy5maXJzdE9iamVjdF0pOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>364202</attachid>
            <date>2019-03-10 15:52:00 -0700</date>
            <delta_ts>2019-03-10 16:06:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195499-20190310155159.patch</filename>
            <type>text/plain</type>
            <size>67221</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyNjc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWViMWQ4ZDQ4NTJhYWNj
NzRhMTVhMWYwY2E1OGJkZDkyNjI2N2ZjNi4uMTIwZTRlYjZmMzRjMDRkNGU5ZTNmNTcxNDQxOTM1
ZDhiMzZiYTQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE5LTAzLTEwICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTUEkgdG8g
cmV0cmlldmUgdGhlIHNldCBvZiB0ZXh0IGlucHV0cyBpbiBhIGdpdmVuIHJlY3QsIGFuZCBsYXRl
ciBmb2N1cyBvbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5NTQ5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5ldyBBUEkgdGVzdHM6IFdlYktpdC5SZXF1ZXN0VGV4dElucHV0Q29udGV4dCBhbmQgV2Vi
S2l0LkZvY3VzVGV4dElucHV0Q29udGV4dAorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6aWRlbnRpZmllckZvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OmVsZW1lbnRXaXRoSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6aWRlbnRpZmllZEVsZW1lbnRXYXNSZW1vdmVkRnJvbURvY3VtZW50KToKKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgQWRkIGEgbWVjaGFuaXNtIHdoZXJlIERvY3Vt
ZW50IHdpbGwgdmVuZCBhbiBPYmplY3RJZGVudGlmaWVyIGZvciBhIGdpdmVuCisgICAgICAgIGVs
ZW1lbnQsIGFuZCBjYW4gKGlmIHBvc3NpYmxlKSByZXRyaWV2ZSB0aGF0IGVsZW1lbnQgbGF0ZXIu
CisKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
OjpyZW1vdmVkRnJvbUFuY2VzdG9yKToKKyAgICAgICAgSWYgYW4gRWxlbWVudCBoYXMgYW4gaWRl
bnRpZmllciBjcmVhdGVkIGZvciBpdCwgaW5mb3JtIERvY3VtZW50IHRvIHJlbW92ZQorICAgICAg
ICBpdCBmcm9tIHRoZSBpZGVudGlmaWVyIG1hcCB3aGVuIHRoZSBlbGVtZW50IGlzIGRldGFjaGVk
LgorCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpjcmVhdGVFbGVtZW50SWRlbnRpZmllcik6
CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vRWxlbWVudElkZW50aWZp
ZXIuaDogQWRkZWQuCisgICAgICAgICogZG9tL0VsZW1lbnRSYXJlRGF0YS5jcHA6CisgICAgICAg
ICogZG9tL0VsZW1lbnRSYXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVE
YXRhOjpoYXNFbGVtZW50SWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50UmFyZURhdGE6OnNldEhhc0VsZW1lbnRJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnRSYXJlRGF0YTo6RWxlbWVudFJhcmVEYXRhKToKKyAgICAgICAgU3RvcmUgYSBiaXQg
aW5kaWNhdGluZyBpZiB0aGUgRWxlbWVudCBoYXMgaGFkIGEgaWRlbnRpZmllciBjcmVhdGVkIGZv
ciBpdCwKKyAgICAgICAgc28gdGhhdCB3ZSBjYW4gYXZvaWQgYSBoYXNoIGxvb2t1cCBvbiBldmVy
eSBFbGVtZW50IHJlbW92YWwuCisKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAqIGh0
bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaDoKKwogMjAxOS0wMy0wOSAgWmFsYW4gQnVq
dGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb250ZW50Q2hhbmdlT2JzZXJ2ZXJd
IFN0YXJ0IG9ic2VydmluZyBmb3IgY29udGVudCBjaGFuZ2UgYmV0d2VlbiB0b3VjaEVuZCBhbmQg
bW91c2VNb3ZlZCBzdGFydApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4MGJlOTk5NGRiY2Y1MGRiZGE3MTVjYWY4ODky
ZGUzNzdjNGM5YTA2Li40ZmQzMjA3NTY3OWNlZjMxZTI2MjUyMTcyNjY0MGFmNjY1ODAwYWIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE5LTAzLTEwICBUaW0gSG9ydG9uICA8dGltb3Ro
eV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTUEkgdG8gcmV0cmlldmUgdGhlIHNl
dCBvZiB0ZXh0IGlucHV0cyBpbiBhIGdpdmVuIHJlY3QsIGFuZCBsYXRlciBmb2N1cyBvbmUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTQ5OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVkL1RleHRJbnB1dENvbnRleHQuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJLaXQ6OlRleHRJbnB1dENv
bnRleHQ+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYktpdDo6VGV4
dElucHV0Q29udGV4dD46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1RleHRJbnB1dENvbnRl
eHQuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlRleHRJbnB1dENvbnRleHQ6Om9wZXJhdG9y
PT0gY29uc3QpOgorICAgICAgICBBZGQgVGV4dElucHV0Q29udGV4dCwgd2hpY2ggcmVwcmVzZW50
cyBhIG1pbmltYWwgc2V0IG9mIGluZm9ybWF0aW9uCisgICAgICAgIGFib3V0IGEgdGV4dCBmaWVs
ZC4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgt
W1dLV2ViVmlldyBfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OmNvbXBsZXRpb25IYW5k
bGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2ZvY3VzVGV4dElucHV0Q29udGV4dDpjb21w
bGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1ByaXZhdGUuaDoKKyAgICAgICAgQWRkIFNQSSB0aGF0IGFsbG93cyBjbGllbnRzIHRvIGFzeW5j
aHJvbm91c2x5IHJlcXVlc3QgdGV4dCBpbnB1dAorICAgICAgICBjb250ZXh0cyBmb3IgYSBnaXZl
biByZWN0LCBhbmQgbGF0ZXIgZm9jdXMgYSBnaXZlbiBjb250ZXh0LgorCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0SW5wdXRDb250ZXh0Lmg6IEFkZGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dElucHV0Q29udGV4dC5tbTogQWRkZWQuCisgICAg
ICAgICgtW19XS1RleHRJbnB1dENvbnRleHQgX2luaXRXaXRoVGV4dElucHV0Q29udGV4dDpdKToK
KyAgICAgICAgKC1bX1dLVGV4dElucHV0Q29udGV4dCBib3VuZGluZ1JlY3RdKToKKyAgICAgICAg
KC1bX1dLVGV4dElucHV0Q29udGV4dCBfdGV4dElucHV0Q29udGV4dF0pOgorICAgICAgICAoLVtf
V0tUZXh0SW5wdXRDb250ZXh0IGlzRXF1YWw6XSk6CisgICAgICAgICgtW19XS1RleHRJbnB1dENv
bnRleHQgaGFzaF0pOgorICAgICAgICAoLVtfV0tUZXh0SW5wdXRDb250ZXh0IGNvcHlXaXRoWm9u
ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRJbnB1dENvbnRleHRJ
bnRlcm5hbC5oOiBBZGRlZC4KKyAgICAgICAgQWRkIGFuIFNQSSBvYmplY3QgdGhhdCBleHBvc2Vz
IGEgcmVhZC1vbmx5IHdpbmRvdyBvbiBhIFRleHRJbnB1dENvbnRleHQgdG8gY2xpZW50cy4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnRleHRJbnB1dENvbnRleHRzSW5SZWN0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojpmb2N1c1RleHRJbnB1dENvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgUGx1bWJpbmcgZnJvbSBXS1dlYlZpZXc8LT5XZWJQ
YWdlLgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0Ojpl
bGVtZW50UmVjdEluV2luZG93Q29vcmRpbmF0ZXMpOgorICAgICAgICAoV2ViS2l0Ojppc0VkaXRh
YmxlVGV4dElucHV0RWxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnRleHRJbnB1
dENvbnRleHRzSW5SZWN0KToKKyAgICAgICAgU2VhcmNoIHRoZSBET00gZm9yIHRleHQgaW5wdXQg
Y29udGV4dHM6IDxpbnB1dCB0eXBlPSd0ZXh0Jz4gKG9yIG90aGVyCisgICAgICAgIGZvcm0gZmll
bGRzIHRoYXQgZmFsbCBiYWNrIG9uIHRleHQgZmllbGQgYmVoYXZpb3IpLCA8dGV4dGFyZWE+LCBh
bmQKKyAgICAgICAgY29udGVudGVkaXRhYmxlIHJvb3RzLiBTdG9yZSB0aGUgV2ViUGFnZSwgRG9j
dW1lbnQsIGFuZCBFbGVtZW50IGlkZW50aWZpZXJzCisgICAgICAgIHNvIHRoYXQgd2UgY2FuIGZp
bmQgdGhlIGVsZW1lbnQgYWdhaW4gbGF0ZXIuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
Zm9jdXNUZXh0SW5wdXRDb250ZXh0KToKKyAgICAgICAgRmluZCB0aGUgZWxlbWVudCBmb3IgYSBn
aXZlbiAod2ViIHBhZ2UsIGRvY3VtZW50LCBlbGVtZW50KSB0cmlwbGUgYW5kIGZvY3VzIGl0LAor
ICAgICAgICBpZiBpdCdzIHN0aWxsIGF2YWlsYWJsZS4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW46CisKIDIwMTktMDMtMDkgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBbQ29udGVudENoYW5nZU9ic2VydmVyXSBTdGFydCBvYnNlcnZpbmcgZm9y
IGNvbnRlbnQgY2hhbmdlIGJldHdlZW4gdG91Y2hFbmQgYW5kIG1vdXNlTW92ZWQgc3RhcnQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA4ZDdkNzM5YjkyNmRhMmI2NTkxODRhOGJmZWVmNTUyNzI0NGNhZTRhLi41ODJjMGU4Y2Y3ZDAx
ZDRmN2RhYmI1NjgwODgxOGZiYTEyN2UyYzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03NDgsNiArNzQ4LDcgQEAKIAkJMkQy
OUVDQzYxOTJFQ0M4MzAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQyOUVDQzIxOTJF
Q0M4MzAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEMjlFQ0M4MTkyRUNDODMw
MDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDI5RUNDNDE5MkVDQzgzMDA5ODRCNzgg
LyogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEMjlFQ0NBMTkyRjFGMUQwMDk4NEI3OCAvKiBE
aXNwbGF5UmVmcmVzaE1vbml0b3JJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJEMjlFQ0M5MTkyRjFGMUQwMDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVz
aE1vbml0b3JJT1MuaCAqLzsgfTsKKwkJMkQyQkVCMzEyMjM0QTMzNTAwNTU0NENBIC8qIEVsZW1l
bnRJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRDJCRUIyRjIyMzRBMzM0MDA1NTQ0Q0EgLyogRWxlbWVudElkZW50aWZpZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRDJFMzRBQzIx
QTRFMTkyMDA0NTk4QjUgLyogRWRpdGFibGVJbWFnZVJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQyRTM0QTkyMUE0RTE5MTAwNDU5OEI1
IC8qIEVkaXRhYmxlSW1hZ2VSZWZlcmVuY2UuaCAqLzsgfTsKIAkJMkQzQTBFMzYxM0E3RDc2MTAw
RTg1QUYwIC8qIFNWR1BhcnNpbmdFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkQzQTBFMzUxM0E3RDc2MTAwRTg1QUYwIC8qIFNWR1BhcnNpbmdF
cnJvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTJEM0VGNDQ4MTkxNzkxNUMwMDAzNDE4NCAvKiBXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVs
ZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJE
M0VGNDQ0MTkxNzkxNUMwMDAzNDE4NCAvKiBXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdh
dGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
NjY5Nyw2ICs2Njk4LDcgQEAKIAkJMkQyOUVDQzMxOTJFQ0M4MzAwOTg0Qjc4IC8qIERpc3BsYXlS
ZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTJEMjlFQ0M0MTkyRUNDODMwMDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1v
bml0b3JNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlS
ZWZyZXNoTW9uaXRvck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQy
OUVDQzkxOTJGMUYxRDAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQyQkVCMkYyMjM0QTMzNDAwNTU0NENBIC8q
IEVsZW1lbnRJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVs
ZW1lbnRJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEMkUzNEE5
MjFBNEUxOTEwMDQ1OThCNSAvKiBFZGl0YWJsZUltYWdlUmVmZXJlbmNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVkaXRhYmxlSW1hZ2VSZWZlcmVuY2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQyRTM0QUIyMUE0RTE5MjAwNDU5OEI1IC8qIEVkaXRhYmxl
SW1hZ2VSZWZlcmVuY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RWRpdGFibGVJbWFnZVJlZmVyZW5jZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJEMkZDMDU0MTQ2MENENkYwMDI2MzYzMyAvKiBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcm9zc2ZhZGVHZW5lcmF0ZWRJ
bWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNzU5Miw2ICsyNzU5NCw3
IEBACiAJCQkJQjVCN0ExNkYxN0MxMDgwNjAwRTRBQTBBIC8qIEVsZW1lbnREYXRhLmNwcCAqLywK
IAkJCQlCNUI3QTE2RTE3QzEwNDgwMDBFNEFBMEEgLyogRWxlbWVudERhdGEuaCAqLywKIAkJCQlB
REUxMUY0QTE4RDgzMTFCMDA3ODk4M0IgLyogRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oICov
LAorCQkJCTJEMkJFQjJGMjIzNEEzMzQwMDU1NDRDQSAvKiBFbGVtZW50SWRlbnRpZmllci5oICov
LAogCQkJCUU0QUU3QzE1MTdEMUJCOTUwMDA5RkIzMSAvKiBFbGVtZW50SXRlcmF0b3IuaCAqLywK
IAkJCQlFNDAxQzI3NDE3Q0U1M0VDMDBDNDFBMzUgLyogRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9u
cy5oICovLAogCQkJCTRGQUI0ODY0MTY0M0E2NkQwMEY3MEMwNyAvKiBFbGVtZW50UmFyZURhdGEu
Y3BwICovLApAQCAtMjkxOTYsNiArMjkxOTksNyBAQAogCQkJCUU0NkEyQjFFMTdDQTc2QjEwMDBE
QkNEOCAvKiBFbGVtZW50Q2hpbGRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjVCN0Ex
NzExN0MxMEFDMDAwRTRBQTBBIC8qIEVsZW1lbnREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
M0Q0MzdBMTFENTdCM0Y0MDBBQjg1RUEgLyogRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMkQyQkVCMzEyMjM0QTMzNTAwNTU0NENBIC8qIEVsZW1lbnRJZGVu
dGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEFFN0MxNjE3RDFCQjk1MDAwOUZCMzEgLyog
RWxlbWVudEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDAxQzI3NTE3Q0U1M0VDMDBD
NDFBMzUgLyogRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NjNGNUQ0RjcwRThDNEI3MTAwQzBCRDA0IC8qIEVsZW1lbnRSYXJlRGF0YS5oIGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBhMWMwYWQzM2JlZjVlMjU2YWQwMzFkZGI0
MWYzMjJhMTMyNDBhMDAwLi40NDhjNDBmMWJjMzFkMTRiNWIwODk3NjcxYTI2ODQxMTdjNDQ0MjI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTg2MTIsNiArODYxMiwzMCBAQCB2b2lkIERv
Y3VtZW50OjpmcmFtZVdhc0Rpc2Nvbm5lY3RlZEZyb21Pd25lcigpCiAgICAgZGV0YWNoRnJvbUZy
YW1lKCk7CiB9CiAKK0VsZW1lbnRJZGVudGlmaWVyIERvY3VtZW50OjppZGVudGlmaWVyRm9yRWxl
bWVudChFbGVtZW50JiBlbGVtZW50KQoreworICAgIEFTU0VSVCgmZWxlbWVudC5kb2N1bWVudCgp
ID09IHRoaXMpOworICAgIGF1dG8gcmVzdWx0ID0gbV9pZGVudGlmaWVkRWxlbWVudHNNYXAuZW5z
dXJlKCZlbGVtZW50LCBbJl0geworICAgICAgICByZXR1cm4gZWxlbWVudC5jcmVhdGVFbGVtZW50
SWRlbnRpZmllcigpOworICAgIH0pOworICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnZhbHVl
OworfQorCitFbGVtZW50KiBEb2N1bWVudDo6ZWxlbWVudFdpdGhJZGVudGlmaWVyKGNvbnN0IEVs
ZW1lbnRJZGVudGlmaWVyJiBpZGVudGlmaWVyKQoreworICAgIGZvciAoYXV0byBpdCA9IG1faWRl
bnRpZmllZEVsZW1lbnRzTWFwLmJlZ2luKCk7IGl0ICE9IG1faWRlbnRpZmllZEVsZW1lbnRzTWFw
LmVuZCgpOyArK2l0KSB7CisgICAgICAgIGlmIChpdC0+dmFsdWUgPT0gaWRlbnRpZmllcikKKyAg
ICAgICAgICAgIHJldHVybiBpdC0+a2V5OworICAgIH0KKworICAgIHJldHVybiBuaWw7Cit9CisK
K3ZvaWQgRG9jdW1lbnQ6OmlkZW50aWZpZWRFbGVtZW50V2FzUmVtb3ZlZEZyb21Eb2N1bWVudChF
bGVtZW50JiBlbGVtZW50KQoreworICAgIG1faWRlbnRpZmllZEVsZW1lbnRzTWFwLnJlbW92ZSgm
ZWxlbWVudCk7Cit9CisKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQogCiBEZXZpY2VP
cmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXImIERvY3VtZW50OjpkZXZpY2VPcmll
bnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRl
eCAyYjk5ZDQ0NTRlMDc0YWZmZmMyODJkZGI2NDNhYjBiZWFjMGVhNzM4Li4zNzRlZTNlZDRhZTFm
ZDUyNzJmMDFiZDE5ODk2ZGNkM2YwZjljMTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMzQs
NiArMzQsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50RXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkRvY3VtZW50VGltaW5nLmgiCisjaW5jbHVk
ZSAiRWxlbWVudElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJGb2N1c0RpcmVjdGlvbi5oIgogI2lu
Y2x1ZGUgIkZvbnRTZWxlY3RvckNsaWVudC5oIgogI2luY2x1ZGUgIkZyYW1lRGVzdHJ1Y3Rpb25P
YnNlcnZlci5oIgpAQCAtMzg4LDYgKzM4OSwxMCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIERvY3VtZW50c01hcDo6VmFsdWVzSXRlcmF0b3JSYW5nZSBhbGxEb2N1bWVudHMo
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRG9jdW1lbnRzTWFwJiBhbGxEb2N1bWVudHNN
YXAoKTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIEVsZW1lbnRJZGVudGlmaWVyIGlkZW50aWZpZXJG
b3JFbGVtZW50KEVsZW1lbnQmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFbGVtZW50ICplbGVtZW50
V2l0aElkZW50aWZpZXIoY29uc3QgRWxlbWVudElkZW50aWZpZXImKTsKKyAgICB2b2lkIGlkZW50
aWZpZWRFbGVtZW50V2FzUmVtb3ZlZEZyb21Eb2N1bWVudChFbGVtZW50Jik7CisKICAgICBNZWRp
YVF1ZXJ5TWF0Y2hlciYgbWVkaWFRdWVyeU1hdGNoZXIoKTsKIAogICAgIHVzaW5nIENvbnRhaW5l
ck5vZGU6OnJlZjsKQEAgLTIwODMsNiArMjA4OCw4IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudENoYW5nZU9ic2VydmVyPiBt
X2NvbnRlbnRDaGFuZ2VPYnNlcnZlcjsKICNlbmRpZgorCisgICAgSGFzaE1hcDxFbGVtZW50Kiwg
RWxlbWVudElkZW50aWZpZXI+IG1faWRlbnRpZmllZEVsZW1lbnRzTWFwOwogfTsKIAogRWxlbWVu
dCogZXZlbnRUYXJnZXRFbGVtZW50Rm9yRG9jdW1lbnQoRG9jdW1lbnQqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAppbmRleCBiMGVhNWNiMmNmYzkyOGM0OTlmYmRjNzA1NmQ5NzA0NjY0YzBiYWY1Li5h
OTk2NDRhNzMxZDE2NTI3Y2U2NzMyZmMyODhhMDc2MzNhZjJlNjdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCkBAIC0yMDQ5LDYgKzIwNDksMTEgQEAgdm9pZCBFbGVtZW50OjpyZW1vdmVkRnJvbUFu
Y2VzdG9yKFJlbW92YWxUeXBlIHJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJiBvbGRQYXIKICAg
ICBpZiAoZnJhbWUgJiYgZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgZnJhbWUtPnBhZ2UoKS0+cmVt
b3ZlTGF0Y2hpbmdTdGF0ZUZvclRhcmdldCgqdGhpcyk7CiAjZW5kaWYKKworICAgIGlmIChoYXNS
YXJlRGF0YSgpICYmIGVsZW1lbnRSYXJlRGF0YSgpLT5oYXNFbGVtZW50SWRlbnRpZmllcigpKSB7
CisgICAgICAgIGRvY3VtZW50KCkuaWRlbnRpZmllZEVsZW1lbnRXYXNSZW1vdmVkRnJvbURvY3Vt
ZW50KCp0aGlzKTsKKyAgICAgICAgZWxlbWVudFJhcmVEYXRhKCktPnNldEhhc0VsZW1lbnRJZGVu
dGlmaWVyKGZhbHNlKTsKKyAgICB9CiB9CiAKIFNoYWRvd1Jvb3QqIEVsZW1lbnQ6OnNoYWRvd1Jv
b3QoKSBjb25zdApAQCAtNDE1Nyw2ICs0MTYyLDE1IEBAIFZlY3RvcjxSZWZQdHI8V2ViQW5pbWF0
aW9uPj4gRWxlbWVudDo6Z2V0QW5pbWF0aW9ucygpCiAgICAgcmV0dXJuIGFuaW1hdGlvbnM7CiB9
CiAKK0VsZW1lbnRJZGVudGlmaWVyIEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRJZGVudGlmaWVyKCkK
K3sKKyAgICBhdXRvJiByYXJlRGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpOworICAgIEFT
U0VSVCghcmFyZURhdGEuaGFzRWxlbWVudElkZW50aWZpZXIoKSk7CisKKyAgICByYXJlRGF0YS5z
ZXRIYXNFbGVtZW50SWRlbnRpZmllcih0cnVlKTsKKyAgICByZXR1cm4gRWxlbWVudElkZW50aWZp
ZXI6OmdlbmVyYXRlKCk7Cit9CisKICNpZiBFTkFCTEUoQ1NTX1RZUEVEX09NKQogU3R5bGVQcm9w
ZXJ0eU1hcCogRWxlbWVudDo6YXR0cmlidXRlU3R5bGVNYXAoKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgK
aW5kZXggYTk5MjhmN2I2YzAzYjU2YWNhODM5ZWNlNTk3YjQxN2QxYTMxODkxNC4uZTg1ZTBlODgx
NTY3ZjgzOGIzNDA1OGJkZmE2NDU5NGU2NDI3OWNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC01
OTIsNiArNTkyLDggQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPFJlZjxXZWJBbmltYXRpb24+
PiBhbmltYXRlKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4mJiwg
T3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIEtleWZyYW1lQW5pbWF0aW9uT3B0aW9ucz4+JiYpOwog
ICAgIFZlY3RvcjxSZWZQdHI8V2ViQW5pbWF0aW9uPj4gZ2V0QW5pbWF0aW9ucygpOwogCisgICAg
RWxlbWVudElkZW50aWZpZXIgY3JlYXRlRWxlbWVudElkZW50aWZpZXIoKTsKKwogI2lmIEVOQUJM
RShQT0lOVEVSX0VWRU5UUykKICAgICBPcHRpb25TZXQ8VG91Y2hBY3Rpb24+IGNvbXB1dGVkVG91
Y2hBY3Rpb25zKCkgY29uc3Q7CiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9M
TElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50SWRlbnRpZmllci5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmVk
Mzc4MjQyYTRjMDg5MDA2M2M4NTA5YTIyOGRjOGJkZmViNGZlYwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50SWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlm
aWVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBFbGVtZW50SWRlbnRpZmllclR5
cGUgeyB9OwordXNpbmcgRWxlbWVudElkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPEVsZW1l
bnRJZGVudGlmaWVyVHlwZT47CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50UmFyZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5j
cHAKaW5kZXggNGRkNjBlYjg0ZjYzZDEyZmU4MTRlMzZjMzVjYzUwMTIyNGNjOTcxMS4uOTI2NTdm
ZjNiMGYxN2IyZTBhZWZiMTI5ZmE4NDkxMTI2M2JjMzU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnRSYXJlRGF0YS5jcHAKQEAgLTM3LDkgKzM3LDkgQEAgc3RydWN0IFNhbWVTaXplQXNFbGVt
ZW50UmFyZURhdGEgOiBOb2RlUmFyZURhdGEgewogICAgIGludCB0YWJJbmRleDsKICAgICB1bnNp
Z25lZCBzaG9ydCBjaGlsZEluZGV4OwogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICB1
bnNpZ25lZCBiaXRmaWVsZHMgOiAxMTsKKyAgICB1bnNpZ25lZCBiaXRmaWVsZHMgOiAxMjsKICNl
bHNlCi0gICAgdW5zaWduZWQgYml0ZmllbGRzIDogMTA7CisgICAgdW5zaWduZWQgYml0ZmllbGRz
IDogMTE7CiAjZW5kaWYKICAgICBMYXlvdXRTaXplIHNpemVGb3JSZXNpemluZzsKICAgICBJbnRQ
b2ludCBzYXZlZExheWVyU2Nyb2xsUG9zaXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudFJhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVE
YXRhLmgKaW5kZXggZmU4MGUzMzFkNWNiMjEwYmE3YjA1ZDIxOTI3OGEwMzc1OTFiOTM5Zi4uYjZm
ZDY0MGI5Y2UzM2JkM2RiYWRjOGMyMTBmZjU0ZjQxOTc1NGE0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50UmFyZURhdGEuaApAQCAtMTIzLDYgKzEyMyw5IEBAIHB1YmxpYzoKICAgICBib29sIGhh
c0NTU0FuaW1hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ1NTQW5pbWF0aW9uOyB9CiAgICAg
dm9pZCBzZXRIYXNDU1NBbmltYXRpb24oYm9vbCB2YWx1ZSkgeyBtX2hhc0NTU0FuaW1hdGlvbiA9
IHZhbHVlOyB9CiAKKyAgICBib29sIGhhc0VsZW1lbnRJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1
cm4gbV9oYXNFbGVtZW50SWRlbnRpZmllcjsgfQorICAgIHZvaWQgc2V0SGFzRWxlbWVudElkZW50
aWZpZXIoYm9vbCB2YWx1ZSkgeyBtX2hhc0VsZW1lbnRJZGVudGlmaWVyID0gdmFsdWU7IH0KKwog
I2lmIEVOQUJMRShJTlRFUlNFQ1RJT05fT0JTRVJWRVIpCiAgICAgSW50ZXJzZWN0aW9uT2JzZXJ2
ZXJEYXRhKiBpbnRlcnNlY3Rpb25PYnNlcnZlckRhdGEoKSB7IHJldHVybiBtX2ludGVyc2VjdGlv
bk9ic2VydmVyRGF0YS5nZXQoKTsgfQogICAgIHZvaWQgc2V0SW50ZXJzZWN0aW9uT2JzZXJ2ZXJE
YXRhKHN0ZDo6dW5pcXVlX3B0cjxJbnRlcnNlY3Rpb25PYnNlcnZlckRhdGE+JiYgZGF0YSkgeyBt
X2ludGVyc2VjdGlvbk9ic2VydmVyRGF0YSA9IFdURk1vdmUoZGF0YSk7IH0KQEAgLTE4MCw2ICsx
ODMsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgdW5zaWduZWQgbV9oYXNQZW5kaW5nUmVzb3Vy
Y2VzIDogMTsKICAgICB1bnNpZ25lZCBtX2hhc0NTU0FuaW1hdGlvbiA6IDE7CisgICAgdW5zaWdu
ZWQgbV9oYXNFbGVtZW50SWRlbnRpZmllciA6IDE7CiAgICAgdW5zaWduZWQgbV9jaGlsZHJlbkFm
ZmVjdGVkQnlIb3ZlciA6IDE7CiAgICAgdW5zaWduZWQgbV9jaGlsZHJlbkFmZmVjdGVkQnlEcmFn
IDogMTsKICAgICAvLyBCaXRzIGZvciBkeW5hbWljIGNoaWxkIG1hdGNoaW5nLgpAQCAtMjI4LDYg
KzIzMiw3IEBAIGlubGluZSBFbGVtZW50UmFyZURhdGE6OkVsZW1lbnRSYXJlRGF0YShSZW5kZXJF
bGVtZW50KiByZW5kZXJlcikKICNlbmRpZgogICAgICwgbV9oYXNQZW5kaW5nUmVzb3VyY2VzKGZh
bHNlKQogICAgICwgbV9oYXNDU1NBbmltYXRpb24oZmFsc2UpCisgICAgLCBtX2hhc0VsZW1lbnRJ
ZGVudGlmaWVyKGZhbHNlKQogICAgICwgbV9jaGlsZHJlbkFmZmVjdGVkQnlIb3ZlcihmYWxzZSkK
ICAgICAsIG1fY2hpbGRyZW5BZmZlY3RlZEJ5RHJhZyhmYWxzZSkKICAgICAsIG1fY2hpbGRyZW5B
ZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCBhNjNjMTk0Yjhi
NTA3MzczMWNkOTE5MWIzMzEyNjFmMGY4ODg3MGM2Li4yMzY5ZWEyMDM2ZDhmMzNlZjU5YjAzZDlk
MTY4OGQ5NmEyMjUxODIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTI4Myw3ICsyODMsNyBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogCi0gICAgYm9vbCBpc1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzUm9vdEVkaXRhYmxlRWxlbWVudCgpIGNvbnN0Owog
ICAgIFdFQkNPUkVfRVhQT1JUIEVsZW1lbnQqIHJvb3RFZGl0YWJsZUVsZW1lbnQoKSBjb25zdDsK
IAogICAgIC8vIENhbGxlZCBieSB0aGUgcGFyc2VyIHdoZW4gdGhpcyBlbGVtZW50J3MgY2xvc2Ug
dGFnIGlzIHJlYWNoZWQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50LmgKaW5kZXggYjFlMzVjYjc3NmE4ZmUxNTE1ZjcxNmE3MmZjNzNlOTI0YTFj
MmJmMS4uY2Y4Yzc0NGI3MDNmYzU0ZWI1OTM5MTQwM2I2MTlmMmQ1NjNlZWY1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaApAQCAtOTgs
NiArOTgsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzaG93UGxhY2Vob2xk
ZXJJZk5lY2Vzc2FyeSgpOwogI2VuZGlmCiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIGJv
b2wgaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUoKSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAg
IEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCYsIEhUTUxGb3JtRWxlbWVudCopOwogICAgIGJvb2wgaXNQbGFjZWhvbGRlckVtcHR5KCkgY29u
c3Q7CkBAIC0xMDcsNyArMTA5LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBkaXNhYmxlZFN0
YXRlQ2hhbmdlZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVhZE9ubHlTdGF0ZUNoYW5nZWQoKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUoKSBj
b25zdDsKKwogICAgIHZvaWQgdXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KCk7CiAK
ICAgICB2b2lkIGNhY2hlU2VsZWN0aW9uKGludCBzdGFydCwgaW50IGVuZCwgVGV4dEZpZWxkU2Vs
ZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5CmluZGV4IGJmYWIwM2FiNGMwM2U1YWI1ZmRjN2M1OTBhYWFhMDcyNWJjNmZmOWUu
LjhkZWY4NDU3ZTgzN2QwMDZiNjM1Y2Q4Y2M5ZDZlZWRlYzNkMDJjMzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtNDUzLDYgKzQ1Myw3IEBAIGRlZiBoZWFk
ZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViS2l0OjpXZWJNb3VzZUV2ZW50JzogWyci
V2ViRXZlbnQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6V2ViVG91Y2hFdmVudCc6IFsnIldlYkV2
ZW50LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OldlYldoZWVsRXZlbnQnOiBbJyJXZWJFdmVudC5o
IiddLAorICAgICAgICAnc3RydWN0IFdlYktpdDo6VGV4dElucHV0Q29udGV4dCc6IFsnIlRleHRJ
bnB1dENvbnRleHQuaCInXSwKICAgICAgICAgJ3N0cnVjdCBXZWJLaXQ6OldlYlVzZXJTY3JpcHRE
YXRhJzogWyciV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmgiJ10sCiAgICAgICAg
ICdzdHJ1Y3QgV2ViS2l0OjpXZWJVc2VyU3R5bGVTaGVldERhdGEnOiBbJyJXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJEYXRhVHlwZXMuaCInXSwKICAgICAgICAgJ3N0cnVjdCBXZWJLaXQ6OldlYlNj
cmlwdE1lc3NhZ2VIYW5kbGVyRGF0YSc6IFsnIldlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFU
eXBlcy5oIiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVGV4dElucHV0Q29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9UZXh0SW5wdXRDb250ZXh0LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45MGU3YjNlNDM0Y2JlMGY4ODMyODhlMDhmNTE2YzI2OWQ1YjMxNDYyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVGV4dElucHV0Q29udGV4dC5jcHAKQEAg
LTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJUZXh0SW5wdXRDb250ZXh0LmgiCisKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCIKKworbmFtZXNwYWNlIElQQyB7CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJLaXQ6OlRleHRJ
bnB1dENvbnRleHQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViS2l0OjpUZXh0
SW5wdXRDb250ZXh0JiBjb250ZXh0KQoreworICAgIGVuY29kZXIgPDwgY29udGV4dC5ib3VuZGlu
Z1JlY3Q7CisgICAgZW5jb2RlciA8PCBjb250ZXh0LndlYlBhZ2VJZGVudGlmaWVyOworICAgIGVu
Y29kZXIgPDwgY29udGV4dC5kb2N1bWVudElkZW50aWZpZXI7CisgICAgZW5jb2RlciA8PCBjb250
ZXh0LmVsZW1lbnRJZGVudGlmaWVyOworfQorCitPcHRpb25hbDxXZWJLaXQ6OlRleHRJbnB1dENv
bnRleHQ+IEFyZ3VtZW50Q29kZXI8V2ViS2l0OjpUZXh0SW5wdXRDb250ZXh0Pjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCit7CisgICAgV2ViS2l0OjpUZXh0SW5wdXRDb250ZXh0IGNvbnRleHQ7
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb250ZXh0LmJvdW5kaW5nUmVjdCkpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb250ZXh0Lndl
YlBhZ2VJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBhdXRv
IGRvY3VtZW50SWRlbnRpZmllciA9IFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllcjo6ZGVjb2Rl
KGRlY29kZXIpOworICAgIGlmICghZG9jdW1lbnRJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIGNvbnRleHQuZG9jdW1lbnRJZGVudGlmaWVyID0gKmRvY3VtZW50
SWRlbnRpZmllcjsKKyAgICBhdXRvIGVsZW1lbnRJZGVudGlmaWVyID0gV2ViQ29yZTo6RWxlbWVu
dElkZW50aWZpZXI6OmRlY29kZShkZWNvZGVyKTsKKyAgICBpZiAoIWVsZW1lbnRJZGVudGlmaWVy
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGNvbnRleHQuZWxlbWVudElkZW50
aWZpZXIgPSAqZWxlbWVudElkZW50aWZpZXI7CisKKyAgICByZXR1cm4gY29udGV4dDsKK30KKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVGV4dElucHV0Q29udGV4dC5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvVGV4dElucHV0Q29udGV4dC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMzMTMx
MTUxMDExYTE4NTk3OTYyZDUzZGM0OWQ1Yjg3NWQxZTBiYjEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9UZXh0SW5wdXRDb250ZXh0LmgKQEAgLTAsMCArMSw1NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL0VsZW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVj
dC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFRleHRJbnB1dENvbnRleHQgewor
ICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBib3VuZGluZ1JlY3Q7CisKKyAgICB1aW50NjRfdCB3ZWJQ
YWdlSWRlbnRpZmllcjsKKyAgICBXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIgZG9jdW1lbnRJ
ZGVudGlmaWVyOworICAgIFdlYkNvcmU6OkVsZW1lbnRJZGVudGlmaWVyIGVsZW1lbnRJZGVudGlm
aWVyOworCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRleHRJbnB1dENvbnRleHQmIG90aGVy
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGJvdW5kaW5nUmVjdCA9PSBvdGhlci5ib3Vu
ZGluZ1JlY3QKKyAgICAgICAgICAgICYmIHdlYlBhZ2VJZGVudGlmaWVyID09IG90aGVyLndlYlBh
Z2VJZGVudGlmaWVyCisgICAgICAgICAgICAmJiBkb2N1bWVudElkZW50aWZpZXIgPT0gb3RoZXIu
ZG9jdW1lbnRJZGVudGlmaWVyCisgICAgICAgICAgICAmJiBlbGVtZW50SWRlbnRpZmllciA9PSBv
dGhlci5lbGVtZW50SWRlbnRpZmllcjsKKyAgICB9Cit9OworCit9CisKK25hbWVzcGFjZSBJUEMg
ewordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJLaXQ6OlRleHRJbnB1dENvbnRl
eHQ+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYktpdDo6VGV4
dElucHV0Q29udGV4dCYpOworICAgIHN0YXRpYyBPcHRpb25hbDxXZWJLaXQ6OlRleHRJbnB1dENv
bnRleHQ+IGRlY29kZShEZWNvZGVyJik7Cit9OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggNGFiMWZhMDAz
YmExYzQyZjI3ZjZkNDdhMTM2OWM0ZTNmOWIyNDUyMC4uMWM2NDZiZGMxZGI2ZTMyZTBlYzMwOTBm
NTI2ZTIwOWQzMmNjNDc0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0xMjgsNiArMTI4LDcgQEAgU2hhcmVk
L1NoYXJlZFN0cmluZ0hhc2hTdG9yZS5jcHAKIFNoYXJlZC9TaGFyZWRTdHJpbmdIYXNoVGFibGVS
ZWFkT25seS5jcHAKIFNoYXJlZC9TaGFyZWRTdHJpbmdIYXNoVGFibGUuY3BwCiBTaGFyZWQvU3Rh
dGlzdGljc0RhdGEuY3BwCitTaGFyZWQvVGV4dElucHV0Q29udGV4dC5jcHAKIFNoYXJlZC9Ub3Vj
aEJhck1lbnVEYXRhLmNwcAogU2hhcmVkL1RvdWNoQmFyTWVudUl0ZW1EYXRhLmNwcAogU2hhcmVk
L1VSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
b3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGE3
MzBhNTVkMTNhYTcxMzRmNjdiYzUzYmQ5ZDE5MGE1YTVhZTIwMGUuLmNhOGVmOGZhYzgzZWQ2ODU4
MGYyMjIyMmQ5MjM5MDU3Njc0ZTkyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNl
c0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTI1NCw2
ICsyNTQsNyBAQCBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0xpbmtJY29uUGFyYW1ldGVycy5tbQog
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0KIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLU2Vzc2lvblN0YXRlLm1tCitVSVByb2Nlc3MvQVBJL0NvY29h
L19XS1RleHRJbnB1dENvbnRleHQubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGh1bWJuYWls
Vmlldy5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3Jl
Lm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50RmlsdGVyLm1tCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA3OTY1YTFl
ZGViMDdjMDMwMTgwMWFlNjQ1NmJmMDJmMjAxNzJmNjEwLi44NDkyMGI4NDk0ZjQ4ZDVhYTE0Njgy
YjA0MTQzNjZlMjM3ODgxZDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbXBvcnQgIlJlbW90ZU9iamVj
dFJlZ2lzdHJ5LmgiCiAjaW1wb3J0ICJSZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VzLmgiCiAj
aW1wb3J0ICJTYWZlQnJvd3NpbmdXYXJuaW5nLmgiCisjaW1wb3J0ICJUZXh0SW5wdXRDb250ZXh0
LmgiCiAjaW1wb3J0ICJVSURlbGVnYXRlLmgiCiAjaW1wb3J0ICJVc2VyTWVkaWFQcm9jZXNzTWFu
YWdlci5oIgogI2ltcG9ydCAiVmVyc2lvbkNoZWNrcy5oIgpAQCAtOTYsNiArOTcsNyBAQAogI2lt
cG9ydCAiX1dLSW5zcGVjdG9ySW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1JlbW90ZU9iamVjdFJl
Z2lzdHJ5SW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1Nlc3Npb25TdGF0ZUludGVybmFsLmgiCisj
aW1wb3J0ICJfV0tUZXh0SW5wdXRDb250ZXh0SW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1Zpc2l0
ZWRMaW5rU3RvcmVJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLV2Vic2l0ZVBvbGljaWVzSW50ZXJu
YWwuaCIKICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cuaD4KQEAgLTQ4MjYsNiAr
NDgyOCwzMSBAQCBGT1JfRUFDSF9QUklWQVRFX1dLQ09OVEVOVFZJRVdfQUNUSU9OKEZPUldBUkRf
QUNUSU9OX1RPX1dLQ09OVEVOVFZJRVcpCiAgICAgfQogfQogCistICh2b2lkKV9yZXF1ZXN0VGV4
dElucHV0Q29udGV4dHNJblJlY3Q6KENHUmVjdClyZWN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lk
KF4pKE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqKSljb21wbGV0aW9uSGFuZGxlcgor
eworICAgIF9wYWdlLT50ZXh0SW5wdXRDb250ZXh0c0luUmVjdChyZWN0LCBbY2FwdHVyZWRDb21w
bGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChWZWN0b3I8
V2ViS2l0OjpUZXh0SW5wdXRDb250ZXh0PiBjb250ZXh0cykgeworICAgICAgICBSZXRhaW5QdHI8
TlNNdXRhYmxlQXJyYXk+IGVsZW1lbnRzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0V2l0aENhcGFjaXR5OmNvbnRleHRzLnNpemUoKV0pOworCisgICAgICAgIGZvciAoY29u
c3QgV2ViS2l0OjpUZXh0SW5wdXRDb250ZXh0JiBjb250ZXh0IDogY29udGV4dHMpCisgICAgICAg
ICAgICBbZWxlbWVudHMgYWRkT2JqZWN0OltbW19XS1RleHRJbnB1dENvbnRleHQgYWxsb2NdIF9p
bml0V2l0aFRleHRJbnB1dENvbnRleHQ6Y29udGV4dF0gYXV0b3JlbGVhc2VdXTsKKworICAgICAg
ICBjYXB0dXJlZENvbXBsZXRpb25IYW5kbGVyKGVsZW1lbnRzLmF1dG9yZWxlYXNlKCkpOworICAg
IH0pOworfQorCistICh2b2lkKV9mb2N1c1RleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1dENv
bnRleHQgKil0ZXh0SW5wdXRDb250ZXh0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKEJPT0wp
KWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgYXV0byB3ZWJDb250ZXh0ID0gW3RleHRJbnB1dENv
bnRleHQgX3RleHRJbnB1dENvbnRleHRdOworICAgIGlmICh3ZWJDb250ZXh0LndlYlBhZ2VJZGVu
dGlmaWVyICE9IF9wYWdlLT5wYWdlSUQoKSkKKyAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5T
SW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIlRoZSBwcm92aWRlZCBfV0tUZXh0SW5w
dXRDb250ZXh0IHdhcyBub3QgY3JlYXRlZCBieSB0aGlzIFdLV2ViVmlldy4iXTsKKworICAgIFtz
ZWxmIGJlY29tZUZpcnN0UmVzcG9uZGVyXTsKKworICAgIF9wYWdlLT5mb2N1c1RleHRJbnB1dENv
bnRleHQod2ViQ29udGV4dCwgW2NhcHR1cmVkQ29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQ
dHIoY29tcGxldGlvbkhhbmRsZXIpXShib29sIHN1Y2Nlc3MpIHsKKyAgICAgICAgY2FwdHVyZWRD
b21wbGV0aW9uSGFuZGxlcihzdWNjZXNzKTsKKyAgICB9KTsKK30KKwogI2lmIFBMQVRGT1JNKE1B
QykKIC0gKHZvaWQpX3NldFNob3VsZFN1cHByZXNzRmlyc3RSZXNwb25kZXJDaGFuZ2VzOihCT09M
KXNob3VsZFN1cHByZXNzCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCBlZDYzNjJkNDY4MGE2MTc4NTgwZWI3NGYx
Y2MxZjMxNWRmZTYyMjlkLi5lYzY5MWM2MThlNzFlZGM0MTcyNGI3MDZkYjFhMWY2MDc4NjY4Y2E5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdQcml2YXRlLmgKQEAgLTExMSw2ICsxMTEsNyBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50
ZWdlciwgX1dLUmVjdEVkZ2UpIHsKIEBjbGFzcyBfV0tSZW1vdGVPYmplY3RSZWdpc3RyeTsKIEBj
bGFzcyBfV0tTYWZlQnJvd3NpbmdXYXJuaW5nOwogQGNsYXNzIF9XS1Nlc3Npb25TdGF0ZTsKK0Bj
bGFzcyBfV0tUZXh0SW5wdXRDb250ZXh0OwogQGNsYXNzIF9XS1RodW1ibmFpbFZpZXc7CiBAY2xh
c3MgX1dLV2Vic2l0ZVBvbGljaWVzOwogQGNsYXNzIF9XS1dlYlZpZXdQcmludEZvcm1hdHRlcjsK
QEAgLTQxOCw2ICs0MTksMTAgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1Jl
Y3RFZGdlKSB7CiAtICh2b2lkKV9zdG9wQWxsTWVkaWFQbGF5YmFjazsKIC0gKHZvaWQpX3N1c3Bl
bmRBbGxNZWRpYVBsYXliYWNrOwogLSAodm9pZClfcmVzdW1lQWxsTWVkaWFQbGF5YmFjazsKKwor
LSAodm9pZClfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OihDR1JlY3QpcmVjdCBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4gKikp
Y29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlv
cyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9mb2N1c1RleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJ
bnB1dENvbnRleHQgKil0ZXh0SW5wdXRFbGVtZW50IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4p
KEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiBAZW5kCiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dElucHV0
Q29udGV4dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRJbnB1
dENvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDdiMWJkNzhlODhiNWY3YjgzYmI0MzVkMTI5NDQ5YzMy
M2VmMDM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1RleHRJbnB1dENvbnRleHQuaApAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCitXS19DTEFTU19BVkFJTEFCTEUobWFj
b3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpCitAaW50ZXJmYWNlIF9XS1RleHRJbnB1
dENvbnRleHQgOiBOU09iamVjdCA8TlNDb3B5aW5nPgorCitAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHkpIENHUmVjdCBib3VuZGluZ1JlY3Q7CisKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0SW5wdXRDb250ZXh0Lm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRJbnB1dENvbnRleHQubW0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZDY2ODU2MDQ0NWFiZDVhNzI0YWFkNjdmZTJkYjk0OTY4NTM4MDAxZgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0SW5w
dXRDb250ZXh0Lm1tCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIl9XS1RleHRJbnB1dENvbnRleHQuaCIKKworI2ltcG9ydCAiVGV4dElu
cHV0Q29udGV4dC5oIgorI2ltcG9ydCAiX1dLVGV4dElucHV0Q29udGV4dEludGVybmFsLmgiCisK
K0BpbXBsZW1lbnRhdGlvbiBfV0tUZXh0SW5wdXRDb250ZXh0IHsKKyAgICBXZWJLaXQ6OlRleHRJ
bnB1dENvbnRleHQgX3RleHRJbnB1dENvbnRleHQ7Cit9CisKKy0gKGluc3RhbmNldHlwZSlfaW5p
dFdpdGhUZXh0SW5wdXRDb250ZXh0Oihjb25zdCBXZWJLaXQ6OlRleHRJbnB1dENvbnRleHQmKWNv
bnRleHQKK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKworICAgIF90ZXh0SW5wdXRDb250ZXh0ID0gY29udGV4dDsKKworICAg
IHJldHVybiBzZWxmOworfQorCistIChDR1JlY3QpYm91bmRpbmdSZWN0Cit7CisgICAgcmV0dXJu
IF90ZXh0SW5wdXRDb250ZXh0LmJvdW5kaW5nUmVjdDsKK30KKworLSAoY29uc3QgV2ViS2l0OjpU
ZXh0SW5wdXRDb250ZXh0JilfdGV4dElucHV0Q29udGV4dAoreworICAgIHJldHVybiBfdGV4dElu
cHV0Q29udGV4dDsKK30KKworLSAoQk9PTClpc0VxdWFsOihpZClvdGhlck9iamVjdAoreworICAg
IGlmIChzZWxmID09IG90aGVyT2JqZWN0KQorICAgICAgICByZXR1cm4gWUVTOworCisgICAgaWYg
KCFbb3RoZXJPYmplY3QgaXNLaW5kT2ZDbGFzczpbX1dLVGV4dElucHV0Q29udGV4dCBjbGFzc11d
KQorICAgICAgICByZXR1cm4gTk87CisKKyAgICBfV0tUZXh0SW5wdXRDb250ZXh0ICpvdGhlciA9
IChfV0tUZXh0SW5wdXRDb250ZXh0ICopb3RoZXJPYmplY3Q7CisKKyAgICByZXR1cm4gX3RleHRJ
bnB1dENvbnRleHQgPT0gb3RoZXItPl90ZXh0SW5wdXRDb250ZXh0OworfQorCistIChOU1VJbnRl
Z2VyKWhhc2gKK3sKKyAgICByZXR1cm4gX3RleHRJbnB1dENvbnRleHQuZWxlbWVudElkZW50aWZp
ZXIudG9VSW50NjQoKTsKK30KKworLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25lCit7
CisgICAgcmV0dXJuIFtzZWxmIHJldGFpbl07Cit9CisKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0SW5wdXRDb250ZXh0SW50ZXJuYWwu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0SW5wdXRDb250ZXh0
SW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZjMyYTQxMDA1ZmYyZmNkMjEzNWFmMjdlNTAyOGIzYmNh
ODJjNjk3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1RleHRJbnB1dENvbnRleHRJbnRlcm5hbC5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW1wb3J0ICJfV0tUZXh0SW5wdXRDb250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgeworc3RydWN0IFRleHRJbnB1dENvbnRleHQ7Cit9CisKK0BpbnRlcmZhY2UgX1dLVGV4dElu
cHV0Q29udGV4dCAoKQorCistIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoVGV4dElucHV0Q29udGV4
dDooY29uc3QgV2ViS2l0OjpUZXh0SW5wdXRDb250ZXh0Jiljb250ZXh0OworCistIChjb25zdCBX
ZWJLaXQ6OlRleHRJbnB1dENvbnRleHQmKV90ZXh0SW5wdXRDb250ZXh0OworCitAZW5kCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBkZTEzNmMwMzc3N2JlMzYw
ZmJjZTdlMDdlZGYxN2RiNTk3ZGEyMjVmLi4wNGFhNjZkMTllYjA2NWEyYjVjMGQyZWJjY2M4ZGQy
NjQzMDcwMzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAg
LTgzLDYgKzgzLDcgQEAKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlclN0YXRlLmgiCisj
aW5jbHVkZSAiVGV4dElucHV0Q29udGV4dC5oIgogI2luY2x1ZGUgIlVJTWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXIuaCIKICNpbmNsdWRlICJVUkxTY2hlbWVUYXNrUGFyYW1ldGVycy5oIgogI2lu
Y2x1ZGUgIlVuZG9PclJlZG8uaCIKQEAgLTg4MjEsNiArODgyMiwyNiBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6d2ViVmlld0RpZE1vdmVUb1dpbmRvdygpCiAgICAgfQogfQogCit2b2lkIFdlYlBhZ2VQ
cm94eTo6dGV4dElucHV0Q29udGV4dHNJblJlY3QoV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYktpdDo6VGV4dElucHV0Q29udGV4dD4pPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghaXNWYWxpZCgpKSB7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3By
b2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdl
OjpUZXh0SW5wdXRDb250ZXh0c0luUmVjdChyZWN0KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIG1fcGFnZUlEKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmZvY3VzVGV4dElucHV0Q29u
dGV4dChjb25zdCBUZXh0SW5wdXRDb250ZXh0JiBjb250ZXh0LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghaXNWYWxpZCgpKSB7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OldlYlBhZ2U6OkZvY3VzVGV4dElucHV0Q29udGV4dChjb250ZXh0KSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIG1fcGFnZUlEKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CiAKICN1bmRlZiBNRVJHRV9XSEVFTF9FVkVOVFMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKaW5kZXggYTgwMmIxMGUyMTU1Y2UyYWJlZjVhMDQ3ZDI5NDQyNTc2NTUyZGI4MC4u
ZjJhMzEzZjM0NjA3YzcyYjdjZGNmMTgxZTE3NzU0NDk5MjdmY2MyYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTI3NSw2ICsyNzUsNyBAQCBzdHJ1Y3QgSW50ZXJh
Y3Rpb25JbmZvcm1hdGlvblJlcXVlc3Q7CiBzdHJ1Y3QgTG9hZFBhcmFtZXRlcnM7CiBzdHJ1Y3Qg
UGxhdGZvcm1Qb3B1cE1lbnVEYXRhOwogc3RydWN0IFByaW50SW5mbzsKK3N0cnVjdCBUZXh0SW5w
dXRDb250ZXh0Owogc3RydWN0IFdlYlBvcHVwSXRlbTsKIHN0cnVjdCBVUkxTY2hlbWVUYXNrUGFy
YW1ldGVyczsKIApAQCAtNjA2LDYgKzYwNyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcXVlc3RG
b250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3Jl
OjpGb250QXR0cmlidXRlcyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIGZv
bnRBdHRyaWJ1dGVzQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXMmLCBDYWxs
YmFja0lEKTsKIAorICAgIHZvaWQgdGV4dElucHV0Q29udGV4dHNJblJlY3QoV2ViQ29yZTo6Rmxv
YXRSZWN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxUZXh0SW5wdXRDb250ZXh0Pik+
JiYpOworICAgIHZvaWQgZm9jdXNUZXh0SW5wdXRDb250ZXh0KGNvbnN0IFRleHRJbnB1dENvbnRl
eHQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKwogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgZG91YmxlIGRpc3BsYXllZENvbnRlbnRTY2FsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbGFzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZS5zY2FsZSgpOyB9CiAgICAgY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiBleHBvc2VkQ29udGVudFJlY3QoKSBjb25zdCB7IHJldHVybiBt
X2xhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUuZXhwb3NlZENvbnRlbnRSZWN0KCk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDc3
OTVkZGExNDc1Y2EyMGRiYzQzNWZiYzkzMjcxYmNmYTQzZGUzZDkuLmZjODYwNGYyYjVhZmMxY2Iy
ZmFmNjY2MzNkZjk1OTE5YzRkMThjZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzI3LDYgKzcyNyw5IEBACiAJCTJEREY3MzE1MThF
OTUwNjAwMDRGNUE2NiAvKiBSZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEREY3MzEzMThFOTUw
NjAwMDRGNUE2NiAvKiBSZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24uaCAqLzsgfTsK
IAkJMkRFNjk0M0QxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xs
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkRFNjk0M0IxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlv
bkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQkyREU2OTQzRTE4QkQyQTY4
MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREU2OTQzQzE4QkQyQTY4
MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VzLmggKi87IH07
CisJCTJERTlCMTM1MjIzMUI1QjIwMDUyODdCNyAvKiBUZXh0SW5wdXRDb250ZXh0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREU5QjEzMzIyMzFCNUIy
MDA1Mjg3QjcgLyogVGV4dElucHV0Q29udGV4dC5oICovOyB9OworCQkyREU5QjEzQTIyMzFGNjFD
MDA1Mjg3QjcgLyogX1dLVGV4dElucHV0Q29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRFOUIxMzgyMjMxRjYxQzAwNTI4N0I3IC8qIF9XS1Rl
eHRJbnB1dENvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkyREU5QjEzQzIyMzFGNzdDMDA1Mjg3QjcgLyogX1dLVGV4dElucHV0Q29udGV4
dEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyREU5QjEzQjIyMzFGNzdDMDA1Mjg3QjcgLyogX1dLVGV4dElucHV0Q29udGV4dEludGVybmFs
LmggKi87IH07CiAJCTJERUFDNUNGMUFDMzY4QkIwMEExOTVEOCAvKiBfV0tGaW5kT3B0aW9ucy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRFQUM1Q0Ux
QUMzNjhCQjAwQTE5NUQ4IC8qIF9XS0ZpbmRPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkRFQjFEMkUyMTI3NDczNjAwOTMzOTA2IC8q
IEFyZ3VtZW50Q29kZXJzQ0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUFBRjBDNDkxMkIxNjMzNDAwOEU0OUUyIC8qIEFyZ3VtZW50Q29kZXJzQ0Yu
Y3BwICovOyB9OwogCQkyREY2RkU1MjIxMkUxMTA5MDA0NjkwMzAgLyogV2ViUGFnZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzk2M0Q2QTExM0RE
MTkyMDA1NzRCRTIgLyogV2ViUGFnZS5jcHAgKi87IH07CkBAIC0yNzg2LDYgKzI3ODksMTEgQEAK
IAkJMkRERjczMTQxOEU5NTA2MDAwNEY1QTY2IC8qIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29s
bGVjdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbW90
ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMkRFNjk0M0IxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRy
b2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHBh
dGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owog
CQkyREU2OTQzQzE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxl
ck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNtYXJ0TWFnbmlm
aWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJV
SUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMkRFOUIxMzMyMjMxQjVCMjAwNTI4N0I3IC8qIFRleHRJ
bnB1dENvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dElucHV0
Q29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREU5QjEzNDIyMzFCNUIy
MDA1Mjg3QjcgLyogVGV4dElucHV0Q29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBUZXh0SW5wdXRDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMkRFOUIxMzcyMjMxRjYxQzAwNTI4N0I3IC8qIF9XS1RleHRJbnB1dENvbnRleHQu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tUZXh0SW5wdXRD
b250ZXh0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREU5QjEzODIyMzFGNjFD
MDA1Mjg3QjcgLyogX1dLVGV4dElucHV0Q29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBfV0tUZXh0SW5wdXRDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTJERTlCMTNCMjIzMUY3N0MwMDUyODdCNyAvKiBfV0tUZXh0SW5wdXRDb250ZXh0SW50
ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLVGV4dElucHV0Q29u
dGV4dEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJERUFDNUNFMUFD
MzY4QkIwMEExOTVEOCAvKiBfV0tGaW5kT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBfV0tGaW5kT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyREYzOTYyQTIxQzhEQzUwMDA4ODM1RTMgLyogV0tJbmtQaWNrZXJWaWV3Lm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBuYW1lID0gV0tJbmtQaWNrZXJWaWV3Lm1tOyBwYXRoID0gaW9zL1dLSW5rUGlja2Vy
Vmlldy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRGMzk2MkIyMUM4REM1MDAw
ODgzNUUzIC8qIFdLSW5rUGlja2VyVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0lua1BpY2tlclZp
ZXcuaDsgcGF0aCA9IGlvcy9XS0lua1BpY2tlclZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTUxMDUsNiArNTExMyw4IEBACiAJCQkJNTI3MkIyODgxNDA2OTg1RDAwOTZBNUQw
IC8qIFN0YXRpc3RpY3NEYXRhLmNwcCAqLywKIAkJCQk1MjcyQjI4OTE0MDY5ODVEMDA5NkE1RDAg
LyogU3RhdGlzdGljc0RhdGEuaCAqLywKIAkJCQkxQTVFNERBMzEyRDNCRDNEMDA5OUEyQkIgLyog
VGV4dENoZWNrZXJTdGF0ZS5oICovLAorCQkJCTJERTlCMTM0MjIzMUI1QjIwMDUyODdCNyAvKiBU
ZXh0SW5wdXRDb250ZXh0LmNwcCAqLywKKwkJCQkyREU5QjEzMzIyMzFCNUIyMDA1Mjg3QjcgLyog
VGV4dElucHV0Q29udGV4dC5oICovLAogCQkJCTJGRDQzQjkyMUZBMDA2QTMwMDgzRjUxQyAvKiBU
b3VjaEJhck1lbnVEYXRhLmNwcCAqLywKIAkJCQkyRkQ0M0I5MTFGQTAwNkExMDA4M0Y1MUMgLyog
VG91Y2hCYXJNZW51RGF0YS5oICovLAogCQkJCTJGODA5REQ1MUZCRDFCQzkwMDVGRTYzQSAvKiBU
b3VjaEJhck1lbnVJdGVtRGF0YS5jcHAgKi8sCkBAIC02MDc4LDYgKzYwODgsOSBAQAogCQkJCTFB
MDAyRDNGMTk2QjMyOTQwMEI5QUQ0NCAvKiBfV0tTZXNzaW9uU3RhdGUuaCAqLywKIAkJCQkxQTAw
MkQzRTE5NkIzMjk0MDBCOUFENDQgLyogX1dLU2Vzc2lvblN0YXRlLm1tICovLAogCQkJCTFBMDAy
RDQyMTk2QjMzNzAwMEI5QUQ0NCAvKiBfV0tTZXNzaW9uU3RhdGVJbnRlcm5hbC5oICovLAorCQkJ
CTJERTlCMTM4MjIzMUY2MUMwMDUyODdCNyAvKiBfV0tUZXh0SW5wdXRDb250ZXh0LmggKi8sCisJ
CQkJMkRFOUIxMzcyMjMxRjYxQzAwNTI4N0I3IC8qIF9XS1RleHRJbnB1dENvbnRleHQubW0gKi8s
CisJCQkJMkRFOUIxM0IyMjMxRjc3QzAwNTI4N0I3IC8qIF9XS1RleHRJbnB1dENvbnRleHRJbnRl
cm5hbC5oICovLAogCQkJCTJENkIzNzE5MThBOTY3QUQwMDQyQUU4MCAvKiBfV0tUaHVtYm5haWxW
aWV3LmggKi8sCiAJCQkJMkQ2QjM3MUExOEE5NjdBRDAwNDJBRTgwIC8qIF9XS1RodW1ibmFpbFZp
ZXcubW0gKi8sCiAJCQkJMkRBQ0U2NEQxOEFEQkZGMDAwRTRDQTc2IC8qIF9XS1RodW1ibmFpbFZp
ZXdJbnRlcm5hbC5oICovLApAQCAtODkzNSw2ICs4OTQ4LDggQEAKIAkJCQkzNzYzMTFGRTFBM0ZC
NjAwMDA1QTJFNTEgLyogX1dLU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGVJbnRlcm5hbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUEwMDJENDQxOTZCMzM4OTAwQjlBRDQ0IC8qIF9XS1Nlc3Npb25T
dGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwMDJENDMxOTZCMzM3MDAwQjlBRDQ0IC8qIF9X
S1Nlc3Npb25TdGF0ZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQkyREU5QjEzQTIyMzFG
NjFDMDA1Mjg3QjcgLyogX1dLVGV4dElucHV0Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MkRFOUIxM0MyMjMxRjc3QzAwNTI4N0I3IC8qIF9XS1RleHRJbnB1dENvbnRleHRJbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ2QjM3MUIxOEE5NjdBRDAwNDJBRTgwIC8qIF9XS1RodW1i
bmFpbFZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEQUNFNjRFMThBREJGRjAwMEU0Q0E3NiAv
KiBfV0tUaHVtYm5haWxWaWV3SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5RTcxODlD
MjFGNzlEOUUwMDU1RTk3NSAvKiBfV0tUb3VjaEV2ZW50R2VuZXJhdG9yLmggaW4gSGVhZGVycyAq
LywKQEAgLTk0MDIsNiArOTQxNyw3IEBACiAJCQkJMUFBNDE3Q0IxMkMwMENDQTAwMkJFNjdCIC8q
IFRleHRDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1M0NGQkJDODIyMjREMUI1MDAyNjY1
NDYgLyogVGV4dENoZWNrZXJDb21wbGV0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTVFNERB
NDEyRDNCRDNEMDA5OUEyQkIgLyogVGV4dENoZWNrZXJTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMkRFOUIxMzUyMjMxQjVCMjAwNTI4N0I3IC8qIFRleHRJbnB1dENvbnRleHQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUNFMUEwQkQ3MUE0OEU2QzYwMDU0RUY3NCAvKiBUZXh0SW5wdXRTUEkuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBQUYyNjM5MTQ2ODdDMzkwMDRBMUU4QSAvKiBUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGMDVEODcxNDY4ODM0
ODAwOEIxRTgxIC8qIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApp
bmRleCA2MDllMzY5NmNkNTZlMTc5YjFhM2NkMzJkNzJjNjcwZTI0YjlkMzE0Li5hZGRjODU3ODQz
Y2NmMjdlMmM5OTNhODgxZDljZmJkNzcxOWNmMDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNjQ4NSw2ICs2NDg1LDk1IEBAIFdlYkNvcmU6
OkludFJlY3QgV2ViUGFnZTo6cmVjdEZvckVsZW1lbnRBdEludGVyYWN0aW9uTG9jYXRpb24oKSBj
b25zdAogCiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKK3N0YXRpYyBJbnRSZWN0
IGVsZW1lbnRSZWN0SW5XaW5kb3dDb29yZGluYXRlcyhjb25zdCBOb2RlJiBub2RlLCBjb25zdCBG
cmFtZSYgZnJhbWUpCit7CisgICAgYXV0byogdmlldyA9IGZyYW1lLnZpZXcoKTsKKyAgICBpZiAo
IXZpZXcpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvKiByZW5kZXJlciA9IG5vZGUu
cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm4geyB9OworCisg
ICAgcmV0dXJuIHZpZXctPmNvbnRlbnRzVG9XaW5kb3cocmVuZGVyZXItPmFic29sdXRlQm91bmRp
bmdCb3hSZWN0KCkpOworfQorCitzdGF0aWMgYm9vbCBpc0VkaXRhYmxlVGV4dElucHV0RWxlbWVu
dChFbGVtZW50JiBlbGVtZW50KQoreworICAgIGlmIChpczxIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudD4oZWxlbWVudCkpIHsKKyAgICAgICAgaWYgKCFlbGVtZW50LmlzVGV4dEZpZWxkKCkgJiYg
IWlzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KGVsZW1lbnQpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+
KGVsZW1lbnQpLmlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxlKCk7CisgICAgfQorCisgICAgaWYg
KGVsZW1lbnQuaXNSb290RWRpdGFibGVFbGVtZW50KCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFdlYlBhZ2U6OnRleHRJbnB1dENvbnRleHRz
SW5SZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCBzZWFyY2hSZWN0LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxUZXh0SW5wdXRDb250ZXh0Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgVmVjdG9yPFdlYktpdDo6VGV4dElucHV0Q29udGV4dD4gdGV4dElucHV0Q29udGV4dHM7CisK
KyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtX3BhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJh
bWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CisgICAgICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOworICAgICAgICBpZiAoIWRvY3VtZW50KQorICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgRGVxdWU8Tm9kZSo+IG5vZGVzVG9TZWFyY2g7
CisgICAgICAgIG5vZGVzVG9TZWFyY2guYXBwZW5kKGRvY3VtZW50KTsKKyAgICAgICAgd2hpbGUg
KCFub2Rlc1RvU2VhcmNoLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgYXV0byBub2RlID0gbm9k
ZXNUb1NlYXJjaC50YWtlRmlyc3QoKTsKKworICAgICAgICAgICAgLy8gSXQgaXMgcG9zc2libGUg
dG8gaGF2ZSBuZXN0ZWQgdGV4dCBpbnB1dCBjb250ZXh0cyAoZS5nLiA8aW5wdXQgdHlwZT0ndGV4
dCc+IGluc2lkZSBjb250ZW50ZWRpdGFibGUpIGJ1dAorICAgICAgICAgICAgLy8gaW4gdGhpcyBj
YXNlIHdlIGp1c3QgdGFrZSB0aGUgb3V0ZXJtb3N0IGNvbnRleHQgYW5kIHNraXAgdGhlIHJlc3Qu
CisgICAgICAgICAgICBpZiAoIWlzPEVsZW1lbnQ+KCpub2RlKSB8fCAhaXNFZGl0YWJsZVRleHRJ
bnB1dEVsZW1lbnQoZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpKSkgeworICAgICAgICAgICAgICAg
IGZvciAoYXV0byogY2hpbGQgPSBub2RlLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNo
aWxkLT5uZXh0U2libGluZygpKQorICAgICAgICAgICAgICAgICAgICBub2Rlc1RvU2VhcmNoLmFw
cGVuZChjaGlsZCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIEludFJlY3QgZWxlbWVudFJlY3QgPSBlbGVtZW50UmVjdEluV2luZG93Q29v
cmRpbmF0ZXMoKm5vZGUsICpmcmFtZSk7CisgICAgICAgICAgICBpZiAoIXNlYXJjaFJlY3QuaW50
ZXJzZWN0cyhlbGVtZW50UmVjdCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgICAgIFdlYktpdDo6VGV4dElucHV0Q29udGV4dCBjb250ZXh0OworICAgICAgICAgICAgY29u
dGV4dC53ZWJQYWdlSWRlbnRpZmllciA9IG1fcGFnZUlEOworICAgICAgICAgICAgY29udGV4dC5k
b2N1bWVudElkZW50aWZpZXIgPSBkb2N1bWVudC0+aWRlbnRpZmllcigpOworICAgICAgICAgICAg
Y29udGV4dC5lbGVtZW50SWRlbnRpZmllciA9IGRvY3VtZW50LT5pZGVudGlmaWVyRm9yRWxlbWVu
dChkb3duY2FzdDxFbGVtZW50Pigqbm9kZSkpOworICAgICAgICAgICAgY29udGV4dC5ib3VuZGlu
Z1JlY3QgPSBlbGVtZW50UmVjdDsKKworICAgICAgICAgICAgdGV4dElucHV0Q29udGV4dHMuYXBw
ZW5kKGNvbnRleHQpOworICAgICAgICB9CisgICAgfQorCisgICAgY29tcGxldGlvbkhhbmRsZXIo
dGV4dElucHV0Q29udGV4dHMpOworfQorCit2b2lkIFdlYlBhZ2U6OmZvY3VzVGV4dElucHV0Q29u
dGV4dChjb25zdCBUZXh0SW5wdXRDb250ZXh0JiB0ZXh0SW5wdXRDb250ZXh0LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGNvbXBsZXRp
b25IYW5kbGVyKFsmXSB7CisgICAgICAgIGlmICh0ZXh0SW5wdXRDb250ZXh0LndlYlBhZ2VJZGVu
dGlmaWVyICE9IG1fcGFnZUlEKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
IGF1dG8qIGRvY3VtZW50ID0gRG9jdW1lbnQ6OmFsbERvY3VtZW50c01hcCgpLmdldCh0ZXh0SW5w
dXRDb250ZXh0LmRvY3VtZW50SWRlbnRpZmllcik7CisgICAgICAgIGlmICghZG9jdW1lbnQpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKGRvY3VtZW50LT5wYWdlKCkg
IT0gbV9wYWdlLmdldCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGF1
dG8qIGVsZW1lbnQgPSBkb2N1bWVudC0+ZWxlbWVudFdpdGhJZGVudGlmaWVyKHRleHRJbnB1dENv
bnRleHQuZWxlbWVudElkZW50aWZpZXIpOworICAgICAgICBpZiAoIWVsZW1lbnQpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgZWxlbWVudC0+Zm9jdXMoKTsKKworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9KCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAog
I3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAyNWVmMjMyNmYwMjU3NDhmOTkwYTM5YmM4NTFkNzQ2MWYy
NjQzZGMzLi5jNmVjN2JjOWI5ZjEyYmEyZDU0OGM2NGY1YWRkOGRjYTI2ZDFmYjVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0yNTEsNiArMjUxLDcg
QEAgc3RydWN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOwogc3RydWN0IEludGVy
YWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0Owogc3RydWN0IExvYWRQYXJhbWV0ZXJzOwogc3RydWN0
IFByaW50SW5mbzsKK3N0cnVjdCBUZXh0SW5wdXRDb250ZXh0Owogc3RydWN0IFdlYkF1dG9jb3Jy
ZWN0aW9uQ29udGV4dDsKIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOwogc3RydWN0
IFdlYlByZWZlcmVuY2VzU3RvcmU7CkBAIC01OTIsNiArNTkzLDkgQEAgcHVibGljOgogICAgIHZv
aWQgdmlld3BvcnRQcm9wZXJ0aWVzRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXJn
dW1lbnRzJik7CiAgICAgdm9pZCBleGVjdXRlRWRpdENvbW1hbmRXaXRoQ2FsbGJhY2soY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiBhcmd1bWVudCwgQ2FsbGJhY2tJRCk7CiAKKyAgICB2b2lk
IHRleHRJbnB1dENvbnRleHRzSW5SZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8V2ViS2l0OjpUZXh0SW5wdXRDb250ZXh0Pik+JiYpOworICAgIHZv
aWQgZm9jdXNUZXh0SW5wdXRDb250ZXh0KGNvbnN0IFRleHRJbnB1dENvbnRleHQmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgV2ViQ29yZTo6RmxvYXRTaXplIHNjcmVlblNpemUoKSBjb25zdDsKICAgICBXZWJDb3JlOjpG
bG9hdFNpemUgYXZhaWxhYmxlU2NyZWVuU2l6ZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggOWQ3MjM5
ZGI1YTAzMmEwMmVjMDIyNDc2M2EwNzZkNjk2NjAzMTY4My4uNzFjYWJhODlhYzRhNzRiNzhiYjgy
MDc5N2MxYjJmY2RkZjM3MjQ3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC01NDksNCArNTQ5LDcgQEAgbWVzc2Fn
ZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAKICAgICBVcGRhdGVDdXJyZW50TW9kaWZp
ZXJTdGF0ZShPcHRpb25TZXQ8V2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6TW9kaWZpZXI+IG1vZGlm
aWVycykKICAgICBTaW11bGF0ZURldmljZU9yaWVudGF0aW9uQ2hhbmdlKGRvdWJsZSBhbHBoYSwg
ZG91YmxlIGJldGEsIGRvdWJsZSBnYW1tYSkKKworICAgIFRleHRJbnB1dENvbnRleHRzSW5SZWN0
KFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0KSAtPiAoVmVjdG9yPHN0cnVjdCBXZWJLaXQ6OlRleHRJ
bnB1dENvbnRleHQ+IGNvbnRleHRzKSBBc3luYworICAgIEZvY3VzVGV4dElucHV0Q29udGV4dChz
dHJ1Y3QgV2ViS2l0OjpUZXh0SW5wdXRDb250ZXh0IGNvbnRleHQpIC0+IChib29sIHN1Y2Nlc3Mp
IEFzeW5jCiB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggNDZkMDA2NjRkODc4NmQ3Y2JkMDIyNjg0NTRiNzNmMDkwZjlmZTMzYi4uZTA4ZTUwMTM2
NTc5ZGZkYzZiMGE3ZTM1NTliNmZiZDVjZjc5NzIzOCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE5LTAzLTA5ICBU
aW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTUEkg
dG8gcmV0cmlldmUgdGhlIHNldCBvZiB0ZXh0IGlucHV0cyBpbiBhIGdpdmVuIHJlY3QsIGFuZCBs
YXRlciBmb2N1cyBvbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NTQ5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXF1ZXN0
VGV4dElucHV0Q29udGV4dC5tbTogQWRkZWQuCisgICAgICAgICgtW1dLV2ViVmlldyBzeW5jaHJv
bm91c2x5UmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0Ol0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgc3luY2hyb25vdXNseUZvY3VzVGV4dElucHV0Q29udGV4dDpdKToKKyAgICAgICAgKGFw
cGx5U3R5bGUpOgorICAgICAgICAoYXBwbHlJZnJhbWUpOgorICAgICAgICAoVEVTVCk6CisgICAg
ICAgIEFkZCBzb21lIHRlc3RzIGZvciB0aGlzIFNQSS4KKwogMjAxOS0wMy0wOCAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBEZXZpY2Ug
T3JpZW50YXRpb24gLyBNb3Rpb24gcGVybWlzc2lvbiBBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggMzhjMGNiMjE0ZDYwNmVhM2IxZDhiOWFiYzM5YTNmYTFkYTRkYmJkZi4uZjNhOTkwZGM5
NjlmODAyNWVlMmVjOGJjNDM1MGM2MjhkYjQ0N2UzMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTkyLDYgKzkyLDcgQEAKIAkJMkQxNjQ2RTIxRDE4NjJDRDAwMDE1QTFBIC8qIERlZmVycmVk
Vmlld0luV2luZG93U3RhdGVDaGFuZ2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyRDE2NDZFMTFEMTg2MkNEMDAwMTVBMUEgLyogRGVmZXJyZWRWaWV3
SW5XaW5kb3dTdGF0ZUNoYW5nZS5tbSAqLzsgfTsKIAkJMkQxQzA0QTcxRDc2Mjk4QjAwMEE2ODE2
IC8qIFRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyRDFDMDRBNjFENzYyOThCMDAwQTY4MTYgLyogVGVzdE5hdmln
YXRpb25EZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJMkQyMUZFNTkxRjA0NjQyOTAwQjU4RTdEIC8qIFdL
UERGVmlld1N0YWJsZVByZXNlbnRhdGlvblVwZGF0ZUNhbGxiYWNrLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQyMUZFNTgxRjA0NjQyODAwQjU4RTdE
IC8qIFdLUERGVmlld1N0YWJsZVByZXNlbnRhdGlvblVwZGF0ZUNhbGxiYWNrLm1tICovOyB9Owor
CQkyRDJCRUIyRDIyMzI0RTVGMDA1NTQ0Q0EgLyogUmVxdWVzdFRleHRJbnB1dENvbnRleHQubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDJCRUIyQzIy
MzI0RTVGMDA1NTQ0Q0EgLyogUmVxdWVzdFRleHRJbnB1dENvbnRleHQubW0gKi87IH07CiAJCTJE
M0NBM0E4MjIxREY0QjQwMDg4RTgwMyAvKiBQYWdlT3ZlcmxheVBsdWdpbi5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEM0NBM0E0MjIxREYyMzkwMDg4
RTgwMyAvKiBQYWdlT3ZlcmxheVBsdWdpbi5tbSAqLzsgfTsKIAkJMkQ0Q0Y4QkQxRDgzNjBDQzAw
MDFDRThEIC8qIFdLVGh1bWJuYWlsVmlldy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJENENGOEJDMUQ4MzYwQ0MwMDAxQ0U4RCAvKiBXS1RodW1ibmFp
bFZpZXcubW0gKi87IH07CiAJCTJENTFBMEM3MUM4QkYwMEMwMDc2NUM0NSAvKiBET01IVE1MVmlk
ZW9FbGVtZW50V3JhcHBlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJENTFBMEM1MUM4QkYwMDQwMDc2NUM0NSAvKiBET01IVE1MVmlkZW9FbGVtZW50
V3JhcHBlci5tbSAqLzsgfTsKQEAgLTE0MjYsNiArMTQyNyw3IEBACiAJCTJEMUMwNEE2MUQ3NjI5
OEIwMDBBNjgxNiAvKiBUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBuYW1lID0gVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5tbTsgcGF0aCA9
IGNvY29hL1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTJEMUZFMEFGMUFENDY1QzEwMDZDRDlFNiAvKiBGaXhlZExheW91dFNpemUubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGaXhlZExheW91dFNpemUubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEMjFGRTU4MUYwNDY0MjgwMEI1OEU3RCAv
KiBXS1BERlZpZXdTdGFibGVQcmVzZW50YXRpb25VcGRhdGVDYWxsYmFjay5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLUERGVmlld1N0YWJsZVByZXNlbnRhdGlv
blVwZGF0ZUNhbGxiYWNrLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRDJCRUIy
QzIyMzI0RTVGMDA1NTQ0Q0EgLyogUmVxdWVzdFRleHRJbnB1dENvbnRleHQubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXF1ZXN0VGV4dElucHV0Q29udGV4dC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQzQ0EzQTQyMjFERjIzOTAwODhFODAz
IC8qIFBhZ2VPdmVybGF5UGx1Z2luLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gUGFnZU92ZXJsYXlQbHVnaW4ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTJENENGOEJDMUQ4MzYwQ0MwMDAxQ0U4RCAvKiBXS1RodW1ibmFpbFZpZXcubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1RodW1ibmFpbFZpZXcubW07IHBh
dGggPSBXZWJLaXQvV0tUaHVtYm5haWxWaWV3Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyRDUxQTBDNTFDOEJGMDA0MDA3NjVDNDUgLyogRE9NSFRNTFZpZGVvRWxlbWVudFdyYXBw
ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01IVE1MVmlk
ZW9FbGVtZW50V3JhcHBlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1ODYs
NiArMjU4OCw3IEBACiAJCQkJNTJENUQ2QkQyMUI5RjFCMjAwNDZBQkE2IC8qIFJlbmRlcmluZ1By
b2dyZXNzLm1tICovLAogCQkJCTUyRDVENkJFMjFCOUYxQjIwMDQ2QUJBNiAvKiBSZW5kZXJpbmdQ
cm9ncmVzc1BsdWdJbi5tbSAqLywKIAkJCQk1MkQ1RDZCRjIxQjlGMUIyMDA0NkFCQTYgLyogUmVu
ZGVyaW5nUHJvZ3Jlc3NQcm90b2NvbC5oICovLAorCQkJCTJEMkJFQjJDMjIzMjRFNUYwMDU1NDRD
QSAvKiBSZXF1ZXN0VGV4dElucHV0Q29udGV4dC5tbSAqLywKIAkJCQlDRDlFMjkyQjFDOTBBNzFG
MDAwQkI4MDAgLyogUmVxdWlyZXNVc2VyQWN0aW9uRm9yUGxheWJhY2subW0gKi8sCiAJCQkJNTFD
OEUxQTQxRjI2QUM1NDAwQkY3MzFCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MubW0gKi8sCiAJ
CQkJNUNDQjEwRTAyMTM0NTc5RDAwQUM1QUYwIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIubW0gKi8s
CkBAIC00MjE5LDYgKzQyMjIsNyBAQAogCQkJCUExMkREQkZCMUU4MzZGMDcwMENGNkNBRSAvKiBS
ZW5kZXJlZEltYWdlV2l0aE9wdGlvbnMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MkQ1RDZDMDIx
QjlGMUIzMDA0NkFCQTYgLyogUmVuZGVyaW5nUHJvZ3Jlc3MubW0gaW4gU291cmNlcyAqLywKIAkJ
CQlGNDY0QUY5MjIwQkI2NkVBMDA3RjlCMTggLyogUmVuZGVyaW5nUHJvZ3Jlc3NUZXN0cy5tbSBp
biBTb3VyY2VzICovLAorCQkJCTJEMkJFQjJEMjIzMjRFNUYwMDU1NDRDQSAvKiBSZXF1ZXN0VGV4
dElucHV0Q29udGV4dC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMEM0MUQwQTY1NDIwMEZF
QkNGMyAvKiBSZXF1aXJlc1VzZXJBY3Rpb25Gb3JQbGF5YmFjay5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTdDQ0U3RjBFMUE0MTFBRTYwMDQ0N0M0QyAvKiBSZXNpemVSZXZlcnNlUGFnaW5hdGVkV2Vi
Vmlldy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YwRjFBNDExQUU2MDA0NDdDNEMgLyog
UmVzaXplV2luZG93QWZ0ZXJDcmFzaC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVxdWVzdFRleHRJbnB1dENvbnRl
eHQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlcXVlc3RUZXh0
SW5wdXRDb250ZXh0Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkYTNkZDY3ZThjMDJkNzlhMWY5ZWVmNDFlZGZl
ZTQwMjE4N2NlMWEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1JlcXVlc3RUZXh0SW5wdXRDb250ZXh0Lm1tCkBAIC0wLDAgKzEsMjA3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRp
bGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVn
YXRlLmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0IDxXZWJLaXQvV0tQcmVm
ZXJlbmNlc1JlZlByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+
CisjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLVGV4dElucHV0
Q29udGV4dC5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCisjZGVmaW5lIEVYUEVDVF9S
RUNUX0VRKHhFeHBlY3RlZCwgeUV4cGVjdGVkLCB3aWR0aEV4cGVjdGVkLCBoZWlnaHRFeHBlY3Rl
ZCwgcmVjdCkgXAorICAgIEVYUEVDVF9ET1VCTEVfRVEoeEV4cGVjdGVkLCByZWN0Lm9yaWdpbi54
KTsgXAorICAgIEVYUEVDVF9ET1VCTEVfRVEoeUV4cGVjdGVkLCByZWN0Lm9yaWdpbi55KTsgXAor
ICAgIEVYUEVDVF9ET1VCTEVfRVEod2lkdGhFeHBlY3RlZCwgcmVjdC5zaXplLndpZHRoKTsgXAor
ICAgIEVYUEVDVF9ET1VCTEVfRVEoaGVpZ2h0RXhwZWN0ZWQsIHJlY3Quc2l6ZS5oZWlnaHQpOwor
CitAaW1wbGVtZW50YXRpb24gV0tXZWJWaWV3IChTeW5jaHJvbm91c1RleHRJbnB1dENvbnRleHQp
CisKKy0gKE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqKXN5bmNocm9ub3VzbHlSZXF1
ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6KENHUmVjdClyZWN0Cit7CisgICAgX19ibG9jayBi
b29sIGZpbmlzaGVkID0gZmFsc2U7CisgICAgX19ibG9jayBSZXRhaW5QdHI8TlNBcnJheTxfV0tU
ZXh0SW5wdXRDb250ZXh0ICo+PiByZXN1bHQ7CisgICAgW3NlbGYgX3JlcXVlc3RUZXh0SW5wdXRD
b250ZXh0c0luUmVjdDpyZWN0IGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxfV0tUZXh0SW5w
dXRDb250ZXh0ICo+ICpjb250ZXh0cykgeworICAgICAgICByZXN1bHQgPSBjb250ZXh0czsKKyAg
ICAgICAgZmluaXNoZWQgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZmluaXNoZWQpOworICAgIHJldHVybiByZXN1bHQuYXV0b3JlbGVhc2UoKTsKK30KKwor
LSAoQk9PTClzeW5jaHJvbm91c2x5Rm9jdXNUZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5wdXRD
b250ZXh0ICopY29udGV4dAoreworICAgIF9fYmxvY2sgYm9vbCBmaW5pc2hlZCA9IGZhbHNlOwor
ICAgIF9fYmxvY2sgYm9vbCBzdWNjZXNzID0gZmFsc2U7CisgICAgW3NlbGYgX2ZvY3VzVGV4dElu
cHV0Q29udGV4dDpjb250ZXh0IGNvbXBsZXRpb25IYW5kbGVyOl4oQk9PTCBpbm5lclN1Y2Nlc3Mp
IHsKKyAgICAgICAgc3VjY2VzcyA9IGlubmVyU3VjY2VzczsKKyAgICAgICAgZmluaXNoZWQgPSB0
cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZmluaXNoZWQpOwor
ICAgIHJldHVybiBzdWNjZXNzOworfQorCitAZW5kCisKK3N0YXRpYyBOU1N0cmluZyAqYXBwbHlT
dHlsZShOU1N0cmluZyAqSFRNTFN0cmluZykKK3sKKyAgICByZXR1cm4gW0AiPHN0eWxlPmJvZHkg
eyBtYXJnaW46IDA7IH0gaWZyYW1lIHsgYm9yZGVyOiBub25lOyB9PC9zdHlsZT4iIHN0cmluZ0J5
QXBwZW5kaW5nU3RyaW5nOkhUTUxTdHJpbmddOworfQorCitzdGF0aWMgTlNTdHJpbmcgKmFwcGx5
SWZyYW1lKE5TU3RyaW5nICpIVE1MU3RyaW5nKQoreworICAgIHJldHVybiBhcHBseVN0eWxlKFtO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPGlmcmFtZSBzcmM9XCJkYXRhOnRleHQvaHRtbCwl
QFwiIHN0eWxlPSdwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMjAwcHg7Jz4iLCBbYXBwbHlTdHls
ZShIVE1MU3RyaW5nKSBzdHJpbmdCeUFkZGluZ1BlcmNlbnRFbmNvZGluZ1dpdGhBbGxvd2VkQ2hh
cmFjdGVyczpbTlNDaGFyYWN0ZXJTZXQgVVJMUGF0aEFsbG93ZWRDaGFyYWN0ZXJTZXRdXV0pOwor
fQorCitURVNUKFdlYktpdCwgUmVxdWVzdFRleHRJbnB1dENvbnRleHQpCit7CisgICAgUmV0YWlu
UHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFdLUHJlZmVyZW5jZXNTZXRU
aHJlYWRlZFNjcm9sbGluZ0VuYWJsZWQoKFdLUHJlZmVyZW5jZXNSZWYpW2NvbmZpZ3VyYXRpb24g
cHJlZmVyZW5jZXNdLCBmYWxzZSk7CisgICAgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZp
ZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsK
KworICAgIE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqY29udGV4dHM7CisKKyAgICAv
LyBCYXNpYyBpbnB1dHMuCisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJp
bmc6YXBwbHlTdHlsZShAIjxpbnB1dCB0eXBlPSd0ZXh0JyBzdHlsZT0nd2lkdGg6IDUwcHg7IGhl
aWdodDogNTBweDsnPiIpXTsKKyAgICBjb250ZXh0cyA9IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlS
ZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6W3dlYlZpZXcgZnJhbWVdXTsKKyAgICBFWFBF
Q1RfRVEoMVVMLCBjb250ZXh0cy5jb3VudCk7CisgICAgRVhQRUNUX1JFQ1RfRVEoMCwgMCwgNTAs
IDUwLCBjb250ZXh0c1swXS5ib3VuZGluZ1JlY3QpOworCisgICAgW3dlYlZpZXcgc3luY2hyb25v
dXNseUxvYWRIVE1MU3RyaW5nOmFwcGx5U3R5bGUoQCI8dGV4dGFyZWEgc3R5bGU9J3dpZHRoOiAx
MDBweDsgaGVpZ2h0OiAxMDBweDsnPjwvdGV4dGFyZWE+IildOworICAgIGNvbnRleHRzID0gW3dl
YlZpZXcgc3luY2hyb25vdXNseVJlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDpbd2ViVmll
dyBmcmFtZV1dOworICAgIEVYUEVDVF9FUSgxVUwsIGNvbnRleHRzLmNvdW50KTsKKyAgICBFWFBF
Q1RfUkVDVF9FUSgwLCAwLCAxMDAsIDEwMCwgY29udGV4dHNbMF0uYm91bmRpbmdSZWN0KTsKKwor
ICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzphcHBseVN0eWxlKEAiPGRp
diBjb250ZW50ZWRpdGFibGUgc3R5bGU9J3dpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsnPjwv
ZGl2PiIpXTsKKyAgICBjb250ZXh0cyA9IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlSZXF1ZXN0VGV4
dElucHV0Q29udGV4dHNJblJlY3Q6W3dlYlZpZXcgZnJhbWVdXTsKKyAgICBFWFBFQ1RfRVEoMVVM
LCBjb250ZXh0cy5jb3VudCk7CisgICAgRVhQRUNUX1JFQ1RfRVEoMCwgMCwgMTAwLCAxMDAsIGNv
bnRleHRzWzBdLmJvdW5kaW5nUmVjdCk7CisKKyAgICAvLyBCYXNpYyBpbnB1dHMgaW5zaWRlIHN1
YmZyYW1lLgorCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOmFwcGx5
SWZyYW1lKEAiPGlucHV0IHR5cGU9J3RleHQnIHN0eWxlPSd3aWR0aDogNTBweDsgaGVpZ2h0OiA1
MHB4Oyc+IildOworICAgIGNvbnRleHRzID0gW3dlYlZpZXcgc3luY2hyb25vdXNseVJlcXVlc3RU
ZXh0SW5wdXRDb250ZXh0c0luUmVjdDpbd2ViVmlldyBmcmFtZV1dOworICAgIEVYUEVDVF9FUSgx
VUwsIGNvbnRleHRzLmNvdW50KTsKKyAgICBFWFBFQ1RfUkVDVF9FUSgwLCAyMDAsIDUwLCA1MCwg
Y29udGV4dHNbMF0uYm91bmRpbmdSZWN0KTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlM
b2FkSFRNTFN0cmluZzphcHBseUlmcmFtZShAIjx0ZXh0YXJlYSBzdHlsZT0nd2lkdGg6IDEwMHB4
OyBoZWlnaHQ6IDEwMHB4Oyc+PC90ZXh0YXJlYT4iKV07CisgICAgY29udGV4dHMgPSBbd2ViVmll
dyBzeW5jaHJvbm91c2x5UmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0Olt3ZWJWaWV3IGZy
YW1lXV07CisgICAgRVhQRUNUX0VRKDFVTCwgY29udGV4dHMuY291bnQpOworICAgIEVYUEVDVF9S
RUNUX0VRKDAsIDIwMCwgMTAwLCAxMDAsIGNvbnRleHRzWzBdLmJvdW5kaW5nUmVjdCk7CisKKyAg
ICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6YXBwbHlJZnJhbWUoQCI8ZGl2
IGNvbnRlbnRlZGl0YWJsZSBzdHlsZT0nd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4Oyc+PC9k
aXY+IildOworICAgIGNvbnRleHRzID0gW3dlYlZpZXcgc3luY2hyb25vdXNseVJlcXVlc3RUZXh0
SW5wdXRDb250ZXh0c0luUmVjdDpbd2ViVmlldyBmcmFtZV1dOworICAgIEVYUEVDVF9FUSgxVUws
IGNvbnRleHRzLmNvdW50KTsKKyAgICBFWFBFQ1RfUkVDVF9FUSgwLCAyMDAsIDEwMCwgMTAwLCBj
b250ZXh0c1swXS5ib3VuZGluZ1JlY3QpOworCisgICAgLy8gUmVhZCBvbmx5IGlucHV0czsgc2hv
dWxkIG5vdCBiZSBpbmNsdWRlZC4KKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRN
TFN0cmluZzphcHBseVN0eWxlKEAiPGlucHV0IHR5cGU9J3RleHQnIHN0eWxlPSd3aWR0aDogNTBw
eDsgaGVpZ2h0OiA1MHB4OycgcmVhZG9ubHk+IildOworICAgIGNvbnRleHRzID0gW3dlYlZpZXcg
c3luY2hyb25vdXNseVJlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDpbd2ViVmlldyBmcmFt
ZV1dOworICAgIEVYUEVDVF9FUSgwVUwsIGNvbnRleHRzLmNvdW50KTsKKworICAgIFt3ZWJWaWV3
IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzphcHBseVN0eWxlKEAiPHRleHRhcmVhIHN0eWxl
PSd3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7JyByZWFkb25seT4iKV07CisgICAgY29udGV4
dHMgPSBbd2ViVmlldyBzeW5jaHJvbm91c2x5UmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0
Olt3ZWJWaWV3IGZyYW1lXV07CisgICAgRVhQRUNUX0VRKDBVTCwgY29udGV4dHMuY291bnQpOwor
CisgICAgLy8gSW5wdXRzIG91dHNpZGUgdGhlIHJlcXVlc3RlZCByZWN0OyBzaG91bGQgbm90IGJl
IGluY2x1ZGVkLgorCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOmFw
cGx5U3R5bGUoQCI8aW5wdXQgdHlwZT0ndGV4dCcgc3R5bGU9J3dpZHRoOiA1MHB4OyBoZWlnaHQ6
IDUwcHg7Jz4iKV07CisgICAgY29udGV4dHMgPSBbd2ViVmlldyBzeW5jaHJvbm91c2x5UmVxdWVz
dFRleHRJbnB1dENvbnRleHRzSW5SZWN0OkNHUmVjdE1ha2UoMTAwLCAxMDAsIDEwMCwgMTAwKV07
CisgICAgRVhQRUNUX0VRKDBVTCwgY29udGV4dHMuY291bnQpOworCisgICAgLy8gSW5wdXRzIHNj
cm9sbGVkIG91dHNpZGUgdGhlIHJlcXVlc3RlZCByZWN0OyBzaG91bGQgbm90IGJlIGluY2x1ZGVk
LgorCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOmFwcGx5U3R5bGUo
QCI8aW5wdXQgdHlwZT0ndGV4dCcgc3R5bGU9J3dpZHRoOiA1MHB4OyBoZWlnaHQ6IDUwcHg7Jz48
YnI+PGRpdiBzdHlsZT0nd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDUwMDBweDsnPjwvZGl2PiIpXTsK
KyAgICBbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAid2luZG93LnNjcm9s
bFRvKDAsIDUwMDApOyJdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBk
YXRlXTsKKyAgICBjb250ZXh0cyA9IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlSZXF1ZXN0VGV4dElu
cHV0Q29udGV4dHNJblJlY3Q6W3dlYlZpZXcgZnJhbWVdXTsKKyAgICBFWFBFQ1RfRVEoMFVMLCBj
b250ZXh0cy5jb3VudCk7CisKKyAgICAvLyBJbnB1dHMgc2Nyb2xsZWQgaW50byB0aGUgcmVxdWVz
dGVkIHJlY3QuCisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6YXBw
bHlTdHlsZShAIjxpbnB1dCB0eXBlPSd0ZXh0JyBzdHlsZT0nd2lkdGg6IDUwcHg7IGhlaWdodDog
NTBweDsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDUwMDBweDsnPjxicj48ZGl2IHN0eWxlPSd3
aWR0aDogMTAwcHg7IGhlaWdodDogMTAwMDBweDsnPjwvZGl2PiIpXTsKKyAgICBbd2ViVmlldyBv
YmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAid2luZG93LnNjcm9sbFRvKDAsIDUwMDApOyJd
OworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKyAgICBjb250
ZXh0cyA9IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlSZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJl
Y3Q6W3dlYlZpZXcgZnJhbWVdXTsKKyAgICBFWFBFQ1RfRVEoMVVMLCBjb250ZXh0cy5jb3VudCk7
CisgICAgRVhQRUNUX1JFQ1RfRVEoMCwgMCwgNTAsIDUwLCBjb250ZXh0c1swXS5ib3VuZGluZ1Jl
Y3QpOworCisgICAgLy8gTXVsdGlwbGUgaW5wdXRzLgorCisgICAgW3dlYlZpZXcgc3luY2hyb25v
dXNseUxvYWRIVE1MU3RyaW5nOmFwcGx5U3R5bGUoQCI8aW5wdXQgdHlwZT0ndGV4dCcgc3R5bGU9
J3dpZHRoOiA1MHB4OyBoZWlnaHQ6IDUwcHg7Jz48YnIvPjxpbnB1dCB0eXBlPSd0ZXh0JyBzdHls
ZT0nd2lkdGg6IDUwcHg7IGhlaWdodDogNTBweDsnPjxici8+PGlucHV0IHR5cGU9J3RleHQnIHN0
eWxlPSd3aWR0aDogNTBweDsgaGVpZ2h0OiA1MHB4Oyc+IildOworICAgIGNvbnRleHRzID0gW3dl
YlZpZXcgc3luY2hyb25vdXNseVJlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDpbd2ViVmll
dyBmcmFtZV1dOworICAgIEVYUEVDVF9FUSgzVUwsIGNvbnRleHRzLmNvdW50KTsKKyAgICBFWFBF
Q1RfUkVDVF9FUSgwLCAwLCA1MCwgNTAsIGNvbnRleHRzWzBdLmJvdW5kaW5nUmVjdCk7CisgICAg
RVhQRUNUX1JFQ1RfRVEoMCwgNTAsIDUwLCA1MCwgY29udGV4dHNbMV0uYm91bmRpbmdSZWN0KTsK
KyAgICBFWFBFQ1RfUkVDVF9FUSgwLCAxMDAsIDUwLCA1MCwgY29udGV4dHNbMl0uYm91bmRpbmdS
ZWN0KTsKKworICAgIC8vIE5lc3RlZCA8aW5wdXQ+LWluc2lkZS1jb250ZW50ZWRpdGFibGUuIE9u
bHkgdGhlIGNvbnRlbnRlZGl0YWJsZSBpcyBjb25zaWRlcmVkLgorCisgICAgW3dlYlZpZXcgc3lu
Y2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOmFwcGx5U3R5bGUoQCI8ZGl2IGNvbnRlbnRlZGl0YWJs
ZSBzdHlsZT0nd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4Oyc+PGlucHV0IHR5cGU9J3RleHQn
IHN0eWxlPSd3aWR0aDogNTBweDsgaGVpZ2h0OiA1MHB4Oyc+PC9kaXY+IildOworICAgIGNvbnRl
eHRzID0gW3dlYlZpZXcgc3luY2hyb25vdXNseVJlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVj
dDpbd2ViVmlldyBmcmFtZV1dOworICAgIEVYUEVDVF9FUSgxVUwsIGNvbnRleHRzLmNvdW50KTsK
KyAgICBFWFBFQ1RfUkVDVF9FUSgwLCAwLCAxMDAsIDEwMCwgY29udGV4dHNbMF0uYm91bmRpbmdS
ZWN0KTsKK30KKworVEVTVChXZWJLaXQsIEZvY3VzVGV4dElucHV0Q29udGV4dCkKK3sKKyAgICBS
ZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgV0tQcmVmZXJlbmNl
c1NldFRocmVhZGVkU2Nyb2xsaW5nRW5hYmxlZCgoV0tQcmVmZXJlbmNlc1JlZilbY29uZmlndXJh
dGlvbiBwcmVmZXJlbmNlc10sIGZhbHNlKTsKKyAgICBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4g
d2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQo
KV0pOworCisgICAgTlNBcnJheTxfV0tUZXh0SW5wdXRDb250ZXh0ICo+ICpjb250ZXh0czsKKwor
ICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzphcHBseVN0eWxlKEAiPGlu
cHV0IGlkPSd0ZXN0JyB0eXBlPSd0ZXh0JyBzdHlsZT0nd2lkdGg6IDUwcHg7IGhlaWdodDogNTBw
eDsnPiIpXTsKKyAgICBjb250ZXh0cyA9IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlSZXF1ZXN0VGV4
dElucHV0Q29udGV4dHNJblJlY3Q6W3dlYlZpZXcgZnJhbWVdXTsKKyAgICBFWFBFQ1RfRVEoMVVM
LCBjb250ZXh0cy5jb3VudCk7CisgICAgUmV0YWluUHRyPF9XS1RleHRJbnB1dENvbnRleHQ+IG9y
aWdpbmFsSW5wdXQgPSBjb250ZXh0c1swXTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBzeW5j
aHJvbm91c2x5Rm9jdXNUZXh0SW5wdXRDb250ZXh0Om9yaWdpbmFsSW5wdXQuZ2V0KCldKTsKKyAg
ICBFWFBFQ1RfV0tfU1RSRVEoInRlc3QiLCBbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OkAiZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5pZCJdKTsKKworICAgIC8vIFRoZSBfV0tU
ZXh0SW5wdXRDb250ZXh0IHNob3VsZCBzdGlsbCB3b3JrIGV2ZW4gYWZ0ZXIgYW5vdGhlciByZXF1
ZXN0LgorICAgIGNvbnRleHRzID0gW3dlYlZpZXcgc3luY2hyb25vdXNseVJlcXVlc3RUZXh0SW5w
dXRDb250ZXh0c0luUmVjdDpbd2ViVmlldyBmcmFtZV1dOworICAgIEVYUEVDVF9UUlVFKFtjb250
ZXh0c1swXSBpc0VxdWFsOm9yaWdpbmFsSW5wdXQuZ2V0KCldKTsKKyAgICBFWFBFQ1RfVFJVRShb
d2ViVmlldyBzeW5jaHJvbm91c2x5Rm9jdXNUZXh0SW5wdXRDb250ZXh0Om9yaWdpbmFsSW5wdXQu
Z2V0KCldKTsKKworICAgIC8vIFJlcGxhY2UgdGhlIDxpbnB1dD4gd2l0aCBhIDx0ZXh0YXJlYT4g
d2l0aCBzY3JpcHQ7IHRoZSA8aW5wdXQ+IHNob3VsZCBubyBsb25nZXIgYmUgZm9jdXNhYmxlLgor
ICAgIFt3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5
LmlubmVySFRNTCA9ICc8dGV4dGFyZWEgaWQ9XCJhcmVhXCI+JzsiXTsKKyAgICBjb250ZXh0cyA9
IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlSZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6W3dl
YlZpZXcgZnJhbWVdXTsKKyAgICBFWFBFQ1RfRVEoMVVMLCBjb250ZXh0cy5jb3VudCk7CisgICAg
UmV0YWluUHRyPF9XS1RleHRJbnB1dENvbnRleHQ+IHRleHRBcmVhID0gY29udGV4dHNbMF07Cisg
ICAgRVhQRUNUX0ZBTFNFKFt0ZXh0QXJlYSBpc0VxdWFsOm9yaWdpbmFsSW5wdXQuZ2V0KCldKTsK
KyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgc3luY2hyb25vdXNseUZvY3VzVGV4dElucHV0Q29u
dGV4dDpvcmlnaW5hbElucHV0LmdldCgpXSk7CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgc3lu
Y2hyb25vdXNseUZvY3VzVGV4dElucHV0Q29udGV4dDp0ZXh0QXJlYS5nZXQoKV0pOworICAgIEVY
UEVDVF9XS19TVFJFUSgiYXJlYSIsIFt3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJkb2N1bWVudC5hY3RpdmVFbGVtZW50LmlkIl0pOworCisgICAgLy8gRGVzdHJveSB0aGUg
PHRleHRhcmVhPiBieSBuYXZpZ2F0aW5nIGF3YXk7IHdlIGNhbiBubyBsb25nZXIgZm9jdXMgaXQu
CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiIl07CisgICAgRVhQ
RUNUX0ZBTFNFKFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlGb2N1c1RleHRJbnB1dENvbnRleHQ6dGV4
dEFyZWEuZ2V0KCldKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>364206</attachid>
            <date>2019-03-10 16:06:46 -0700</date>
            <delta_ts>2019-03-10 19:52:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195499-20190310160645.patch</filename>
            <type>text/plain</type>
            <size>67294</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyNjc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWViMWQ4ZDQ4NTJhYWNj
NzRhMTVhMWYwY2E1OGJkZDkyNjI2N2ZjNi4uMTIwZTRlYjZmMzRjMDRkNGU5ZTNmNTcxNDQxOTM1
ZDhiMzZiYTQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE5LTAzLTEwICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTUEkgdG8g
cmV0cmlldmUgdGhlIHNldCBvZiB0ZXh0IGlucHV0cyBpbiBhIGdpdmVuIHJlY3QsIGFuZCBsYXRl
ciBmb2N1cyBvbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5NTQ5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5ldyBBUEkgdGVzdHM6IFdlYktpdC5SZXF1ZXN0VGV4dElucHV0Q29udGV4dCBhbmQgV2Vi
S2l0LkZvY3VzVGV4dElucHV0Q29udGV4dAorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6aWRlbnRpZmllckZvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OmVsZW1lbnRXaXRoSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6aWRlbnRpZmllZEVsZW1lbnRXYXNSZW1vdmVkRnJvbURvY3VtZW50KToKKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgQWRkIGEgbWVjaGFuaXNtIHdoZXJlIERvY3Vt
ZW50IHdpbGwgdmVuZCBhbiBPYmplY3RJZGVudGlmaWVyIGZvciBhIGdpdmVuCisgICAgICAgIGVs
ZW1lbnQsIGFuZCBjYW4gKGlmIHBvc3NpYmxlKSByZXRyaWV2ZSB0aGF0IGVsZW1lbnQgbGF0ZXIu
CisKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
OjpyZW1vdmVkRnJvbUFuY2VzdG9yKToKKyAgICAgICAgSWYgYW4gRWxlbWVudCBoYXMgYW4gaWRl
bnRpZmllciBjcmVhdGVkIGZvciBpdCwgaW5mb3JtIERvY3VtZW50IHRvIHJlbW92ZQorICAgICAg
ICBpdCBmcm9tIHRoZSBpZGVudGlmaWVyIG1hcCB3aGVuIHRoZSBlbGVtZW50IGlzIGRldGFjaGVk
LgorCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpjcmVhdGVFbGVtZW50SWRlbnRpZmllcik6
CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vRWxlbWVudElkZW50aWZp
ZXIuaDogQWRkZWQuCisgICAgICAgICogZG9tL0VsZW1lbnRSYXJlRGF0YS5jcHA6CisgICAgICAg
ICogZG9tL0VsZW1lbnRSYXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVE
YXRhOjpoYXNFbGVtZW50SWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50UmFyZURhdGE6OnNldEhhc0VsZW1lbnRJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnRSYXJlRGF0YTo6RWxlbWVudFJhcmVEYXRhKToKKyAgICAgICAgU3RvcmUgYSBiaXQg
aW5kaWNhdGluZyBpZiB0aGUgRWxlbWVudCBoYXMgaGFkIGEgaWRlbnRpZmllciBjcmVhdGVkIGZv
ciBpdCwKKyAgICAgICAgc28gdGhhdCB3ZSBjYW4gYXZvaWQgYSBoYXNoIGxvb2t1cCBvbiBldmVy
eSBFbGVtZW50IHJlbW92YWwuCisKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAqIGh0
bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaDoKKwogMjAxOS0wMy0wOSAgWmFsYW4gQnVq
dGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb250ZW50Q2hhbmdlT2JzZXJ2ZXJd
IFN0YXJ0IG9ic2VydmluZyBmb3IgY29udGVudCBjaGFuZ2UgYmV0d2VlbiB0b3VjaEVuZCBhbmQg
bW91c2VNb3ZlZCBzdGFydApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4MGJlOTk5NGRiY2Y1MGRiZGE3MTVjYWY4ODky
ZGUzNzdjNGM5YTA2Li40ZmQzMjA3NTY3OWNlZjMxZTI2MjUyMTcyNjY0MGFmNjY1ODAwYWIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE5LTAzLTEwICBUaW0gSG9ydG9uICA8dGltb3Ro
eV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTUEkgdG8gcmV0cmlldmUgdGhlIHNl
dCBvZiB0ZXh0IGlucHV0cyBpbiBhIGdpdmVuIHJlY3QsIGFuZCBsYXRlciBmb2N1cyBvbmUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTQ5OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVkL1RleHRJbnB1dENvbnRleHQuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJLaXQ6OlRleHRJbnB1dENv
bnRleHQ+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYktpdDo6VGV4
dElucHV0Q29udGV4dD46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1RleHRJbnB1dENvbnRl
eHQuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlRleHRJbnB1dENvbnRleHQ6Om9wZXJhdG9y
PT0gY29uc3QpOgorICAgICAgICBBZGQgVGV4dElucHV0Q29udGV4dCwgd2hpY2ggcmVwcmVzZW50
cyBhIG1pbmltYWwgc2V0IG9mIGluZm9ybWF0aW9uCisgICAgICAgIGFib3V0IGEgdGV4dCBmaWVs
ZC4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgt
W1dLV2ViVmlldyBfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OmNvbXBsZXRpb25IYW5k
bGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2ZvY3VzVGV4dElucHV0Q29udGV4dDpjb21w
bGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1ByaXZhdGUuaDoKKyAgICAgICAgQWRkIFNQSSB0aGF0IGFsbG93cyBjbGllbnRzIHRvIGFzeW5j
aHJvbm91c2x5IHJlcXVlc3QgdGV4dCBpbnB1dAorICAgICAgICBjb250ZXh0cyBmb3IgYSBnaXZl
biByZWN0LCBhbmQgbGF0ZXIgZm9jdXMgYSBnaXZlbiBjb250ZXh0LgorCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0SW5wdXRDb250ZXh0Lmg6IEFkZGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dElucHV0Q29udGV4dC5tbTogQWRkZWQuCisgICAg
ICAgICgtW19XS1RleHRJbnB1dENvbnRleHQgX2luaXRXaXRoVGV4dElucHV0Q29udGV4dDpdKToK
KyAgICAgICAgKC1bX1dLVGV4dElucHV0Q29udGV4dCBib3VuZGluZ1JlY3RdKToKKyAgICAgICAg
KC1bX1dLVGV4dElucHV0Q29udGV4dCBfdGV4dElucHV0Q29udGV4dF0pOgorICAgICAgICAoLVtf
V0tUZXh0SW5wdXRDb250ZXh0IGlzRXF1YWw6XSk6CisgICAgICAgICgtW19XS1RleHRJbnB1dENv
bnRleHQgaGFzaF0pOgorICAgICAgICAoLVtfV0tUZXh0SW5wdXRDb250ZXh0IGNvcHlXaXRoWm9u
ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRJbnB1dENvbnRleHRJ
bnRlcm5hbC5oOiBBZGRlZC4KKyAgICAgICAgQWRkIGFuIFNQSSBvYmplY3QgdGhhdCBleHBvc2Vz
IGEgcmVhZC1vbmx5IHdpbmRvdyBvbiBhIFRleHRJbnB1dENvbnRleHQgdG8gY2xpZW50cy4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnRleHRJbnB1dENvbnRleHRzSW5SZWN0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojpmb2N1c1RleHRJbnB1dENvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgUGx1bWJpbmcgZnJvbSBXS1dlYlZpZXc8LT5XZWJQ
YWdlLgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0Ojpl
bGVtZW50UmVjdEluV2luZG93Q29vcmRpbmF0ZXMpOgorICAgICAgICAoV2ViS2l0Ojppc0VkaXRh
YmxlVGV4dElucHV0RWxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnRleHRJbnB1
dENvbnRleHRzSW5SZWN0KToKKyAgICAgICAgU2VhcmNoIHRoZSBET00gZm9yIHRleHQgaW5wdXQg
Y29udGV4dHM6IDxpbnB1dCB0eXBlPSd0ZXh0Jz4gKG9yIG90aGVyCisgICAgICAgIGZvcm0gZmll
bGRzIHRoYXQgZmFsbCBiYWNrIG9uIHRleHQgZmllbGQgYmVoYXZpb3IpLCA8dGV4dGFyZWE+LCBh
bmQKKyAgICAgICAgY29udGVudGVkaXRhYmxlIHJvb3RzLiBTdG9yZSB0aGUgV2ViUGFnZSwgRG9j
dW1lbnQsIGFuZCBFbGVtZW50IGlkZW50aWZpZXJzCisgICAgICAgIHNvIHRoYXQgd2UgY2FuIGZp
bmQgdGhlIGVsZW1lbnQgYWdhaW4gbGF0ZXIuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
Zm9jdXNUZXh0SW5wdXRDb250ZXh0KToKKyAgICAgICAgRmluZCB0aGUgZWxlbWVudCBmb3IgYSBn
aXZlbiAod2ViIHBhZ2UsIGRvY3VtZW50LCBlbGVtZW50KSB0cmlwbGUgYW5kIGZvY3VzIGl0LAor
ICAgICAgICBpZiBpdCdzIHN0aWxsIGF2YWlsYWJsZS4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW46CisKIDIwMTktMDMtMDkgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBbQ29udGVudENoYW5nZU9ic2VydmVyXSBTdGFydCBvYnNlcnZpbmcgZm9y
IGNvbnRlbnQgY2hhbmdlIGJldHdlZW4gdG91Y2hFbmQgYW5kIG1vdXNlTW92ZWQgc3RhcnQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA4ZDdkNzM5YjkyNmRhMmI2NTkxODRhOGJmZWVmNTUyNzI0NGNhZTRhLi41ODJjMGU4Y2Y3ZDAx
ZDRmN2RhYmI1NjgwODgxOGZiYTEyN2UyYzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03NDgsNiArNzQ4LDcgQEAKIAkJMkQy
OUVDQzYxOTJFQ0M4MzAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQyOUVDQzIxOTJF
Q0M4MzAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEMjlFQ0M4MTkyRUNDODMw
MDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDI5RUNDNDE5MkVDQzgzMDA5ODRCNzgg
LyogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEMjlFQ0NBMTkyRjFGMUQwMDk4NEI3OCAvKiBE
aXNwbGF5UmVmcmVzaE1vbml0b3JJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJEMjlFQ0M5MTkyRjFGMUQwMDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVz
aE1vbml0b3JJT1MuaCAqLzsgfTsKKwkJMkQyQkVCMzEyMjM0QTMzNTAwNTU0NENBIC8qIEVsZW1l
bnRJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRDJCRUIyRjIyMzRBMzM0MDA1NTQ0Q0EgLyogRWxlbWVudElkZW50aWZpZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRDJFMzRBQzIx
QTRFMTkyMDA0NTk4QjUgLyogRWRpdGFibGVJbWFnZVJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQyRTM0QTkyMUE0RTE5MTAwNDU5OEI1
IC8qIEVkaXRhYmxlSW1hZ2VSZWZlcmVuY2UuaCAqLzsgfTsKIAkJMkQzQTBFMzYxM0E3RDc2MTAw
RTg1QUYwIC8qIFNWR1BhcnNpbmdFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkQzQTBFMzUxM0E3RDc2MTAwRTg1QUYwIC8qIFNWR1BhcnNpbmdF
cnJvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTJEM0VGNDQ4MTkxNzkxNUMwMDAzNDE4NCAvKiBXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVs
ZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJE
M0VGNDQ0MTkxNzkxNUMwMDAzNDE4NCAvKiBXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdh
dGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
NjY5Nyw2ICs2Njk4LDcgQEAKIAkJMkQyOUVDQzMxOTJFQ0M4MzAwOTg0Qjc4IC8qIERpc3BsYXlS
ZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTJEMjlFQ0M0MTkyRUNDODMwMDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1v
bml0b3JNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlS
ZWZyZXNoTW9uaXRvck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQy
OUVDQzkxOTJGMUYxRDAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQyQkVCMkYyMjM0QTMzNDAwNTU0NENBIC8q
IEVsZW1lbnRJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVs
ZW1lbnRJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEMkUzNEE5
MjFBNEUxOTEwMDQ1OThCNSAvKiBFZGl0YWJsZUltYWdlUmVmZXJlbmNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVkaXRhYmxlSW1hZ2VSZWZlcmVuY2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQyRTM0QUIyMUE0RTE5MjAwNDU5OEI1IC8qIEVkaXRhYmxl
SW1hZ2VSZWZlcmVuY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RWRpdGFibGVJbWFnZVJlZmVyZW5jZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJEMkZDMDU0MTQ2MENENkYwMDI2MzYzMyAvKiBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcm9zc2ZhZGVHZW5lcmF0ZWRJ
bWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNzU5Miw2ICsyNzU5NCw3
IEBACiAJCQkJQjVCN0ExNkYxN0MxMDgwNjAwRTRBQTBBIC8qIEVsZW1lbnREYXRhLmNwcCAqLywK
IAkJCQlCNUI3QTE2RTE3QzEwNDgwMDBFNEFBMEEgLyogRWxlbWVudERhdGEuaCAqLywKIAkJCQlB
REUxMUY0QTE4RDgzMTFCMDA3ODk4M0IgLyogRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oICov
LAorCQkJCTJEMkJFQjJGMjIzNEEzMzQwMDU1NDRDQSAvKiBFbGVtZW50SWRlbnRpZmllci5oICov
LAogCQkJCUU0QUU3QzE1MTdEMUJCOTUwMDA5RkIzMSAvKiBFbGVtZW50SXRlcmF0b3IuaCAqLywK
IAkJCQlFNDAxQzI3NDE3Q0U1M0VDMDBDNDFBMzUgLyogRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9u
cy5oICovLAogCQkJCTRGQUI0ODY0MTY0M0E2NkQwMEY3MEMwNyAvKiBFbGVtZW50UmFyZURhdGEu
Y3BwICovLApAQCAtMjkxOTYsNiArMjkxOTksNyBAQAogCQkJCUU0NkEyQjFFMTdDQTc2QjEwMDBE
QkNEOCAvKiBFbGVtZW50Q2hpbGRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjVCN0Ex
NzExN0MxMEFDMDAwRTRBQTBBIC8qIEVsZW1lbnREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
M0Q0MzdBMTFENTdCM0Y0MDBBQjg1RUEgLyogRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMkQyQkVCMzEyMjM0QTMzNTAwNTU0NENBIC8qIEVsZW1lbnRJZGVu
dGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEFFN0MxNjE3RDFCQjk1MDAwOUZCMzEgLyog
RWxlbWVudEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDAxQzI3NTE3Q0U1M0VDMDBD
NDFBMzUgLyogRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NjNGNUQ0RjcwRThDNEI3MTAwQzBCRDA0IC8qIEVsZW1lbnRSYXJlRGF0YS5oIGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBhMWMwYWQzM2JlZjVlMjU2YWQwMzFkZGI0
MWYzMjJhMTMyNDBhMDAwLi40NDhjNDBmMWJjMzFkMTRiNWIwODk3NjcxYTI2ODQxMTdjNDQ0MjI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTg2MTIsNiArODYxMiwzMCBAQCB2b2lkIERv
Y3VtZW50OjpmcmFtZVdhc0Rpc2Nvbm5lY3RlZEZyb21Pd25lcigpCiAgICAgZGV0YWNoRnJvbUZy
YW1lKCk7CiB9CiAKK0VsZW1lbnRJZGVudGlmaWVyIERvY3VtZW50OjppZGVudGlmaWVyRm9yRWxl
bWVudChFbGVtZW50JiBlbGVtZW50KQoreworICAgIEFTU0VSVCgmZWxlbWVudC5kb2N1bWVudCgp
ID09IHRoaXMpOworICAgIGF1dG8gcmVzdWx0ID0gbV9pZGVudGlmaWVkRWxlbWVudHNNYXAuZW5z
dXJlKCZlbGVtZW50LCBbJl0geworICAgICAgICByZXR1cm4gZWxlbWVudC5jcmVhdGVFbGVtZW50
SWRlbnRpZmllcigpOworICAgIH0pOworICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnZhbHVl
OworfQorCitFbGVtZW50KiBEb2N1bWVudDo6ZWxlbWVudFdpdGhJZGVudGlmaWVyKGNvbnN0IEVs
ZW1lbnRJZGVudGlmaWVyJiBpZGVudGlmaWVyKQoreworICAgIGZvciAoYXV0byBpdCA9IG1faWRl
bnRpZmllZEVsZW1lbnRzTWFwLmJlZ2luKCk7IGl0ICE9IG1faWRlbnRpZmllZEVsZW1lbnRzTWFw
LmVuZCgpOyArK2l0KSB7CisgICAgICAgIGlmIChpdC0+dmFsdWUgPT0gaWRlbnRpZmllcikKKyAg
ICAgICAgICAgIHJldHVybiBpdC0+a2V5OworICAgIH0KKworICAgIHJldHVybiBuaWw7Cit9CisK
K3ZvaWQgRG9jdW1lbnQ6OmlkZW50aWZpZWRFbGVtZW50V2FzUmVtb3ZlZEZyb21Eb2N1bWVudChF
bGVtZW50JiBlbGVtZW50KQoreworICAgIG1faWRlbnRpZmllZEVsZW1lbnRzTWFwLnJlbW92ZSgm
ZWxlbWVudCk7Cit9CisKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQogCiBEZXZpY2VP
cmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXImIERvY3VtZW50OjpkZXZpY2VPcmll
bnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRl
eCAyYjk5ZDQ0NTRlMDc0YWZmZmMyODJkZGI2NDNhYjBiZWFjMGVhNzM4Li4zNzRlZTNlZDRhZTFm
ZDUyNzJmMDFiZDE5ODk2ZGNkM2YwZjljMTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMzQs
NiArMzQsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50RXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkRvY3VtZW50VGltaW5nLmgiCisjaW5jbHVk
ZSAiRWxlbWVudElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJGb2N1c0RpcmVjdGlvbi5oIgogI2lu
Y2x1ZGUgIkZvbnRTZWxlY3RvckNsaWVudC5oIgogI2luY2x1ZGUgIkZyYW1lRGVzdHJ1Y3Rpb25P
YnNlcnZlci5oIgpAQCAtMzg4LDYgKzM4OSwxMCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIERvY3VtZW50c01hcDo6VmFsdWVzSXRlcmF0b3JSYW5nZSBhbGxEb2N1bWVudHMo
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRG9jdW1lbnRzTWFwJiBhbGxEb2N1bWVudHNN
YXAoKTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIEVsZW1lbnRJZGVudGlmaWVyIGlkZW50aWZpZXJG
b3JFbGVtZW50KEVsZW1lbnQmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFbGVtZW50ICplbGVtZW50
V2l0aElkZW50aWZpZXIoY29uc3QgRWxlbWVudElkZW50aWZpZXImKTsKKyAgICB2b2lkIGlkZW50
aWZpZWRFbGVtZW50V2FzUmVtb3ZlZEZyb21Eb2N1bWVudChFbGVtZW50Jik7CisKICAgICBNZWRp
YVF1ZXJ5TWF0Y2hlciYgbWVkaWFRdWVyeU1hdGNoZXIoKTsKIAogICAgIHVzaW5nIENvbnRhaW5l
ck5vZGU6OnJlZjsKQEAgLTIwODMsNiArMjA4OCw4IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudENoYW5nZU9ic2VydmVyPiBt
X2NvbnRlbnRDaGFuZ2VPYnNlcnZlcjsKICNlbmRpZgorCisgICAgSGFzaE1hcDxFbGVtZW50Kiwg
RWxlbWVudElkZW50aWZpZXI+IG1faWRlbnRpZmllZEVsZW1lbnRzTWFwOwogfTsKIAogRWxlbWVu
dCogZXZlbnRUYXJnZXRFbGVtZW50Rm9yRG9jdW1lbnQoRG9jdW1lbnQqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAppbmRleCBiMGVhNWNiMmNmYzkyOGM0OTlmYmRjNzA1NmQ5NzA0NjY0YzBiYWY1Li5h
OTk2NDRhNzMxZDE2NTI3Y2U2NzMyZmMyODhhMDc2MzNhZjJlNjdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCkBAIC0yMDQ5LDYgKzIwNDksMTEgQEAgdm9pZCBFbGVtZW50OjpyZW1vdmVkRnJvbUFu
Y2VzdG9yKFJlbW92YWxUeXBlIHJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJiBvbGRQYXIKICAg
ICBpZiAoZnJhbWUgJiYgZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgZnJhbWUtPnBhZ2UoKS0+cmVt
b3ZlTGF0Y2hpbmdTdGF0ZUZvclRhcmdldCgqdGhpcyk7CiAjZW5kaWYKKworICAgIGlmIChoYXNS
YXJlRGF0YSgpICYmIGVsZW1lbnRSYXJlRGF0YSgpLT5oYXNFbGVtZW50SWRlbnRpZmllcigpKSB7
CisgICAgICAgIGRvY3VtZW50KCkuaWRlbnRpZmllZEVsZW1lbnRXYXNSZW1vdmVkRnJvbURvY3Vt
ZW50KCp0aGlzKTsKKyAgICAgICAgZWxlbWVudFJhcmVEYXRhKCktPnNldEhhc0VsZW1lbnRJZGVu
dGlmaWVyKGZhbHNlKTsKKyAgICB9CiB9CiAKIFNoYWRvd1Jvb3QqIEVsZW1lbnQ6OnNoYWRvd1Jv
b3QoKSBjb25zdApAQCAtNDE1Nyw2ICs0MTYyLDE1IEBAIFZlY3RvcjxSZWZQdHI8V2ViQW5pbWF0
aW9uPj4gRWxlbWVudDo6Z2V0QW5pbWF0aW9ucygpCiAgICAgcmV0dXJuIGFuaW1hdGlvbnM7CiB9
CiAKK0VsZW1lbnRJZGVudGlmaWVyIEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRJZGVudGlmaWVyKCkK
K3sKKyAgICBhdXRvJiByYXJlRGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpOworICAgIEFT
U0VSVCghcmFyZURhdGEuaGFzRWxlbWVudElkZW50aWZpZXIoKSk7CisKKyAgICByYXJlRGF0YS5z
ZXRIYXNFbGVtZW50SWRlbnRpZmllcih0cnVlKTsKKyAgICByZXR1cm4gRWxlbWVudElkZW50aWZp
ZXI6OmdlbmVyYXRlKCk7Cit9CisKICNpZiBFTkFCTEUoQ1NTX1RZUEVEX09NKQogU3R5bGVQcm9w
ZXJ0eU1hcCogRWxlbWVudDo6YXR0cmlidXRlU3R5bGVNYXAoKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgK
aW5kZXggYTk5MjhmN2I2YzAzYjU2YWNhODM5ZWNlNTk3YjQxN2QxYTMxODkxNC4uZTg1ZTBlODgx
NTY3ZjgzOGIzNDA1OGJkZmE2NDU5NGU2NDI3OWNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC01
OTIsNiArNTkyLDggQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPFJlZjxXZWJBbmltYXRpb24+
PiBhbmltYXRlKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4mJiwg
T3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIEtleWZyYW1lQW5pbWF0aW9uT3B0aW9ucz4+JiYpOwog
ICAgIFZlY3RvcjxSZWZQdHI8V2ViQW5pbWF0aW9uPj4gZ2V0QW5pbWF0aW9ucygpOwogCisgICAg
RWxlbWVudElkZW50aWZpZXIgY3JlYXRlRWxlbWVudElkZW50aWZpZXIoKTsKKwogI2lmIEVOQUJM
RShQT0lOVEVSX0VWRU5UUykKICAgICBPcHRpb25TZXQ8VG91Y2hBY3Rpb24+IGNvbXB1dGVkVG91
Y2hBY3Rpb25zKCkgY29uc3Q7CiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9M
TElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50SWRlbnRpZmllci5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmVk
Mzc4MjQyYTRjMDg5MDA2M2M4NTA5YTIyOGRjOGJkZmViNGZlYwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50SWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlm
aWVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBFbGVtZW50SWRlbnRpZmllclR5
cGUgeyB9OwordXNpbmcgRWxlbWVudElkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPEVsZW1l
bnRJZGVudGlmaWVyVHlwZT47CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50UmFyZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5j
cHAKaW5kZXggNGRkNjBlYjg0ZjYzZDEyZmU4MTRlMzZjMzVjYzUwMTIyNGNjOTcxMS4uOTI2NTdm
ZjNiMGYxN2IyZTBhZWZiMTI5ZmE4NDkxMTI2M2JjMzU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnRSYXJlRGF0YS5jcHAKQEAgLTM3LDkgKzM3LDkgQEAgc3RydWN0IFNhbWVTaXplQXNFbGVt
ZW50UmFyZURhdGEgOiBOb2RlUmFyZURhdGEgewogICAgIGludCB0YWJJbmRleDsKICAgICB1bnNp
Z25lZCBzaG9ydCBjaGlsZEluZGV4OwogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICB1
bnNpZ25lZCBiaXRmaWVsZHMgOiAxMTsKKyAgICB1bnNpZ25lZCBiaXRmaWVsZHMgOiAxMjsKICNl
bHNlCi0gICAgdW5zaWduZWQgYml0ZmllbGRzIDogMTA7CisgICAgdW5zaWduZWQgYml0ZmllbGRz
IDogMTE7CiAjZW5kaWYKICAgICBMYXlvdXRTaXplIHNpemVGb3JSZXNpemluZzsKICAgICBJbnRQ
b2ludCBzYXZlZExheWVyU2Nyb2xsUG9zaXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudFJhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVE
YXRhLmgKaW5kZXggZmU4MGUzMzFkNWNiMjEwYmE3YjA1ZDIxOTI3OGEwMzc1OTFiOTM5Zi4uYjZm
ZDY0MGI5Y2UzM2JkM2RiYWRjOGMyMTBmZjU0ZjQxOTc1NGE0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50UmFyZURhdGEuaApAQCAtMTIzLDYgKzEyMyw5IEBAIHB1YmxpYzoKICAgICBib29sIGhh
c0NTU0FuaW1hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ1NTQW5pbWF0aW9uOyB9CiAgICAg
dm9pZCBzZXRIYXNDU1NBbmltYXRpb24oYm9vbCB2YWx1ZSkgeyBtX2hhc0NTU0FuaW1hdGlvbiA9
IHZhbHVlOyB9CiAKKyAgICBib29sIGhhc0VsZW1lbnRJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1
cm4gbV9oYXNFbGVtZW50SWRlbnRpZmllcjsgfQorICAgIHZvaWQgc2V0SGFzRWxlbWVudElkZW50
aWZpZXIoYm9vbCB2YWx1ZSkgeyBtX2hhc0VsZW1lbnRJZGVudGlmaWVyID0gdmFsdWU7IH0KKwog
I2lmIEVOQUJMRShJTlRFUlNFQ1RJT05fT0JTRVJWRVIpCiAgICAgSW50ZXJzZWN0aW9uT2JzZXJ2
ZXJEYXRhKiBpbnRlcnNlY3Rpb25PYnNlcnZlckRhdGEoKSB7IHJldHVybiBtX2ludGVyc2VjdGlv
bk9ic2VydmVyRGF0YS5nZXQoKTsgfQogICAgIHZvaWQgc2V0SW50ZXJzZWN0aW9uT2JzZXJ2ZXJE
YXRhKHN0ZDo6dW5pcXVlX3B0cjxJbnRlcnNlY3Rpb25PYnNlcnZlckRhdGE+JiYgZGF0YSkgeyBt
X2ludGVyc2VjdGlvbk9ic2VydmVyRGF0YSA9IFdURk1vdmUoZGF0YSk7IH0KQEAgLTE4MCw2ICsx
ODMsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgdW5zaWduZWQgbV9oYXNQZW5kaW5nUmVzb3Vy
Y2VzIDogMTsKICAgICB1bnNpZ25lZCBtX2hhc0NTU0FuaW1hdGlvbiA6IDE7CisgICAgdW5zaWdu
ZWQgbV9oYXNFbGVtZW50SWRlbnRpZmllciA6IDE7CiAgICAgdW5zaWduZWQgbV9jaGlsZHJlbkFm
ZmVjdGVkQnlIb3ZlciA6IDE7CiAgICAgdW5zaWduZWQgbV9jaGlsZHJlbkFmZmVjdGVkQnlEcmFn
IDogMTsKICAgICAvLyBCaXRzIGZvciBkeW5hbWljIGNoaWxkIG1hdGNoaW5nLgpAQCAtMjI4LDYg
KzIzMiw3IEBAIGlubGluZSBFbGVtZW50UmFyZURhdGE6OkVsZW1lbnRSYXJlRGF0YShSZW5kZXJF
bGVtZW50KiByZW5kZXJlcikKICNlbmRpZgogICAgICwgbV9oYXNQZW5kaW5nUmVzb3VyY2VzKGZh
bHNlKQogICAgICwgbV9oYXNDU1NBbmltYXRpb24oZmFsc2UpCisgICAgLCBtX2hhc0VsZW1lbnRJ
ZGVudGlmaWVyKGZhbHNlKQogICAgICwgbV9jaGlsZHJlbkFmZmVjdGVkQnlIb3ZlcihmYWxzZSkK
ICAgICAsIG1fY2hpbGRyZW5BZmZlY3RlZEJ5RHJhZyhmYWxzZSkKICAgICAsIG1fY2hpbGRyZW5B
ZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCBhNjNjMTk0Yjhi
NTA3MzczMWNkOTE5MWIzMzEyNjFmMGY4ODg3MGM2Li4yMzY5ZWEyMDM2ZDhmMzNlZjU5YjAzZDlk
MTY4OGQ5NmEyMjUxODIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTI4Myw3ICsyODMsNyBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogCi0gICAgYm9vbCBpc1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzUm9vdEVkaXRhYmxlRWxlbWVudCgpIGNvbnN0Owog
ICAgIFdFQkNPUkVfRVhQT1JUIEVsZW1lbnQqIHJvb3RFZGl0YWJsZUVsZW1lbnQoKSBjb25zdDsK
IAogICAgIC8vIENhbGxlZCBieSB0aGUgcGFyc2VyIHdoZW4gdGhpcyBlbGVtZW50J3MgY2xvc2Ug
dGFnIGlzIHJlYWNoZWQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50LmgKaW5kZXggYjFlMzVjYjc3NmE4ZmUxNTE1ZjcxNmE3MmZjNzNlOTI0YTFj
MmJmMS4uY2Y4Yzc0NGI3MDNmYzU0ZWI1OTM5MTQwM2I2MTlmMmQ1NjNlZWY1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaApAQCAtOTgs
NiArOTgsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzaG93UGxhY2Vob2xk
ZXJJZk5lY2Vzc2FyeSgpOwogI2VuZGlmCiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIGJv
b2wgaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUoKSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAg
IEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCYsIEhUTUxGb3JtRWxlbWVudCopOwogICAgIGJvb2wgaXNQbGFjZWhvbGRlckVtcHR5KCkgY29u
c3Q7CkBAIC0xMDcsNyArMTA5LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBkaXNhYmxlZFN0
YXRlQ2hhbmdlZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVhZE9ubHlTdGF0ZUNoYW5nZWQoKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUoKSBj
b25zdDsKKwogICAgIHZvaWQgdXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KCk7CiAK
ICAgICB2b2lkIGNhY2hlU2VsZWN0aW9uKGludCBzdGFydCwgaW50IGVuZCwgVGV4dEZpZWxkU2Vs
ZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5CmluZGV4IGJmYWIwM2FiNGMwM2U1YWI1ZmRjN2M1OTBhYWFhMDcyNWJjNmZmOWUu
LjhkZWY4NDU3ZTgzN2QwMDZiNjM1Y2Q4Y2M5ZDZlZWRlYzNkMDJjMzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtNDUzLDYgKzQ1Myw3IEBAIGRlZiBoZWFk
ZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViS2l0OjpXZWJNb3VzZUV2ZW50JzogWyci
V2ViRXZlbnQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6V2ViVG91Y2hFdmVudCc6IFsnIldlYkV2
ZW50LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OldlYldoZWVsRXZlbnQnOiBbJyJXZWJFdmVudC5o
IiddLAorICAgICAgICAnc3RydWN0IFdlYktpdDo6VGV4dElucHV0Q29udGV4dCc6IFsnIlRleHRJ
bnB1dENvbnRleHQuaCInXSwKICAgICAgICAgJ3N0cnVjdCBXZWJLaXQ6OldlYlVzZXJTY3JpcHRE
YXRhJzogWyciV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmgiJ10sCiAgICAgICAg
ICdzdHJ1Y3QgV2ViS2l0OjpXZWJVc2VyU3R5bGVTaGVldERhdGEnOiBbJyJXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJEYXRhVHlwZXMuaCInXSwKICAgICAgICAgJ3N0cnVjdCBXZWJLaXQ6OldlYlNj
cmlwdE1lc3NhZ2VIYW5kbGVyRGF0YSc6IFsnIldlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFU
eXBlcy5oIiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVGV4dElucHV0Q29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9UZXh0SW5wdXRDb250ZXh0LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45MGU3YjNlNDM0Y2JlMGY4ODMyODhlMDhmNTE2YzI2OWQ1YjMxNDYyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVGV4dElucHV0Q29udGV4dC5jcHAKQEAg
LTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJUZXh0SW5wdXRDb250ZXh0LmgiCisKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCIKKworbmFtZXNwYWNlIElQQyB7CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJLaXQ6OlRleHRJ
bnB1dENvbnRleHQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViS2l0OjpUZXh0
SW5wdXRDb250ZXh0JiBjb250ZXh0KQoreworICAgIGVuY29kZXIgPDwgY29udGV4dC5ib3VuZGlu
Z1JlY3Q7CisgICAgZW5jb2RlciA8PCBjb250ZXh0LndlYlBhZ2VJZGVudGlmaWVyOworICAgIGVu
Y29kZXIgPDwgY29udGV4dC5kb2N1bWVudElkZW50aWZpZXI7CisgICAgZW5jb2RlciA8PCBjb250
ZXh0LmVsZW1lbnRJZGVudGlmaWVyOworfQorCitPcHRpb25hbDxXZWJLaXQ6OlRleHRJbnB1dENv
bnRleHQ+IEFyZ3VtZW50Q29kZXI8V2ViS2l0OjpUZXh0SW5wdXRDb250ZXh0Pjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCit7CisgICAgV2ViS2l0OjpUZXh0SW5wdXRDb250ZXh0IGNvbnRleHQ7
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb250ZXh0LmJvdW5kaW5nUmVjdCkpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb250ZXh0Lndl
YlBhZ2VJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBhdXRv
IGRvY3VtZW50SWRlbnRpZmllciA9IFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllcjo6ZGVjb2Rl
KGRlY29kZXIpOworICAgIGlmICghZG9jdW1lbnRJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIGNvbnRleHQuZG9jdW1lbnRJZGVudGlmaWVyID0gKmRvY3VtZW50
SWRlbnRpZmllcjsKKyAgICBhdXRvIGVsZW1lbnRJZGVudGlmaWVyID0gV2ViQ29yZTo6RWxlbWVu
dElkZW50aWZpZXI6OmRlY29kZShkZWNvZGVyKTsKKyAgICBpZiAoIWVsZW1lbnRJZGVudGlmaWVy
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGNvbnRleHQuZWxlbWVudElkZW50
aWZpZXIgPSAqZWxlbWVudElkZW50aWZpZXI7CisKKyAgICByZXR1cm4gY29udGV4dDsKK30KKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVGV4dElucHV0Q29udGV4dC5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvVGV4dElucHV0Q29udGV4dC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMzMTMx
MTUxMDExYTE4NTk3OTYyZDUzZGM0OWQ1Yjg3NWQxZTBiYjEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9UZXh0SW5wdXRDb250ZXh0LmgKQEAgLTAsMCArMSw1NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL0VsZW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVj
dC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFRleHRJbnB1dENvbnRleHQgewor
ICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBib3VuZGluZ1JlY3Q7CisKKyAgICB1aW50NjRfdCB3ZWJQ
YWdlSWRlbnRpZmllcjsKKyAgICBXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIgZG9jdW1lbnRJ
ZGVudGlmaWVyOworICAgIFdlYkNvcmU6OkVsZW1lbnRJZGVudGlmaWVyIGVsZW1lbnRJZGVudGlm
aWVyOworCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRleHRJbnB1dENvbnRleHQmIG90aGVy
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGJvdW5kaW5nUmVjdCA9PSBvdGhlci5ib3Vu
ZGluZ1JlY3QKKyAgICAgICAgICAgICYmIHdlYlBhZ2VJZGVudGlmaWVyID09IG90aGVyLndlYlBh
Z2VJZGVudGlmaWVyCisgICAgICAgICAgICAmJiBkb2N1bWVudElkZW50aWZpZXIgPT0gb3RoZXIu
ZG9jdW1lbnRJZGVudGlmaWVyCisgICAgICAgICAgICAmJiBlbGVtZW50SWRlbnRpZmllciA9PSBv
dGhlci5lbGVtZW50SWRlbnRpZmllcjsKKyAgICB9Cit9OworCit9CisKK25hbWVzcGFjZSBJUEMg
ewordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJLaXQ6OlRleHRJbnB1dENvbnRl
eHQ+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYktpdDo6VGV4
dElucHV0Q29udGV4dCYpOworICAgIHN0YXRpYyBPcHRpb25hbDxXZWJLaXQ6OlRleHRJbnB1dENv
bnRleHQ+IGRlY29kZShEZWNvZGVyJik7Cit9OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggNGFiMWZhMDAz
YmExYzQyZjI3ZjZkNDdhMTM2OWM0ZTNmOWIyNDUyMC4uMWM2NDZiZGMxZGI2ZTMyZTBlYzMwOTBm
NTI2ZTIwOWQzMmNjNDc0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0xMjgsNiArMTI4LDcgQEAgU2hhcmVk
L1NoYXJlZFN0cmluZ0hhc2hTdG9yZS5jcHAKIFNoYXJlZC9TaGFyZWRTdHJpbmdIYXNoVGFibGVS
ZWFkT25seS5jcHAKIFNoYXJlZC9TaGFyZWRTdHJpbmdIYXNoVGFibGUuY3BwCiBTaGFyZWQvU3Rh
dGlzdGljc0RhdGEuY3BwCitTaGFyZWQvVGV4dElucHV0Q29udGV4dC5jcHAKIFNoYXJlZC9Ub3Vj
aEJhck1lbnVEYXRhLmNwcAogU2hhcmVkL1RvdWNoQmFyTWVudUl0ZW1EYXRhLmNwcAogU2hhcmVk
L1VSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
b3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGE3
MzBhNTVkMTNhYTcxMzRmNjdiYzUzYmQ5ZDE5MGE1YTVhZTIwMGUuLmNhOGVmOGZhYzgzZWQ2ODU4
MGYyMjIyMmQ5MjM5MDU3Njc0ZTkyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNl
c0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTI1NCw2
ICsyNTQsNyBAQCBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0xpbmtJY29uUGFyYW1ldGVycy5tbQog
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0KIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLU2Vzc2lvblN0YXRlLm1tCitVSVByb2Nlc3MvQVBJL0NvY29h
L19XS1RleHRJbnB1dENvbnRleHQubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGh1bWJuYWls
Vmlldy5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3Jl
Lm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50RmlsdGVyLm1tCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA3OTY1YTFl
ZGViMDdjMDMwMTgwMWFlNjQ1NmJmMDJmMjAxNzJmNjEwLi45YmY2NWQzMzQ4OGEzZjYwYzY0NTlh
MWEzNzFhMzJmMDllMDA0NmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbXBvcnQgIlJlbW90ZU9iamVj
dFJlZ2lzdHJ5LmgiCiAjaW1wb3J0ICJSZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VzLmgiCiAj
aW1wb3J0ICJTYWZlQnJvd3NpbmdXYXJuaW5nLmgiCisjaW1wb3J0ICJUZXh0SW5wdXRDb250ZXh0
LmgiCiAjaW1wb3J0ICJVSURlbGVnYXRlLmgiCiAjaW1wb3J0ICJVc2VyTWVkaWFQcm9jZXNzTWFu
YWdlci5oIgogI2ltcG9ydCAiVmVyc2lvbkNoZWNrcy5oIgpAQCAtOTYsNiArOTcsNyBAQAogI2lt
cG9ydCAiX1dLSW5zcGVjdG9ySW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1JlbW90ZU9iamVjdFJl
Z2lzdHJ5SW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1Nlc3Npb25TdGF0ZUludGVybmFsLmgiCisj
aW1wb3J0ICJfV0tUZXh0SW5wdXRDb250ZXh0SW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1Zpc2l0
ZWRMaW5rU3RvcmVJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLV2Vic2l0ZVBvbGljaWVzSW50ZXJu
YWwuaCIKICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cuaD4KQEAgLTQ4MjYsNiAr
NDgyOCwzMSBAQCBGT1JfRUFDSF9QUklWQVRFX1dLQ09OVEVOVFZJRVdfQUNUSU9OKEZPUldBUkRf
QUNUSU9OX1RPX1dLQ09OVEVOVFZJRVcpCiAgICAgfQogfQogCistICh2b2lkKV9yZXF1ZXN0VGV4
dElucHV0Q29udGV4dHNJblJlY3Q6KENHUmVjdClyZWN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lk
KF4pKE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqKSljb21wbGV0aW9uSGFuZGxlcgor
eworICAgIF9wYWdlLT50ZXh0SW5wdXRDb250ZXh0c0luUmVjdChyZWN0LCBbY2FwdHVyZWRDb21w
bGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChWZWN0b3I8
V2ViS2l0OjpUZXh0SW5wdXRDb250ZXh0PiBjb250ZXh0cykgeworICAgICAgICBSZXRhaW5QdHI8
TlNNdXRhYmxlQXJyYXk+IGVsZW1lbnRzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0V2l0aENhcGFjaXR5OmNvbnRleHRzLnNpemUoKV0pOworCisgICAgICAgIGZvciAoY29u
c3QgYXV0byYgY29udGV4dCA6IGNvbnRleHRzKQorICAgICAgICAgICAgW2VsZW1lbnRzIGFkZE9i
amVjdDphZG9wdE5TKFtbX1dLVGV4dElucHV0Q29udGV4dCBhbGxvY10gX2luaXRXaXRoVGV4dElu
cHV0Q29udGV4dDpjb250ZXh0XSkuZ2V0KCldOworCisgICAgICAgIGNhcHR1cmVkQ29tcGxldGlv
bkhhbmRsZXIoZWxlbWVudHMuZ2V0KCkpOworICAgIH0pOworfQorCistICh2b2lkKV9mb2N1c1Rl
eHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKil0ZXh0SW5wdXRDb250ZXh0IGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAg
YXV0byB3ZWJDb250ZXh0ID0gW3RleHRJbnB1dENvbnRleHQgX3RleHRJbnB1dENvbnRleHRdOwor
ICAgIGlmICh3ZWJDb250ZXh0LndlYlBhZ2VJZGVudGlmaWVyICE9IF9wYWdlLT5wYWdlSUQoKSkK
KyAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZv
cm1hdDpAIlRoZSBwcm92aWRlZCBfV0tUZXh0SW5wdXRDb250ZXh0IHdhcyBub3QgY3JlYXRlZCBi
eSB0aGlzIFdLV2ViVmlldy4iXTsKKworICAgIFtzZWxmIGJlY29tZUZpcnN0UmVzcG9uZGVyXTsK
KworICAgIF9wYWdlLT5mb2N1c1RleHRJbnB1dENvbnRleHQod2ViQ29udGV4dCwgW2NhcHR1cmVk
Q29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShib29s
IHN1Y2Nlc3MpIHsKKyAgICAgICAgY2FwdHVyZWRDb21wbGV0aW9uSGFuZGxlcihzdWNjZXNzKTsK
KyAgICB9KTsKK30KKwogI2lmIFBMQVRGT1JNKE1BQykKIC0gKHZvaWQpX3NldFNob3VsZFN1cHBy
ZXNzRmlyc3RSZXNwb25kZXJDaGFuZ2VzOihCT09MKXNob3VsZFN1cHByZXNzCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApp
bmRleCBlZDYzNjJkNDY4MGE2MTc4NTgwZWI3NGYxY2MxZjMxNWRmZTYyMjlkLi5lYzY5MWM2MThl
NzFlZGM0MTcyNGI3MDZkYjFhMWY2MDc4NjY4Y2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTExMSw2ICsxMTEs
NyBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLUmVjdEVkZ2UpIHsKIEBjbGFz
cyBfV0tSZW1vdGVPYmplY3RSZWdpc3RyeTsKIEBjbGFzcyBfV0tTYWZlQnJvd3NpbmdXYXJuaW5n
OwogQGNsYXNzIF9XS1Nlc3Npb25TdGF0ZTsKK0BjbGFzcyBfV0tUZXh0SW5wdXRDb250ZXh0Owog
QGNsYXNzIF9XS1RodW1ibmFpbFZpZXc7CiBAY2xhc3MgX1dLV2Vic2l0ZVBvbGljaWVzOwogQGNs
YXNzIF9XS1dlYlZpZXdQcmludEZvcm1hdHRlcjsKQEAgLTQxOCw2ICs0MTksMTAgQEAgdHlwZWRl
ZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1JlY3RFZGdlKSB7CiAtICh2b2lkKV9zdG9wQWxs
TWVkaWFQbGF5YmFjazsKIC0gKHZvaWQpX3N1c3BlbmRBbGxNZWRpYVBsYXliYWNrOwogLSAodm9p
ZClfcmVzdW1lQWxsTWVkaWFQbGF5YmFjazsKKworLSAodm9pZClfcmVxdWVzdFRleHRJbnB1dENv
bnRleHRzSW5SZWN0OihDR1JlY3QpcmVjdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0Fy
cmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4gKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FW
QUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9m
b2N1c1RleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKil0ZXh0SW5wdXRFbGVt
ZW50IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiBA
ZW5kCiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dElucHV0Q29udGV4dC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRJbnB1dENvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOTZi
M2QyMDdmZDU0YWQ2M2I2ZmViZmRiOTZhMmM1N2U1MmFiY2M0Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRJbnB1dENvbnRleHQuaApA
QCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlv
bi5oPgorCitXS19DTEFTU19BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpCitAaW50ZXJmYWNlIF9XS1RleHRJbnB1dENvbnRleHQgOiBOU09iamVjdCA8TlNDb3B5
aW5nPgorCistIChpbnN0YW5jZXR5cGUpaW5pdCBOU19VTkFWQUlMQUJMRTsKKworQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5KSBDR1JlY3QgYm91bmRpbmdSZWN0OworCitAZW5kCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dElucHV0Q29u
dGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0SW5wdXRD
b250ZXh0Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3ZWNlMmQyMjUwYjE4MTA2MTczMWUyMjhlNDg4NjZmYjUx
YmNlMDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLVGV4dElucHV0Q29udGV4dC5tbQpAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJfV0tUZXh0SW5wdXRDb250ZXh0LmgiCisKKyNp
bXBvcnQgIlRleHRJbnB1dENvbnRleHQuaCIKKyNpbXBvcnQgIl9XS1RleHRJbnB1dENvbnRleHRJ
bnRlcm5hbC5oIgorCitAaW1wbGVtZW50YXRpb24gX1dLVGV4dElucHV0Q29udGV4dCB7CisgICAg
V2ViS2l0OjpUZXh0SW5wdXRDb250ZXh0IF90ZXh0SW5wdXRDb250ZXh0OworfQorCistIChpbnN0
YW5jZXR5cGUpaW5pdAoreworICAgIHJldHVybiBuaWw7Cit9CisKKy0gKGluc3RhbmNldHlwZSlf
aW5pdFdpdGhUZXh0SW5wdXRDb250ZXh0Oihjb25zdCBXZWJLaXQ6OlRleHRJbnB1dENvbnRleHQm
KWNvbnRleHQKK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKworICAgIF90ZXh0SW5wdXRDb250ZXh0ID0gY29udGV4dDsKKwor
ICAgIHJldHVybiBzZWxmOworfQorCistIChDR1JlY3QpYm91bmRpbmdSZWN0Cit7CisgICAgcmV0
dXJuIF90ZXh0SW5wdXRDb250ZXh0LmJvdW5kaW5nUmVjdDsKK30KKworLSAoY29uc3QgV2ViS2l0
OjpUZXh0SW5wdXRDb250ZXh0JilfdGV4dElucHV0Q29udGV4dAoreworICAgIHJldHVybiBfdGV4
dElucHV0Q29udGV4dDsKK30KKworLSAoQk9PTClpc0VxdWFsOihpZClvdGhlck9iamVjdAorewor
ICAgIGlmIChzZWxmID09IG90aGVyT2JqZWN0KQorICAgICAgICByZXR1cm4gWUVTOworCisgICAg
aWYgKCFbb3RoZXJPYmplY3QgaXNLaW5kT2ZDbGFzczpbX1dLVGV4dElucHV0Q29udGV4dCBjbGFz
c11dKQorICAgICAgICByZXR1cm4gTk87CisKKyAgICBfV0tUZXh0SW5wdXRDb250ZXh0ICpvdGhl
ciA9IChfV0tUZXh0SW5wdXRDb250ZXh0ICopb3RoZXJPYmplY3Q7CisKKyAgICByZXR1cm4gX3Rl
eHRJbnB1dENvbnRleHQgPT0gb3RoZXItPl90ZXh0SW5wdXRDb250ZXh0OworfQorCistIChOU1VJ
bnRlZ2VyKWhhc2gKK3sKKyAgICByZXR1cm4gX3RleHRJbnB1dENvbnRleHQuZWxlbWVudElkZW50
aWZpZXIudG9VSW50NjQoKTsKK30KKworLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25l
Cit7CisgICAgcmV0dXJuIFtzZWxmIHJldGFpbl07Cit9CisKK0BlbmQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0SW5wdXRDb250ZXh0SW50ZXJu
YWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0SW5wdXRDb250
ZXh0SW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZjMyYTQxMDA1ZmYyZmNkMjEzNWFmMjdlNTAyOGIz
YmNhODJjNjk3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1RleHRJbnB1dENvbnRleHRJbnRlcm5hbC5oCkBAIC0wLDAgKzEsMzggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW1wb3J0ICJfV0tUZXh0SW5wdXRDb250ZXh0LmgiCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworc3RydWN0IFRleHRJbnB1dENvbnRleHQ7Cit9CisKK0BpbnRlcmZhY2UgX1dLVGV4
dElucHV0Q29udGV4dCAoKQorCistIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoVGV4dElucHV0Q29u
dGV4dDooY29uc3QgV2ViS2l0OjpUZXh0SW5wdXRDb250ZXh0Jiljb250ZXh0OworCistIChjb25z
dCBXZWJLaXQ6OlRleHRJbnB1dENvbnRleHQmKV90ZXh0SW5wdXRDb250ZXh0OworCitAZW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBkZTEzNmMwMzc3N2Jl
MzYwZmJjZTdlMDdlZGYxN2RiNTk3ZGEyMjVmLi4wNGFhNjZkMTllYjA2NWEyYjVjMGQyZWJjY2M4
ZGQyNjQzMDcwMzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
QEAgLTgzLDYgKzgzLDcgQEAKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlclN0YXRlLmgi
CisjaW5jbHVkZSAiVGV4dElucHV0Q29udGV4dC5oIgogI2luY2x1ZGUgIlVJTWVzc2FnZVBvcnRD
aGFubmVsUHJvdmlkZXIuaCIKICNpbmNsdWRlICJVUkxTY2hlbWVUYXNrUGFyYW1ldGVycy5oIgog
I2luY2x1ZGUgIlVuZG9PclJlZG8uaCIKQEAgLTg4MjEsNiArODgyMiwyNiBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6d2ViVmlld0RpZE1vdmVUb1dpbmRvdygpCiAgICAgfQogfQogCit2b2lkIFdlYlBh
Z2VQcm94eTo6dGV4dElucHV0Q29udGV4dHNJblJlY3QoV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3Qs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYktpdDo6VGV4dElucHV0Q29udGV4dD4p
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghaXNWYWxpZCgpKSB7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBt
X3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQ
YWdlOjpUZXh0SW5wdXRDb250ZXh0c0luUmVjdChyZWN0KSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIG1fcGFnZUlEKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmZvY3VzVGV4dElucHV0
Q29udGV4dChjb25zdCBUZXh0SW5wdXRDb250ZXh0JiBjb250ZXh0LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghaXNWYWxpZCgp
KSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6OldlYlBhZ2U6OkZvY3VzVGV4dElucHV0Q29udGV4dChjb250ZXh0KSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIG1fcGFnZUlEKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CiAKICN1bmRlZiBNRVJHRV9XSEVFTF9FVkVOVFMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKaW5kZXggYTgwMmIxMGUyMTU1Y2UyYWJlZjVhMDQ3ZDI5NDQyNTc2NTUyZGI4
MC4uZjJhMzEzZjM0NjA3YzcyYjdjZGNmMTgxZTE3NzU0NDk5MjdmY2MyYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTI3NSw2ICsyNzUsNyBAQCBzdHJ1Y3QgSW50
ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3Q7CiBzdHJ1Y3QgTG9hZFBhcmFtZXRlcnM7CiBzdHJ1
Y3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhOwogc3RydWN0IFByaW50SW5mbzsKK3N0cnVjdCBUZXh0
SW5wdXRDb250ZXh0Owogc3RydWN0IFdlYlBvcHVwSXRlbTsKIHN0cnVjdCBVUkxTY2hlbWVUYXNr
UGFyYW1ldGVyczsKIApAQCAtNjA2LDYgKzYwNyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcXVl
c3RGb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRnVuY3Rpb248dm9pZChjb25zdCBXZWJD
b3JlOjpGb250QXR0cmlidXRlcyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lk
IGZvbnRBdHRyaWJ1dGVzQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXMmLCBD
YWxsYmFja0lEKTsKIAorICAgIHZvaWQgdGV4dElucHV0Q29udGV4dHNJblJlY3QoV2ViQ29yZTo6
RmxvYXRSZWN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxUZXh0SW5wdXRDb250ZXh0
Pik+JiYpOworICAgIHZvaWQgZm9jdXNUZXh0SW5wdXRDb250ZXh0KGNvbnN0IFRleHRJbnB1dENv
bnRleHQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKwogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgZG91YmxlIGRpc3BsYXllZENvbnRlbnRTY2FsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbGFzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZS5zY2FsZSgpOyB9CiAgICAgY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBleHBvc2VkQ29udGVudFJlY3QoKSBjb25zdCB7IHJldHVy
biBtX2xhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUuZXhwb3NlZENvbnRlbnRSZWN0KCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDc3OTVkZGExNDc1Y2EyMGRiYzQzNWZiYzkzMjcxYmNmYTQzZGUzZDkuLmZjODYwNGYyYjVhZmMx
Y2IyZmFmNjY2MzNkZjk1OTE5YzRkMThjZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzI3LDYgKzcyNyw5IEBACiAJCTJEREY3MzE1
MThFOTUwNjAwMDRGNUE2NiAvKiBSZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEREY3MzEzMThF
OTUwNjAwMDRGNUE2NiAvKiBSZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24uaCAqLzsg
fTsKIAkJMkRFNjk0M0QxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRy
b2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkRFNjk0M0IxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNh
dGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQkyREU2OTQzRTE4QkQy
QTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREU2OTQzQzE4QkQy
QTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VzLmggKi87
IH07CisJCTJERTlCMTM1MjIzMUI1QjIwMDUyODdCNyAvKiBUZXh0SW5wdXRDb250ZXh0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREU5QjEzMzIyMzFC
NUIyMDA1Mjg3QjcgLyogVGV4dElucHV0Q29udGV4dC5oICovOyB9OworCQkyREU5QjEzQTIyMzFG
NjFDMDA1Mjg3QjcgLyogX1dLVGV4dElucHV0Q29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRFOUIxMzgyMjMxRjYxQzAwNTI4N0I3IC8qIF9X
S1RleHRJbnB1dENvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkyREU5QjEzQzIyMzFGNzdDMDA1Mjg3QjcgLyogX1dLVGV4dElucHV0Q29u
dGV4dEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyREU5QjEzQjIyMzFGNzdDMDA1Mjg3QjcgLyogX1dLVGV4dElucHV0Q29udGV4dEludGVy
bmFsLmggKi87IH07CiAJCTJERUFDNUNGMUFDMzY4QkIwMEExOTVEOCAvKiBfV0tGaW5kT3B0aW9u
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRFQUM1
Q0UxQUMzNjhCQjAwQTE5NUQ4IC8qIF9XS0ZpbmRPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkRFQjFEMkUyMTI3NDczNjAwOTMzOTA2
IC8qIEFyZ3VtZW50Q29kZXJzQ0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUFBRjBDNDkxMkIxNjMzNDAwOEU0OUUyIC8qIEFyZ3VtZW50Q29kZXJz
Q0YuY3BwICovOyB9OwogCQkyREY2RkU1MjIxMkUxMTA5MDA0NjkwMzAgLyogV2ViUGFnZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzk2M0Q2QTEx
M0REMTkyMDA1NzRCRTIgLyogV2ViUGFnZS5jcHAgKi87IH07CkBAIC0yNzg2LDYgKzI3ODksMTEg
QEAKIAkJMkRERjczMTQxOEU5NTA2MDAwNEY1QTY2IC8qIFJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
Q29sbGVjdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJl
bW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMkRFNjk0M0IxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNv
bnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHA7
IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xs
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OwogCQkyREU2OTQzQzE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJv
bGxlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNtYXJ0TWFn
bmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9
IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMkRFOUIxMzMyMjMxQjVCMjAwNTI4N0I3IC8qIFRl
eHRJbnB1dENvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dElu
cHV0Q29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREU5QjEzNDIyMzFC
NUIyMDA1Mjg3QjcgLyogVGV4dElucHV0Q29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBUZXh0SW5wdXRDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMkRFOUIxMzcyMjMxRjYxQzAwNTI4N0I3IC8qIF9XS1RleHRJbnB1dENvbnRl
eHQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tUZXh0SW5w
dXRDb250ZXh0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREU5QjEzODIyMzFG
NjFDMDA1Mjg3QjcgLyogX1dLVGV4dElucHV0Q29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBfV0tUZXh0SW5wdXRDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTJERTlCMTNCMjIzMUY3N0MwMDUyODdCNyAvKiBfV0tUZXh0SW5wdXRDb250ZXh0
SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLVGV4dElucHV0
Q29udGV4dEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJERUFDNUNF
MUFDMzY4QkIwMEExOTVEOCAvKiBfV0tGaW5kT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBfV0tGaW5kT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyREYzOTYyQTIxQzhEQzUwMDA4ODM1RTMgLyogV0tJbmtQaWNrZXJWaWV3Lm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBuYW1lID0gV0tJbmtQaWNrZXJWaWV3Lm1tOyBwYXRoID0gaW9zL1dLSW5rUGlj
a2VyVmlldy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRGMzk2MkIyMUM4REM1
MDAwODgzNUUzIC8qIFdLSW5rUGlja2VyVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0lua1BpY2tl
clZpZXcuaDsgcGF0aCA9IGlvcy9XS0lua1BpY2tlclZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTUxMDUsNiArNTExMyw4IEBACiAJCQkJNTI3MkIyODgxNDA2OTg1RDAwOTZB
NUQwIC8qIFN0YXRpc3RpY3NEYXRhLmNwcCAqLywKIAkJCQk1MjcyQjI4OTE0MDY5ODVEMDA5NkE1
RDAgLyogU3RhdGlzdGljc0RhdGEuaCAqLywKIAkJCQkxQTVFNERBMzEyRDNCRDNEMDA5OUEyQkIg
LyogVGV4dENoZWNrZXJTdGF0ZS5oICovLAorCQkJCTJERTlCMTM0MjIzMUI1QjIwMDUyODdCNyAv
KiBUZXh0SW5wdXRDb250ZXh0LmNwcCAqLywKKwkJCQkyREU5QjEzMzIyMzFCNUIyMDA1Mjg3Qjcg
LyogVGV4dElucHV0Q29udGV4dC5oICovLAogCQkJCTJGRDQzQjkyMUZBMDA2QTMwMDgzRjUxQyAv
KiBUb3VjaEJhck1lbnVEYXRhLmNwcCAqLywKIAkJCQkyRkQ0M0I5MTFGQTAwNkExMDA4M0Y1MUMg
LyogVG91Y2hCYXJNZW51RGF0YS5oICovLAogCQkJCTJGODA5REQ1MUZCRDFCQzkwMDVGRTYzQSAv
KiBUb3VjaEJhck1lbnVJdGVtRGF0YS5jcHAgKi8sCkBAIC02MDc4LDYgKzYwODgsOSBAQAogCQkJ
CTFBMDAyRDNGMTk2QjMyOTQwMEI5QUQ0NCAvKiBfV0tTZXNzaW9uU3RhdGUuaCAqLywKIAkJCQkx
QTAwMkQzRTE5NkIzMjk0MDBCOUFENDQgLyogX1dLU2Vzc2lvblN0YXRlLm1tICovLAogCQkJCTFB
MDAyRDQyMTk2QjMzNzAwMEI5QUQ0NCAvKiBfV0tTZXNzaW9uU3RhdGVJbnRlcm5hbC5oICovLAor
CQkJCTJERTlCMTM4MjIzMUY2MUMwMDUyODdCNyAvKiBfV0tUZXh0SW5wdXRDb250ZXh0LmggKi8s
CisJCQkJMkRFOUIxMzcyMjMxRjYxQzAwNTI4N0I3IC8qIF9XS1RleHRJbnB1dENvbnRleHQubW0g
Ki8sCisJCQkJMkRFOUIxM0IyMjMxRjc3QzAwNTI4N0I3IC8qIF9XS1RleHRJbnB1dENvbnRleHRJ
bnRlcm5hbC5oICovLAogCQkJCTJENkIzNzE5MThBOTY3QUQwMDQyQUU4MCAvKiBfV0tUaHVtYm5h
aWxWaWV3LmggKi8sCiAJCQkJMkQ2QjM3MUExOEE5NjdBRDAwNDJBRTgwIC8qIF9XS1RodW1ibmFp
bFZpZXcubW0gKi8sCiAJCQkJMkRBQ0U2NEQxOEFEQkZGMDAwRTRDQTc2IC8qIF9XS1RodW1ibmFp
bFZpZXdJbnRlcm5hbC5oICovLApAQCAtODkzNSw2ICs4OTQ4LDggQEAKIAkJCQkzNzYzMTFGRTFB
M0ZCNjAwMDA1QTJFNTEgLyogX1dLU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGVJbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwMDJENDQxOTZCMzM4OTAwQjlBRDQ0IC8qIF9XS1Nlc3Np
b25TdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwMDJENDMxOTZCMzM3MDAwQjlBRDQ0IC8q
IF9XS1Nlc3Npb25TdGF0ZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQkyREU5QjEzQTIy
MzFGNjFDMDA1Mjg3QjcgLyogX1dLVGV4dElucHV0Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMkRFOUIxM0MyMjMxRjc3QzAwNTI4N0I3IC8qIF9XS1RleHRJbnB1dENvbnRleHRJbnRlcm5h
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ2QjM3MUIxOEE5NjdBRDAwNDJBRTgwIC8qIF9XS1Ro
dW1ibmFpbFZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEQUNFNjRFMThBREJGRjAwMEU0Q0E3
NiAvKiBfV0tUaHVtYm5haWxWaWV3SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5RTcx
ODlDMjFGNzlEOUUwMDU1RTk3NSAvKiBfV0tUb3VjaEV2ZW50R2VuZXJhdG9yLmggaW4gSGVhZGVy
cyAqLywKQEAgLTk0MDIsNiArOTQxNyw3IEBACiAJCQkJMUFBNDE3Q0IxMkMwMENDQTAwMkJFNjdC
IC8qIFRleHRDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1M0NGQkJDODIyMjREMUI1MDAy
NjY1NDYgLyogVGV4dENoZWNrZXJDb21wbGV0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTVF
NERBNDEyRDNCRDNEMDA5OUEyQkIgLyogVGV4dENoZWNrZXJTdGF0ZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMkRFOUIxMzUyMjMxQjVCMjAwNTI4N0I3IC8qIFRleHRJbnB1dENvbnRleHQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNFMUEwQkQ3MUE0OEU2QzYwMDU0RUY3NCAvKiBUZXh0SW5wdXRTUEku
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBQUYyNjM5MTQ2ODdDMzkwMDRBMUU4QSAvKiBUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGMDVEODcxNDY4
ODM0ODAwOEIxRTgxIC8qIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAppbmRleCA2MDllMzY5NmNkNTZlMTc5YjFhM2NkMzJkNzJjNjcwZTI0YjlkMzE0Li5jOThjMTM3
Yzc0ZDA1NGM2OGVhM2E2ZTljZmVjMWYyMzVkNzg1MjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNjQ4NSw2ICs2NDg1LDk0IEBAIFdlYkNv
cmU6OkludFJlY3QgV2ViUGFnZTo6cmVjdEZvckVsZW1lbnRBdEludGVyYWN0aW9uTG9jYXRpb24o
KSBjb25zdAogCiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKK3N0YXRpYyBJbnRS
ZWN0IGVsZW1lbnRSZWN0SW5XaW5kb3dDb29yZGluYXRlcyhjb25zdCBFbGVtZW50JiBlbGVtZW50
LCBjb25zdCBGcmFtZSYgZnJhbWUpCit7CisgICAgYXV0byogdmlldyA9IGZyYW1lLnZpZXcoKTsK
KyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvKiByZW5kZXJl
ciA9IGVsZW1lbnQucmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1
cm4geyB9OworCisgICAgcmV0dXJuIHZpZXctPmNvbnRlbnRzVG9XaW5kb3cocmVuZGVyZXItPmFi
c29sdXRlQm91bmRpbmdCb3hSZWN0KCkpOworfQorCitzdGF0aWMgYm9vbCBpc0VkaXRhYmxlVGV4
dElucHV0RWxlbWVudChFbGVtZW50JiBlbGVtZW50KQoreworICAgIGlmIChpczxIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudD4oZWxlbWVudCkpIHsKKyAgICAgICAgaWYgKCFlbGVtZW50LmlzVGV4
dEZpZWxkKCkgJiYgIWlzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KGVsZW1lbnQpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQ+KGVsZW1lbnQpLmlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxlKCk7CisgICAg
fQorCisgICAgcmV0dXJuIGVsZW1lbnQuaXNSb290RWRpdGFibGVFbGVtZW50KCk7Cit9CisKK3Zv
aWQgV2ViUGFnZTo6dGV4dElucHV0Q29udGV4dHNJblJlY3QoV2ViQ29yZTo6RmxvYXRSZWN0IHNl
YXJjaFJlY3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFRleHRJbnB1dENvbnRleHQ+
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgVmVjdG9yPFdlYktpdDo6VGV4dElucHV0
Q29udGV4dD4gdGV4dElucHV0Q29udGV4dHM7CisKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZt
X3BhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNl
TmV4dCgpKSB7CisgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgp
OworICAgICAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgRGVxdWU8Tm9kZSo+IG5vZGVzVG9TZWFyY2g7CisgICAgICAgIG5vZGVzVG9TZWFyY2guYXBw
ZW5kKGRvY3VtZW50KTsKKyAgICAgICAgd2hpbGUgKCFub2Rlc1RvU2VhcmNoLmlzRW1wdHkoKSkg
eworICAgICAgICAgICAgYXV0byBub2RlID0gbm9kZXNUb1NlYXJjaC50YWtlRmlyc3QoKTsKKwor
ICAgICAgICAgICAgLy8gSXQgaXMgcG9zc2libGUgdG8gaGF2ZSBuZXN0ZWQgdGV4dCBpbnB1dCBj
b250ZXh0cyAoZS5nLiA8aW5wdXQgdHlwZT0ndGV4dCc+IGluc2lkZSBjb250ZW50ZWRpdGFibGUp
IGJ1dAorICAgICAgICAgICAgLy8gaW4gdGhpcyBjYXNlIHdlIGp1c3QgdGFrZSB0aGUgb3V0ZXJt
b3N0IGNvbnRleHQgYW5kIHNraXAgdGhlIHJlc3QuCisgICAgICAgICAgICBpZiAoIWlzPEVsZW1l
bnQ+KCpub2RlKSB8fCAhaXNFZGl0YWJsZVRleHRJbnB1dEVsZW1lbnQoZG93bmNhc3Q8RWxlbWVu
dD4oKm5vZGUpKSkgeworICAgICAgICAgICAgICAgIGZvciAoYXV0byogY2hpbGQgPSBub2RlLT5m
aXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKQorICAgICAg
ICAgICAgICAgICAgICBub2Rlc1RvU2VhcmNoLmFwcGVuZChjaGlsZCk7CisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGF1dG8mIGVsZW1lbnQg
PSBkb3duY2FzdDxFbGVtZW50Pigqbm9kZSk7CisKKyAgICAgICAgICAgIEludFJlY3QgZWxlbWVu
dFJlY3QgPSBlbGVtZW50UmVjdEluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCwgKmZyYW1lKTsK
KyAgICAgICAgICAgIGlmICghc2VhcmNoUmVjdC5pbnRlcnNlY3RzKGVsZW1lbnRSZWN0KSkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgV2ViS2l0OjpUZXh0SW5wdXRD
b250ZXh0IGNvbnRleHQ7CisgICAgICAgICAgICBjb250ZXh0LndlYlBhZ2VJZGVudGlmaWVyID0g
bV9wYWdlSUQ7CisgICAgICAgICAgICBjb250ZXh0LmRvY3VtZW50SWRlbnRpZmllciA9IGRvY3Vt
ZW50LT5pZGVudGlmaWVyKCk7CisgICAgICAgICAgICBjb250ZXh0LmVsZW1lbnRJZGVudGlmaWVy
ID0gZG9jdW1lbnQtPmlkZW50aWZpZXJGb3JFbGVtZW50KGVsZW1lbnQpOworICAgICAgICAgICAg
Y29udGV4dC5ib3VuZGluZ1JlY3QgPSBlbGVtZW50UmVjdDsKKworICAgICAgICAgICAgdGV4dElu
cHV0Q29udGV4dHMuYXBwZW5kKGNvbnRleHQpOworICAgICAgICB9CisgICAgfQorCisgICAgY29t
cGxldGlvbkhhbmRsZXIodGV4dElucHV0Q29udGV4dHMpOworfQorCit2b2lkIFdlYlBhZ2U6OmZv
Y3VzVGV4dElucHV0Q29udGV4dChjb25zdCBUZXh0SW5wdXRDb250ZXh0JiB0ZXh0SW5wdXRDb250
ZXh0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIGNvbXBsZXRpb25IYW5kbGVyKFsmXSB7CisgICAgICAgIGlmICh0ZXh0SW5wdXRDb250
ZXh0LndlYlBhZ2VJZGVudGlmaWVyICE9IG1fcGFnZUlEKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgICAgIGF1dG8qIGRvY3VtZW50ID0gRG9jdW1lbnQ6OmFsbERvY3VtZW50c01h
cCgpLmdldCh0ZXh0SW5wdXRDb250ZXh0LmRvY3VtZW50SWRlbnRpZmllcik7CisgICAgICAgIGlm
ICghZG9jdW1lbnQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKGRv
Y3VtZW50LT5wYWdlKCkgIT0gbV9wYWdlLmdldCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgIGF1dG8qIGVsZW1lbnQgPSBkb2N1bWVudC0+ZWxlbWVudFdpdGhJZGVudGlm
aWVyKHRleHRJbnB1dENvbnRleHQuZWxlbWVudElkZW50aWZpZXIpOworICAgICAgICBpZiAoIWVs
ZW1lbnQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgZWxlbWVudC0+Zm9j
dXMoKTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9KCkpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAogI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAyNWVmMjMyNmYwMjU3NDhmOTkw
YTM5YmM4NTFkNzQ2MWYyNjQzZGMzLi4zNjk5MTA2YmE4MjA2ODUwOTFjYzdlMmFhNjQxMGI4N2Fi
NjEyMGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBA
IC0yNTEsNiArMjUxLDcgQEAgc3RydWN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9u
Owogc3RydWN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0Owogc3RydWN0IExvYWRQYXJh
bWV0ZXJzOwogc3RydWN0IFByaW50SW5mbzsKK3N0cnVjdCBUZXh0SW5wdXRDb250ZXh0Owogc3Ry
dWN0IFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dDsKIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzOwogc3RydWN0IFdlYlByZWZlcmVuY2VzU3RvcmU7CkBAIC01OTIsNiArNTkzLDkgQEAg
cHVibGljOgogICAgIHZvaWQgdmlld3BvcnRQcm9wZXJ0aWVzRGlkQ2hhbmdlKGNvbnN0IFdlYkNv
cmU6OlZpZXdwb3J0QXJndW1lbnRzJik7CiAgICAgdm9pZCBleGVjdXRlRWRpdENvbW1hbmRXaXRo
Q2FsbGJhY2soY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBhcmd1bWVudCwgQ2FsbGJhY2tJ
RCk7CiAKKyAgICB2b2lkIHRleHRJbnB1dENvbnRleHRzSW5SZWN0KFdlYkNvcmU6OkZsb2F0UmVj
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViS2l0OjpUZXh0SW5wdXRDb250ZXh0
PiYpPiYmKTsKKyAgICB2b2lkIGZvY3VzVGV4dElucHV0Q29udGV4dChjb25zdCBUZXh0SW5wdXRD
b250ZXh0JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBzY3JlZW5TaXplKCkgY29uc3Q7
CiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIGF2YWlsYWJsZVNjcmVlblNpemUoKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCmluZGV4IDlkNzIzOWRiNWEwMzJhMDJlYzAyMjQ3NjNhMDc2ZDY5NjYwMzE2ODMuLjcxY2Fi
YTg5YWM0YTc0Yjc4YmI4MjA3OTdjMWIyZmNkZGYzNzI0NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNTQ5LDQg
KzU0OSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogCiAgICAgVXBk
YXRlQ3VycmVudE1vZGlmaWVyU3RhdGUoT3B0aW9uU2V0PFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6
Ok1vZGlmaWVyPiBtb2RpZmllcnMpCiAgICAgU2ltdWxhdGVEZXZpY2VPcmllbnRhdGlvbkNoYW5n
ZShkb3VibGUgYWxwaGEsIGRvdWJsZSBiZXRhLCBkb3VibGUgZ2FtbWEpCisKKyAgICBUZXh0SW5w
dXRDb250ZXh0c0luUmVjdChXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCkgLT4gKFZlY3RvcjxzdHJ1
Y3QgV2ViS2l0OjpUZXh0SW5wdXRDb250ZXh0PiBjb250ZXh0cykgQXN5bmMKKyAgICBGb2N1c1Rl
eHRJbnB1dENvbnRleHQoc3RydWN0IFdlYktpdDo6VGV4dElucHV0Q29udGV4dCBjb250ZXh0KSAt
PiAoYm9vbCBzdWNjZXNzKSBBc3luYwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDQ2ZDAwNjY0ZDg3ODZkN2NiZDAyMjY4NDU0YjczZjA5MGY5
ZmUzM2IuLmUwOGU1MDEzNjU3OWRmZGM2YjBhN2UzNTU5YjZmYmQ1Y2Y3OTcyMzggMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBA
QAorMjAxOS0wMy0wOSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBZGQgU1BJIHRvIHJldHJpZXZlIHRoZSBzZXQgb2YgdGV4dCBpbnB1dHMgaW4gYSBn
aXZlbiByZWN0LCBhbmQgbGF0ZXIgZm9jdXMgb25lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU0OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUmVxdWVzdFRleHRJbnB1dENvbnRleHQubW06IEFkZGVkLgorICAgICAgICAoLVtX
S1dlYlZpZXcgc3luY2hyb25vdXNseVJlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IHN5bmNocm9ub3VzbHlGb2N1c1RleHRJbnB1dENvbnRleHQ6
XSk6CisgICAgICAgIChhcHBseVN0eWxlKToKKyAgICAgICAgKGFwcGx5SWZyYW1lKToKKyAgICAg
ICAgKFRFU1QpOgorICAgICAgICBBZGQgc29tZSB0ZXN0cyBmb3IgdGhpcyBTUEkuCisKIDIwMTkt
MDMtMDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3Vw
cG9ydCBmb3IgRGV2aWNlIE9yaWVudGF0aW9uIC8gTW90aW9uIHBlcm1pc3Npb24gQVBJCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDM4YzBjYjIxNGQ2MDZlYTNiMWQ4YjlhYmMzOWEzZmExZGE0
ZGJiZGYuLmYzYTk5MGRjOTY5ZjgwMjVlZTJlYzhiYzQzNTBjNjI4ZGI0NDdlMzIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC05Miw2ICs5Miw3IEBACiAJCTJEMTY0NkUyMUQxODYyQ0QwMDAx
NUExQSAvKiBEZWZlcnJlZFZpZXdJbldpbmRvd1N0YXRlQ2hhbmdlLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQxNjQ2RTExRDE4NjJDRDAwMDE1QTFB
IC8qIERlZmVycmVkVmlld0luV2luZG93U3RhdGVDaGFuZ2UubW0gKi87IH07CiAJCTJEMUMwNEE3
MUQ3NjI5OEIwMDBBNjgxNiAvKiBUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQxQzA0QTYxRDc2Mjk4QjAwMEE2
ODE2IC8qIFRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUubW0gKi87IH07CiAJCTJEMjFGRTU5MUYwNDY0
MjkwMEI1OEU3RCAvKiBXS1BERlZpZXdTdGFibGVQcmVzZW50YXRpb25VcGRhdGVDYWxsYmFjay5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMjFGRTU4
MUYwNDY0MjgwMEI1OEU3RCAvKiBXS1BERlZpZXdTdGFibGVQcmVzZW50YXRpb25VcGRhdGVDYWxs
YmFjay5tbSAqLzsgfTsKKwkJMkQyQkVCMkQyMjMyNEU1RjAwNTU0NENBIC8qIFJlcXVlc3RUZXh0
SW5wdXRDb250ZXh0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkQyQkVCMkMyMjMyNEU1RjAwNTU0NENBIC8qIFJlcXVlc3RUZXh0SW5wdXRDb250ZXh0
Lm1tICovOyB9OwogCQkyRDNDQTNBODIyMURGNEI0MDA4OEU4MDMgLyogUGFnZU92ZXJsYXlQbHVn
aW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDND
QTNBNDIyMURGMjM5MDA4OEU4MDMgLyogUGFnZU92ZXJsYXlQbHVnaW4ubW0gKi87IH07CiAJCTJE
NENGOEJEMUQ4MzYwQ0MwMDAxQ0U4RCAvKiBXS1RodW1ibmFpbFZpZXcubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDRDRjhCQzFEODM2MENDMDAwMUNF
OEQgLyogV0tUaHVtYm5haWxWaWV3Lm1tICovOyB9OwogCQkyRDUxQTBDNzFDOEJGMDBDMDA3NjVD
NDUgLyogRE9NSFRNTFZpZGVvRWxlbWVudFdyYXBwZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDUxQTBDNTFDOEJGMDA0MDA3NjVDNDUgLyogRE9N
SFRNTFZpZGVvRWxlbWVudFdyYXBwZXIubW0gKi87IH07CkBAIC0xNDI2LDYgKzE0MjcsNyBAQAog
CQkyRDFDMDRBNjFENzYyOThCMDAwQTY4MTYgLyogVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFRlc3ROYXZpZ2F0aW9uRGVs
ZWdhdGUubW07IHBhdGggPSBjb2NvYS9UZXN0TmF2aWdhdGlvbkRlbGVnYXRlLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyRDFGRTBBRjFBRDQ2NUMxMDA2Q0Q5RTYgLyogRml4ZWRM
YXlvdXRTaXplLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRml4
ZWRMYXlvdXRTaXplLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDIxRkU1ODFG
MDQ2NDI4MDBCNThFN0QgLyogV0tQREZWaWV3U3RhYmxlUHJlc2VudGF0aW9uVXBkYXRlQ2FsbGJh
Y2subW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1BERlZpZXdT
dGFibGVQcmVzZW50YXRpb25VcGRhdGVDYWxsYmFjay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMkQyQkVCMkMyMjMyNEU1RjAwNTU0NENBIC8qIFJlcXVlc3RUZXh0SW5wdXRDb250
ZXh0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVxdWVzdFRl
eHRJbnB1dENvbnRleHQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEM0NBM0E0
MjIxREYyMzkwMDg4RTgwMyAvKiBQYWdlT3ZlcmxheVBsdWdpbi5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhZ2VPdmVybGF5UGx1Z2luLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyRDRDRjhCQzFEODM2MENDMDAwMUNFOEQgLyogV0tUaHVtYm5h
aWxWaWV3Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tUaHVt
Ym5haWxWaWV3Lm1tOyBwYXRoID0gV2ViS2l0L1dLVGh1bWJuYWlsVmlldy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ1MUEwQzUxQzhCRjAwNDAwNzY1QzQ1IC8qIERPTUhUTUxW
aWRlb0VsZW1lbnRXcmFwcGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gRE9NSFRNTFZpZGVvRWxlbWVudFdyYXBwZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yNTg2LDYgKzI1ODgsNyBAQAogCQkJCTUyRDVENkJEMjFCOUYxQjIwMDQ2QUJB
NiAvKiBSZW5kZXJpbmdQcm9ncmVzcy5tbSAqLywKIAkJCQk1MkQ1RDZCRTIxQjlGMUIyMDA0NkFC
QTYgLyogUmVuZGVyaW5nUHJvZ3Jlc3NQbHVnSW4ubW0gKi8sCiAJCQkJNTJENUQ2QkYyMUI5RjFC
MjAwNDZBQkE2IC8qIFJlbmRlcmluZ1Byb2dyZXNzUHJvdG9jb2wuaCAqLywKKwkJCQkyRDJCRUIy
QzIyMzI0RTVGMDA1NTQ0Q0EgLyogUmVxdWVzdFRleHRJbnB1dENvbnRleHQubW0gKi8sCiAJCQkJ
Q0Q5RTI5MkIxQzkwQTcxRjAwMEJCODAwIC8qIFJlcXVpcmVzVXNlckFjdGlvbkZvclBsYXliYWNr
Lm1tICovLAogCQkJCTUxQzhFMUE0MUYyNkFDNTQwMEJGNzMxQiAvKiBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLm1tICovLAogCQkJCTVDQ0IxMEUwMjEzNDU3OUQwMEFDNUFGMCAvKiBSZXNwb25zaXZl
bmVzc1RpbWVyLm1tICovLApAQCAtNDIxOSw2ICs0MjIyLDcgQEAKIAkJCQlBMTJEREJGQjFFODM2
RjA3MDBDRjZDQUUgLyogUmVuZGVyZWRJbWFnZVdpdGhPcHRpb25zLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTJENUQ2QzAyMUI5RjFCMzAwNDZBQkE2IC8qIFJlbmRlcmluZ1Byb2dyZXNzLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRjQ2NEFGOTIyMEJCNjZFQTAwN0Y5QjE4IC8qIFJlbmRlcmluZ1By
b2dyZXNzVGVzdHMubW0gaW4gU291cmNlcyAqLywKKwkJCQkyRDJCRUIyRDIyMzI0RTVGMDA1NTQ0
Q0EgLyogUmVxdWVzdFRleHRJbnB1dENvbnRleHQubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Qzgz
RTBDNDFEMEE2NTQyMDBGRUJDRjMgLyogUmVxdWlyZXNVc2VyQWN0aW9uRm9yUGxheWJhY2subW0g
aW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YwRTFBNDExQUU2MDA0NDdDNEMgLyogUmVzaXplUmV2
ZXJzZVBhZ2luYXRlZFdlYlZpZXcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMEYxQTQx
MUFFNjAwNDQ3QzRDIC8qIFJlc2l6ZVdpbmRvd0FmdGVyQ3Jhc2guY3BwIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlcXVl
c3RUZXh0SW5wdXRDb250ZXh0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9SZXF1ZXN0VGV4dElucHV0Q29udGV4dC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZGEzZGQ2N2U4YzAy
ZDc5YTFmOWVlZjQxZWRmZWU0MDIxODdjZTFhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXF1ZXN0VGV4dElucHV0Q29udGV4dC5tbQpA
QCAtMCwwICsxLDIwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaW1w
b3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdC5oIgorI2ltcG9ydCAiVGVz
dE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9y
dCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tX
ZWJWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgorI2ltcG9ydCA8V2Vi
S2l0L19XS1RleHRJbnB1dENvbnRleHQuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKwor
I2RlZmluZSBFWFBFQ1RfUkVDVF9FUSh4RXhwZWN0ZWQsIHlFeHBlY3RlZCwgd2lkdGhFeHBlY3Rl
ZCwgaGVpZ2h0RXhwZWN0ZWQsIHJlY3QpIFwKKyAgICBFWFBFQ1RfRE9VQkxFX0VRKHhFeHBlY3Rl
ZCwgcmVjdC5vcmlnaW4ueCk7IFwKKyAgICBFWFBFQ1RfRE9VQkxFX0VRKHlFeHBlY3RlZCwgcmVj
dC5vcmlnaW4ueSk7IFwKKyAgICBFWFBFQ1RfRE9VQkxFX0VRKHdpZHRoRXhwZWN0ZWQsIHJlY3Qu
c2l6ZS53aWR0aCk7IFwKKyAgICBFWFBFQ1RfRE9VQkxFX0VRKGhlaWdodEV4cGVjdGVkLCByZWN0
LnNpemUuaGVpZ2h0KTsKKworQGltcGxlbWVudGF0aW9uIFdLV2ViVmlldyAoU3luY2hyb25vdXNU
ZXh0SW5wdXRDb250ZXh0KQorCistIChOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4gKilz
eW5jaHJvbm91c2x5UmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OihDR1JlY3QpcmVjdAor
eworICAgIF9fYmxvY2sgYm9vbCBmaW5pc2hlZCA9IGZhbHNlOworICAgIF9fYmxvY2sgUmV0YWlu
UHRyPE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPj4gcmVzdWx0OworICAgIFtzZWxmIF9y
ZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6cmVjdCBjb21wbGV0aW9uSGFuZGxlcjpeKE5T
QXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqY29udGV4dHMpIHsKKyAgICAgICAgcmVzdWx0
ID0gY29udGV4dHM7CisgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmZpbmlzaGVkKTsKKyAgICByZXR1cm4gcmVzdWx0LmF1dG9y
ZWxlYXNlKCk7Cit9CisKKy0gKEJPT0wpc3luY2hyb25vdXNseUZvY3VzVGV4dElucHV0Q29udGV4
dDooX1dLVGV4dElucHV0Q29udGV4dCAqKWNvbnRleHQKK3sKKyAgICBfX2Jsb2NrIGJvb2wgZmlu
aXNoZWQgPSBmYWxzZTsKKyAgICBfX2Jsb2NrIGJvb2wgc3VjY2VzcyA9IGZhbHNlOworICAgIFtz
ZWxmIF9mb2N1c1RleHRJbnB1dENvbnRleHQ6Y29udGV4dCBjb21wbGV0aW9uSGFuZGxlcjpeKEJP
T0wgaW5uZXJTdWNjZXNzKSB7CisgICAgICAgIHN1Y2Nlc3MgPSBpbm5lclN1Y2Nlc3M7CisgICAg
ICAgIGZpbmlzaGVkID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmZpbmlzaGVkKTsKKyAgICByZXR1cm4gc3VjY2VzczsKK30KKworQGVuZAorCitzdGF0aWMg
TlNTdHJpbmcgKmFwcGx5U3R5bGUoTlNTdHJpbmcgKkhUTUxTdHJpbmcpCit7CisgICAgcmV0dXJu
IFtAIjxzdHlsZT5ib2R5IHsgbWFyZ2luOiAwOyB9IGlmcmFtZSB7IGJvcmRlcjogbm9uZTsgfTwv
c3R5bGU+IiBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpIVE1MU3RyaW5nXTsKK30KKworc3RhdGlj
IE5TU3RyaW5nICphcHBseUlmcmFtZShOU1N0cmluZyAqSFRNTFN0cmluZykKK3sKKyAgICByZXR1
cm4gYXBwbHlTdHlsZShbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxpZnJhbWUgc3JjPVwi
ZGF0YTp0ZXh0L2h0bWwsJUBcIiBzdHlsZT0ncG9zaXRpb246IGFic29sdXRlOyB0b3A6IDIwMHB4
Oyc+IiwgW2FwcGx5U3R5bGUoSFRNTFN0cmluZykgc3RyaW5nQnlBZGRpbmdQZXJjZW50RW5jb2Rp
bmdXaXRoQWxsb3dlZENoYXJhY3RlcnM6W05TQ2hhcmFjdGVyU2V0IFVSTFBhdGhBbGxvd2VkQ2hh
cmFjdGVyU2V0XV1dKTsKK30KKworVEVTVChXZWJLaXQsIFJlcXVlc3RUZXh0SW5wdXRDb250ZXh0
KQoreworICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBX
S1ByZWZlcmVuY2VzU2V0VGhyZWFkZWRTY3JvbGxpbmdFbmFibGVkKChXS1ByZWZlcmVuY2VzUmVm
KVtjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSwgZmFsc2UpOworICAgIFJldGFpblB0cjxUZXN0
V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uLmdldCgpXSk7CisKKyAgICBOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4gKmNv
bnRleHRzOworCisgICAgLy8gQmFzaWMgaW5wdXRzLgorCisgICAgW3dlYlZpZXcgc3luY2hyb25v
dXNseUxvYWRIVE1MU3RyaW5nOmFwcGx5U3R5bGUoQCI8aW5wdXQgdHlwZT0ndGV4dCcgc3R5bGU9
J3dpZHRoOiA1MHB4OyBoZWlnaHQ6IDUwcHg7Jz4iKV07CisgICAgY29udGV4dHMgPSBbd2ViVmll
dyBzeW5jaHJvbm91c2x5UmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0Olt3ZWJWaWV3IGZy
YW1lXV07CisgICAgRVhQRUNUX0VRKDFVTCwgY29udGV4dHMuY291bnQpOworICAgIEVYUEVDVF9S
RUNUX0VRKDAsIDAsIDUwLCA1MCwgY29udGV4dHNbMF0uYm91bmRpbmdSZWN0KTsKKworICAgIFt3
ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzphcHBseVN0eWxlKEAiPHRleHRhcmVh
IHN0eWxlPSd3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7Jz48L3RleHRhcmVhPiIpXTsKKyAg
ICBjb250ZXh0cyA9IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlSZXF1ZXN0VGV4dElucHV0Q29udGV4
dHNJblJlY3Q6W3dlYlZpZXcgZnJhbWVdXTsKKyAgICBFWFBFQ1RfRVEoMVVMLCBjb250ZXh0cy5j
b3VudCk7CisgICAgRVhQRUNUX1JFQ1RfRVEoMCwgMCwgMTAwLCAxMDAsIGNvbnRleHRzWzBdLmJv
dW5kaW5nUmVjdCk7CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6
YXBwbHlTdHlsZShAIjxkaXYgY29udGVudGVkaXRhYmxlIHN0eWxlPSd3aWR0aDogMTAwcHg7IGhl
aWdodDogMTAwcHg7Jz48L2Rpdj4iKV07CisgICAgY29udGV4dHMgPSBbd2ViVmlldyBzeW5jaHJv
bm91c2x5UmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0Olt3ZWJWaWV3IGZyYW1lXV07Cisg
ICAgRVhQRUNUX0VRKDFVTCwgY29udGV4dHMuY291bnQpOworICAgIEVYUEVDVF9SRUNUX0VRKDAs
IDAsIDEwMCwgMTAwLCBjb250ZXh0c1swXS5ib3VuZGluZ1JlY3QpOworCisgICAgLy8gQmFzaWMg
aW5wdXRzIGluc2lkZSBzdWJmcmFtZS4KKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2Fk
SFRNTFN0cmluZzphcHBseUlmcmFtZShAIjxpbnB1dCB0eXBlPSd0ZXh0JyBzdHlsZT0nd2lkdGg6
IDUwcHg7IGhlaWdodDogNTBweDsnPiIpXTsKKyAgICBjb250ZXh0cyA9IFt3ZWJWaWV3IHN5bmNo
cm9ub3VzbHlSZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6W3dlYlZpZXcgZnJhbWVdXTsK
KyAgICBFWFBFQ1RfRVEoMVVMLCBjb250ZXh0cy5jb3VudCk7CisgICAgRVhQRUNUX1JFQ1RfRVEo
MCwgMjAwLCA1MCwgNTAsIGNvbnRleHRzWzBdLmJvdW5kaW5nUmVjdCk7CisKKyAgICBbd2ViVmll
dyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6YXBwbHlJZnJhbWUoQCI8dGV4dGFyZWEgc3R5
bGU9J3dpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsnPjwvdGV4dGFyZWE+IildOworICAgIGNv
bnRleHRzID0gW3dlYlZpZXcgc3luY2hyb25vdXNseVJlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0lu
UmVjdDpbd2ViVmlldyBmcmFtZV1dOworICAgIEVYUEVDVF9FUSgxVUwsIGNvbnRleHRzLmNvdW50
KTsKKyAgICBFWFBFQ1RfUkVDVF9FUSgwLCAyMDAsIDEwMCwgMTAwLCBjb250ZXh0c1swXS5ib3Vu
ZGluZ1JlY3QpOworCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOmFw
cGx5SWZyYW1lKEAiPGRpdiBjb250ZW50ZWRpdGFibGUgc3R5bGU9J3dpZHRoOiAxMDBweDsgaGVp
Z2h0OiAxMDBweDsnPjwvZGl2PiIpXTsKKyAgICBjb250ZXh0cyA9IFt3ZWJWaWV3IHN5bmNocm9u
b3VzbHlSZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6W3dlYlZpZXcgZnJhbWVdXTsKKyAg
ICBFWFBFQ1RfRVEoMVVMLCBjb250ZXh0cy5jb3VudCk7CisgICAgRVhQRUNUX1JFQ1RfRVEoMCwg
MjAwLCAxMDAsIDEwMCwgY29udGV4dHNbMF0uYm91bmRpbmdSZWN0KTsKKworICAgIC8vIFJlYWQg
b25seSBpbnB1dHM7IHNob3VsZCBub3QgYmUgaW5jbHVkZWQuCisKKyAgICBbd2ViVmlldyBzeW5j
aHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6YXBwbHlTdHlsZShAIjxpbnB1dCB0eXBlPSd0ZXh0JyBz
dHlsZT0nd2lkdGg6IDUwcHg7IGhlaWdodDogNTBweDsnIHJlYWRvbmx5PiIpXTsKKyAgICBjb250
ZXh0cyA9IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlSZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJl
Y3Q6W3dlYlZpZXcgZnJhbWVdXTsKKyAgICBFWFBFQ1RfRVEoMFVMLCBjb250ZXh0cy5jb3VudCk7
CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6YXBwbHlTdHlsZShA
Ijx0ZXh0YXJlYSBzdHlsZT0nd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OycgcmVhZG9ubHk+
IildOworICAgIGNvbnRleHRzID0gW3dlYlZpZXcgc3luY2hyb25vdXNseVJlcXVlc3RUZXh0SW5w
dXRDb250ZXh0c0luUmVjdDpbd2ViVmlldyBmcmFtZV1dOworICAgIEVYUEVDVF9FUSgwVUwsIGNv
bnRleHRzLmNvdW50KTsKKworICAgIC8vIElucHV0cyBvdXRzaWRlIHRoZSByZXF1ZXN0ZWQgcmVj
dDsgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZC4KKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlM
b2FkSFRNTFN0cmluZzphcHBseVN0eWxlKEAiPGlucHV0IHR5cGU9J3RleHQnIHN0eWxlPSd3aWR0
aDogNTBweDsgaGVpZ2h0OiA1MHB4Oyc+IildOworICAgIGNvbnRleHRzID0gW3dlYlZpZXcgc3lu
Y2hyb25vdXNseVJlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDpDR1JlY3RNYWtlKDEwMCwg
MTAwLCAxMDAsIDEwMCldOworICAgIEVYUEVDVF9FUSgwVUwsIGNvbnRleHRzLmNvdW50KTsKKwor
ICAgIC8vIElucHV0cyBzY3JvbGxlZCBvdXRzaWRlIHRoZSByZXF1ZXN0ZWQgcmVjdDsgc2hvdWxk
IG5vdCBiZSBpbmNsdWRlZC4KKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0
cmluZzphcHBseVN0eWxlKEAiPGlucHV0IHR5cGU9J3RleHQnIHN0eWxlPSd3aWR0aDogNTBweDsg
aGVpZ2h0OiA1MHB4Oyc+PGJyPjxkaXYgc3R5bGU9J3dpZHRoOiAxMDBweDsgaGVpZ2h0OiA1MDAw
cHg7Jz48L2Rpdj4iKV07CisgICAgW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDpAIndpbmRvdy5zY3JvbGxUbygwLCA1MDAwKTsiXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4
dFByZXNlbnRhdGlvblVwZGF0ZV07CisgICAgY29udGV4dHMgPSBbd2ViVmlldyBzeW5jaHJvbm91
c2x5UmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0Olt3ZWJWaWV3IGZyYW1lXV07CisgICAg
RVhQRUNUX0VRKDBVTCwgY29udGV4dHMuY291bnQpOworCisgICAgLy8gSW5wdXRzIHNjcm9sbGVk
IGludG8gdGhlIHJlcXVlc3RlZCByZWN0LgorCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxv
YWRIVE1MU3RyaW5nOmFwcGx5U3R5bGUoQCI8aW5wdXQgdHlwZT0ndGV4dCcgc3R5bGU9J3dpZHRo
OiA1MHB4OyBoZWlnaHQ6IDUwcHg7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiA1MDAwcHg7Jz48
YnI+PGRpdiBzdHlsZT0nd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMDAwcHg7Jz48L2Rpdj4iKV07
CisgICAgW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIndpbmRvdy5zY3Jv
bGxUbygwLCA1MDAwKTsiXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVw
ZGF0ZV07CisgICAgY29udGV4dHMgPSBbd2ViVmlldyBzeW5jaHJvbm91c2x5UmVxdWVzdFRleHRJ
bnB1dENvbnRleHRzSW5SZWN0Olt3ZWJWaWV3IGZyYW1lXV07CisgICAgRVhQRUNUX0VRKDFVTCwg
Y29udGV4dHMuY291bnQpOworICAgIEVYUEVDVF9SRUNUX0VRKDAsIDAsIDUwLCA1MCwgY29udGV4
dHNbMF0uYm91bmRpbmdSZWN0KTsKKworICAgIC8vIE11bHRpcGxlIGlucHV0cy4KKworICAgIFt3
ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzphcHBseVN0eWxlKEAiPGlucHV0IHR5
cGU9J3RleHQnIHN0eWxlPSd3aWR0aDogNTBweDsgaGVpZ2h0OiA1MHB4Oyc+PGJyLz48aW5wdXQg
dHlwZT0ndGV4dCcgc3R5bGU9J3dpZHRoOiA1MHB4OyBoZWlnaHQ6IDUwcHg7Jz48YnIvPjxpbnB1
dCB0eXBlPSd0ZXh0JyBzdHlsZT0nd2lkdGg6IDUwcHg7IGhlaWdodDogNTBweDsnPiIpXTsKKyAg
ICBjb250ZXh0cyA9IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlSZXF1ZXN0VGV4dElucHV0Q29udGV4
dHNJblJlY3Q6W3dlYlZpZXcgZnJhbWVdXTsKKyAgICBFWFBFQ1RfRVEoM1VMLCBjb250ZXh0cy5j
b3VudCk7CisgICAgRVhQRUNUX1JFQ1RfRVEoMCwgMCwgNTAsIDUwLCBjb250ZXh0c1swXS5ib3Vu
ZGluZ1JlY3QpOworICAgIEVYUEVDVF9SRUNUX0VRKDAsIDUwLCA1MCwgNTAsIGNvbnRleHRzWzFd
LmJvdW5kaW5nUmVjdCk7CisgICAgRVhQRUNUX1JFQ1RfRVEoMCwgMTAwLCA1MCwgNTAsIGNvbnRl
eHRzWzJdLmJvdW5kaW5nUmVjdCk7CisKKyAgICAvLyBOZXN0ZWQgPGlucHV0Pi1pbnNpZGUtY29u
dGVudGVkaXRhYmxlLiBPbmx5IHRoZSBjb250ZW50ZWRpdGFibGUgaXMgY29uc2lkZXJlZC4KKwor
ICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzphcHBseVN0eWxlKEAiPGRp
diBjb250ZW50ZWRpdGFibGUgc3R5bGU9J3dpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsnPjxp
bnB1dCB0eXBlPSd0ZXh0JyBzdHlsZT0nd2lkdGg6IDUwcHg7IGhlaWdodDogNTBweDsnPjwvZGl2
PiIpXTsKKyAgICBjb250ZXh0cyA9IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlSZXF1ZXN0VGV4dElu
cHV0Q29udGV4dHNJblJlY3Q6W3dlYlZpZXcgZnJhbWVdXTsKKyAgICBFWFBFQ1RfRVEoMVVMLCBj
b250ZXh0cy5jb3VudCk7CisgICAgRVhQRUNUX1JFQ1RfRVEoMCwgMCwgMTAwLCAxMDAsIGNvbnRl
eHRzWzBdLmJvdW5kaW5nUmVjdCk7Cit9CisKK1RFU1QoV2ViS2l0LCBGb2N1c1RleHRJbnB1dENv
bnRleHQpCit7CisgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwor
ICAgIFdLUHJlZmVyZW5jZXNTZXRUaHJlYWRlZFNjcm9sbGluZ0VuYWJsZWQoKFdLUHJlZmVyZW5j
ZXNSZWYpW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdLCBmYWxzZSk7CisgICAgUmV0YWluUHRy
PFRlc3RXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAq
PiAqY29udGV4dHM7CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6
YXBwbHlTdHlsZShAIjxpbnB1dCBpZD0ndGVzdCcgdHlwZT0ndGV4dCcgc3R5bGU9J3dpZHRoOiA1
MHB4OyBoZWlnaHQ6IDUwcHg7Jz4iKV07CisgICAgY29udGV4dHMgPSBbd2ViVmlldyBzeW5jaHJv
bm91c2x5UmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0Olt3ZWJWaWV3IGZyYW1lXV07Cisg
ICAgRVhQRUNUX0VRKDFVTCwgY29udGV4dHMuY291bnQpOworICAgIFJldGFpblB0cjxfV0tUZXh0
SW5wdXRDb250ZXh0PiBvcmlnaW5hbElucHV0ID0gY29udGV4dHNbMF07CisgICAgRVhQRUNUX1RS
VUUoW3dlYlZpZXcgc3luY2hyb25vdXNseUZvY3VzVGV4dElucHV0Q29udGV4dDpvcmlnaW5hbElu
cHV0LmdldCgpXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJ0ZXN0IiwgW3dlYlZpZXcgb2JqZWN0
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuaWQiXSk7CisK
KyAgICAvLyBUaGUgX1dLVGV4dElucHV0Q29udGV4dCBzaG91bGQgc3RpbGwgd29yayBldmVuIGFm
dGVyIGFub3RoZXIgcmVxdWVzdC4KKyAgICBjb250ZXh0cyA9IFt3ZWJWaWV3IHN5bmNocm9ub3Vz
bHlSZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6W3dlYlZpZXcgZnJhbWVdXTsKKyAgICBF
WFBFQ1RfVFJVRShbY29udGV4dHNbMF0gaXNFcXVhbDpvcmlnaW5hbElucHV0LmdldCgpXSk7Cisg
ICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgc3luY2hyb25vdXNseUZvY3VzVGV4dElucHV0Q29udGV4
dDpvcmlnaW5hbElucHV0LmdldCgpXSk7CisKKyAgICAvLyBSZXBsYWNlIHRoZSA8aW5wdXQ+IHdp
dGggYSA8dGV4dGFyZWE+IHdpdGggc2NyaXB0OyB0aGUgPGlucHV0PiBzaG91bGQgbm8gbG9uZ2Vy
IGJlIGZvY3VzYWJsZS4KKyAgICBbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAiZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSAnPHRleHRhcmVhIGlkPVwiYXJlYVwiPic7Il07
CisgICAgY29udGV4dHMgPSBbd2ViVmlldyBzeW5jaHJvbm91c2x5UmVxdWVzdFRleHRJbnB1dENv
bnRleHRzSW5SZWN0Olt3ZWJWaWV3IGZyYW1lXV07CisgICAgRVhQRUNUX0VRKDFVTCwgY29udGV4
dHMuY291bnQpOworICAgIFJldGFpblB0cjxfV0tUZXh0SW5wdXRDb250ZXh0PiB0ZXh0QXJlYSA9
IGNvbnRleHRzWzBdOworICAgIEVYUEVDVF9GQUxTRShbdGV4dEFyZWEgaXNFcXVhbDpvcmlnaW5h
bElucHV0LmdldCgpXSk7CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlG
b2N1c1RleHRJbnB1dENvbnRleHQ6b3JpZ2luYWxJbnB1dC5nZXQoKV0pOworICAgIEVYUEVDVF9U
UlVFKFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlGb2N1c1RleHRJbnB1dENvbnRleHQ6dGV4dEFyZWEu
Z2V0KCldKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImFyZWEiLCBbd2ViVmlldyBvYmplY3RCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5pZCJdKTsKKworICAg
IC8vIERlc3Ryb3kgdGhlIDx0ZXh0YXJlYT4gYnkgbmF2aWdhdGluZyBhd2F5OyB3ZSBjYW4gbm8g
bG9uZ2VyIGZvY3VzIGl0LgorICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmlu
ZzpAIiJdOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBzeW5jaHJvbm91c2x5Rm9jdXNUZXh0
SW5wdXRDb250ZXh0OnRleHRBcmVhLmdldCgpXSk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>364223</attachid>
            <date>2019-03-10 19:52:59 -0700</date>
            <delta_ts>2019-03-10 20:32:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195499-20190310195258.patch</filename>
            <type>text/plain</type>
            <size>67519</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyNjc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWViMWQ4ZDQ4NTJhYWNj
NzRhMTVhMWYwY2E1OGJkZDkyNjI2N2ZjNi4uYjM2NTFiYjJmNzNjMTAxMTQxMDI5OTkzNDVmOTg1
YzU5NGMzZjRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE5LTAzLTEwICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTUEkgdG8g
cmV0cmlldmUgdGhlIHNldCBvZiB0ZXh0IGlucHV0cyBpbiBhIGdpdmVuIHJlY3QsIGFuZCBsYXRl
ciBmb2N1cyBvbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5NTQ5OQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAg
IE5ldyBBUEkgdGVzdHM6IFdlYktpdC5SZXF1ZXN0VGV4dElucHV0Q29udGV4dCBhbmQgV2ViS2l0
LkZvY3VzVGV4dElucHV0Q29udGV4dAorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6aWRlbnRpZmllckZvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmVsZW1lbnRXaXRoSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6aWRlbnRpZmllZEVsZW1lbnRXYXNSZW1vdmVkRnJvbURvY3VtZW50KToKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgQWRkIGEgbWVjaGFuaXNtIHdoZXJlIERvY3VtZW50
IHdpbGwgdmVuZCBhbiBPYmplY3RJZGVudGlmaWVyIGZvciBhIGdpdmVuCisgICAgICAgIGVsZW1l
bnQsIGFuZCBjYW4gKGlmIHBvc3NpYmxlKSByZXRyaWV2ZSB0aGF0IGVsZW1lbnQgbGF0ZXIuCisK
KyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpy
ZW1vdmVkRnJvbUFuY2VzdG9yKToKKyAgICAgICAgSWYgYW4gRWxlbWVudCBoYXMgYW4gaWRlbnRp
ZmllciBjcmVhdGVkIGZvciBpdCwgaW5mb3JtIERvY3VtZW50IHRvIHJlbW92ZQorICAgICAgICBp
dCBmcm9tIHRoZSBpZGVudGlmaWVyIG1hcCB3aGVuIHRoZSBlbGVtZW50IGlzIGRldGFjaGVkLgor
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpjcmVhdGVFbGVtZW50SWRlbnRpZmllcik6Cisg
ICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vRWxlbWVudElkZW50aWZpZXIu
aDogQWRkZWQuCisgICAgICAgICogZG9tL0VsZW1lbnRSYXJlRGF0YS5jcHA6CisgICAgICAgICog
ZG9tL0VsZW1lbnRSYXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRh
OjpoYXNFbGVtZW50SWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
UmFyZURhdGE6OnNldEhhc0VsZW1lbnRJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnRSYXJlRGF0YTo6RWxlbWVudFJhcmVEYXRhKToKKyAgICAgICAgU3RvcmUgYSBiaXQgaW5k
aWNhdGluZyBpZiB0aGUgRWxlbWVudCBoYXMgaGFkIGEgaWRlbnRpZmllciBjcmVhdGVkIGZvciBp
dCwKKyAgICAgICAgc28gdGhhdCB3ZSBjYW4gYXZvaWQgYSBoYXNoIGxvb2t1cCBvbiBldmVyeSBF
bGVtZW50IHJlbW92YWwuCisKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAqIGh0bWwv
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaDoKKwogMjAxOS0wMy0wOSAgWmFsYW4gQnVqdGFz
ICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb250ZW50Q2hhbmdlT2JzZXJ2ZXJdIFN0
YXJ0IG9ic2VydmluZyBmb3IgY29udGVudCBjaGFuZ2UgYmV0d2VlbiB0b3VjaEVuZCBhbmQgbW91
c2VNb3ZlZCBzdGFydApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4MGJlOTk5NGRiY2Y1MGRiZGE3MTVjYWY4ODkyZGUz
NzdjNGM5YTA2Li43YzhmMDhiYmFlMzFkMWQzM2MyYTJiYWI2MWQ1ZDg0Y2ExZjIxZTc3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE5LTAzLTEwICBUaW0gSG9ydG9uICA8dGltb3RoeV9o
b3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTUEkgdG8gcmV0cmlldmUgdGhlIHNldCBv
ZiB0ZXh0IGlucHV0cyBpbiBhIGdpdmVuIHJlY3QsIGFuZCBsYXRlciBmb2N1cyBvbmUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTQ5OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVkL1RleHRJbnB1dENvbnRleHQuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJLaXQ6OlRleHRJbnB1dENvbnRleHQ+
OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYktpdDo6VGV4dElucHV0
Q29udGV4dD46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1RleHRJbnB1dENvbnRleHQuaDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlRleHRJbnB1dENvbnRleHQ6Om9wZXJhdG9yPT0gY29u
c3QpOgorICAgICAgICBBZGQgVGV4dElucHV0Q29udGV4dCwgd2hpY2ggcmVwcmVzZW50cyBhIG1p
bmltYWwgc2V0IG9mIGluZm9ybWF0aW9uCisgICAgICAgIGFib3V0IGEgdGV4dCBmaWVsZC4KKwor
ICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2Vi
VmlldyBfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OmNvbXBsZXRpb25IYW5kbGVyOl0p
OgorICAgICAgICAoLVtXS1dlYlZpZXcgX2ZvY3VzVGV4dElucHV0Q29udGV4dDpjb21wbGV0aW9u
SGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZh
dGUuaDoKKyAgICAgICAgQWRkIFNQSSB0aGF0IGFsbG93cyBjbGllbnRzIHRvIGFzeW5jaHJvbm91
c2x5IHJlcXVlc3QgdGV4dCBpbnB1dAorICAgICAgICBjb250ZXh0cyBmb3IgYSBnaXZlbiByZWN0
LCBhbmQgbGF0ZXIgZm9jdXMgYSBnaXZlbiBjb250ZXh0LgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tUZXh0SW5wdXRDb250ZXh0Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLVGV4dElucHV0Q29udGV4dC5tbTogQWRkZWQuCisgICAgICAgICgt
W19XS1RleHRJbnB1dENvbnRleHQgX2luaXRXaXRoVGV4dElucHV0Q29udGV4dDpdKToKKyAgICAg
ICAgKC1bX1dLVGV4dElucHV0Q29udGV4dCBib3VuZGluZ1JlY3RdKToKKyAgICAgICAgKC1bX1dL
VGV4dElucHV0Q29udGV4dCBfdGV4dElucHV0Q29udGV4dF0pOgorICAgICAgICAoLVtfV0tUZXh0
SW5wdXRDb250ZXh0IGlzRXF1YWw6XSk6CisgICAgICAgICgtW19XS1RleHRJbnB1dENvbnRleHQg
aGFzaF0pOgorICAgICAgICAoLVtfV0tUZXh0SW5wdXRDb250ZXh0IGNvcHlXaXRoWm9uZTpdKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRJbnB1dENvbnRleHRJbnRlcm5h
bC5oOiBBZGRlZC4KKyAgICAgICAgQWRkIGFuIFNQSSBvYmplY3QgdGhhdCBleHBvc2VzIGEgcmVh
ZC1vbmx5IHdpbmRvdyBvbiBhIFRleHRJbnB1dENvbnRleHQgdG8gY2xpZW50cy4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnRleHRJbnB1dENvbnRleHRzSW5SZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5Ojpmb2N1c1RleHRJbnB1dENvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgUGx1bWJpbmcgZnJvbSBXS1dlYlZpZXc8LT5XZWJQYWdlLgor
CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjplbGVtZW50
UmVjdEluV2luZG93Q29vcmRpbmF0ZXMpOgorICAgICAgICAoV2ViS2l0Ojppc0VkaXRhYmxlVGV4
dElucHV0RWxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnRleHRJbnB1dENvbnRl
eHRzSW5SZWN0KToKKyAgICAgICAgU2VhcmNoIHRoZSBET00gZm9yIHRleHQgaW5wdXQgY29udGV4
dHM6IDxpbnB1dCB0eXBlPSd0ZXh0Jz4gKG9yIG90aGVyCisgICAgICAgIGZvcm0gZmllbGRzIHRo
YXQgZmFsbCBiYWNrIG9uIHRleHQgZmllbGQgYmVoYXZpb3IpLCA8dGV4dGFyZWE+LCBhbmQKKyAg
ICAgICAgY29udGVudGVkaXRhYmxlIHJvb3RzLiBTdG9yZSB0aGUgV2ViUGFnZSwgRG9jdW1lbnQs
IGFuZCBFbGVtZW50IGlkZW50aWZpZXJzCisgICAgICAgIHNvIHRoYXQgd2UgY2FuIGZpbmQgdGhl
IGVsZW1lbnQgYWdhaW4gbGF0ZXIuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Zm9jdXNU
ZXh0SW5wdXRDb250ZXh0KToKKyAgICAgICAgRmluZCB0aGUgZWxlbWVudCBmb3IgYSBnaXZlbiAo
d2ViIHBhZ2UsIGRvY3VtZW50LCBlbGVtZW50KSB0cmlwbGUgYW5kIGZvY3VzIGl0LAorICAgICAg
ICBpZiBpdCdzIHN0aWxsIGF2YWlsYWJsZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW46CisKIDIwMTktMDMtMDkgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbQ29udGVudENoYW5nZU9ic2VydmVyXSBTdGFydCBvYnNlcnZpbmcgZm9yIGNvbnRl
bnQgY2hhbmdlIGJldHdlZW4gdG91Y2hFbmQgYW5kIG1vdXNlTW92ZWQgc3RhcnQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4ZDdk
NzM5YjkyNmRhMmI2NTkxODRhOGJmZWVmNTUyNzI0NGNhZTRhLi41ODJjMGU4Y2Y3ZDAxZDRmN2Rh
YmI1NjgwODgxOGZiYTEyN2UyYzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03NDgsNiArNzQ4LDcgQEAKIAkJMkQyOUVDQzYx
OTJFQ0M4MzAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQyOUVDQzIxOTJFQ0M4MzAw
OTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEMjlFQ0M4MTkyRUNDODMwMDk4NEI3
OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDI5RUNDNDE5MkVDQzgzMDA5ODRCNzggLyogRGlz
cGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTJEMjlFQ0NBMTkyRjFGMUQwMDk4NEI3OCAvKiBEaXNwbGF5
UmVmcmVzaE1vbml0b3JJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJEMjlFQ0M5MTkyRjFGMUQwMDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0
b3JJT1MuaCAqLzsgfTsKKwkJMkQyQkVCMzEyMjM0QTMzNTAwNTU0NENBIC8qIEVsZW1lbnRJZGVu
dGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
RDJCRUIyRjIyMzRBMzM0MDA1NTQ0Q0EgLyogRWxlbWVudElkZW50aWZpZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRDJFMzRBQzIxQTRFMTky
MDA0NTk4QjUgLyogRWRpdGFibGVJbWFnZVJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQyRTM0QTkyMUE0RTE5MTAwNDU5OEI1IC8qIEVk
aXRhYmxlSW1hZ2VSZWZlcmVuY2UuaCAqLzsgfTsKIAkJMkQzQTBFMzYxM0E3RDc2MTAwRTg1QUYw
IC8qIFNWR1BhcnNpbmdFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkQzQTBFMzUxM0E3RDc2MTAwRTg1QUYwIC8qIFNWR1BhcnNpbmdFcnJvci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEM0VG
NDQ4MTkxNzkxNUMwMDAzNDE4NCAvKiBXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEM0VGNDQ0
MTkxNzkxNUMwMDAzNDE4NCAvKiBXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNjY5Nyw2
ICs2Njk4LDcgQEAKIAkJMkQyOUVDQzMxOTJFQ0M4MzAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNo
TW9uaXRvck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTJEMjlFQ0M0MTkyRUNDODMwMDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JN
YW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlSZWZyZXNo
TW9uaXRvck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQyOUVDQzkx
OTJGMUYxRDAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQyQkVCMkYyMjM0QTMzNDAwNTU0NENBIC8qIEVsZW1l
bnRJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVsZW1lbnRJ
ZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEMkUzNEE5MjFBNEUx
OTEwMDQ1OThCNSAvKiBFZGl0YWJsZUltYWdlUmVmZXJlbmNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEVkaXRhYmxlSW1hZ2VSZWZlcmVuY2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMkQyRTM0QUIyMUE0RTE5MjAwNDU5OEI1IC8qIEVkaXRhYmxlSW1hZ2VS
ZWZlcmVuY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRWRpdGFi
bGVJbWFnZVJlZmVyZW5jZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEMkZD
MDU0MTQ2MENENkYwMDI2MzYzMyAvKiBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNzU5Miw2ICsyNzU5NCw3IEBACiAJ
CQkJQjVCN0ExNkYxN0MxMDgwNjAwRTRBQTBBIC8qIEVsZW1lbnREYXRhLmNwcCAqLywKIAkJCQlC
NUI3QTE2RTE3QzEwNDgwMDBFNEFBMEEgLyogRWxlbWVudERhdGEuaCAqLywKIAkJCQlBREUxMUY0
QTE4RDgzMTFCMDA3ODk4M0IgLyogRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oICovLAorCQkJ
CTJEMkJFQjJGMjIzNEEzMzQwMDU1NDRDQSAvKiBFbGVtZW50SWRlbnRpZmllci5oICovLAogCQkJ
CUU0QUU3QzE1MTdEMUJCOTUwMDA5RkIzMSAvKiBFbGVtZW50SXRlcmF0b3IuaCAqLywKIAkJCQlF
NDAxQzI3NDE3Q0U1M0VDMDBDNDFBMzUgLyogRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oICov
LAogCQkJCTRGQUI0ODY0MTY0M0E2NkQwMEY3MEMwNyAvKiBFbGVtZW50UmFyZURhdGEuY3BwICov
LApAQCAtMjkxOTYsNiArMjkxOTksNyBAQAogCQkJCUU0NkEyQjFFMTdDQTc2QjEwMDBEQkNEOCAv
KiBFbGVtZW50Q2hpbGRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjVCN0ExNzExN0Mx
MEFDMDAwRTRBQTBBIC8qIEVsZW1lbnREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Q0MzdB
MTFENTdCM0Y0MDBBQjg1RUEgLyogRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMkQyQkVCMzEyMjM0QTMzNTAwNTU0NENBIC8qIEVsZW1lbnRJZGVudGlmaWVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEFFN0MxNjE3RDFCQjk1MDAwOUZCMzEgLyogRWxlbWVu
dEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDAxQzI3NTE3Q0U1M0VDMDBDNDFBMzUg
LyogRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjNGNUQ0
RjcwRThDNEI3MTAwQzBCRDA0IC8qIEVsZW1lbnRSYXJlRGF0YS5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBhMWMwYWQzM2JlZjVlMjU2YWQwMzFkZGI0MWYzMjJh
MTMyNDBhMDAwLi4wYTFhMWVjOWJlYmE1MGRkOTZkZGVhMjgzMTBiMGI4NDUxNzhmNWU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTg2MTIsNiArODYxMiwzMCBAQCB2b2lkIERvY3VtZW50
OjpmcmFtZVdhc0Rpc2Nvbm5lY3RlZEZyb21Pd25lcigpCiAgICAgZGV0YWNoRnJvbUZyYW1lKCk7
CiB9CiAKK0VsZW1lbnRJZGVudGlmaWVyIERvY3VtZW50OjppZGVudGlmaWVyRm9yRWxlbWVudChF
bGVtZW50JiBlbGVtZW50KQoreworICAgIEFTU0VSVCgmZWxlbWVudC5kb2N1bWVudCgpID09IHRo
aXMpOworICAgIGF1dG8gcmVzdWx0ID0gbV9pZGVudGlmaWVkRWxlbWVudHNNYXAuZW5zdXJlKCZl
bGVtZW50LCBbJl0geworICAgICAgICByZXR1cm4gZWxlbWVudC5jcmVhdGVFbGVtZW50SWRlbnRp
ZmllcigpOworICAgIH0pOworICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworfQor
CitFbGVtZW50KiBEb2N1bWVudDo6c2VhcmNoRm9yRWxlbWVudEJ5SWRlbnRpZmllcihjb25zdCBF
bGVtZW50SWRlbnRpZmllciYgaWRlbnRpZmllcikKK3sKKyAgICBmb3IgKGF1dG8gaXQgPSBtX2lk
ZW50aWZpZWRFbGVtZW50c01hcC5iZWdpbigpOyBpdCAhPSBtX2lkZW50aWZpZWRFbGVtZW50c01h
cC5lbmQoKTsgKytpdCkgeworICAgICAgICBpZiAoaXQtPnZhbHVlID09IGlkZW50aWZpZXIpCisg
ICAgICAgICAgICByZXR1cm4gaXQtPmtleTsKKyAgICB9CisKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKwordm9pZCBEb2N1bWVudDo6aWRlbnRpZmllZEVsZW1lbnRXYXNSZW1vdmVkRnJvbURvY3Vt
ZW50KEVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgbV9pZGVudGlmaWVkRWxlbWVudHNNYXAucmVt
b3ZlKCZlbGVtZW50KTsKK30KKwogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCiAKIERl
dmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlciYgRG9jdW1lbnQ6OmRldmlj
ZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlcigpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CmluZGV4IDJiOTlkNDQ1NGUwNzRhZmZmYzI4MmRkYjY0M2FiMGJlYWMwZWE3MzguLjczZmU4Yzg0
NGU3MTMwY2Q0YTczMmViYWRlN2FlMGVjZDE4NjdhYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBA
IC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRFdmVudFF1ZXVlLmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRUaW1pbmcuaCIKKyNp
bmNsdWRlICJFbGVtZW50SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkZvY3VzRGlyZWN0aW9uLmgi
CiAjaW5jbHVkZSAiRm9udFNlbGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiRnJhbWVEZXN0cnVj
dGlvbk9ic2VydmVyLmgiCkBAIC0zODgsNiArMzg5LDEwIEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgRG9jdW1lbnRzTWFwOjpWYWx1ZXNJdGVyYXRvclJhbmdlIGFsbERvY3Vt
ZW50cygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBEb2N1bWVudHNNYXAmIGFsbERvY3Vt
ZW50c01hcCgpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgRWxlbWVudElkZW50aWZpZXIgaWRlbnRp
ZmllckZvckVsZW1lbnQoRWxlbWVudCYpOworICAgIFdFQkNPUkVfRVhQT1JUIEVsZW1lbnQqIHNl
YXJjaEZvckVsZW1lbnRCeUlkZW50aWZpZXIoY29uc3QgRWxlbWVudElkZW50aWZpZXImKTsKKyAg
ICB2b2lkIGlkZW50aWZpZWRFbGVtZW50V2FzUmVtb3ZlZEZyb21Eb2N1bWVudChFbGVtZW50Jik7
CisKICAgICBNZWRpYVF1ZXJ5TWF0Y2hlciYgbWVkaWFRdWVyeU1hdGNoZXIoKTsKIAogICAgIHVz
aW5nIENvbnRhaW5lck5vZGU6OnJlZjsKQEAgLTIwODMsNiArMjA4OCw4IEBAIHByaXZhdGU6CiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudENoYW5n
ZU9ic2VydmVyPiBtX2NvbnRlbnRDaGFuZ2VPYnNlcnZlcjsKICNlbmRpZgorCisgICAgSGFzaE1h
cDxFbGVtZW50KiwgRWxlbWVudElkZW50aWZpZXI+IG1faWRlbnRpZmllZEVsZW1lbnRzTWFwOwog
fTsKIAogRWxlbWVudCogZXZlbnRUYXJnZXRFbGVtZW50Rm9yRG9jdW1lbnQoRG9jdW1lbnQqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBiMGVhNWNiMmNmYzkyOGM0OTlmYmRjNzA1NmQ5NzA0
NjY0YzBiYWY1Li5hOTk2NDRhNzMxZDE2NTI3Y2U2NzMyZmMyODhhMDc2MzNhZjJlNjdiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0yMDQ5LDYgKzIwNDksMTEgQEAgdm9pZCBFbGVtZW50Ojpy
ZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlIHJlbW92YWxUeXBlLCBDb250YWluZXJOb2Rl
JiBvbGRQYXIKICAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgZnJhbWUt
PnBhZ2UoKS0+cmVtb3ZlTGF0Y2hpbmdTdGF0ZUZvclRhcmdldCgqdGhpcyk7CiAjZW5kaWYKKwor
ICAgIGlmIChoYXNSYXJlRGF0YSgpICYmIGVsZW1lbnRSYXJlRGF0YSgpLT5oYXNFbGVtZW50SWRl
bnRpZmllcigpKSB7CisgICAgICAgIGRvY3VtZW50KCkuaWRlbnRpZmllZEVsZW1lbnRXYXNSZW1v
dmVkRnJvbURvY3VtZW50KCp0aGlzKTsKKyAgICAgICAgZWxlbWVudFJhcmVEYXRhKCktPnNldEhh
c0VsZW1lbnRJZGVudGlmaWVyKGZhbHNlKTsKKyAgICB9CiB9CiAKIFNoYWRvd1Jvb3QqIEVsZW1l
bnQ6OnNoYWRvd1Jvb3QoKSBjb25zdApAQCAtNDE1Nyw2ICs0MTYyLDE1IEBAIFZlY3RvcjxSZWZQ
dHI8V2ViQW5pbWF0aW9uPj4gRWxlbWVudDo6Z2V0QW5pbWF0aW9ucygpCiAgICAgcmV0dXJuIGFu
aW1hdGlvbnM7CiB9CiAKK0VsZW1lbnRJZGVudGlmaWVyIEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRJ
ZGVudGlmaWVyKCkKK3sKKyAgICBhdXRvJiByYXJlRGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0
YSgpOworICAgIEFTU0VSVCghcmFyZURhdGEuaGFzRWxlbWVudElkZW50aWZpZXIoKSk7CisKKyAg
ICByYXJlRGF0YS5zZXRIYXNFbGVtZW50SWRlbnRpZmllcih0cnVlKTsKKyAgICByZXR1cm4gRWxl
bWVudElkZW50aWZpZXI6OmdlbmVyYXRlKCk7Cit9CisKICNpZiBFTkFCTEUoQ1NTX1RZUEVEX09N
KQogU3R5bGVQcm9wZXJ0eU1hcCogRWxlbWVudDo6YXR0cmlidXRlU3R5bGVNYXAoKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmgKaW5kZXggYTk5MjhmN2I2YzAzYjU2YWNhODM5ZWNlNTk3YjQxN2QxYTMxODkx
NC4uZTg1ZTBlODgxNTY3ZjgzOGIzNDA1OGJkZmE2NDU5NGU2NDI3OWNmOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5oCkBAIC01OTIsNiArNTkyLDggQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPFJlZjxX
ZWJBbmltYXRpb24+PiBhbmltYXRlKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpTdHJvbmc8SlNDOjpK
U09iamVjdD4mJiwgT3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIEtleWZyYW1lQW5pbWF0aW9uT3B0
aW9ucz4+JiYpOwogICAgIFZlY3RvcjxSZWZQdHI8V2ViQW5pbWF0aW9uPj4gZ2V0QW5pbWF0aW9u
cygpOwogCisgICAgRWxlbWVudElkZW50aWZpZXIgY3JlYXRlRWxlbWVudElkZW50aWZpZXIoKTsK
KwogI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKICAgICBPcHRpb25TZXQ8VG91Y2hBY3Rpb24+
IGNvbXB1dGVkVG91Y2hBY3Rpb25zKCkgY29uc3Q7CiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEX09W
RVJGTE9XX1NDUk9MTElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
SWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRJZGVudGlmaWVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMmVkMzc4MjQyYTRjMDg5MDA2M2M4NTA5YTIyOGRjOGJkZmViNGZlYwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50SWRlbnRpZmllci5oCkBAIC0w
LDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9P
YmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBFbGVtZW50
SWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgRWxlbWVudElkZW50aWZpZXIgPSBPYmplY3RJZGVu
dGlmaWVyPEVsZW1lbnRJZGVudGlmaWVyVHlwZT47CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnRSYXJlRGF0YS5jcHAKaW5kZXggNGRkNjBlYjg0ZjYzZDEyZmU4MTRlMzZjMzVjYzUwMTIyNGNj
OTcxMS4uOTI2NTdmZjNiMGYxN2IyZTBhZWZiMTI5ZmE4NDkxMTI2M2JjMzU1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5jcHAKQEAgLTM3LDkgKzM3LDkgQEAgc3RydWN0IFNh
bWVTaXplQXNFbGVtZW50UmFyZURhdGEgOiBOb2RlUmFyZURhdGEgewogICAgIGludCB0YWJJbmRl
eDsKICAgICB1bnNpZ25lZCBzaG9ydCBjaGlsZEluZGV4OwogI2lmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKLSAgICB1bnNpZ25lZCBiaXRmaWVsZHMgOiAxMTsKKyAgICB1bnNpZ25lZCBiaXRmaWVs
ZHMgOiAxMjsKICNlbHNlCi0gICAgdW5zaWduZWQgYml0ZmllbGRzIDogMTA7CisgICAgdW5zaWdu
ZWQgYml0ZmllbGRzIDogMTE7CiAjZW5kaWYKICAgICBMYXlvdXRTaXplIHNpemVGb3JSZXNpemlu
ZzsKICAgICBJbnRQb2ludCBzYXZlZExheWVyU2Nyb2xsUG9zaXRpb247CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudFJhcmVEYXRhLmgKaW5kZXggZmU4MGUzMzFkNWNiMjEwYmE3YjA1ZDIxOTI3OGEwMzc1
OTFiOTM5Zi4uYjZmZDY0MGI5Y2UzM2JkM2RiYWRjOGMyMTBmZjU0ZjQxOTc1NGE0NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaApAQCAtMTIzLDYgKzEyMyw5IEBAIHB1YmxpYzoK
ICAgICBib29sIGhhc0NTU0FuaW1hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ1NTQW5pbWF0
aW9uOyB9CiAgICAgdm9pZCBzZXRIYXNDU1NBbmltYXRpb24oYm9vbCB2YWx1ZSkgeyBtX2hhc0NT
U0FuaW1hdGlvbiA9IHZhbHVlOyB9CiAKKyAgICBib29sIGhhc0VsZW1lbnRJZGVudGlmaWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9oYXNFbGVtZW50SWRlbnRpZmllcjsgfQorICAgIHZvaWQgc2V0SGFz
RWxlbWVudElkZW50aWZpZXIoYm9vbCB2YWx1ZSkgeyBtX2hhc0VsZW1lbnRJZGVudGlmaWVyID0g
dmFsdWU7IH0KKwogI2lmIEVOQUJMRShJTlRFUlNFQ1RJT05fT0JTRVJWRVIpCiAgICAgSW50ZXJz
ZWN0aW9uT2JzZXJ2ZXJEYXRhKiBpbnRlcnNlY3Rpb25PYnNlcnZlckRhdGEoKSB7IHJldHVybiBt
X2ludGVyc2VjdGlvbk9ic2VydmVyRGF0YS5nZXQoKTsgfQogICAgIHZvaWQgc2V0SW50ZXJzZWN0
aW9uT2JzZXJ2ZXJEYXRhKHN0ZDo6dW5pcXVlX3B0cjxJbnRlcnNlY3Rpb25PYnNlcnZlckRhdGE+
JiYgZGF0YSkgeyBtX2ludGVyc2VjdGlvbk9ic2VydmVyRGF0YSA9IFdURk1vdmUoZGF0YSk7IH0K
QEAgLTE4MCw2ICsxODMsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgdW5zaWduZWQgbV9oYXNQ
ZW5kaW5nUmVzb3VyY2VzIDogMTsKICAgICB1bnNpZ25lZCBtX2hhc0NTU0FuaW1hdGlvbiA6IDE7
CisgICAgdW5zaWduZWQgbV9oYXNFbGVtZW50SWRlbnRpZmllciA6IDE7CiAgICAgdW5zaWduZWQg
bV9jaGlsZHJlbkFmZmVjdGVkQnlIb3ZlciA6IDE7CiAgICAgdW5zaWduZWQgbV9jaGlsZHJlbkFm
ZmVjdGVkQnlEcmFnIDogMTsKICAgICAvLyBCaXRzIGZvciBkeW5hbWljIGNoaWxkIG1hdGNoaW5n
LgpAQCAtMjI4LDYgKzIzMiw3IEBAIGlubGluZSBFbGVtZW50UmFyZURhdGE6OkVsZW1lbnRSYXJl
RGF0YShSZW5kZXJFbGVtZW50KiByZW5kZXJlcikKICNlbmRpZgogICAgICwgbV9oYXNQZW5kaW5n
UmVzb3VyY2VzKGZhbHNlKQogICAgICwgbV9oYXNDU1NBbmltYXRpb24oZmFsc2UpCisgICAgLCBt
X2hhc0VsZW1lbnRJZGVudGlmaWVyKGZhbHNlKQogICAgICwgbV9jaGlsZHJlbkFmZmVjdGVkQnlI
b3ZlcihmYWxzZSkKICAgICAsIG1fY2hpbGRyZW5BZmZlY3RlZEJ5RHJhZyhmYWxzZSkKICAgICAs
IG1fY2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoZmFsc2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRl
eCBhNjNjMTk0YjhiNTA3MzczMWNkOTE5MWIzMzEyNjFmMGY4ODg3MGM2Li4yMzY5ZWEyMDM2ZDhm
MzNlZjU5YjAzZDlkMTY4OGQ5NmEyMjUxODIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTI4Myw3ICsyODMs
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgYm9vbCBpc1Jvb3RFZGl0YWJsZUVsZW1l
bnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzUm9vdEVkaXRhYmxlRWxlbWVu
dCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIEVsZW1lbnQqIHJvb3RFZGl0YWJsZUVsZW1l
bnQoKSBjb25zdDsKIAogICAgIC8vIENhbGxlZCBieSB0aGUgcGFyc2VyIHdoZW4gdGhpcyBlbGVt
ZW50J3MgY2xvc2UgdGFnIGlzIHJlYWNoZWQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXggYjFlMzVjYjc3NmE4ZmUxNTE1ZjcxNmE3
MmZjNzNlOTI0YTFjMmJmMS4uY2Y4Yzc0NGI3MDNmYzU0ZWI1OTM5MTQwM2I2MTlmMmQ1NjNlZWY1
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQuaApAQCAtOTgsNiArOTgsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
aG93UGxhY2Vob2xkZXJJZk5lY2Vzc2FyeSgpOwogI2VuZGlmCiAKKyAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIGJvb2wgaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUoKSBjb25zdDsKKwogcHJv
dGVjdGVkOgogICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBEb2N1bWVudCYsIEhUTUxGb3JtRWxlbWVudCopOwogICAgIGJvb2wgaXNQbGFjZWhvbGRl
ckVtcHR5KCkgY29uc3Q7CkBAIC0xMDcsNyArMTA5LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9p
ZCBkaXNhYmxlZFN0YXRlQ2hhbmdlZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVhZE9ubHlTdGF0
ZUNoYW5nZWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNJbm5lclRleHRFbGVtZW50
RWRpdGFibGUoKSBjb25zdDsKKwogICAgIHZvaWQgdXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRh
YmlsaXR5KCk7CiAKICAgICB2b2lkIGNhY2hlU2VsZWN0aW9uKGludCBzdGFydCwgaW50IGVuZCwg
VGV4dEZpZWxkU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IGJmYWIwM2FiNGMwM2U1YWI1ZmRjN2M1OTBhYWFh
MDcyNWJjNmZmOWUuLjhkZWY4NDU3ZTgzN2QwMDZiNjM1Y2Q4Y2M5ZDZlZWRlYzNkMDJjMzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtNDUzLDYgKzQ1Myw3
IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViS2l0OjpXZWJNb3Vz
ZUV2ZW50JzogWyciV2ViRXZlbnQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6V2ViVG91Y2hFdmVu
dCc6IFsnIldlYkV2ZW50LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OldlYldoZWVsRXZlbnQnOiBb
JyJXZWJFdmVudC5oIiddLAorICAgICAgICAnc3RydWN0IFdlYktpdDo6VGV4dElucHV0Q29udGV4
dCc6IFsnIlRleHRJbnB1dENvbnRleHQuaCInXSwKICAgICAgICAgJ3N0cnVjdCBXZWJLaXQ6Oldl
YlVzZXJTY3JpcHREYXRhJzogWyciV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmgi
J10sCiAgICAgICAgICdzdHJ1Y3QgV2ViS2l0OjpXZWJVc2VyU3R5bGVTaGVldERhdGEnOiBbJyJX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCInXSwKICAgICAgICAgJ3N0cnVjdCBX
ZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyRGF0YSc6IFsnIldlYlVzZXJDb250ZW50Q29u
dHJvbGxlckRhdGFUeXBlcy5oIiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
VGV4dElucHV0Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9UZXh0SW5wdXRDb250
ZXh0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jMzBmYWZhNzhjYWJhOTIyYjU3ZDcyNDRlM2M2ZWRkZjczOWMx
Y2MzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVGV4dElucHV0Q29u
dGV4dC5jcHAKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJUZXh0SW5wdXRDb250ZXh0LmgiCisKKyNpbmNsdWRlICJXZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0VsZW1lbnQuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK1RleHRJbnB1dENvbnRleHQ6On5UZXh0SW5wdXRDb250ZXh0KCkgPSBkZWZh
dWx0OworCit9CisKK25hbWVzcGFjZSBJUEMgeworCit2b2lkIEFyZ3VtZW50Q29kZXI8V2ViS2l0
OjpUZXh0SW5wdXRDb250ZXh0Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYktp
dDo6VGV4dElucHV0Q29udGV4dCYgY29udGV4dCkKK3sKKyAgICBlbmNvZGVyIDw8IGNvbnRleHQu
Ym91bmRpbmdSZWN0OworICAgIGVuY29kZXIgPDwgY29udGV4dC53ZWJQYWdlSWRlbnRpZmllcjsK
KyAgICBlbmNvZGVyIDw8IGNvbnRleHQuZG9jdW1lbnRJZGVudGlmaWVyOworICAgIGVuY29kZXIg
PDwgY29udGV4dC5lbGVtZW50SWRlbnRpZmllcjsKK30KKworT3B0aW9uYWw8V2ViS2l0OjpUZXh0
SW5wdXRDb250ZXh0PiBBcmd1bWVudENvZGVyPFdlYktpdDo6VGV4dElucHV0Q29udGV4dD46OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFdlYktpdDo6VGV4dElucHV0Q29udGV4dCBj
b250ZXh0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29udGV4dC5ib3VuZGluZ1JlY3QpKQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29u
dGV4dC53ZWJQYWdlSWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgYXV0byBkb2N1bWVudElkZW50aWZpZXIgPSBXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXI6
OmRlY29kZShkZWNvZGVyKTsKKyAgICBpZiAoIWRvY3VtZW50SWRlbnRpZmllcikKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBjb250ZXh0LmRvY3VtZW50SWRlbnRpZmllciA9ICpk
b2N1bWVudElkZW50aWZpZXI7CisgICAgYXV0byBlbGVtZW50SWRlbnRpZmllciA9IFdlYkNvcmU6
OkVsZW1lbnRJZGVudGlmaWVyOjpkZWNvZGUoZGVjb2Rlcik7CisgICAgaWYgKCFlbGVtZW50SWRl
bnRpZmllcikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBjb250ZXh0LmVsZW1l
bnRJZGVudGlmaWVyID0gKmVsZW1lbnRJZGVudGlmaWVyOworCisgICAgcmV0dXJuIGNvbnRleHQ7
Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RleHRJbnB1dENvbnRl
eHQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RleHRJbnB1dENvbnRleHQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40Zjc1ZmQ4MDZmNjhkNmE5OTliYmE2YTQ1YjE0NTc0NzZmY2FiODhjCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVGV4dElucHV0Q29udGV4dC5oCkBAIC0wLDAgKzEs
NjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29k
ZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudElkZW50aWZpZXIuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL0VsZW1lbnRJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJl
Y3QuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBUZXh0SW5wdXRDb250ZXh0IHsK
KyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgYm91bmRpbmdSZWN0OworCisgICAgdWludDY0X3Qgd2Vi
UGFnZUlkZW50aWZpZXI7CisgICAgV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyIGRvY3VtZW50
SWRlbnRpZmllcjsKKyAgICBXZWJDb3JlOjpFbGVtZW50SWRlbnRpZmllciBlbGVtZW50SWRlbnRp
ZmllcjsKKworICAgIH5UZXh0SW5wdXRDb250ZXh0KCk7Cit9OworCitpbmxpbmUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFRleHRJbnB1dENvbnRleHQmIGEsIGNvbnN0IFRleHRJbnB1dENvbnRleHQm
IGIpCit7CisgICAgcmV0dXJuIGEuYm91bmRpbmdSZWN0ID09IGIuYm91bmRpbmdSZWN0CisgICAg
ICAgICYmIGEud2ViUGFnZUlkZW50aWZpZXIgPT0gYi53ZWJQYWdlSWRlbnRpZmllcgorICAgICAg
ICAmJiBhLmRvY3VtZW50SWRlbnRpZmllciA9PSBiLmRvY3VtZW50SWRlbnRpZmllcgorICAgICAg
ICAmJiBhLmVsZW1lbnRJZGVudGlmaWVyID09IGIuZWxlbWVudElkZW50aWZpZXI7Cit9CisKK30K
KworbmFtZXNwYWNlIElQQyB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYktp
dDo6VGV4dElucHV0Q29udGV4dD4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwg
Y29uc3QgV2ViS2l0OjpUZXh0SW5wdXRDb250ZXh0Jik7CisgICAgc3RhdGljIE9wdGlvbmFsPFdl
YktpdDo6VGV4dElucHV0Q29udGV4dD4gZGVjb2RlKERlY29kZXImKTsKK307Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4
dAppbmRleCA0YWIxZmEwMDNiYTFjNDJmMjdmNmQ0N2ExMzY5YzRlM2Y5YjI0NTIwLi4xYzY0NmJk
YzFkYjZlMzJlMGVjMzA5MGY1MjZlMjA5ZDMyY2M0NzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTEyOCw2
ICsxMjgsNyBAQCBTaGFyZWQvU2hhcmVkU3RyaW5nSGFzaFN0b3JlLmNwcAogU2hhcmVkL1NoYXJl
ZFN0cmluZ0hhc2hUYWJsZVJlYWRPbmx5LmNwcAogU2hhcmVkL1NoYXJlZFN0cmluZ0hhc2hUYWJs
ZS5jcHAKIFNoYXJlZC9TdGF0aXN0aWNzRGF0YS5jcHAKK1NoYXJlZC9UZXh0SW5wdXRDb250ZXh0
LmNwcAogU2hhcmVkL1RvdWNoQmFyTWVudURhdGEuY3BwCiBTaGFyZWQvVG91Y2hCYXJNZW51SXRl
bURhdGEuY3BwCiBTaGFyZWQvVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQKaW5kZXggYTczMGE1NWQxM2FhNzEzNGY2N2JjNTNiZDlkMTkwYTVhNWFlMjAwZS4u
Y2E4ZWY4ZmFjODNlZDY4NTgwZjIyMjIyZDkyMzkwNTc2NzRlOTJhOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0Nv
Y29hLnR4dApAQCAtMjU0LDYgKzI1NCw3IEBAIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLTGlua0lj
b25QYXJhbWV0ZXJzLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3
Q29udHJvbGxlci5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tTZXNzaW9uU3RhdGUubW0KK1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dElucHV0Q29udGV4dC5tbQogVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tUaHVtYm5haWxWaWV3Lm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250
ZW50RXh0ZW5zaW9uU3RvcmUubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlckNvbnRlbnRG
aWx0ZXIubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCmluZGV4IDc5NjVhMWVkZWIwN2MwMzAxODAxYWU2NDU2YmYwMmYyMDE3MmY2MTAuLmRmNjM2
NDI1NGQ5ZjQwNmZlNDQ1YWM5MWZkYTMzOGExODQ3NzM4MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtNDksNiArNDksNyBAQAogI2lt
cG9ydCAiUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCIKICNpbXBvcnQgIlJlbW90ZU9iamVjdFJlZ2lz
dHJ5TWVzc2FnZXMuaCIKICNpbXBvcnQgIlNhZmVCcm93c2luZ1dhcm5pbmcuaCIKKyNpbXBvcnQg
IlRleHRJbnB1dENvbnRleHQuaCIKICNpbXBvcnQgIlVJRGVsZWdhdGUuaCIKICNpbXBvcnQgIlVz
ZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmgiCiAjaW1wb3J0ICJWZXJzaW9uQ2hlY2tzLmgiCkBAIC05
Niw2ICs5Nyw3IEBACiAjaW1wb3J0ICJfV0tJbnNwZWN0b3JJbnRlcm5hbC5oIgogI2ltcG9ydCAi
X1dLUmVtb3RlT2JqZWN0UmVnaXN0cnlJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLU2Vzc2lvblN0
YXRlSW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS1RleHRJbnB1dENvbnRleHRJbnRlcm5hbC5oIgog
I2ltcG9ydCAiX1dLVmlzaXRlZExpbmtTdG9yZUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tXZWJz
aXRlUG9saWNpZXNJbnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRD
Ry5oPgpAQCAtNDgyNiw2ICs0ODI4LDMxIEBAIEZPUl9FQUNIX1BSSVZBVEVfV0tDT05URU5UVklF
V19BQ1RJT04oRk9SV0FSRF9BQ1RJT05fVE9fV0tDT05URU5UVklFVykKICAgICB9CiB9CiAKKy0g
KHZvaWQpX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDooQ0dSZWN0KXJlY3QgY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQoXikoTlNBcnJheTxfV0tUZXh0SW5wdXRDb250ZXh0ICo+ICopKWNv
bXBsZXRpb25IYW5kbGVyCit7CisgICAgX3BhZ2UtPnRleHRJbnB1dENvbnRleHRzSW5SZWN0KHJl
Y3QsIFtjYXB0dXJlZENvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25I
YW5kbGVyKV0gKGNvbnN0IFZlY3RvcjxXZWJLaXQ6OlRleHRJbnB1dENvbnRleHQ+JiBjb250ZXh0
cykgeworICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGVsZW1lbnRzID0gYWRvcHRO
UyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OmNvbnRleHRzLnNpemUo
KV0pOworCisgICAgICAgIGZvciAoY29uc3QgYXV0byYgY29udGV4dCA6IGNvbnRleHRzKQorICAg
ICAgICAgICAgW2VsZW1lbnRzIGFkZE9iamVjdDphZG9wdE5TKFtbX1dLVGV4dElucHV0Q29udGV4
dCBhbGxvY10gX2luaXRXaXRoVGV4dElucHV0Q29udGV4dDpjb250ZXh0XSkuZ2V0KCldOworCisg
ICAgICAgIGNhcHR1cmVkQ29tcGxldGlvbkhhbmRsZXIoZWxlbWVudHMuZ2V0KCkpOworICAgIH0p
OworfQorCistICh2b2lkKV9mb2N1c1RleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1dENvbnRl
eHQgKil0ZXh0SW5wdXRDb250ZXh0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKEJPT0wpKWNv
bXBsZXRpb25IYW5kbGVyCit7CisgICAgYXV0byB3ZWJDb250ZXh0ID0gW3RleHRJbnB1dENvbnRl
eHQgX3RleHRJbnB1dENvbnRleHRdOworICAgIGlmICh3ZWJDb250ZXh0LndlYlBhZ2VJZGVudGlm
aWVyICE9IF9wYWdlLT5wYWdlSUQoKSkKKyAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52
YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIlRoZSBwcm92aWRlZCBfV0tUZXh0SW5wdXRD
b250ZXh0IHdhcyBub3QgY3JlYXRlZCBieSB0aGlzIFdLV2ViVmlldy4iXTsKKworICAgIFtzZWxm
IGJlY29tZUZpcnN0UmVzcG9uZGVyXTsKKworICAgIF9wYWdlLT5mb2N1c1RleHRJbnB1dENvbnRl
eHQod2ViQ29udGV4dCwgW2NhcHR1cmVkQ29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIo
Y29tcGxldGlvbkhhbmRsZXIpXShib29sIHN1Y2Nlc3MpIHsKKyAgICAgICAgY2FwdHVyZWRDb21w
bGV0aW9uSGFuZGxlcihzdWNjZXNzKTsKKyAgICB9KTsKK30KKwogI2lmIFBMQVRGT1JNKE1BQykK
IC0gKHZvaWQpX3NldFNob3VsZFN1cHByZXNzRmlyc3RSZXNwb25kZXJDaGFuZ2VzOihCT09MKXNo
b3VsZFN1cHByZXNzCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCBlZDYzNjJkNDY4MGE2MTc4NTgwZWI3NGYxY2Mx
ZjMxNWRmZTYyMjlkLi5lYzY5MWM2MThlNzFlZGM0MTcyNGI3MDZkYjFhMWY2MDc4NjY4Y2E5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmgKQEAgLTExMSw2ICsxMTEsNyBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdl
ciwgX1dLUmVjdEVkZ2UpIHsKIEBjbGFzcyBfV0tSZW1vdGVPYmplY3RSZWdpc3RyeTsKIEBjbGFz
cyBfV0tTYWZlQnJvd3NpbmdXYXJuaW5nOwogQGNsYXNzIF9XS1Nlc3Npb25TdGF0ZTsKK0BjbGFz
cyBfV0tUZXh0SW5wdXRDb250ZXh0OwogQGNsYXNzIF9XS1RodW1ibmFpbFZpZXc7CiBAY2xhc3Mg
X1dLV2Vic2l0ZVBvbGljaWVzOwogQGNsYXNzIF9XS1dlYlZpZXdQcmludEZvcm1hdHRlcjsKQEAg
LTQxOCw2ICs0MTksMTAgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1JlY3RF
ZGdlKSB7CiAtICh2b2lkKV9zdG9wQWxsTWVkaWFQbGF5YmFjazsKIC0gKHZvaWQpX3N1c3BlbmRB
bGxNZWRpYVBsYXliYWNrOwogLSAodm9pZClfcmVzdW1lQWxsTWVkaWFQbGF5YmFjazsKKworLSAo
dm9pZClfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OihDR1JlY3QpcmVjdCBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCheKShOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4gKikpY29t
cGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CistICh2b2lkKV9mb2N1c1RleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1
dENvbnRleHQgKil0ZXh0SW5wdXRFbGVtZW50IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKEJP
T0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOworCiBAZW5kCiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dElucHV0Q29u
dGV4dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRJbnB1dENv
bnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jOTZiM2QyMDdmZDU0YWQ2M2I2ZmViZmRiOTZhMmM1N2U1MmFi
Y2M0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS1RleHRJbnB1dENvbnRleHQuaApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCitXS19DTEFTU19BVkFJTEFCTEUobWFjb3N4
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpCitAaW50ZXJmYWNlIF9XS1RleHRJbnB1dENv
bnRleHQgOiBOU09iamVjdCA8TlNDb3B5aW5nPgorCistIChpbnN0YW5jZXR5cGUpaW5pdCBOU19V
TkFWQUlMQUJMRTsKKworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBDR1JlY3QgYm91
bmRpbmdSZWN0OworCitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLVGV4dElucHV0Q29udGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tUZXh0SW5wdXRDb250ZXh0Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3ZWNlMmQyMjUw
YjE4MTA2MTczMWUyMjhlNDg4NjZmYjUxYmNlMDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dElucHV0Q29udGV4dC5tbQpAQCAtMCww
ICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJfV0tU
ZXh0SW5wdXRDb250ZXh0LmgiCisKKyNpbXBvcnQgIlRleHRJbnB1dENvbnRleHQuaCIKKyNpbXBv
cnQgIl9XS1RleHRJbnB1dENvbnRleHRJbnRlcm5hbC5oIgorCitAaW1wbGVtZW50YXRpb24gX1dL
VGV4dElucHV0Q29udGV4dCB7CisgICAgV2ViS2l0OjpUZXh0SW5wdXRDb250ZXh0IF90ZXh0SW5w
dXRDb250ZXh0OworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdAoreworICAgIHJldHVybiBuaWw7
Cit9CisKKy0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhUZXh0SW5wdXRDb250ZXh0Oihjb25zdCBX
ZWJLaXQ6OlRleHRJbnB1dENvbnRleHQmKWNvbnRleHQKK3sKKyAgICBzZWxmID0gW3N1cGVyIGlu
aXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF90ZXh0SW5w
dXRDb250ZXh0ID0gY29udGV4dDsKKworICAgIHJldHVybiBzZWxmOworfQorCistIChDR1JlY3Qp
Ym91bmRpbmdSZWN0Cit7CisgICAgcmV0dXJuIF90ZXh0SW5wdXRDb250ZXh0LmJvdW5kaW5nUmVj
dDsKK30KKworLSAoY29uc3QgV2ViS2l0OjpUZXh0SW5wdXRDb250ZXh0JilfdGV4dElucHV0Q29u
dGV4dAoreworICAgIHJldHVybiBfdGV4dElucHV0Q29udGV4dDsKK30KKworLSAoQk9PTClpc0Vx
dWFsOihpZClvdGhlck9iamVjdAoreworICAgIGlmIChzZWxmID09IG90aGVyT2JqZWN0KQorICAg
ICAgICByZXR1cm4gWUVTOworCisgICAgaWYgKCFbb3RoZXJPYmplY3QgaXNLaW5kT2ZDbGFzczpb
X1dLVGV4dElucHV0Q29udGV4dCBjbGFzc11dKQorICAgICAgICByZXR1cm4gTk87CisKKyAgICBf
V0tUZXh0SW5wdXRDb250ZXh0ICpvdGhlciA9IChfV0tUZXh0SW5wdXRDb250ZXh0ICopb3RoZXJP
YmplY3Q7CisKKyAgICByZXR1cm4gX3RleHRJbnB1dENvbnRleHQgPT0gb3RoZXItPl90ZXh0SW5w
dXRDb250ZXh0OworfQorCistIChOU1VJbnRlZ2VyKWhhc2gKK3sKKyAgICByZXR1cm4gX3RleHRJ
bnB1dENvbnRleHQuZWxlbWVudElkZW50aWZpZXIudG9VSW50NjQoKTsKK30KKworLSAoaWQpY29w
eVdpdGhab25lOihOU1pvbmUgKil6b25lCit7CisgICAgcmV0dXJuIFtzZWxmIHJldGFpbl07Cit9
CisKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tUZXh0SW5wdXRDb250ZXh0SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tUZXh0SW5wdXRDb250ZXh0SW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZjMyYTQx
MDA1ZmYyZmNkMjEzNWFmMjdlNTAyOGIzYmNhODJjNjk3Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRJbnB1dENvbnRleHRJbnRlcm5h
bC5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJfV0tUZXh0SW5wdXRD
b250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworc3RydWN0IFRleHRJbnB1dENvbnRleHQ7
Cit9CisKK0BpbnRlcmZhY2UgX1dLVGV4dElucHV0Q29udGV4dCAoKQorCistIChpbnN0YW5jZXR5
cGUpX2luaXRXaXRoVGV4dElucHV0Q29udGV4dDooY29uc3QgV2ViS2l0OjpUZXh0SW5wdXRDb250
ZXh0Jiljb250ZXh0OworCistIChjb25zdCBXZWJLaXQ6OlRleHRJbnB1dENvbnRleHQmKV90ZXh0
SW5wdXRDb250ZXh0OworCitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAppbmRleCBkZTEzNmMwMzc3N2JlMzYwZmJjZTdlMDdlZGYxN2RiNTk3ZGEyMjVmLi4wMmFh
MzI0MjA4NGQ1NmVkMDY0NTU1OTBiMzFjMzExZWQ2OTFkY2I2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTgzLDYgKzgzLDcgQEAKICNpbmNsdWRlICJTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKICNpbmNs
dWRlICJUZXh0Q2hlY2tlclN0YXRlLmgiCisjaW5jbHVkZSAiVGV4dElucHV0Q29udGV4dC5oIgog
I2luY2x1ZGUgIlVJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCIKICNpbmNsdWRlICJVUkxT
Y2hlbWVUYXNrUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlVuZG9PclJlZG8uaCIKQEAgLTg4MjEs
NiArODgyMiwyNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6d2ViVmlld0RpZE1vdmVUb1dpbmRvdygp
CiAgICAgfQogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6dGV4dElucHV0Q29udGV4dHNJblJlY3Qo
V2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVj
dG9yPFdlYktpdDo6VGV4dElucHV0Q29udGV4dD4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBpZiAoIWlzVmFsaWQoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6VGV4dElucHV0Q29udGV4dHNJblJl
Y3QocmVjdCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3BhZ2VJRCk7Cit9CisKK3Zv
aWQgV2ViUGFnZVByb3h5Ojpmb2N1c1RleHRJbnB1dENvbnRleHQoY29uc3QgVGV4dElucHV0Q29u
dGV4dCYgY29udGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3Byb2Nlc3MtPmNv
bm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpGb2N1c1Rl
eHRJbnB1dENvbnRleHQoY29udGV4dCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3Bh
Z2VJRCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgTUVSR0VfV0hFRUxf
RVZFTlRTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGE4MDJiMTBl
MjE1NWNlMmFiZWY1YTA0N2QyOTQ0MjU3NjU1MmRiODAuLjhiY2Q4MjFiYzFhNDFmODliYzk5YTNj
NDMzNzUxNmEyYmEyY2I2MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CkBAIC0yNzUsNiArMjc1LDcgQEAgc3RydWN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0
Owogc3RydWN0IExvYWRQYXJhbWV0ZXJzOwogc3RydWN0IFBsYXRmb3JtUG9wdXBNZW51RGF0YTsK
IHN0cnVjdCBQcmludEluZm87CitzdHJ1Y3QgVGV4dElucHV0Q29udGV4dDsKIHN0cnVjdCBXZWJQ
b3B1cEl0ZW07CiBzdHJ1Y3QgVVJMU2NoZW1lVGFza1BhcmFtZXRlcnM7CiAKQEAgLTYwNiw2ICs2
MDcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXF1ZXN0Rm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlv
blN0YXJ0KEZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXMmLCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBmb250QXR0cmlidXRlc0NhbGxiYWNrKGNv
bnN0IFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzJiwgQ2FsbGJhY2tJRCk7CiAKKyAgICB2b2lkIHRl
eHRJbnB1dENvbnRleHRzSW5SZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBWZWN0b3I8VGV4dElucHV0Q29udGV4dD4mKT4mJik7CisgICAgdm9pZCBm
b2N1c1RleHRJbnB1dENvbnRleHQoY29uc3QgVGV4dElucHV0Q29udGV4dCYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpOworCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBk
b3VibGUgZGlzcGxheWVkQ29udGVudFNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0VmlzaWJs
ZUNvbnRlbnRSZWN0VXBkYXRlLnNjYWxlKCk7IH0KICAgICBjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmIGV4cG9zZWRDb250ZW50UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFZpc2libGVDb250
ZW50UmVjdFVwZGF0ZS5leHBvc2VkQ29udGVudFJlY3QoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzc5NWRkYTE0NzVjYTIwZGJj
NDM1ZmJjOTMyNzFiY2ZhNDNkZTNkOS4uZmM4NjA0ZjJiNWFmYzFjYjJmYWY2NjYzM2RmOTU5MTlj
NGQxOGNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC03MjcsNiArNzI3LDkgQEAKIAkJMkRERjczMTUxOEU5NTA2MDAwNEY1QTY2IC8q
IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRERjczMTMxOEU5NTA2MDAwNEY1QTY2IC8qIFJl
bW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5oICovOyB9OwogCQkyREU2OTQzRDE4QkQy
QTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREU2
OTQzQjE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTJERTY5NDNFMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFy
dE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERTY5NDNDMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFy
dE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZXMuaCAqLzsgfTsKKwkJMkRFOUIxMzUyMjMx
QjVCMjAwNTI4N0I3IC8qIFRleHRJbnB1dENvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERTlCMTMzMjIzMUI1QjIwMDUyODdCNyAvKiBUZXh0
SW5wdXRDb250ZXh0LmggKi87IH07CisJCTJERTlCMTNBMjIzMUY2MUMwMDUyODdCNyAvKiBfV0tU
ZXh0SW5wdXRDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyREU5QjEzODIyMzFGNjFDMDA1Mjg3QjcgLyogX1dLVGV4dElucHV0Q29udGV4dC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTJERTlC
MTNDMjIzMUY3N0MwMDUyODdCNyAvKiBfV0tUZXh0SW5wdXRDb250ZXh0SW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERTlCMTNCMjIzMUY3
N0MwMDUyODdCNyAvKiBfV0tUZXh0SW5wdXRDb250ZXh0SW50ZXJuYWwuaCAqLzsgfTsKIAkJMkRF
QUM1Q0YxQUMzNjhCQjAwQTE5NUQ4IC8qIF9XS0ZpbmRPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREVBQzVDRTFBQzM2OEJCMDBBMTk1RDgg
LyogX1dLRmluZE9wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkyREVCMUQyRTIxMjc0NzM2MDA5MzM5MDYgLyogQXJndW1lbnRDb2RlcnND
Ri5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUFG
MEM0OTEyQjE2MzM0MDA4RTQ5RTIgLyogQXJndW1lbnRDb2RlcnNDRi5jcHAgKi87IH07CiAJCTJE
RjZGRTUyMjEyRTExMDkwMDQ2OTAzMCAvKiBXZWJQYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOTYzRDZBMTEzREQxOTIwMDU3NEJFMiAvKiBX
ZWJQYWdlLmNwcCAqLzsgfTsKQEAgLTI3ODYsNiArMjc4OSwxMSBAQAogCQkyRERGNzMxNDE4RTk1
MDYwMDA0RjVBNjYgLyogUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmVDb2xsZWN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREU2OTQzQjE4
QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNl
aXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTbWFydE1hZ25p
ZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5j
cHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTJERTY5NDNDMThCRDJB
NjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxl
ck1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1NtYXJ0TWFnbmlmaWNh
dGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElS
OyB9OworCQkyREU5QjEzMzIyMzFCNUIyMDA1Mjg3QjcgLyogVGV4dElucHV0Q29udGV4dC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0SW5wdXRDb250ZXh0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJERTlCMTM0MjIzMUI1QjIwMDUyODdCNyAvKiBUZXh0
SW5wdXRDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRl
eHRJbnB1dENvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREU5QjEz
NzIyMzFGNjFDMDA1Mjg3QjcgLyogX1dLVGV4dElucHV0Q29udGV4dC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS1RleHRJbnB1dENvbnRleHQubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJERTlCMTM4MjIzMUY2MUMwMDUyODdCNyAvKiBfV0tU
ZXh0SW5wdXRDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1Rl
eHRJbnB1dENvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkRFOUIxM0Iy
MjMxRjc3QzAwNTI4N0I3IC8qIF9XS1RleHRJbnB1dENvbnRleHRJbnRlcm5hbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tUZXh0SW5wdXRDb250ZXh0SW50ZXJuYWwuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRFQUM1Q0UxQUMzNjhCQjAwQTE5NUQ4IC8q
IF9XS0ZpbmRPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0Zp
bmRPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJERjM5NjJBMjFDOERD
NTAwMDg4MzVFMyAvKiBXS0lua1BpY2tlclZpZXcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBX
S0lua1BpY2tlclZpZXcubW07IHBhdGggPSBpb3MvV0tJbmtQaWNrZXJWaWV3Lm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyREYzOTYyQjIxQzhEQzUwMDA4ODM1RTMgLyogV0tJbmtQ
aWNrZXJWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLSW5rUGlja2VyVmlldy5oOyBwYXRoID0gaW9z
L1dLSW5rUGlja2VyVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTEwNSw2
ICs1MTEzLDggQEAKIAkJCQk1MjcyQjI4ODE0MDY5ODVEMDA5NkE1RDAgLyogU3RhdGlzdGljc0Rh
dGEuY3BwICovLAogCQkJCTUyNzJCMjg5MTQwNjk4NUQwMDk2QTVEMCAvKiBTdGF0aXN0aWNzRGF0
YS5oICovLAogCQkJCTFBNUU0REEzMTJEM0JEM0QwMDk5QTJCQiAvKiBUZXh0Q2hlY2tlclN0YXRl
LmggKi8sCisJCQkJMkRFOUIxMzQyMjMxQjVCMjAwNTI4N0I3IC8qIFRleHRJbnB1dENvbnRleHQu
Y3BwICovLAorCQkJCTJERTlCMTMzMjIzMUI1QjIwMDUyODdCNyAvKiBUZXh0SW5wdXRDb250ZXh0
LmggKi8sCiAJCQkJMkZENDNCOTIxRkEwMDZBMzAwODNGNTFDIC8qIFRvdWNoQmFyTWVudURhdGEu
Y3BwICovLAogCQkJCTJGRDQzQjkxMUZBMDA2QTEwMDgzRjUxQyAvKiBUb3VjaEJhck1lbnVEYXRh
LmggKi8sCiAJCQkJMkY4MDlERDUxRkJEMUJDOTAwNUZFNjNBIC8qIFRvdWNoQmFyTWVudUl0ZW1E
YXRhLmNwcCAqLywKQEAgLTYwNzgsNiArNjA4OCw5IEBACiAJCQkJMUEwMDJEM0YxOTZCMzI5NDAw
QjlBRDQ0IC8qIF9XS1Nlc3Npb25TdGF0ZS5oICovLAogCQkJCTFBMDAyRDNFMTk2QjMyOTQwMEI5
QUQ0NCAvKiBfV0tTZXNzaW9uU3RhdGUubW0gKi8sCiAJCQkJMUEwMDJENDIxOTZCMzM3MDAwQjlB
RDQ0IC8qIF9XS1Nlc3Npb25TdGF0ZUludGVybmFsLmggKi8sCisJCQkJMkRFOUIxMzgyMjMxRjYx
QzAwNTI4N0I3IC8qIF9XS1RleHRJbnB1dENvbnRleHQuaCAqLywKKwkJCQkyREU5QjEzNzIyMzFG
NjFDMDA1Mjg3QjcgLyogX1dLVGV4dElucHV0Q29udGV4dC5tbSAqLywKKwkJCQkyREU5QjEzQjIy
MzFGNzdDMDA1Mjg3QjcgLyogX1dLVGV4dElucHV0Q29udGV4dEludGVybmFsLmggKi8sCiAJCQkJ
MkQ2QjM3MTkxOEE5NjdBRDAwNDJBRTgwIC8qIF9XS1RodW1ibmFpbFZpZXcuaCAqLywKIAkJCQky
RDZCMzcxQTE4QTk2N0FEMDA0MkFFODAgLyogX1dLVGh1bWJuYWlsVmlldy5tbSAqLywKIAkJCQky
REFDRTY0RDE4QURCRkYwMDBFNENBNzYgLyogX1dLVGh1bWJuYWlsVmlld0ludGVybmFsLmggKi8s
CkBAIC04OTM1LDYgKzg5NDgsOCBAQAogCQkJCTM3NjMxMUZFMUEzRkI2MDAwMDVBMkU1MSAvKiBf
V0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQTAwMkQ0NDE5NkIzMzg5MDBCOUFENDQgLyogX1dLU2Vzc2lvblN0YXRlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQTAwMkQ0MzE5NkIzMzcwMDBCOUFENDQgLyogX1dLU2Vzc2lvblN0YXRlSW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTJERTlCMTNBMjIzMUY2MUMwMDUyODdCNyAvKiBf
V0tUZXh0SW5wdXRDb250ZXh0LmggaW4gSGVhZGVycyAqLywKKwkJCQkyREU5QjEzQzIyMzFGNzdD
MDA1Mjg3QjcgLyogX1dLVGV4dElucHV0Q29udGV4dEludGVybmFsLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyRDZCMzcxQjE4QTk2N0FEMDA0MkFFODAgLyogX1dLVGh1bWJuYWlsVmlldy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMkRBQ0U2NEUxOEFEQkZGMDAwRTRDQTc2IC8qIF9XS1RodW1ibmFpbFZp
ZXdJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlFNzE4OUMyMUY3OUQ5RTAwNTVFOTc1
IC8qIF9XS1RvdWNoRXZlbnRHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtOTQwMiw2ICs5
NDE3LDcgQEAKIAkJCQkxQUE0MTdDQjEyQzAwQ0NBMDAyQkU2N0IgLyogVGV4dENoZWNrZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTUzQ0ZCQkM4MjIyNEQxQjUwMDI2NjU0NiAvKiBUZXh0Q2hlY2tl
ckNvbXBsZXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNUU0REE0MTJEM0JEM0QwMDk5QTJC
QiAvKiBUZXh0Q2hlY2tlclN0YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQkyREU5QjEzNTIyMzFC
NUIyMDA1Mjg3QjcgLyogVGV4dElucHV0Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Ux
QTBCRDcxQTQ4RTZDNjAwNTRFRjc0IC8qIFRleHRJbnB1dFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUFBRjI2MzkxNDY4N0MzOTAwNEExRThBIC8qIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUYwNUQ4NzE0Njg4MzQ4MDA4QjFFODEgLyogVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDYwOWUzNjk2Y2Q1
NmUxNzliMWEzY2QzMmQ3MmM2NzBlMjRiOWQzMTQuLjQ3NDQ4ZTczYzMyMmRhMzE0ZjQ5MTllYzFj
N2JiNjVjNGIxOTE2NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCkBAIC02NDg1LDYgKzY0ODUsOTQgQEAgV2ViQ29yZTo6SW50UmVjdCBXZWJQYWdl
OjpyZWN0Rm9yRWxlbWVudEF0SW50ZXJhY3Rpb25Mb2NhdGlvbigpIGNvbnN0CiAKICNlbmRpZiAv
LyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAorc3RhdGljIEludFJlY3QgZWxlbWVudFJlY3RJbldp
bmRvd0Nvb3JkaW5hdGVzKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEZyYW1lJiBmcmFt
ZSkKK3sKKyAgICBhdXRvKiB2aWV3ID0gZnJhbWUudmlldygpOworICAgIGlmICghdmlldykKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJl
cigpOworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICByZXR1
cm4gdmlldy0+Y29udGVudHNUb1dpbmRvdyhyZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJl
Y3QoKSk7Cit9CisKK3N0YXRpYyBib29sIGlzRWRpdGFibGVUZXh0SW5wdXRFbGVtZW50KEVsZW1l
bnQmIGVsZW1lbnQpCit7CisgICAgaWYgKGlzPEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Pihl
bGVtZW50KSkgeworICAgICAgICBpZiAoIWVsZW1lbnQuaXNUZXh0RmllbGQoKSAmJiAhaXM8SFRN
TFRleHRBcmVhRWxlbWVudD4oZWxlbWVudCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oZWxlbWVu
dCkuaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gZWxl
bWVudC5pc1Jvb3RFZGl0YWJsZUVsZW1lbnQoKTsKK30KKwordm9pZCBXZWJQYWdlOjp0ZXh0SW5w
dXRDb250ZXh0c0luUmVjdChXZWJDb3JlOjpGbG9hdFJlY3Qgc2VhcmNoUmVjdCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8VGV4dElucHV0Q29udGV4dD4mKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBWZWN0b3I8V2ViS2l0OjpUZXh0SW5wdXRDb250ZXh0PiB0ZXh0
SW5wdXRDb250ZXh0czsKKworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1fcGFnZS0+bWFpbkZy
YW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKKyAg
ICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7CisgICAgICAgIGlm
ICghZG9jdW1lbnQpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBEZXF1ZTxOb2Rl
Kj4gbm9kZXNUb1NlYXJjaDsKKyAgICAgICAgbm9kZXNUb1NlYXJjaC5hcHBlbmQoZG9jdW1lbnQp
OworICAgICAgICB3aGlsZSAoIW5vZGVzVG9TZWFyY2guaXNFbXB0eSgpKSB7CisgICAgICAgICAg
ICBhdXRvIG5vZGUgPSBub2Rlc1RvU2VhcmNoLnRha2VGaXJzdCgpOworCisgICAgICAgICAgICAv
LyBJdCBpcyBwb3NzaWJsZSB0byBoYXZlIG5lc3RlZCB0ZXh0IGlucHV0IGNvbnRleHRzIChlLmcu
IDxpbnB1dCB0eXBlPSd0ZXh0Jz4gaW5zaWRlIGNvbnRlbnRlZGl0YWJsZSkgYnV0CisgICAgICAg
ICAgICAvLyBpbiB0aGlzIGNhc2Ugd2UganVzdCB0YWtlIHRoZSBvdXRlcm1vc3QgY29udGV4dCBh
bmQgc2tpcCB0aGUgcmVzdC4KKyAgICAgICAgICAgIGlmICghaXM8RWxlbWVudD4oKm5vZGUpIHx8
ICFpc0VkaXRhYmxlVGV4dElucHV0RWxlbWVudChkb3duY2FzdDxFbGVtZW50Pigqbm9kZSkpKSB7
CisgICAgICAgICAgICAgICAgZm9yIChhdXRvKiBjaGlsZCA9IG5vZGUtPmZpcnN0Q2hpbGQoKTsg
Y2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCisgICAgICAgICAgICAgICAgICAg
IG5vZGVzVG9TZWFyY2guYXBwZW5kKGNoaWxkKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYXV0byYgZWxlbWVudCA9IGRvd25jYXN0PEVs
ZW1lbnQ+KCpub2RlKTsKKworICAgICAgICAgICAgSW50UmVjdCBlbGVtZW50UmVjdCA9IGVsZW1l
bnRSZWN0SW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50LCAqZnJhbWUpOworICAgICAgICAgICAg
aWYgKCFzZWFyY2hSZWN0LmludGVyc2VjdHMoZWxlbWVudFJlY3QpKQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgICAgICBXZWJLaXQ6OlRleHRJbnB1dENvbnRleHQgY29udGV4
dDsKKyAgICAgICAgICAgIGNvbnRleHQud2ViUGFnZUlkZW50aWZpZXIgPSBtX3BhZ2VJRDsKKyAg
ICAgICAgICAgIGNvbnRleHQuZG9jdW1lbnRJZGVudGlmaWVyID0gZG9jdW1lbnQtPmlkZW50aWZp
ZXIoKTsKKyAgICAgICAgICAgIGNvbnRleHQuZWxlbWVudElkZW50aWZpZXIgPSBkb2N1bWVudC0+
aWRlbnRpZmllckZvckVsZW1lbnQoZWxlbWVudCk7CisgICAgICAgICAgICBjb250ZXh0LmJvdW5k
aW5nUmVjdCA9IGVsZW1lbnRSZWN0OworCisgICAgICAgICAgICB0ZXh0SW5wdXRDb250ZXh0cy5h
cHBlbmQoY29udGV4dCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb21wbGV0aW9uSGFuZGxl
cih0ZXh0SW5wdXRDb250ZXh0cyk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6Zm9jdXNUZXh0SW5wdXRD
b250ZXh0KGNvbnN0IFRleHRJbnB1dENvbnRleHQmIHRleHRJbnB1dENvbnRleHQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgY29tcGxl
dGlvbkhhbmRsZXIoWyZdIHsKKyAgICAgICAgaWYgKHRleHRJbnB1dENvbnRleHQud2ViUGFnZUlk
ZW50aWZpZXIgIT0gbV9wYWdlSUQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAg
ICAgYXV0byogZG9jdW1lbnQgPSBEb2N1bWVudDo6YWxsRG9jdW1lbnRzTWFwKCkuZ2V0KHRleHRJ
bnB1dENvbnRleHQuZG9jdW1lbnRJZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKCFkb2N1bWVudCkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpZiAoZG9jdW1lbnQtPnBhZ2Uo
KSAhPSBtX3BhZ2UuZ2V0KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
YXV0byogZWxlbWVudCA9IGRvY3VtZW50LT5zZWFyY2hGb3JFbGVtZW50QnlJZGVudGlmaWVyKHRl
eHRJbnB1dENvbnRleHQuZWxlbWVudElkZW50aWZpZXIpOworICAgICAgICBpZiAoIWVsZW1lbnQp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgZWxlbWVudC0+Zm9jdXMoKTsK
KworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9KCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKIAogI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAyNWVmMjMyNmYwMjU3NDhmOTkwYTM5YmM4
NTFkNzQ2MWYyNjQzZGMzLi4zY2Q3ZWNlNWIzOGM5ODhjNzZlNmIzZGU4MjczMTU3ZDIxN2RhOTY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0yNTEs
NiArMjUxLDcgQEAgc3RydWN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOwogc3Ry
dWN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0Owogc3RydWN0IExvYWRQYXJhbWV0ZXJz
Owogc3RydWN0IFByaW50SW5mbzsKK3N0cnVjdCBUZXh0SW5wdXRDb250ZXh0Owogc3RydWN0IFdl
YkF1dG9jb3JyZWN0aW9uQ29udGV4dDsKIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
Owogc3RydWN0IFdlYlByZWZlcmVuY2VzU3RvcmU7CkBAIC01OTIsNiArNTkzLDkgQEAgcHVibGlj
OgogICAgIHZvaWQgdmlld3BvcnRQcm9wZXJ0aWVzRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OlZp
ZXdwb3J0QXJndW1lbnRzJik7CiAgICAgdm9pZCBleGVjdXRlRWRpdENvbW1hbmRXaXRoQ2FsbGJh
Y2soY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBhcmd1bWVudCwgQ2FsbGJhY2tJRCk7CiAK
KyAgICB2b2lkIHRleHRJbnB1dENvbnRleHRzSW5SZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViS2l0OjpUZXh0SW5wdXRDb250ZXh0
PiYpPiYmKTsKKyAgICB2b2lkIGZvY3VzVGV4dElucHV0Q29udGV4dChjb25zdCBUZXh0SW5wdXRD
b250ZXh0JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBzY3JlZW5TaXplKCkgY29uc3Q7
CiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIGF2YWlsYWJsZVNjcmVlblNpemUoKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCmluZGV4IDlkNzIzOWRiNWEwMzJhMDJlYzAyMjQ3NjNhMDc2ZDY5NjYwMzE2ODMuLjcxY2Fi
YTg5YWM0YTc0Yjc4YmI4MjA3OTdjMWIyZmNkZGYzNzI0NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNTQ5LDQg
KzU0OSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogCiAgICAgVXBk
YXRlQ3VycmVudE1vZGlmaWVyU3RhdGUoT3B0aW9uU2V0PFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6
Ok1vZGlmaWVyPiBtb2RpZmllcnMpCiAgICAgU2ltdWxhdGVEZXZpY2VPcmllbnRhdGlvbkNoYW5n
ZShkb3VibGUgYWxwaGEsIGRvdWJsZSBiZXRhLCBkb3VibGUgZ2FtbWEpCisKKyAgICBUZXh0SW5w
dXRDb250ZXh0c0luUmVjdChXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCkgLT4gKFZlY3RvcjxzdHJ1
Y3QgV2ViS2l0OjpUZXh0SW5wdXRDb250ZXh0PiBjb250ZXh0cykgQXN5bmMKKyAgICBGb2N1c1Rl
eHRJbnB1dENvbnRleHQoc3RydWN0IFdlYktpdDo6VGV4dElucHV0Q29udGV4dCBjb250ZXh0KSAt
PiAoYm9vbCBzdWNjZXNzKSBBc3luYwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDQ2ZDAwNjY0ZDg3ODZkN2NiZDAyMjY4NDU0YjczZjA5MGY5
ZmUzM2IuLjA2YmZlNGU5MDQ5N2YyMzc5OTU0ODEzYWNiYzZkN2RkZjhiMWUxZDYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBA
QAorMjAxOS0wMy0wOSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBZGQgU1BJIHRvIHJldHJpZXZlIHRoZSBzZXQgb2YgdGV4dCBpbnB1dHMgaW4gYSBn
aXZlbiByZWN0LCBhbmQgbGF0ZXIgZm9jdXMgb25lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU0OTkKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBBZGxlci4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvUmVxdWVzdFRleHRJbnB1dENvbnRleHQubW06IEFkZGVkLgorICAgICAgICAoLVtXS1dl
YlZpZXcgc3luY2hyb25vdXNseVJlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDpdKToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IHN5bmNocm9ub3VzbHlGb2N1c1RleHRJbnB1dENvbnRleHQ6XSk6
CisgICAgICAgIChhcHBseVN0eWxlKToKKyAgICAgICAgKGFwcGx5SWZyYW1lKToKKyAgICAgICAg
KFRFU1QpOgorICAgICAgICBBZGQgc29tZSB0ZXN0cyBmb3IgdGhpcyBTUEkuCisKIDIwMTktMDMt
MDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9y
dCBmb3IgRGV2aWNlIE9yaWVudGF0aW9uIC8gTW90aW9uIHBlcm1pc3Npb24gQVBJCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDM4YzBjYjIxNGQ2MDZlYTNiMWQ4YjlhYmMzOWEzZmExZGE0ZGJi
ZGYuLmYzYTk5MGRjOTY5ZjgwMjVlZTJlYzhiYzQzNTBjNjI4ZGI0NDdlMzIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC05Miw2ICs5Miw3IEBACiAJCTJEMTY0NkUyMUQxODYyQ0QwMDAxNUEx
QSAvKiBEZWZlcnJlZFZpZXdJbldpbmRvd1N0YXRlQ2hhbmdlLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQxNjQ2RTExRDE4NjJDRDAwMDE1QTFBIC8q
IERlZmVycmVkVmlld0luV2luZG93U3RhdGVDaGFuZ2UubW0gKi87IH07CiAJCTJEMUMwNEE3MUQ3
NjI5OEIwMDBBNjgxNiAvKiBUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQxQzA0QTYxRDc2Mjk4QjAwMEE2ODE2
IC8qIFRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUubW0gKi87IH07CiAJCTJEMjFGRTU5MUYwNDY0Mjkw
MEI1OEU3RCAvKiBXS1BERlZpZXdTdGFibGVQcmVzZW50YXRpb25VcGRhdGVDYWxsYmFjay5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMjFGRTU4MUYw
NDY0MjgwMEI1OEU3RCAvKiBXS1BERlZpZXdTdGFibGVQcmVzZW50YXRpb25VcGRhdGVDYWxsYmFj
ay5tbSAqLzsgfTsKKwkJMkQyQkVCMkQyMjMyNEU1RjAwNTU0NENBIC8qIFJlcXVlc3RUZXh0SW5w
dXRDb250ZXh0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkQyQkVCMkMyMjMyNEU1RjAwNTU0NENBIC8qIFJlcXVlc3RUZXh0SW5wdXRDb250ZXh0Lm1t
ICovOyB9OwogCQkyRDNDQTNBODIyMURGNEI0MDA4OEU4MDMgLyogUGFnZU92ZXJsYXlQbHVnaW4u
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDNDQTNB
NDIyMURGMjM5MDA4OEU4MDMgLyogUGFnZU92ZXJsYXlQbHVnaW4ubW0gKi87IH07CiAJCTJENENG
OEJEMUQ4MzYwQ0MwMDAxQ0U4RCAvKiBXS1RodW1ibmFpbFZpZXcubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDRDRjhCQzFEODM2MENDMDAwMUNFOEQg
LyogV0tUaHVtYm5haWxWaWV3Lm1tICovOyB9OwogCQkyRDUxQTBDNzFDOEJGMDBDMDA3NjVDNDUg
LyogRE9NSFRNTFZpZGVvRWxlbWVudFdyYXBwZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDUxQTBDNTFDOEJGMDA0MDA3NjVDNDUgLyogRE9NSFRN
TFZpZGVvRWxlbWVudFdyYXBwZXIubW0gKi87IH07CkBAIC0xNDI2LDYgKzE0MjcsNyBAQAogCQky
RDFDMDRBNjFENzYyOThCMDAwQTY4MTYgLyogVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFRlc3ROYXZpZ2F0aW9uRGVsZWdh
dGUubW07IHBhdGggPSBjb2NvYS9UZXN0TmF2aWdhdGlvbkRlbGVnYXRlLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyRDFGRTBBRjFBRDQ2NUMxMDA2Q0Q5RTYgLyogRml4ZWRMYXlv
dXRTaXplLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRml4ZWRM
YXlvdXRTaXplLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDIxRkU1ODFGMDQ2
NDI4MDBCNThFN0QgLyogV0tQREZWaWV3U3RhYmxlUHJlc2VudGF0aW9uVXBkYXRlQ2FsbGJhY2su
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1BERlZpZXdTdGFi
bGVQcmVzZW50YXRpb25VcGRhdGVDYWxsYmFjay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMkQyQkVCMkMyMjMyNEU1RjAwNTU0NENBIC8qIFJlcXVlc3RUZXh0SW5wdXRDb250ZXh0
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVxdWVzdFRleHRJ
bnB1dENvbnRleHQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEM0NBM0E0MjIx
REYyMzkwMDg4RTgwMyAvKiBQYWdlT3ZlcmxheVBsdWdpbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhZ2VPdmVybGF5UGx1Z2luLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyRDRDRjhCQzFEODM2MENDMDAwMUNFOEQgLyogV0tUaHVtYm5haWxW
aWV3Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tUaHVtYm5h
aWxWaWV3Lm1tOyBwYXRoID0gV2ViS2l0L1dLVGh1bWJuYWlsVmlldy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkQ1MUEwQzUxQzhCRjAwNDAwNzY1QzQ1IC8qIERPTUhUTUxWaWRl
b0VsZW1lbnRXcmFwcGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gRE9NSFRNTFZpZGVvRWxlbWVudFdyYXBwZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0yNTg2LDYgKzI1ODgsNyBAQAogCQkJCTUyRDVENkJEMjFCOUYxQjIwMDQ2QUJBNiAv
KiBSZW5kZXJpbmdQcm9ncmVzcy5tbSAqLywKIAkJCQk1MkQ1RDZCRTIxQjlGMUIyMDA0NkFCQTYg
LyogUmVuZGVyaW5nUHJvZ3Jlc3NQbHVnSW4ubW0gKi8sCiAJCQkJNTJENUQ2QkYyMUI5RjFCMjAw
NDZBQkE2IC8qIFJlbmRlcmluZ1Byb2dyZXNzUHJvdG9jb2wuaCAqLywKKwkJCQkyRDJCRUIyQzIy
MzI0RTVGMDA1NTQ0Q0EgLyogUmVxdWVzdFRleHRJbnB1dENvbnRleHQubW0gKi8sCiAJCQkJQ0Q5
RTI5MkIxQzkwQTcxRjAwMEJCODAwIC8qIFJlcXVpcmVzVXNlckFjdGlvbkZvclBsYXliYWNrLm1t
ICovLAogCQkJCTUxQzhFMUE0MUYyNkFDNTQwMEJGNzMxQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLm1tICovLAogCQkJCTVDQ0IxMEUwMjEzNDU3OUQwMEFDNUFGMCAvKiBSZXNwb25zaXZlbmVz
c1RpbWVyLm1tICovLApAQCAtNDIxOSw2ICs0MjIyLDcgQEAKIAkJCQlBMTJEREJGQjFFODM2RjA3
MDBDRjZDQUUgLyogUmVuZGVyZWRJbWFnZVdpdGhPcHRpb25zLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTJENUQ2QzAyMUI5RjFCMzAwNDZBQkE2IC8qIFJlbmRlcmluZ1Byb2dyZXNzLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJRjQ2NEFGOTIyMEJCNjZFQTAwN0Y5QjE4IC8qIFJlbmRlcmluZ1Byb2dy
ZXNzVGVzdHMubW0gaW4gU291cmNlcyAqLywKKwkJCQkyRDJCRUIyRDIyMzI0RTVGMDA1NTQ0Q0Eg
LyogUmVxdWVzdFRleHRJbnB1dENvbnRleHQubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QzgzRTBD
NDFEMEE2NTQyMDBGRUJDRjMgLyogUmVxdWlyZXNVc2VyQWN0aW9uRm9yUGxheWJhY2subW0gaW4g
U291cmNlcyAqLywKIAkJCQk3Q0NFN0YwRTFBNDExQUU2MDA0NDdDNEMgLyogUmVzaXplUmV2ZXJz
ZVBhZ2luYXRlZFdlYlZpZXcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMEYxQTQxMUFF
NjAwNDQ3QzRDIC8qIFJlc2l6ZVdpbmRvd0FmdGVyQ3Jhc2guY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlcXVlc3RU
ZXh0SW5wdXRDb250ZXh0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9SZXF1ZXN0VGV4dElucHV0Q29udGV4dC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZGEzZGQ2N2U4YzAyZDc5
YTFmOWVlZjQxZWRmZWU0MDIxODdjZTFhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXF1ZXN0VGV4dElucHV0Q29udGV4dC5tbQpAQCAt
MCwwICsxLDIwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaW1wb3J0
ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdC5oIgorI2ltcG9ydCAiVGVzdE5h
dmlnYXRpb25EZWxlZ2F0ZS5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCA8
V2ViS2l0L1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJW
aWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgorI2ltcG9ydCA8V2ViS2l0
L19XS1RleHRJbnB1dENvbnRleHQuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2Rl
ZmluZSBFWFBFQ1RfUkVDVF9FUSh4RXhwZWN0ZWQsIHlFeHBlY3RlZCwgd2lkdGhFeHBlY3RlZCwg
aGVpZ2h0RXhwZWN0ZWQsIHJlY3QpIFwKKyAgICBFWFBFQ1RfRE9VQkxFX0VRKHhFeHBlY3RlZCwg
cmVjdC5vcmlnaW4ueCk7IFwKKyAgICBFWFBFQ1RfRE9VQkxFX0VRKHlFeHBlY3RlZCwgcmVjdC5v
cmlnaW4ueSk7IFwKKyAgICBFWFBFQ1RfRE9VQkxFX0VRKHdpZHRoRXhwZWN0ZWQsIHJlY3Quc2l6
ZS53aWR0aCk7IFwKKyAgICBFWFBFQ1RfRE9VQkxFX0VRKGhlaWdodEV4cGVjdGVkLCByZWN0LnNp
emUuaGVpZ2h0KTsKKworQGltcGxlbWVudGF0aW9uIFdLV2ViVmlldyAoU3luY2hyb25vdXNUZXh0
SW5wdXRDb250ZXh0KQorCistIChOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4gKilzeW5j
aHJvbm91c2x5UmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OihDR1JlY3QpcmVjdAorewor
ICAgIF9fYmxvY2sgYm9vbCBmaW5pc2hlZCA9IGZhbHNlOworICAgIF9fYmxvY2sgUmV0YWluUHRy
PE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPj4gcmVzdWx0OworICAgIFtzZWxmIF9yZXF1
ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6cmVjdCBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJy
YXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqY29udGV4dHMpIHsKKyAgICAgICAgcmVzdWx0ID0g
Y29udGV4dHM7CisgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmZpbmlzaGVkKTsKKyAgICByZXR1cm4gcmVzdWx0LmF1dG9yZWxl
YXNlKCk7Cit9CisKKy0gKEJPT0wpc3luY2hyb25vdXNseUZvY3VzVGV4dElucHV0Q29udGV4dDoo
X1dLVGV4dElucHV0Q29udGV4dCAqKWNvbnRleHQKK3sKKyAgICBfX2Jsb2NrIGJvb2wgZmluaXNo
ZWQgPSBmYWxzZTsKKyAgICBfX2Jsb2NrIGJvb2wgc3VjY2VzcyA9IGZhbHNlOworICAgIFtzZWxm
IF9mb2N1c1RleHRJbnB1dENvbnRleHQ6Y29udGV4dCBjb21wbGV0aW9uSGFuZGxlcjpeKEJPT0wg
aW5uZXJTdWNjZXNzKSB7CisgICAgICAgIHN1Y2Nlc3MgPSBpbm5lclN1Y2Nlc3M7CisgICAgICAg
IGZpbmlzaGVkID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmZpbmlzaGVkKTsKKyAgICByZXR1cm4gc3VjY2VzczsKK30KKworQGVuZAorCitzdGF0aWMgTlNT
dHJpbmcgKmFwcGx5U3R5bGUoTlNTdHJpbmcgKkhUTUxTdHJpbmcpCit7CisgICAgcmV0dXJuIFtA
IjxzdHlsZT5ib2R5IHsgbWFyZ2luOiAwOyB9IGlmcmFtZSB7IGJvcmRlcjogbm9uZTsgfTwvc3R5
bGU+IiBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpIVE1MU3RyaW5nXTsKK30KKworc3RhdGljIE5T
U3RyaW5nICphcHBseUlmcmFtZShOU1N0cmluZyAqSFRNTFN0cmluZykKK3sKKyAgICByZXR1cm4g
YXBwbHlTdHlsZShbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxpZnJhbWUgc3JjPVwiZGF0
YTp0ZXh0L2h0bWwsJUBcIiBzdHlsZT0ncG9zaXRpb246IGFic29sdXRlOyB0b3A6IDIwMHB4Oyc+
IiwgW2FwcGx5U3R5bGUoSFRNTFN0cmluZykgc3RyaW5nQnlBZGRpbmdQZXJjZW50RW5jb2RpbmdX
aXRoQWxsb3dlZENoYXJhY3RlcnM6W05TQ2hhcmFjdGVyU2V0IFVSTFBhdGhBbGxvd2VkQ2hhcmFj
dGVyU2V0XV1dKTsKK30KKworVEVTVChXZWJLaXQsIFJlcXVlc3RUZXh0SW5wdXRDb250ZXh0KQor
eworICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBXS1By
ZWZlcmVuY2VzU2V0VGhyZWFkZWRTY3JvbGxpbmdFbmFibGVkKChXS1ByZWZlcmVuY2VzUmVmKVtj
b25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSwgZmFsc2UpOworICAgIFJldGFpblB0cjxUZXN0V0tX
ZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0
aW9uLmdldCgpXSk7CisKKyAgICBOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4gKmNvbnRl
eHRzOworCisgICAgLy8gQmFzaWMgaW5wdXRzLgorCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNs
eUxvYWRIVE1MU3RyaW5nOmFwcGx5U3R5bGUoQCI8aW5wdXQgdHlwZT0ndGV4dCcgc3R5bGU9J3dp
ZHRoOiA1MHB4OyBoZWlnaHQ6IDUwcHg7Jz4iKV07CisgICAgY29udGV4dHMgPSBbd2ViVmlldyBz
eW5jaHJvbm91c2x5UmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0Olt3ZWJWaWV3IGZyYW1l
XV07CisgICAgRVhQRUNUX0VRKDFVTCwgY29udGV4dHMuY291bnQpOworICAgIEVYUEVDVF9SRUNU
X0VRKDAsIDAsIDUwLCA1MCwgY29udGV4dHNbMF0uYm91bmRpbmdSZWN0KTsKKworICAgIFt3ZWJW
aWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzphcHBseVN0eWxlKEAiPHRleHRhcmVhIHN0
eWxlPSd3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7Jz48L3RleHRhcmVhPiIpXTsKKyAgICBj
b250ZXh0cyA9IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlSZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJ
blJlY3Q6W3dlYlZpZXcgZnJhbWVdXTsKKyAgICBFWFBFQ1RfRVEoMVVMLCBjb250ZXh0cy5jb3Vu
dCk7CisgICAgRVhQRUNUX1JFQ1RfRVEoMCwgMCwgMTAwLCAxMDAsIGNvbnRleHRzWzBdLmJvdW5k
aW5nUmVjdCk7CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6YXBw
bHlTdHlsZShAIjxkaXYgY29udGVudGVkaXRhYmxlIHN0eWxlPSd3aWR0aDogMTAwcHg7IGhlaWdo
dDogMTAwcHg7Jz48L2Rpdj4iKV07CisgICAgY29udGV4dHMgPSBbd2ViVmlldyBzeW5jaHJvbm91
c2x5UmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0Olt3ZWJWaWV3IGZyYW1lXV07CisgICAg
RVhQRUNUX0VRKDFVTCwgY29udGV4dHMuY291bnQpOworICAgIEVYUEVDVF9SRUNUX0VRKDAsIDAs
IDEwMCwgMTAwLCBjb250ZXh0c1swXS5ib3VuZGluZ1JlY3QpOworCisgICAgLy8gQmFzaWMgaW5w
dXRzIGluc2lkZSBzdWJmcmFtZS4KKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRN
TFN0cmluZzphcHBseUlmcmFtZShAIjxpbnB1dCB0eXBlPSd0ZXh0JyBzdHlsZT0nd2lkdGg6IDUw
cHg7IGhlaWdodDogNTBweDsnPiIpXTsKKyAgICBjb250ZXh0cyA9IFt3ZWJWaWV3IHN5bmNocm9u
b3VzbHlSZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6W3dlYlZpZXcgZnJhbWVdXTsKKyAg
ICBFWFBFQ1RfRVEoMVVMLCBjb250ZXh0cy5jb3VudCk7CisgICAgRVhQRUNUX1JFQ1RfRVEoMCwg
MjAwLCA1MCwgNTAsIGNvbnRleHRzWzBdLmJvdW5kaW5nUmVjdCk7CisKKyAgICBbd2ViVmlldyBz
eW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6YXBwbHlJZnJhbWUoQCI8dGV4dGFyZWEgc3R5bGU9
J3dpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsnPjwvdGV4dGFyZWE+IildOworICAgIGNvbnRl
eHRzID0gW3dlYlZpZXcgc3luY2hyb25vdXNseVJlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVj
dDpbd2ViVmlldyBmcmFtZV1dOworICAgIEVYUEVDVF9FUSgxVUwsIGNvbnRleHRzLmNvdW50KTsK
KyAgICBFWFBFQ1RfUkVDVF9FUSgwLCAyMDAsIDEwMCwgMTAwLCBjb250ZXh0c1swXS5ib3VuZGlu
Z1JlY3QpOworCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOmFwcGx5
SWZyYW1lKEAiPGRpdiBjb250ZW50ZWRpdGFibGUgc3R5bGU9J3dpZHRoOiAxMDBweDsgaGVpZ2h0
OiAxMDBweDsnPjwvZGl2PiIpXTsKKyAgICBjb250ZXh0cyA9IFt3ZWJWaWV3IHN5bmNocm9ub3Vz
bHlSZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6W3dlYlZpZXcgZnJhbWVdXTsKKyAgICBF
WFBFQ1RfRVEoMVVMLCBjb250ZXh0cy5jb3VudCk7CisgICAgRVhQRUNUX1JFQ1RfRVEoMCwgMjAw
LCAxMDAsIDEwMCwgY29udGV4dHNbMF0uYm91bmRpbmdSZWN0KTsKKworICAgIC8vIFJlYWQgb25s
eSBpbnB1dHM7IHNob3VsZCBub3QgYmUgaW5jbHVkZWQuCisKKyAgICBbd2ViVmlldyBzeW5jaHJv
bm91c2x5TG9hZEhUTUxTdHJpbmc6YXBwbHlTdHlsZShAIjxpbnB1dCB0eXBlPSd0ZXh0JyBzdHls
ZT0nd2lkdGg6IDUwcHg7IGhlaWdodDogNTBweDsnIHJlYWRvbmx5PiIpXTsKKyAgICBjb250ZXh0
cyA9IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlSZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6
W3dlYlZpZXcgZnJhbWVdXTsKKyAgICBFWFBFQ1RfRVEoMFVMLCBjb250ZXh0cy5jb3VudCk7CisK
KyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6YXBwbHlTdHlsZShAIjx0
ZXh0YXJlYSBzdHlsZT0nd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OycgcmVhZG9ubHk+Iild
OworICAgIGNvbnRleHRzID0gW3dlYlZpZXcgc3luY2hyb25vdXNseVJlcXVlc3RUZXh0SW5wdXRD
b250ZXh0c0luUmVjdDpbd2ViVmlldyBmcmFtZV1dOworICAgIEVYUEVDVF9FUSgwVUwsIGNvbnRl
eHRzLmNvdW50KTsKKworICAgIC8vIElucHV0cyBvdXRzaWRlIHRoZSByZXF1ZXN0ZWQgcmVjdDsg
c2hvdWxkIG5vdCBiZSBpbmNsdWRlZC4KKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2Fk
SFRNTFN0cmluZzphcHBseVN0eWxlKEAiPGlucHV0IHR5cGU9J3RleHQnIHN0eWxlPSd3aWR0aDog
NTBweDsgaGVpZ2h0OiA1MHB4Oyc+IildOworICAgIGNvbnRleHRzID0gW3dlYlZpZXcgc3luY2hy
b25vdXNseVJlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDpDR1JlY3RNYWtlKDEwMCwgMTAw
LCAxMDAsIDEwMCldOworICAgIEVYUEVDVF9FUSgwVUwsIGNvbnRleHRzLmNvdW50KTsKKworICAg
IC8vIElucHV0cyBzY3JvbGxlZCBvdXRzaWRlIHRoZSByZXF1ZXN0ZWQgcmVjdDsgc2hvdWxkIG5v
dCBiZSBpbmNsdWRlZC4KKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmlu
ZzphcHBseVN0eWxlKEAiPGlucHV0IHR5cGU9J3RleHQnIHN0eWxlPSd3aWR0aDogNTBweDsgaGVp
Z2h0OiA1MHB4Oyc+PGJyPjxkaXYgc3R5bGU9J3dpZHRoOiAxMDBweDsgaGVpZ2h0OiA1MDAwcHg7
Jz48L2Rpdj4iKV07CisgICAgW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
IndpbmRvdy5zY3JvbGxUbygwLCA1MDAwKTsiXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFBy
ZXNlbnRhdGlvblVwZGF0ZV07CisgICAgY29udGV4dHMgPSBbd2ViVmlldyBzeW5jaHJvbm91c2x5
UmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0Olt3ZWJWaWV3IGZyYW1lXV07CisgICAgRVhQ
RUNUX0VRKDBVTCwgY29udGV4dHMuY291bnQpOworCisgICAgLy8gSW5wdXRzIHNjcm9sbGVkIGlu
dG8gdGhlIHJlcXVlc3RlZCByZWN0LgorCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRI
VE1MU3RyaW5nOmFwcGx5U3R5bGUoQCI8aW5wdXQgdHlwZT0ndGV4dCcgc3R5bGU9J3dpZHRoOiA1
MHB4OyBoZWlnaHQ6IDUwcHg7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiA1MDAwcHg7Jz48YnI+
PGRpdiBzdHlsZT0nd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMDAwcHg7Jz48L2Rpdj4iKV07Cisg
ICAgW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIndpbmRvdy5zY3JvbGxU
bygwLCA1MDAwKTsiXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0
ZV07CisgICAgY29udGV4dHMgPSBbd2ViVmlldyBzeW5jaHJvbm91c2x5UmVxdWVzdFRleHRJbnB1
dENvbnRleHRzSW5SZWN0Olt3ZWJWaWV3IGZyYW1lXV07CisgICAgRVhQRUNUX0VRKDFVTCwgY29u
dGV4dHMuY291bnQpOworICAgIEVYUEVDVF9SRUNUX0VRKDAsIDAsIDUwLCA1MCwgY29udGV4dHNb
MF0uYm91bmRpbmdSZWN0KTsKKworICAgIC8vIE11bHRpcGxlIGlucHV0cy4KKworICAgIFt3ZWJW
aWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzphcHBseVN0eWxlKEAiPGlucHV0IHR5cGU9
J3RleHQnIHN0eWxlPSd3aWR0aDogNTBweDsgaGVpZ2h0OiA1MHB4Oyc+PGJyLz48aW5wdXQgdHlw
ZT0ndGV4dCcgc3R5bGU9J3dpZHRoOiA1MHB4OyBoZWlnaHQ6IDUwcHg7Jz48YnIvPjxpbnB1dCB0
eXBlPSd0ZXh0JyBzdHlsZT0nd2lkdGg6IDUwcHg7IGhlaWdodDogNTBweDsnPiIpXTsKKyAgICBj
b250ZXh0cyA9IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlSZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJ
blJlY3Q6W3dlYlZpZXcgZnJhbWVdXTsKKyAgICBFWFBFQ1RfRVEoM1VMLCBjb250ZXh0cy5jb3Vu
dCk7CisgICAgRVhQRUNUX1JFQ1RfRVEoMCwgMCwgNTAsIDUwLCBjb250ZXh0c1swXS5ib3VuZGlu
Z1JlY3QpOworICAgIEVYUEVDVF9SRUNUX0VRKDAsIDUwLCA1MCwgNTAsIGNvbnRleHRzWzFdLmJv
dW5kaW5nUmVjdCk7CisgICAgRVhQRUNUX1JFQ1RfRVEoMCwgMTAwLCA1MCwgNTAsIGNvbnRleHRz
WzJdLmJvdW5kaW5nUmVjdCk7CisKKyAgICAvLyBOZXN0ZWQgPGlucHV0Pi1pbnNpZGUtY29udGVu
dGVkaXRhYmxlLiBPbmx5IHRoZSBjb250ZW50ZWRpdGFibGUgaXMgY29uc2lkZXJlZC4KKworICAg
IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzphcHBseVN0eWxlKEAiPGRpdiBj
b250ZW50ZWRpdGFibGUgc3R5bGU9J3dpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsnPjxpbnB1
dCB0eXBlPSd0ZXh0JyBzdHlsZT0nd2lkdGg6IDUwcHg7IGhlaWdodDogNTBweDsnPjwvZGl2PiIp
XTsKKyAgICBjb250ZXh0cyA9IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlSZXF1ZXN0VGV4dElucHV0
Q29udGV4dHNJblJlY3Q6W3dlYlZpZXcgZnJhbWVdXTsKKyAgICBFWFBFQ1RfRVEoMVVMLCBjb250
ZXh0cy5jb3VudCk7CisgICAgRVhQRUNUX1JFQ1RfRVEoMCwgMCwgMTAwLCAxMDAsIGNvbnRleHRz
WzBdLmJvdW5kaW5nUmVjdCk7Cit9CisKK1RFU1QoV2ViS2l0LCBGb2N1c1RleHRJbnB1dENvbnRl
eHQpCit7CisgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAg
IFdLUHJlZmVyZW5jZXNTZXRUaHJlYWRlZFNjcm9sbGluZ0VuYWJsZWQoKFdLUHJlZmVyZW5jZXNS
ZWYpW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdLCBmYWxzZSk7CisgICAgUmV0YWluUHRyPFRl
c3RXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKKworICAgIE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAq
Y29udGV4dHM7CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6YXBw
bHlTdHlsZShAIjxpbnB1dCBpZD0ndGVzdCcgdHlwZT0ndGV4dCcgc3R5bGU9J3dpZHRoOiA1MHB4
OyBoZWlnaHQ6IDUwcHg7Jz4iKV07CisgICAgY29udGV4dHMgPSBbd2ViVmlldyBzeW5jaHJvbm91
c2x5UmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0Olt3ZWJWaWV3IGZyYW1lXV07CisgICAg
RVhQRUNUX0VRKDFVTCwgY29udGV4dHMuY291bnQpOworICAgIFJldGFpblB0cjxfV0tUZXh0SW5w
dXRDb250ZXh0PiBvcmlnaW5hbElucHV0ID0gY29udGV4dHNbMF07CisgICAgRVhQRUNUX1RSVUUo
W3dlYlZpZXcgc3luY2hyb25vdXNseUZvY3VzVGV4dElucHV0Q29udGV4dDpvcmlnaW5hbElucHV0
LmdldCgpXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJ0ZXN0IiwgW3dlYlZpZXcgb2JqZWN0QnlF
dmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuaWQiXSk7CisKKyAg
ICAvLyBUaGUgX1dLVGV4dElucHV0Q29udGV4dCBzaG91bGQgc3RpbGwgd29yayBldmVuIGFmdGVy
IGFub3RoZXIgcmVxdWVzdC4KKyAgICBjb250ZXh0cyA9IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlS
ZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6W3dlYlZpZXcgZnJhbWVdXTsKKyAgICBFWFBF
Q1RfVFJVRShbY29udGV4dHNbMF0gaXNFcXVhbDpvcmlnaW5hbElucHV0LmdldCgpXSk7CisgICAg
RVhQRUNUX1RSVUUoW3dlYlZpZXcgc3luY2hyb25vdXNseUZvY3VzVGV4dElucHV0Q29udGV4dDpv
cmlnaW5hbElucHV0LmdldCgpXSk7CisKKyAgICAvLyBSZXBsYWNlIHRoZSA8aW5wdXQ+IHdpdGgg
YSA8dGV4dGFyZWE+IHdpdGggc2NyaXB0OyB0aGUgPGlucHV0PiBzaG91bGQgbm8gbG9uZ2VyIGJl
IGZvY3VzYWJsZS4KKyAgICBbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
ZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSAnPHRleHRhcmVhIGlkPVwiYXJlYVwiPic7Il07Cisg
ICAgY29udGV4dHMgPSBbd2ViVmlldyBzeW5jaHJvbm91c2x5UmVxdWVzdFRleHRJbnB1dENvbnRl
eHRzSW5SZWN0Olt3ZWJWaWV3IGZyYW1lXV07CisgICAgRVhQRUNUX0VRKDFVTCwgY29udGV4dHMu
Y291bnQpOworICAgIFJldGFpblB0cjxfV0tUZXh0SW5wdXRDb250ZXh0PiB0ZXh0QXJlYSA9IGNv
bnRleHRzWzBdOworICAgIEVYUEVDVF9GQUxTRShbdGV4dEFyZWEgaXNFcXVhbDpvcmlnaW5hbElu
cHV0LmdldCgpXSk7CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlGb2N1
c1RleHRJbnB1dENvbnRleHQ6b3JpZ2luYWxJbnB1dC5nZXQoKV0pOworICAgIEVYUEVDVF9UUlVF
KFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlGb2N1c1RleHRJbnB1dENvbnRleHQ6dGV4dEFyZWEuZ2V0
KCldKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImFyZWEiLCBbd2ViVmlldyBvYmplY3RCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5pZCJdKTsKKworICAgIC8v
IERlc3Ryb3kgdGhlIDx0ZXh0YXJlYT4gYnkgbmF2aWdhdGluZyBhd2F5OyB3ZSBjYW4gbm8gbG9u
Z2VyIGZvY3VzIGl0LgorICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpA
IiJdOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBzeW5jaHJvbm91c2x5Rm9jdXNUZXh0SW5w
dXRDb250ZXh0OnRleHRBcmVhLmdldCgpXSk7Cit9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>