<?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>78079</bug_id>
          
          <creation_ts>2012-02-07 22:03:10 -0800</creation_ts>
          <short_desc>[WebSocket] Add WebSocket extension support</short_desc>
          <delta_ts>2012-02-09 22:44:53 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>77522</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenichi Ishibashi">bashi</reporter>
          <assigned_to name="Kenichi Ishibashi">bashi</assigned_to>
          <cc>ap</cc>
    
    <cc>dglazkov</cc>
    
    <cc>rakuco</cc>
    
    <cc>tkent</cc>
    
    <cc>tyoshino</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>551787</commentid>
    <comment_count>0</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-07 22:03:10 -0800</bug_when>
    <thetext>Add WebSocket extension support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551812</commentid>
    <comment_count>1</comment_count>
      <attachid>126007</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-07 22:44:00 -0800</bug_when>
    <thetext>Created attachment 126007
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551816</commentid>
    <comment_count>2</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-07 22:49:01 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=126007) [details]
&gt; Patch

It&apos;s difficult to write layout tests because there is no behavior change so far. I added a chromium&apos;s unit test for server response parsing. It&apos;s port specific, but it would be better than not writing tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551824</commentid>
    <comment_count>3</comment_count>
      <attachid>126007</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-02-07 22:59:55 -0800</bug_when>
    <thetext>Comment on attachment 126007
Patch

Attachment 126007 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11460275</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551825</commentid>
    <comment_count>4</comment_count>
      <attachid>126012</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-07 23:07:50 -0800</bug_when>
    <thetext>Created attachment 126012
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551837</commentid>
    <comment_count>5</comment_count>
      <attachid>126007</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2012-02-07 23:35:06 -0800</bug_when>
    <thetext>Comment on attachment 126007
Patch

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

[My comments are only informational as I&apos;m not a WebKit reviewer yet.]

&gt; Source/WebCore/websockets/WebSocketHandshake.cpp:707
&gt; +        if (!m_extensions.processHeaderValue(serverWebSocketExtensions)) {

optional: If you could provide detailed reason of failure, the script authors will be able to diagnose their issues better.

&gt; Source/WebCore/websockets/WebSocketHandshakeResponse.cpp:91
&gt; +    // they are connected with commna.

typo: commna

&gt; Source/WebCore/websockets/WebSocketHandshakeResponse.cpp:96
&gt; +    HTTPHeaderMap::iterator iterator = m_headerFields.find(name);
&gt; +    if (iterator != m_headerFields.end() &amp;&amp; equalIgnoringCase(iterator-&gt;first, &quot;sec-websocket-extensions&quot;))
&gt; +        m_headerFields.set(name, iterator-&gt;second + &quot;,&quot; + value);
&gt; +    else
&gt; +        m_headerFields.add(name, value);

It may be a bad idea to simply concatenate all header values with commas. Consider the following (broken) case:

Sec-WebSocket-Extensions: foo; param=&quot;bar
Sec-WebSocket-Extensions: &quot;

We want to signal an error when we receive headers like this, instead of treating these two lines as a valid extension line &apos;foo; param=&quot;bar,&quot;&apos;.

&gt; Source/WebKit/chromium/tests/WebSocketExtensionsTest.cpp:1
&gt; +/*

Maybe you could make use of TestWebKitAPI to write unit tests like this. I&apos;m not sure which (TestWebKitAPI or Chromium tests) is better for this purpose, though.

&gt; Source/WebKit/chromium/tests/WebSocketExtensionsTest.cpp:133
&gt; +        HashMap&lt;String, String&gt;&amp; expectedParameters = expected[i].parameters;
&gt; +        HashMap&lt;String, String&gt;&amp; parsedParameters = m_parsedParameters[i];

const reference should be better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551934</commentid>
    <comment_count>6</comment_count>
      <attachid>126036</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-08 02:32:15 -0800</bug_when>
    <thetext>Created attachment 126036
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551935</commentid>
    <comment_count>7</comment_count>
      <attachid>126007</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-08 02:34:18 -0800</bug_when>
    <thetext>Comment on attachment 126007
Patch

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

Thank you for review!

&gt;&gt; Source/WebCore/websockets/WebSocketHandshake.cpp:707
&gt;&gt; +        if (!m_extensions.processHeaderValue(serverWebSocketExtensions)) {
&gt; 
&gt; optional: If you could provide detailed reason of failure, the script authors will be able to diagnose their issues better.

Added WebSocketExtensions::failureReason(). It will be called if WebSocketExtensions::processHeaderValue() fails.

&gt;&gt; Source/WebCore/websockets/WebSocketHandshakeResponse.cpp:91
&gt;&gt; +    // they are connected with commna.
&gt; 
&gt; typo: commna

Removed. See below.

&gt;&gt; Source/WebCore/websockets/WebSocketHandshakeResponse.cpp:96
&gt;&gt; +        m_headerFields.add(name, value);
&gt; 
&gt; It may be a bad idea to simply concatenate all header values with commas. Consider the following (broken) case:
&gt; 
&gt; Sec-WebSocket-Extensions: foo; param=&quot;bar
&gt; Sec-WebSocket-Extensions: &quot;
&gt; 
&gt; We want to signal an error when we receive headers like this, instead of treating these two lines as a valid extension line &apos;foo; param=&quot;bar,&quot;&apos;.

Thank you for pointing this out. Removed this change and revised the patch to parse and check the header value every time the header appears. The revised patch also removes WebSocketHandshake::serverWebSocketExtensions(), which is no longer needed.

&gt;&gt; Source/WebKit/chromium/tests/WebSocketExtensionsTest.cpp:1
&gt;&gt; +/*
&gt; 
&gt; Maybe you could make use of TestWebKitAPI to write unit tests like this. I&apos;m not sure which (TestWebKitAPI or Chromium tests) is better for this purpose, though.

Didn&apos;t move the test into TestWebKitAPI for now. If TestWebKitAPI is better for this test, I&apos;ll move it.

&gt;&gt; Source/WebKit/chromium/tests/WebSocketExtensionsTest.cpp:133
&gt;&gt; +        HashMap&lt;String, String&gt;&amp; parsedParameters = m_parsedParameters[i];
&gt; 
&gt; const reference should be better.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551980</commentid>
    <comment_count>8</comment_count>
      <attachid>126036</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-08 03:42:53 -0800</bug_when>
    <thetext>Comment on attachment 126036
Patch

Attachment 126036 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11460366

New failing tests:
http/tests/websocket/tests/hybi/handshake-fail-by-extensions-header.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552620</commentid>
    <comment_count>9</comment_count>
      <attachid>126186</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-08 16:36:59 -0800</bug_when>
    <thetext>Created attachment 126186
added test rebaseline</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552722</commentid>
    <comment_count>10</comment_count>
      <attachid>126186</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-08 18:11:24 -0800</bug_when>
    <thetext>Comment on attachment 126186
added test rebaseline

Attachment 126186 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11463664

New failing tests:
platform/chromium/compositing/layout-width-change.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552808</commentid>
    <comment_count>11</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-08 20:35:29 -0800</bug_when>
    <thetext>Hi Alexey, Kent-san,

Could you please review the patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552857</commentid>
    <comment_count>12</comment_count>
      <attachid>126186</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-02-08 22:08:02 -0800</bug_when>
    <thetext>Comment on attachment 126186
added test rebaseline

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

&gt; Source/WebCore/websockets/WebSocketExtensions.cpp:58
&gt; +    void consumeSpaces();

The name should not start with &quot;consume&quot;, and should be skipSpaces() or something because other consumeFoo() functions return a bool value.

&gt; Source/WebCore/websockets/WebSocketExtensions.cpp:60
&gt; +    bool isControl(char);
&gt; +    bool isSeparator(char);

They should be static function members, or static functions which are not members of ExtensionParser.

&gt; Source/WebCore/websockets/WebSocketExtensions.cpp:77
&gt; +// These functions basically follow the grammer defined in Section 2.2 of RFC 2616.

&quot;These&quot; is unclear.

&gt; Source/WebCore/websockets/WebSocketExtensions.cpp:97
&gt; +    for (const char* current = separatorCharacters; *current; ++current) {
&gt; +        if (*current == character)
&gt; +            return true;
&gt; +    }
&gt; +    return false;

char* p = strchr(separatorCharacters, character);
return p &amp;&amp; *p;

is enough.

&gt; Source/WebCore/websockets/WebSocketExtensions.cpp:107
&gt; +        m_currentToken = String(start, m_current - start);

What&apos;s the encoding of the token?

&gt; Source/WebCore/websockets/WebSocketExtensions.cpp:151
&gt; +    m_extensions.append(adoptPtr(new Extension(processor)));
&gt; +}

We should have an assertion of validity of processor-&gt;handshakeString().

&gt; Source/WebCore/websockets/WebSocketExtensions.cpp:173
&gt; +    // If we don&apos;t send Sec-WebSocket-Extensions header, the server should not return the header

A comment should end with &apos;.&apos;

&gt; Source/WebCore/websockets/WebSocketExtensions.cpp:183
&gt; +        // Parse extension-token

ditto.

&gt; Source/WebCore/websockets/WebSocketExtensions.cpp:185
&gt; +            m_failureReason = &quot;Sec-WebSocket-Extensions header is invalid&quot;;

Should it end with &apos;.&apos;?

&gt; Source/WebCore/websockets/WebSocketExtensions.cpp:190
&gt; +        // Parse extension-parameters if exists

A comment should end with &apos;.&apos;

&gt; Source/WebCore/websockets/WebSocketExtensions.cpp:200
&gt; +                if (parser.consumeQuotedString() || parser.consumeToken())

I know this code works correctly now, but I needed to read the content of consumeQuotedString() carefully in order to confirm consumeQuotedString() never fail with unexpected ExtensionParser::m_current.  I recommend introduce ExtensionParser::consumeQuotedStringOrToken().

&gt; Source/WebCore/websockets/WebSocketExtensions.cpp:225
&gt; +        // There is no extension which can process the response

A comment should end with &apos;.&apos;

&gt; Source/WebCore/websockets/WebSocketExtensions.h:44
&gt; +class WebSocketExtensionProcessor {

The class should be moved to its own file. An implementation of WebSocketExtensionProcessor doesn&apos;t need to know about WebSocketExtensions class.

&gt; Source/WebCore/websockets/WebSocketExtensions.h:48
&gt; +    const String extensionToken() const { return m_extensionToken; }

Whey it returns &quot;const String&quot;?

&gt; Source/WebCore/websockets/WebSocketExtensions.h:71
&gt; +class WebSocketExtensions {

I don&apos;t like the name &quot;WebSocketExtensions&quot;.  It&apos;s not a simple container of extensions.
Maybe &quot;WebSocketExtensionController&quot;, &quot;WebSocketExtensionDispatcher&quot;, or something.

&gt; Source/WebKit/chromium/tests/WebSocketExtensionsTest.cpp:47
&gt; +    virtual const String handshakeString() { return extensionToken(); }
&gt; +    virtual bool processResponse(const HashMap&lt;String, String&gt;&amp;);

should append OVERRIDE.

&gt; Source/WebKit/chromium/tests/WebSocketExtensionsTest.cpp:50
&gt; +

The blank line is not needed.

&gt; Source/WebKit/chromium/tests/WebSocketExtensionsTest.cpp:66
&gt; +    WebSocketExtensionsTest()
&gt; +    {
&gt; +    }
&gt; +
&gt; +    void SetUp()
&gt; +    {
&gt; +    }
&gt; +
&gt; +    void TearDown()
&gt; +    {
&gt; +    }

You may write like
  WebSocketExtensionTest() { }

&gt; Source/WebKit/chromium/tests/WebSocketExtensionsTest.cpp:71
&gt; +

THe blank line is not needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552861</commentid>
    <comment_count>13</comment_count>
      <attachid>126186</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2012-02-08 22:14:41 -0800</bug_when>
    <thetext>Comment on attachment 126186
added test rebaseline

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

Looks almost fine to me.

&gt; Source/WebCore/websockets/WebSocketExtensions.cpp:224
&gt; +        for (index = 0; index &lt; m_extensions.size(); ++index) {
&gt; +            Extension* extension = m_extensions[index].get();
&gt; +            if (equalIgnoringCase(extensionToken, extension-&gt;m_processor-&gt;extensionToken()) &amp;&amp; !extension-&gt;m_responseHandled) {
&gt; +                extension-&gt;m_responseHandled = true;
&gt; +                if (extension-&gt;m_processor-&gt;processResponse(extensionParameters))
&gt; +                    break;
&gt; +                m_failureReason = extension-&gt;m_processor-&gt;failureReason();
&gt; +                return false;
&gt; +            }
&gt; +        }

I have two questions:

(1) What will happen if the server provides two extensions having the same extention identifier, such as &quot;foo;a=1, foo;b=2&quot;?
(2) Why do you compare the extention name case-insensitively? I could not find such a requirement in the spec (but I may have missed it).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552942</commentid>
    <comment_count>14</comment_count>
      <attachid>126255</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-09 01:06:19 -0800</bug_when>
    <thetext>Created attachment 126255
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552946</commentid>
    <comment_count>15</comment_count>
      <attachid>126186</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-09 01:08:53 -0800</bug_when>
    <thetext>Comment on attachment 126186
added test rebaseline

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

Hi Kent-san, Yuta-san,

Thank you for review! Addressed your comments.

&gt;&gt; Source/WebCore/websockets/WebSocketExtensions.cpp:58
&gt;&gt; +    void consumeSpaces();
&gt; 
&gt; The name should not start with &quot;consume&quot;, and should be skipSpaces() or something because other consumeFoo() functions return a bool value.

Renamed as skipSpaces().

&gt;&gt; Source/WebCore/websockets/WebSocketExtensions.cpp:60
&gt;&gt; +    bool isSeparator(char);
&gt; 
&gt; They should be static function members, or static functions which are not members of ExtensionParser.

These functions integrated into a static function isTokenCharacter().

&gt;&gt; Source/WebCore/websockets/WebSocketExtensions.cpp:77
&gt;&gt; +// These functions basically follow the grammer defined in Section 2.2 of RFC 2616.
&gt; 
&gt; &quot;These&quot; is unclear.

Moved the comment in the declaration of ExtensionParser class.

&gt;&gt; Source/WebCore/websockets/WebSocketExtensions.cpp:97
&gt;&gt; +    return false;
&gt; 
&gt; char* p = strchr(separatorCharacters, character);
&gt; return p &amp;&amp; *p;
&gt; 
&gt; is enough.

Done.

&gt;&gt; Source/WebCore/websockets/WebSocketExtensions.cpp:107
&gt;&gt; +        m_currentToken = String(start, m_current - start);
&gt; 
&gt; What&apos;s the encoding of the token?

The spec refers http://tools.ietf.org/html/rfc2616#section-4.2, and it says token consists of any US-ASCII characters (0 - 127) except for control characters (0 - 31 and 127). We can assume the encoding is ASCII.

&gt;&gt; Source/WebCore/websockets/WebSocketExtensions.cpp:151
&gt;&gt; +}
&gt; 
&gt; We should have an assertion of validity of processor-&gt;handshakeString().

Done.

&gt;&gt; Source/WebCore/websockets/WebSocketExtensions.cpp:173
&gt;&gt; +    // If we don&apos;t send Sec-WebSocket-Extensions header, the server should not return the header
&gt; 
&gt; A comment should end with &apos;.&apos;

Done.

&gt;&gt; Source/WebCore/websockets/WebSocketExtensions.cpp:183
&gt;&gt; +        // Parse extension-token
&gt; 
&gt; ditto.

Done.

&gt;&gt; Source/WebCore/websockets/WebSocketExtensions.cpp:185
&gt;&gt; +            m_failureReason = &quot;Sec-WebSocket-Extensions header is invalid&quot;;
&gt; 
&gt; Should it end with &apos;.&apos;?

Other failure messages in WebSocketHandshake class don&apos;t end with &apos;.&apos; so I don&apos;t append &apos;.&apos; here. I think we should keep consistency.

&gt;&gt; Source/WebCore/websockets/WebSocketExtensions.cpp:190
&gt;&gt; +        // Parse extension-parameters if exists
&gt; 
&gt; A comment should end with &apos;.&apos;

Done.

&gt;&gt; Source/WebCore/websockets/WebSocketExtensions.cpp:200
&gt;&gt; +                if (parser.consumeQuotedString() || parser.consumeToken())
&gt; 
&gt; I know this code works correctly now, but I needed to read the content of consumeQuotedString() carefully in order to confirm consumeQuotedString() never fail with unexpected ExtensionParser::m_current.  I recommend introduce ExtensionParser::consumeQuotedStringOrToken().

Done.

&gt;&gt; Source/WebCore/websockets/WebSocketExtensions.cpp:224
&gt;&gt; +        }
&gt; 
&gt; I have two questions:
&gt; 
&gt; (1) What will happen if the server provides two extensions having the same extention identifier, such as &quot;foo;a=1, foo;b=2&quot;?
&gt; (2) Why do you compare the extention name case-insensitively? I could not find such a requirement in the spec (but I may have missed it).

(1) If my reading is correct, RFC6455 allows such case. I think we should accept such response if the extension allows such duplication. The current implementation doesn&apos;t allow the case so I changed the behavior.
(2) You are right. Changed to just compare the tokens.

&gt;&gt; Source/WebCore/websockets/WebSocketExtensions.cpp:225
&gt;&gt; +        // There is no extension which can process the response
&gt; 
&gt; A comment should end with &apos;.&apos;

Done.

&gt;&gt; Source/WebCore/websockets/WebSocketExtensions.h:44
&gt;&gt; +class WebSocketExtensionProcessor {
&gt; 
&gt; The class should be moved to its own file. An implementation of WebSocketExtensionProcessor doesn&apos;t need to know about WebSocketExtensions class.

Done.

&gt;&gt; Source/WebCore/websockets/WebSocketExtensions.h:48
&gt;&gt; +    const String extensionToken() const { return m_extensionToken; }
&gt; 
&gt; Whey it returns &quot;const String&quot;?

Removed const.

&gt;&gt; Source/WebCore/websockets/WebSocketExtensions.h:71
&gt;&gt; +class WebSocketExtensions {
&gt; 
&gt; I don&apos;t like the name &quot;WebSocketExtensions&quot;.  It&apos;s not a simple container of extensions.
&gt; Maybe &quot;WebSocketExtensionController&quot;, &quot;WebSocketExtensionDispatcher&quot;, or something.

Changed the name to WebKitExtensionDispatcher.

&gt;&gt; Source/WebKit/chromium/tests/WebSocketExtensionsTest.cpp:47
&gt;&gt; +    virtual bool processResponse(const HashMap&lt;String, String&gt;&amp;);
&gt; 
&gt; should append OVERRIDE.

Done.

&gt;&gt; Source/WebKit/chromium/tests/WebSocketExtensionsTest.cpp:50
&gt;&gt; +
&gt; 
&gt; The blank line is not needed.

Done.

&gt;&gt; Source/WebKit/chromium/tests/WebSocketExtensionsTest.cpp:66
&gt;&gt; +    }
&gt; 
&gt; You may write like
&gt;   WebSocketExtensionTest() { }

Done.

&gt;&gt; Source/WebKit/chromium/tests/WebSocketExtensionsTest.cpp:71
&gt;&gt; +
&gt; 
&gt; THe blank line is not needed.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552957</commentid>
    <comment_count>16</comment_count>
      <attachid>126255</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-02-09 01:30:12 -0800</bug_when>
    <thetext>Comment on attachment 126255
Patch

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

&gt; Source/WebCore/websockets/WebSocketExtensionDispatcher.cpp:60
&gt; +    bool consumeCharacter(char);
&gt; +private:

need a blank line before private:.

&gt; Source/WebCore/websockets/WebSocketExtensionDispatcher.cpp:81
&gt; +    // A token character is a CHAR (octets 0 - 127) but not CTL (octets 0 - 31 and 127)
&gt; +    return character &gt; 31 &amp;&amp; character &lt; 127;

This looks same as isASCIIPrintable() in wtf/ASCIIType.h.

&gt; Source/WebCore/websockets/WebSocketExtensionDispatcher.cpp:132
&gt; +bool ExtensionParser::consumeQuotedStringOrToken()
&gt; +{
&gt; +    return consumeQuotedString() || consumeToken();

I recommend adding a comment that consumeToken() works well because consumeQuotedString() doesn&apos;t update m_current or makes it same as m_end on failure.

&gt; Source/WebCore/websockets/WebSocketExtensionDispatcher.cpp:166
&gt; +    for (size_t i = 1; i &lt; numProcessors; ++i) {
&gt; +        builder.append(&quot;, &quot;);
&gt; +        builder.append(m_processors[i]-&gt;handshakeString());

What happens if handshakString() contains \n or \0?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552960</commentid>
    <comment_count>17</comment_count>
      <attachid>126255</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-02-09 01:34:29 -0800</bug_when>
    <thetext>Comment on attachment 126255
Patch

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

&gt; Source/WebCore/websockets/WebSocketExtensionDispatcher.cpp:121
&gt; +        builder.append(*m_current);
&gt; +        ++m_current;

What&apos;s the encoding of a quoted string?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552964</commentid>
    <comment_count>18</comment_count>
      <attachid>126186</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2012-02-09 01:43:08 -0800</bug_when>
    <thetext>Comment on attachment 126186
added test rebaseline

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

&gt;&gt;&gt; Source/WebCore/websockets/WebSocketExtensions.cpp:224
&gt;&gt;&gt; +        }
&gt;&gt; 
&gt;&gt; I have two questions:
&gt;&gt; 
&gt;&gt; (1) What will happen if the server provides two extensions having the same extention identifier, such as &quot;foo;a=1, foo;b=2&quot;?
&gt;&gt; (2) Why do you compare the extention name case-insensitively? I could not find such a requirement in the spec (but I may have missed it).
&gt; 
&gt; (1) If my reading is correct, RFC6455 allows such case. I think we should accept such response if the extension allows such duplication. The current implementation doesn&apos;t allow the case so I changed the behavior.
&gt; (2) You are right. Changed to just compare the tokens.

For (1), how do we treat the case above, &quot;foo;a=1;b=2&quot;, &quot;foo;a=1&quot; or &quot;foo;b=2&quot;? How about cases like &quot;bar;x=3, bar;x=4&quot;?

This seems like a blackhole that the spec has missed describing, but anyway we need to determine what is the expected behavior for such cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552983</commentid>
    <comment_count>19</comment_count>
      <attachid>126261</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-09 02:33:23 -0800</bug_when>
    <thetext>Created attachment 126261
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552984</commentid>
    <comment_count>20</comment_count>
      <attachid>126255</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-09 02:35:06 -0800</bug_when>
    <thetext>Comment on attachment 126255
Patch

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

Hi kent-san,

Thanks for review.

&gt;&gt; Source/WebCore/websockets/WebSocketExtensionDispatcher.cpp:60
&gt;&gt; +private:
&gt; 
&gt; need a blank line before private:.

Done.

&gt;&gt; Source/WebCore/websockets/WebSocketExtensionDispatcher.cpp:81
&gt;&gt; +    return character &gt; 31 &amp;&amp; character &lt; 127;
&gt; 
&gt; This looks same as isASCIIPrintable() in wtf/ASCIIType.h.

Removed the function and used isASCIIPrintable(). Thanks!

&gt;&gt; Source/WebCore/websockets/WebSocketExtensionDispatcher.cpp:121
&gt;&gt; +        ++m_current;
&gt; 
&gt; What&apos;s the encoding of a quoted string?

According to http://tools.ietf.org/html/rfc2616#section-2.2, quoted strings MAY contain ISO-8859-1 characters. In general it can contain any octets except for non-printable characters. I changed to use String::fromUTF8() because WebSocketHandshake class uses it to parse header fields.

&gt;&gt; Source/WebCore/websockets/WebSocketExtensionDispatcher.cpp:132
&gt;&gt; +    return consumeQuotedString() || consumeToken();
&gt; 
&gt; I recommend adding a comment that consumeToken() works well because consumeQuotedString() doesn&apos;t update m_current or makes it same as m_end on failure.

Done.

&gt;&gt; Source/WebCore/websockets/WebSocketExtensionDispatcher.cpp:166
&gt;&gt; +        builder.append(m_processors[i]-&gt;handshakeString());
&gt; 
&gt; What happens if handshakString() contains \n or \0?

Added assertions to check handshakeString() doesn&apos;t contain these characters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552985</commentid>
    <comment_count>21</comment_count>
      <attachid>126261</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-02-09 02:37:47 -0800</bug_when>
    <thetext>Comment on attachment 126261
Patch

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

&gt; Source/WebCore/websockets/WebSocketExtensionDispatcher.cpp:162
&gt; +    ASSERT(!headerValue.contains(&apos;\n&apos;));
&gt; +    ASSERT(!headerValue.contains(static_cast&lt;UChar&gt;(&apos;\0&apos;)));

These assertions should be moved to addProcessor().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552986</commentid>
    <comment_count>22</comment_count>
      <attachid>126186</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-09 02:39:39 -0800</bug_when>
    <thetext>Comment on attachment 126186
added test rebaseline

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

Hi Yuta-san,

&gt;&gt;&gt;&gt; Source/WebCore/websockets/WebSocketExtensions.cpp:224
&gt;&gt;&gt;&gt; +        }
&gt;&gt;&gt; 
&gt;&gt;&gt; I have two questions:
&gt;&gt;&gt; 
&gt;&gt;&gt; (1) What will happen if the server provides two extensions having the same extention identifier, such as &quot;foo;a=1, foo;b=2&quot;?
&gt;&gt;&gt; (2) Why do you compare the extention name case-insensitively? I could not find such a requirement in the spec (but I may have missed it).
&gt;&gt; 
&gt;&gt; (1) If my reading is correct, RFC6455 allows such case. I think we should accept such response if the extension allows such duplication. The current implementation doesn&apos;t allow the case so I changed the behavior.
&gt;&gt; (2) You are right. Changed to just compare the tokens.
&gt; 
&gt; For (1), how do we treat the case above, &quot;foo;a=1;b=2&quot;, &quot;foo;a=1&quot; or &quot;foo;b=2&quot;? How about cases like &quot;bar;x=3, bar;x=4&quot;?
&gt; 
&gt; This seems like a blackhole that the spec has missed describing, but anyway we need to determine what is the expected behavior for such cases.

I agree it&apos;s somewhat unclear.

For now, I think extensions should determine how to treat these cases. Extensions may reject duplicate response or may override parameters, depending on what the corresponding spec requires. For example, &quot;deflate-frame&quot; extension will reject duplicate response because it uses a reserved frame flag and duplicate response doesn&apos;t make sense. The current implementation just delegates validation to extensions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552994</commentid>
    <comment_count>23</comment_count>
      <attachid>126264</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-09 02:45:38 -0800</bug_when>
    <thetext>Created attachment 126264
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552995</commentid>
    <comment_count>24</comment_count>
      <attachid>126261</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-09 02:46:37 -0800</bug_when>
    <thetext>Comment on attachment 126261
Patch

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

&gt;&gt; Source/WebCore/websockets/WebSocketExtensionDispatcher.cpp:162
&gt;&gt; +    ASSERT(!headerValue.contains(static_cast&lt;UChar&gt;(&apos;\0&apos;)));
&gt; 
&gt; These assertions should be moved to addProcessor().

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552996</commentid>
    <comment_count>25</comment_count>
      <attachid>126264</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-02-09 02:51:36 -0800</bug_when>
    <thetext>Comment on attachment 126264
Patch

Ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552997</commentid>
    <comment_count>26</comment_count>
      <attachid>126264</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-09 02:52:42 -0800</bug_when>
    <thetext>Comment on attachment 126264
Patch

Thank you!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552998</commentid>
    <comment_count>27</comment_count>
      <attachid>126186</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2012-02-09 02:53:31 -0800</bug_when>
    <thetext>Comment on attachment 126186
added test rebaseline

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

&gt;&gt;&gt;&gt;&gt; Source/WebCore/websockets/WebSocketExtensions.cpp:224
&gt;&gt;&gt;&gt;&gt; +        }
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; I have two questions:
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; (1) What will happen if the server provides two extensions having the same extention identifier, such as &quot;foo;a=1, foo;b=2&quot;?
&gt;&gt;&gt;&gt; (2) Why do you compare the extention name case-insensitively? I could not find such a requirement in the spec (but I may have missed it).
&gt;&gt;&gt; 
&gt;&gt;&gt; (1) If my reading is correct, RFC6455 allows such case. I think we should accept such response if the extension allows such duplication. The current implementation doesn&apos;t allow the case so I changed the behavior.
&gt;&gt;&gt; (2) You are right. Changed to just compare the tokens.
&gt;&gt; 
&gt;&gt; For (1), how do we treat the case above, &quot;foo;a=1;b=2&quot;, &quot;foo;a=1&quot; or &quot;foo;b=2&quot;? How about cases like &quot;bar;x=3, bar;x=4&quot;?
&gt;&gt; 
&gt;&gt; This seems like a blackhole that the spec has missed describing, but anyway we need to determine what is the expected behavior for such cases.
&gt; 
&gt; I agree it&apos;s somewhat unclear.
&gt; 
&gt; For now, I think extensions should determine how to treat these cases. Extensions may reject duplicate response or may override parameters, depending on what the corresponding spec requires. For example, &quot;deflate-frame&quot; extension will reject duplicate response because it uses a reserved frame flag and duplicate response doesn&apos;t make sense. The current implementation just delegates validation to extensions.

Hm I&apos;m okay with leaving the validation to each extension, but could you add comments describing this issue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553005</commentid>
    <comment_count>28</comment_count>
      <attachid>126186</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-09 03:09:10 -0800</bug_when>
    <thetext>Comment on attachment 126186
added test rebaseline

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

&gt;&gt;&gt;&gt;&gt;&gt; Source/WebCore/websockets/WebSocketExtensions.cpp:224
&gt;&gt;&gt;&gt;&gt;&gt; +        }
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; I have two questions:
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; (1) What will happen if the server provides two extensions having the same extention identifier, such as &quot;foo;a=1, foo;b=2&quot;?
&gt;&gt;&gt;&gt;&gt; (2) Why do you compare the extention name case-insensitively? I could not find such a requirement in the spec (but I may have missed it).
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; (1) If my reading is correct, RFC6455 allows such case. I think we should accept such response if the extension allows such duplication. The current implementation doesn&apos;t allow the case so I changed the behavior.
&gt;&gt;&gt;&gt; (2) You are right. Changed to just compare the tokens.
&gt;&gt;&gt; 
&gt;&gt;&gt; For (1), how do we treat the case above, &quot;foo;a=1;b=2&quot;, &quot;foo;a=1&quot; or &quot;foo;b=2&quot;? How about cases like &quot;bar;x=3, bar;x=4&quot;?
&gt;&gt;&gt; 
&gt;&gt;&gt; This seems like a blackhole that the spec has missed describing, but anyway we need to determine what is the expected behavior for such cases.
&gt;&gt; 
&gt;&gt; I agree it&apos;s somewhat unclear.
&gt;&gt; 
&gt;&gt; For now, I think extensions should determine how to treat these cases. Extensions may reject duplicate response or may override parameters, depending on what the corresponding spec requires. For example, &quot;deflate-frame&quot; extension will reject duplicate response because it uses a reserved frame flag and duplicate response doesn&apos;t make sense. The current implementation just delegates validation to extensions.
&gt; 
&gt; Hm I&apos;m okay with leaving the validation to each extension, but could you add comments describing this issue?

I&apos;ve added a comment on WebSocketExtensionProcessor::processResponse(). If the comment isn&apos;t enough, I&apos;ll add comments here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553009</commentid>
    <comment_count>29</comment_count>
      <attachid>126264</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-09 03:21:21 -0800</bug_when>
    <thetext>Comment on attachment 126264
Patch

Attachment 126264 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11487198

New failing tests:
platform/chromium/compositing/layout-width-change.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553041</commentid>
    <comment_count>30</comment_count>
      <attachid>126264</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-09 04:07:43 -0800</bug_when>
    <thetext>Comment on attachment 126264
Patch

Rebaselined the test. Trying to cq+ again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553093</commentid>
    <comment_count>31</comment_count>
      <attachid>126264</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-09 05:45:17 -0800</bug_when>
    <thetext>Comment on attachment 126264
Patch

Rejecting attachment 126264 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
git/webkit-commit-queue/Source/WebKit/chromium/ui --revision 121041 --non-interactive --force --accept theirs-conflict --ignore-externals&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
45&gt;At revision 121041.

________ running &apos;/usr/bin/python tools/clang/scripts/update.py --mac-only&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;

________ running &apos;/usr/bin/python gyp_webkit&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
Updating webkit projects from gyp files...

Full output: http://queues.webkit.org/results/11473219</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553574</commentid>
    <comment_count>32</comment_count>
      <attachid>126391</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-09 15:40:55 -0800</bug_when>
    <thetext>Created attachment 126391
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553853</commentid>
    <comment_count>33</comment_count>
      <attachid>126391</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-09 22:44:46 -0800</bug_when>
    <thetext>Comment on attachment 126391
Patch for landing

Clearing flags on attachment: 126391

Committed r107365: &lt;http://trac.webkit.org/changeset/107365&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553854</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-09 22:44:53 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126007</attachid>
            <date>2012-02-07 22:44:00 -0800</date>
            <delta_ts>2012-02-08 02:34:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78079-20120208154359.patch</filename>
            <type>text/plain</type>
            <size>34959</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3MDM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjVjMjQ0YTc2ZGYyMTU0
ZjVjZjU4NzU4YzQzNzUxY2U0NmNhMDIzYS4uNDIyZjQ2YzA4NGI4YTFmMDkxOTYzNTg4MjgyMjk3
NjFiMWQyZDc0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEyLTAyLTA3ICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgV2ViU29j
a2V0IGV4dGVuc2lvbiBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03ODA3OQorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBXZWJT
b2NrZXRFeHRlbnNpb25zIGNsYXNzLCB3aGljaCBjcmVhdGVzIGNsaWVudCdzCisgICAgICAgIFNl
Yy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIgZmllbGQgYW5kIHBhcnNlcyB0aGUgc2VydmVy
IHJlc3BvbnNlLgorICAgICAgICBUaGlzIHBhdGNoIGRvZXNuJ3QgYWRkIGFueSBhY3R1YWwgZXh0
ZW5zaW9uLCBzbyBubyBjaGFuZ2VzIGluIGJlaGF2aW9yLgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBleGNlcHQgZm9yIGNocm9t
aXVtIHBvcnQuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBBZGRlZCBXZWJTb2Nr
ZXRFeHRlbnNpb25zLihjcHB8aCkuCisgICAgICAgICogVGFyZ2V0LnByaTogRGl0dG8uCisgICAg
ICAgICogV2ViQ29yZS5neXBpOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvajogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOiBEaXR0by4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbnMu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRXh0ZW5zaW9uUGFyc2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvblBhcnNlcjo6RXh0ZW5zaW9uUGFyc2VyKToK
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvblBhcnNlcjo6Y3VycmVudFRva2VuKToKKyAgICAg
ICAgKFdlYkNvcmU6OkV4dGVuc2lvblBhcnNlcjo6ZmluaXNoZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uUGFyc2VyOjpwYXJzZWRTdWNjZXNzZnVsbHkpOgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uUGFyc2VyOjpjb25zdW1lU3BhY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvblBhcnNlcjo6aXNDb250cm9sKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvblBh
cnNlcjo6aXNTZXBhcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uUGFyc2VyOjpj
b25zdW1lVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uUGFyc2VyOjpjb25zdW1l
UXVvdGVkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvblBhcnNlcjo6Y29uc3Vt
ZUNoYXJhY3Rlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNz
b3I6OnByb2Nlc3NSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNp
b25zOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25zOjphZGRQ
cm9jZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9uczo6Zm9ybWF0
QXNIZWFkZXJWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25zOjpw
cm9jZXNzSGVhZGVyVmFsdWUpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5z
aW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViU29ja2V0RXh0
ZW5zaW9uUHJvY2Vzc29yKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvblBy
b2Nlc3Nvcjo6fldlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvcik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I6OmV4dGVuc2lvblRva2VuKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvcjo6V2ViU29ja2V0RXh0ZW5zaW9u
UHJvY2Vzc29yKToKKyAgICAgICAgKFdlYlNvY2tldEV4dGVuc2lvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0RXh0ZW5zaW9uczo6V2ViU29ja2V0RXh0ZW5zaW9ucyk6CisgICAgICAg
ICogd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0SGFuZHNoYWtlOjpjbGllbnRIYW5kc2hha2VNZXNzYWdlKTogQWRkcyBleHRlbnNp
b24gaGVhZGVyIHZhbHVlIGlmIGV4aXN0cy4KKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhh
bmRzaGFrZTo6Y2xpZW50SGFuZHNoYWtlUmVxdWVzdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpyZXNldCk6IFJlc2V0cyBXZWJTb2NrZXRFeHRlbnNpb25z
IG9iamVjdC4KKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZTo6YWRkRXh0ZW5z
aW9uUHJvY2Vzc29yKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldEhhbmRzaGFrZTo6Y2hlY2tSZXNwb25zZUhlYWRlcnMpOiBDYWxscyBXZWJT
b2NrZXRFeHRlbnNpb3NuOjpwcm9jZXNzSGVhZGVyVmFsdWUoKSB0byBjaGVjayB0aGUgcmVzcG9u
c2UuCisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaDoKKyAgICAgICAg
KiB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjphZGRIZWFkZXJGaWVsZCk6IE1vZGlm
aWVkIHRvIGpvaW4gdGhlIHZhbHVlIG9mIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBpZiB0aGUg
dmFsdWUgaXMgYWxyZWFkeSBleGlzdHMuCisKIDIwMTItMDItMDcgIEtlbnRhcm8gSGFyYSAgPGhh
cmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbmFtZSBbSGFzT3ZlcnJpZGluZ05hbWVH
ZXR0ZXJdIGF0dHJpYnV0ZSB0byBbQ3VzdG9tTmFtZWRHZXR0ZXJdIGF0dHJpYnV0ZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCBhNTNmZDFlZWJjM2E4YWFhOTBiMTIzYzI1ZGRiMGVmOWEz
MWFiMWY5Li44NmM2NjI4Yjc2NzdlYjAxOTgxMTU2NTgzMDhhZjM3MzgwMjI5NThkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTAyLTA3ICBLZW5pY2hp
IElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgV2ViU29ja2V0
IGV4dGVuc2lvbiBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03ODA3OQorCisgICAgICAgIEFkZCBzb21lIHRlc3RzIHdoaWNoIGNoZWNrIFdl
YlNvY2tldEV4dGVuc2lvbnM6OnByb2Nlc3NIZWFkZXJWYWx1ZSgpCisgICAgICAgIHBhcnNlcyB0
aGUgZ2l2ZW4gcmVzcG9uc2UgY29ycmVjdGx5LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lmd5cGk6CisgICAgICAgICogdGVzdHMvV2Vi
U29ja2V0RXh0ZW5zaW9uc1Rlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoTW9ja1dlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvcik6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yOjpNb2NrV2ViU29ja2V0RXh0ZW5zaW9u
UHJvY2Vzc29yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tXZWJTb2NrZXRFeHRlbnNpb25Qcm9j
ZXNzb3I6OmhhbmRzaGFrZVN0cmluZyk6CisgICAgICAgIChXZWJTb2NrZXRFeHRlbnNpb25zVGVz
dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25zVGVzdDo6V2ViU29ja2V0
RXh0ZW5zaW9uc1Rlc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9uc1Rl
c3Q6OlNldFVwKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvbnNUZXN0OjpU
ZWFyRG93bik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25zVGVzdDo6YWRk
TW9ja1Byb2Nlc3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25zVGVz
dDo6YXBwZW5kUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tXZWJTb2NrZXRFeHRlbnNp
b25Qcm9jZXNzb3I6OnByb2Nlc3NSZXNwb25zZUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6
OlRFU1RfRik6CisKIDIwMTItMDItMDcgIEdyZWdnIFRhdmFyZXMgIDxnbWFuQGdvb2dsZS5jb20+
CiAKICAgICAgICAgUGx1bWIgdGhyb3VnaCB3ZWJHTEVycm9yc1RvQ29uc29sZUVuYWJsZSBpbiBX
ZWJTZXR0aW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggZGZlNDkzMTFhYjZi
NDQ2Mzg5MjhlMTM3YWM4N2ExNWFkNzA3NDlhNS4uNjAxMzQ2MGYzNjQ2ZDNmNTNiMTdmYjc0MzRk
ZTE5ZWUzODY2MjkzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC00MzAzLDYg
KzQzMDMsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0Q2hhbm5lbC5oIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmggXAorCVNv
dXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9ucy5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9ucy5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggODEx
ZDI0OWQ0MTQxNGFiMjk4ZjQ3ZDA2YWZjNzA5Zjk4M2ExMTE3Ni4uZTUwNTYwNTYzNWQ4ZWI2Y2Ni
NjkyNmZhNDkxOTViMWZiMzRkNzY1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0zNjU1LDYgKzM2NTUsNyBA
QCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV0VCX1NPQ0tFVFM9MSkgewogICAgICAgICB3ZWJz
b2NrZXRzL1dlYlNvY2tldC5oIFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmggXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWxDbGllbnQuaCBcCisgICAg
ICAgIHdlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9ucy5oIFwKICAgICAgICAgd2Vic29ja2V0
cy9XZWJTb2NrZXRIYW5kc2hha2UuaCBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0SGFu
ZHNoYWtlUmVxdWVzdC5oIFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VS
ZXNwb25zZS5oIFwKQEAgLTM2NjMsNiArMzY2NCw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJM
RV9XRUJfU09DS0VUUz0xKSB7CiAgICAgU09VUkNFUyArPSBcCiAgICAgICAgIHdlYnNvY2tldHMv
V2ViU29ja2V0LmNwcCBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAg
XAorICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbnMuY3BwIFwKICAgICAgICAg
d2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwIFwKICAgICAgICAgd2Vic29ja2V0cy9X
ZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29j
a2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBmZjI0ODU1YjBh
ZWQ0YmVjYTRlM2ZlMWM1ZTQwNjJjNGRmOWVlZTVhLi5lOWNlN2MwZTEyNjk0NmJlZWU2YWY4Mzg2
M2RhOTgwYzc0NWZhZmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC00Nzg5LDYgKzQ3ODksOCBAQAog
ICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAnLAogICAgICAgICAg
ICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oJywKICAgICAgICAgICAgICd3ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWxDbGllbnQuaCcsCisgICAgICAgICAgICAnd2Vic29ja2V0cy9X
ZWJTb2NrZXRFeHRlbnNpb25zLmNwcCcsCisgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2Nr
ZXRFeHRlbnNpb25zLmgnLAogICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNo
YWtlLmNwcCcsCiAgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaCcs
CiAgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCcs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDBm
NGRjNDdjOWZiNTNhZDJiN2Q4MzI5N2NiZjc1MzFiMDg3MmIyMjQuLmVhMTBlMDgyNDkxMjMyODIx
Y2YyNDk2ZTY0MjY0YTI3YmQyYzM4MmQgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCkBAIC03Mjg5NCw2ICs3Mjg5NCwxNCBAQAogCQkJCT4KIAkJCTwv
RmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFdlYlNvY2tl
dEV4dGVuc2lvbnMuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFdlYlNvY2tldEV4dGVuc2lvbnMuaCIKKwkJCQk+CisJCQk8
L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cd2Vic29ja2V0c1xXZWJTb2Nr
ZXRIYW5kc2hha2UuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiZTMwYTVjYTk5MjVjNDZl
YmU2NGM1NjhmYjZkZDYxY2U4OTc1NDdkLi4yMTg3MTZjNTA3MGJiOWVjM2IxZTQ3MTkyZmIyMjgw
MDM3ZTJlNjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xMzY1LDYgKzEzNjUsOCBAQAogCQk0QTZFOUZDNzEzQzE3RDU3MDA0
NkE3RjggLyogRm9udEZlYXR1cmVTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTZFOUZDNTEzQzE3RDU3MDA0NkE3RjggLyogRm9udEZl
YXR1cmVTZXR0aW5ncy5jcHAgKi87IH07CiAJCTRBNkU5RkM4MTNDMTdENTcwMDQ2QTdGOCAvKiBG
b250RmVhdHVyZVNldHRpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0QTZFOUZDNjEzQzE3RDU3MDA0NkE3RjggLyogRm9udEZlYXR1cmVTZXR0aW5n
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRB
OEM5NkVCMEJFNjkwMzIwMDRFRUZGMCAvKiBGcmFtZVNlbGVjdGlvbk1hYy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBOEM5NkVBMEJFNjkwMzIwMDRF
RUZGMCAvKiBGcmFtZVNlbGVjdGlvbk1hYy5tbSAqLzsgfTsKKwkJNEE5NTdGMDYxNEUyNDEyQTAw
NDlEQkZCIC8qIFdlYlNvY2tldEV4dGVuc2lvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE5NTdGMDMxNEUyNDExMDAwNDlEQkZCIC8qIFdlYlNv
Y2tldEV4dGVuc2lvbnMuY3BwICovOyB9OworCQk0QTk1N0YwNzE0RTI0MTMwMDA0OURCRkIgLyog
V2ViU29ja2V0RXh0ZW5zaW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEE5NTdGMDQxNEUyNDExMDAwNDlEQkZCIC8qIFdlYlNvY2tldEV4dGVuc2lv
bnMuaCAqLzsgfTsKIAkJNEFCREZGMEIxNERCRTM4NTAwNEQxMTdEIC8qIEhUTUxTaGFkb3dFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRB
QkRGRjA3MTREQkUzMTIwMDREMTE3RCAvKiBIVE1MU2hhZG93RWxlbWVudC5jcHAgKi87IH07CiAJ
CTRBQkRGRjBDMTREQkUzODUwMDREMTE3RCAvKiBIVE1MU2hhZG93RWxlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEFCREZGMDgxNERCRTMxMjAw
NEQxMTdEIC8qIEhUTUxTaGFkb3dFbGVtZW50LmggKi87IH07CiAJCTRBQ0JDMEJFMTI3MTNDQkQw
MDk0RjlCMiAvKiBDbGFzc0xpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNEFDQkMwQkMxMjcxM0NCRDAwOTRGOUIyIC8qIENsYXNzTGlzdC5jcHAg
Ki87IH07CkBAIC04MjAyLDYgKzgyMDQsOCBAQAogCQk0QTZFOUZDNTEzQzE3RDU3MDA0NkE3Rjgg
LyogRm9udEZlYXR1cmVTZXR0aW5ncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBGb250RmVhdHVyZVNldHRpbmdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNEE2RTlGQzYxM0MxN0Q1NzAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlU2V0dGluZ3MuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGggPSBGb250RmVhdHVyZVNldHRpbmdzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBOEM5NkVBMEJFNjkwMzIwMDRFRUZGMCAvKiBG
cmFtZVNlbGVjdGlvbk1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5h
bWUgPSBGcmFtZVNlbGVjdGlvbk1hYy5tbTsgcGF0aCA9IG1hYy9GcmFtZVNlbGVjdGlvbk1hYy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEE5NTdGMDMxNEUyNDExMDAwNDlEQkZC
IC8qIFdlYlNvY2tldEV4dGVuc2lvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViU29ja2V0RXh0ZW5zaW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTRBOTU3RjA0MTRFMjQxMTAwMDQ5REJGQiAvKiBXZWJTb2NrZXRFeHRlbnNpb25zLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tldEV4dGVuc2lvbnMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEFCREZGMDcxNERCRTMxMjAwNEQxMTdEIC8q
IEhUTUxTaGFkb3dFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEhUTUxTaGFkb3dFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NEFCREZGMDgxNERCRTMxMjAwNEQxMTdEIC8qIEhUTUxTaGFkb3dFbGVtZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxTaGFkb3dFbGVtZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTRBQkRGRjA5MTREQkUzMTIwMDREMTE3RCAvKiBIVE1MU2hhZG93
RWxlbWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRNTFNoYWRvd0VsZW1lbnQuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ3NTYsNiArMTQ3NjAsOCBAQAogCQkJ
CTUxMEQ0QTQ3MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmNwcCAqLywKIAkJ
CQk1MTBENEE0ODEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5oICovLAogCQkJ
CTUxMEQ0QTQ5MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmggKi8s
CisJCQkJNEE5NTdGMDMxNEUyNDExMDAwNDlEQkZCIC8qIFdlYlNvY2tldEV4dGVuc2lvbnMuY3Bw
ICovLAorCQkJCTRBOTU3RjA0MTRFMjQxMTAwMDQ5REJGQiAvKiBXZWJTb2NrZXRFeHRlbnNpb25z
LmggKi8sCiAJCQkJNTFBQkFFNDIxMDQzQUI0QTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFr
ZS5jcHAgKi8sCiAJCQkJNTFBQkFFNDMxMDQzQUI0QTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRz
aGFrZS5oICovLAogCQkJCTc2MzdDNTQwMTEyRTdCNzQwMDNENkNEQyAvKiBXZWJTb2NrZXRIYW5k
c2hha2VSZXF1ZXN0LmNwcCAqLywKQEAgLTI0MTU4LDYgKzI0MTY0LDcgQEAKIAkJCQkxQUFBRERF
NDE0REM4QzhGMDBBRjY0QjMgLyogU2Nyb2xsaW5nVHJlZU5vZGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBQUFEREU5MTREQzhERjgwMEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlTm9kZU1hYy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJN0E1NDg1ODAxNEUwMkQ1MTAwNkFFMDVBIC8qIEluc3BlY3Rvckhp
c3RvcnkuaCBpbiBIZWFkZXJzICovLAorCQkJCTRBOTU3RjA3MTRFMjQxMzAwMDQ5REJGQiAvKiBX
ZWJTb2NrZXRFeHRlbnNpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI3MDk2LDYgKzI3MTAzLDcg
QEAKIAkJCQkxQUFBRERFODE0REM4REY4MDBBRjY0QjMgLyogU2Nyb2xsaW5nVHJlZU5vZGVNYWMu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk3QTU0ODU3RjE0RTAyRDUxMDA2QUUwNUEgLyogSW5zcGVj
dG9ySGlzdG9yeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREFBOEQwQTE0RDcxQjJFMDA2MUVB
NjAgLyogUGxhdGZvcm1DbG9ja0NNLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNEE5NTdGMDYxNEUy
NDEyQTAwNDlEQkZCIC8qIFdlYlNvY2tldEV4dGVuc2lvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbnMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25zLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mOTkyMGFmNzgzY2M1ODhlY2Y5NTFiMzVkNzRjYTE1MTQ0YTA1NWFjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNp
b25zLmNwcApAQCAtMCwwICsxLDIyNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFC
TEUoV0VCX1NPQ0tFVFMpCisKKyNpbmNsdWRlICJXZWJTb2NrZXRFeHRlbnNpb25zLmgiCisKKyNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBFeHRlbnNpb25QYXJzZXIgeworcHVibGljOgorICAgIEV4dGVuc2lv
blBhcnNlcihjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogZW5kKQorICAgICAgICA6IG1f
Y3VycmVudChzdGFydCkKKyAgICAgICAgLCBtX2VuZChlbmQpCisgICAgeworICAgIH0KKyAgICBi
b29sIGZpbmlzaGVkKCk7CisgICAgYm9vbCBwYXJzZWRTdWNjZXNzZnVsbHkoKTsKKyAgICBib29s
IGNvbnN1bWVUb2tlbigpOworICAgIGJvb2wgY29uc3VtZVF1b3RlZFN0cmluZygpOworICAgIGJv
b2wgY29uc3VtZUNoYXJhY3RlcihjaGFyKTsKKyAgICBjb25zdCBTdHJpbmcmIGN1cnJlbnRUb2tl
bigpIHsgcmV0dXJuIG1fY3VycmVudFRva2VuOyB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBjb25z
dW1lU3BhY2VzKCk7CisgICAgYm9vbCBpc0NvbnRyb2woY2hhcik7CisgICAgYm9vbCBpc1NlcGFy
YXRvcihjaGFyKTsKKworICAgIGNvbnN0IGNoYXIqIG1fY3VycmVudDsKKyAgICBjb25zdCBjaGFy
KiBtX2VuZDsKKyAgICBTdHJpbmcgbV9jdXJyZW50VG9rZW47Cit9OworCitib29sIEV4dGVuc2lv
blBhcnNlcjo6ZmluaXNoZWQoKQoreworICAgIHJldHVybiBtX2N1cnJlbnQgPj0gbV9lbmQ7Cit9
CisKK2Jvb2wgRXh0ZW5zaW9uUGFyc2VyOjpwYXJzZWRTdWNjZXNzZnVsbHkoKQoreworICAgIHJl
dHVybiBtX2N1cnJlbnQgPT0gbV9lbmQ7Cit9CisKKy8vIFRoZXNlIGZ1bmN0aW9ucyBiYXNpY2Fs
bHkgZm9sbG93IHRoZSBncmFtbWVyIGRlZmluZWQgaW4gU2VjdGlvbiAyLjIgb2YgUkZDIDI2MTYu
CisKK3ZvaWQgRXh0ZW5zaW9uUGFyc2VyOjpjb25zdW1lU3BhY2VzKCkKK3sKKyAgICB3aGlsZSAo
bV9jdXJyZW50IDwgbV9lbmQgJiYgKCptX2N1cnJlbnQgPT0gJyAnIHx8ICptX2N1cnJlbnQgPT0g
J1x0JykpCisgICAgICAgICsrbV9jdXJyZW50OworfQorCitib29sIEV4dGVuc2lvblBhcnNlcjo6
aXNDb250cm9sKGNoYXIgY2hhcmFjdGVyKQoreworICAgIHJldHVybiBjaGFyYWN0ZXIgPD0gMzEg
fHwgY2hhcmFjdGVyID09IDEyNzsKK30KKworYm9vbCBFeHRlbnNpb25QYXJzZXI6OmlzU2VwYXJh
dG9yKGNoYXIgY2hhcmFjdGVyKQoreworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzZXBhcmF0b3JD
aGFyYWN0ZXJzID0gIigpPD5ALDs6XFxcIi9bXT89e30gXHQiOworICAgIGZvciAoY29uc3QgY2hh
ciogY3VycmVudCA9IHNlcGFyYXRvckNoYXJhY3RlcnM7ICpjdXJyZW50OyArK2N1cnJlbnQpIHsK
KyAgICAgICAgaWYgKCpjdXJyZW50ID09IGNoYXJhY3RlcikKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRXh0ZW5zaW9uUGFyc2Vy
Ojpjb25zdW1lVG9rZW4oKQoreworICAgIGNvbnN1bWVTcGFjZXMoKTsKKyAgICBjb25zdCBjaGFy
KiBzdGFydCA9IG1fY3VycmVudDsKKyAgICB3aGlsZSAobV9jdXJyZW50IDwgbV9lbmQgJiYgIWlz
Q29udHJvbCgqbV9jdXJyZW50KSAmJiAhaXNTZXBhcmF0b3IoKm1fY3VycmVudCkpCisgICAgICAg
ICsrbV9jdXJyZW50OworICAgIGlmIChzdGFydCA8IG1fY3VycmVudCkgeworICAgICAgICBtX2N1
cnJlbnRUb2tlbiA9IFN0cmluZyhzdGFydCwgbV9jdXJyZW50IC0gc3RhcnQpOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEV4dGVuc2lv
blBhcnNlcjo6Y29uc3VtZVF1b3RlZFN0cmluZygpCit7CisgICAgY29uc3VtZVNwYWNlcygpOwor
ICAgIGlmIChtX2N1cnJlbnQgPj0gbV9lbmQgfHwgKm1fY3VycmVudCAhPSAnIicpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgKyttX2N1cnJl
bnQ7CisgICAgd2hpbGUgKG1fY3VycmVudCA8IG1fZW5kICYmICptX2N1cnJlbnQgIT0gJyInKSB7
CisgICAgICAgIGlmICgqbV9jdXJyZW50ID09ICdcXCcgJiYgKyttX2N1cnJlbnQgPj0gbV9lbmQp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCptX2N1
cnJlbnQpOworICAgICAgICArK21fY3VycmVudDsKKyAgICB9CisgICAgaWYgKG1fY3VycmVudCA+
PSBtX2VuZCB8fCAqbV9jdXJyZW50ICE9ICciJykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IG1fY3VycmVudFRva2VuID0gYnVpbGRlci50b1N0cmluZygpOworICAgICsrbV9jdXJyZW50Owor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIEV4dGVuc2lvblBhcnNlcjo6Y29uc3VtZUNoYXJh
Y3RlcihjaGFyIGNoYXJhY3RlcikKK3sKKyAgICBjb25zdW1lU3BhY2VzKCk7CisgICAgaWYgKG1f
Y3VycmVudCA8IG1fZW5kICYmICptX2N1cnJlbnQgPT0gY2hhcmFjdGVyKSB7CisgICAgICAgICsr
bV9jdXJyZW50OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitib29sIFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvcjo6cHJvY2Vzc1Jlc3BvbnNl
KGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBzZXJ2ZXJQYXJhbWV0ZXJzKQoreworICAg
IGlmIChtX3Jlc3BvbnNlUHJvY2Vzc2VkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9y
ZXNwb25zZVByb2Nlc3NlZCA9IHRydWU7CisgICAgcmV0dXJuIHByb2Nlc3NSZXNwb25zZUludGVy
bmFsKHNlcnZlclBhcmFtZXRlcnMpOworfQorCit2b2lkIFdlYlNvY2tldEV4dGVuc2lvbnM6OnJl
c2V0KCkKK3sKKyAgICBtX3Byb2Nlc3NvcnMuY2xlYXIoKTsKK30KKwordm9pZCBXZWJTb2NrZXRF
eHRlbnNpb25zOjphZGRQcm9jZXNzb3IoUGFzc093blB0cjxXZWJTb2NrZXRFeHRlbnNpb25Qcm9j
ZXNzb3I+IHByb2Nlc3NvcikKK3sKKyAgICBtX3Byb2Nlc3NvcnMuYXBwZW5kKHByb2Nlc3Nvcik7
Cit9CisKK2NvbnN0IFN0cmluZyBXZWJTb2NrZXRFeHRlbnNpb25zOjpmb3JtYXRBc0hlYWRlclZh
bHVlKCkgY29uc3QKK3sKKyAgICBzaXplX3QgbnVtUHJvY2Vzc29ycyA9IG1fcHJvY2Vzc29ycy5z
aXplKCk7CisgICAgaWYgKCFudW1Qcm9jZXNzb3JzKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CisKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQobV9wcm9j
ZXNzb3JzWzBdLT5oYW5kc2hha2VTdHJpbmcoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDE7IGkg
PCBudW1Qcm9jZXNzb3JzOyArK2kpIHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIiwgIik7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fcHJvY2Vzc29yc1tpXS0+aGFuZHNoYWtlU3RyaW5nKCkp
OworICAgIH0KKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCitib29sIFdlYlNv
Y2tldEV4dGVuc2lvbnM6OnByb2Nlc3NIZWFkZXJWYWx1ZShjb25zdCBTdHJpbmcmIGhlYWRlclZh
bHVlKQoreworICAgIGlmICghaGVhZGVyVmFsdWUubGVuZ3RoKCkpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgLy8gSWYgd2UgZG9uJ3Qgc2VuZCBTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMg
aGVhZGVyLCB0aGUgc2VydmVyIHNob3VsZCBub3QgcmV0dXJuIHRoZSBoZWFkZXIKKyAgICBpZiAo
IW1fcHJvY2Vzc29ycy5zaXplKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbnN0
IENTdHJpbmcgaGVhZGVyVmFsdWVEYXRhID0gaGVhZGVyVmFsdWUudXRmOCgpOworICAgIEV4dGVu
c2lvblBhcnNlciBwYXJzZXIoaGVhZGVyVmFsdWVEYXRhLmRhdGEoKSwgaGVhZGVyVmFsdWVEYXRh
LmRhdGEoKSArIGhlYWRlclZhbHVlRGF0YS5sZW5ndGgoKSk7CisKKyAgICB3aGlsZSAoIXBhcnNl
ci5maW5pc2hlZCgpKSB7CisgICAgICAgIC8vIFBhcnNlIGV4dGVuc2lvbi10b2tlbgorICAgICAg
ICBpZiAoIXBhcnNlci5jb25zdW1lVG9rZW4oKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgU3RyaW5nIGV4dGVuc2lvblRva2VuID0gcGFyc2VyLmN1cnJlbnRUb2tlbigpOwor
CisgICAgICAgIC8vIFBhcnNlIGV4dGVuc2lvbi1wYXJhbWV0ZXJzIGlmIGV4aXN0cworICAgICAg
ICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBleHRlbnNpb25QYXJhbWV0ZXJzOworICAgICAgICB3
aGlsZSAocGFyc2VyLmNvbnN1bWVDaGFyYWN0ZXIoJzsnKSkgeworICAgICAgICAgICAgaWYgKCFw
YXJzZXIuY29uc3VtZVRva2VuKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgU3RyaW5nIHBhcmFtZXRlclRva2VuID0gcGFyc2VyLmN1cnJlbnRUb2tlbigpOwor
ICAgICAgICAgICAgaWYgKHBhcnNlci5jb25zdW1lQ2hhcmFjdGVyKCc9JykpIHsKKyAgICAgICAg
ICAgICAgICBpZiAocGFyc2VyLmNvbnN1bWVRdW90ZWRTdHJpbmcoKSB8fCBwYXJzZXIuY29uc3Vt
ZVRva2VuKCkpCisgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvblBhcmFtZXRlcnMuYWRkKHBh
cmFtZXRlclRva2VuLCBwYXJzZXIuY3VycmVudFRva2VuKCkpOworICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICAgICAgZXh0ZW5zaW9uUGFyYW1ldGVycy5hZGQocGFyYW1ldGVyVG9rZW4s
IFN0cmluZygpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIXBhcnNlci5maW5pc2hlZCgpICYm
ICFwYXJzZXIuY29uc3VtZUNoYXJhY3RlcignLCcpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgIHNpemVfdCBpbmRleDsKKyAgICAgICAgZm9yIChpbmRleCA9IDA7IGluZGV4
IDwgbV9wcm9jZXNzb3JzLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICAgICAgV2ViU29ja2V0
RXh0ZW5zaW9uUHJvY2Vzc29yKiBwcm9jZXNzb3IgPSBtX3Byb2Nlc3NvcnNbaW5kZXhdLmdldCgp
OworICAgICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGV4dGVuc2lvblRva2VuLCBwcm9j
ZXNzb3ItPmV4dGVuc2lvblRva2VuKCkpICYmIHByb2Nlc3Nvci0+cHJvY2Vzc1Jlc3BvbnNlKGV4
dGVuc2lvblBhcmFtZXRlcnMpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIC8vIFRoZXJlIGlzIG5vIGV4dGVuc2lvbiB3aGljaCBjYW4gcHJvY2VzcyB0aGUgcmVz
cG9uc2UKKyAgICAgICAgaWYgKGluZGV4ID09IG1fcHJvY2Vzc29ycy5zaXplKCkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiBwYXJzZXIucGFyc2VkU3VjY2Vz
c2Z1bGx5KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShXRUJfU09DS0VUUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0RXh0ZW5zaW9ucy5oIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRF
eHRlbnNpb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDlmNjBhY2UxYTQwOTU0NTljNmM5NjgwMzBjOGMxYTEz
ZmRlZGM2MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0RXh0ZW5zaW9ucy5oCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTb2NrZXRFeHRl
bnNpb25zX2gKKyNkZWZpbmUgV2ViU29ja2V0RXh0ZW5zaW9uc19oCisKKyNpZiBFTkFCTEUoV0VC
X1NPQ0tFVFMpCisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IgeworcHVibGljOgorICAgIHZp
cnR1YWwgfldlYlNvY2tldEV4dGVuc2lvblByb2Nlc3NvcigpIHsgfQorCisgICAgYm9vbCBwcm9j
ZXNzUmVzcG9uc2UoY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mKTsKKyAgICBjb25zdCBT
dHJpbmcgZXh0ZW5zaW9uVG9rZW4oKSBjb25zdCB7IHJldHVybiBtX2V4dGVuc2lvblRva2VuOyB9
CisKKyAgICAvLyBUaGUgcmV0dXJuIHZhbHVlIG9mIHRoaXMgbWV0aG9kIHdpbGwgYmUgYSBwYXJ0
IG9mIHRoZSB2YWx1ZSBvZgorICAgIC8vIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucy4KKyAgICB2
aXJ0dWFsIGNvbnN0IFN0cmluZyBoYW5kc2hha2VTdHJpbmcoKSA9IDA7CisKK3Byb3RlY3RlZDoK
KyAgICBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IoY29uc3QgU3RyaW5nJiBleHRlbnNpb25U
b2tlbikKKyAgICAgICAgOiBtX2V4dGVuc2lvblRva2VuKGV4dGVuc2lvblRva2VuKQorICAgICAg
ICAsIG1fcmVzcG9uc2VQcm9jZXNzZWQoZmFsc2UpCisgICAgeworICAgIH0KKworICAgIC8vIFRo
aXMgc2hvdWxkIHZhbGlkYXRlIHRoZSBzZXJ2ZXIncyByZXNwb25zZSBwYXJhbWV0ZXJzIHdoaWNo
IGFyZSBwYXNzZWQKKyAgICAvLyBhcyBIYXNoTWFwPGtleSwgdmFsdWU+LiBUaGlzIG1heSBhbHNv
IGRvIHNvbWV0aGluZyBmb3IgdGhlIGV4dGVuc2lvbi4KKyAgICB2aXJ0dWFsIGJvb2wgcHJvY2Vz
c1Jlc3BvbnNlSW50ZXJuYWwoY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mKSA9IDA7CisK
K3ByaXZhdGU6CisgICAgU3RyaW5nIG1fZXh0ZW5zaW9uVG9rZW47CisgICAgYm9vbCBtX3Jlc3Bv
bnNlUHJvY2Vzc2VkOworfTsKKworY2xhc3MgV2ViU29ja2V0RXh0ZW5zaW9ucyB7CitwdWJsaWM6
CisgICAgV2ViU29ja2V0RXh0ZW5zaW9ucygpIHsgfQorCisgICAgdm9pZCByZXNldCgpOworICAg
IHZvaWQgYWRkUHJvY2Vzc29yKFBhc3NPd25QdHI8V2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29y
Pik7CisgICAgY29uc3QgU3RyaW5nIGZvcm1hdEFzSGVhZGVyVmFsdWUoKSBjb25zdDsKKyAgICBi
b29sIHByb2Nlc3NIZWFkZXJWYWx1ZShjb25zdCBTdHJpbmcmKTsKKworcHJpdmF0ZToKKyAgICBW
ZWN0b3I8T3duUHRyPFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvcj4gPiBtX3Byb2Nlc3NvcnM7
Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNlbmRpZiAvLyBX
ZWJTb2NrZXRFeHRlbnNpb25zX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0SGFuZHNoYWtlLmNwcAppbmRleCA4OTA5ZWZhZjE4NDRmMWZhY2FkYjdmMWI1ZTIxMzJk
MmJiZGRlOGVmLi5lMDFlNzZjNDU5MzU2NDJiYzIxNzA3MWM2NDIyZGFmMjdmMTgxZGUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCkBA
IC0yODcsNiArMjg3LDkgQEAgQ1N0cmluZyBXZWJTb2NrZXRIYW5kc2hha2U6OmNsaWVudEhhbmRz
aGFrZU1lc3NhZ2UoKSBjb25zdAogICAgIH0gZWxzZSB7CiAgICAgICAgIGZpZWxkcy5hcHBlbmQo
IlNlYy1XZWJTb2NrZXQtS2V5OiAiICsgbV9zZWNXZWJTb2NrZXRLZXkpOwogICAgICAgICBmaWVs
ZHMuYXBwZW5kKCJTZWMtV2ViU29ja2V0LVZlcnNpb246IDEzIik7CisgICAgICAgIGNvbnN0IFN0
cmluZyBleHRlbnNpb25WYWx1ZSA9IG1fZXh0ZW5zaW9ucy5mb3JtYXRBc0hlYWRlclZhbHVlKCk7
CisgICAgICAgIGlmIChleHRlbnNpb25WYWx1ZS5sZW5ndGgoKSkKKyAgICAgICAgICAgIGZpZWxk
cy5hcHBlbmQoIlNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9uczogIiArIGV4dGVuc2lvblZhbHVlKTsK
ICAgICB9CiAKICAgICAvLyBGaWVsZHMgaW4gdGhlIGhhbmRzaGFrZSBhcmUgc2VudCBieSB0aGUg
Y2xpZW50IGluIGEgcmFuZG9tIG9yZGVyOyB0aGUKQEAgLTM0NCw2ICszNDcsOSBAQCBXZWJTb2Nr
ZXRIYW5kc2hha2VSZXF1ZXN0IFdlYlNvY2tldEhhbmRzaGFrZTo6Y2xpZW50SGFuZHNoYWtlUmVx
dWVzdCgpIGNvbnN0CiAgICAgfSBlbHNlIHsKICAgICAgICAgcmVxdWVzdC5hZGRIZWFkZXJGaWVs
ZCgiU2VjLVdlYlNvY2tldC1LZXkiLCBtX3NlY1dlYlNvY2tldEtleSk7CiAgICAgICAgIHJlcXVl
c3QuYWRkSGVhZGVyRmllbGQoIlNlYy1XZWJTb2NrZXQtVmVyc2lvbiIsICIxMyIpOworICAgICAg
ICBjb25zdCBTdHJpbmcgZXh0ZW5zaW9uVmFsdWUgPSBtX2V4dGVuc2lvbnMuZm9ybWF0QXNIZWFk
ZXJWYWx1ZSgpOworICAgICAgICBpZiAoZXh0ZW5zaW9uVmFsdWUubGVuZ3RoKCkpCisgICAgICAg
ICAgICByZXF1ZXN0LmFkZEhlYWRlckZpZWxkKCJTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMiLCBl
eHRlbnNpb25WYWx1ZSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHJlcXVlc3Q7CkBAIC0zNTIsNiAr
MzU4LDcgQEAgV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdCBXZWJTb2NrZXRIYW5kc2hha2U6OmNs
aWVudEhhbmRzaGFrZVJlcXVlc3QoKSBjb25zdAogdm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OnJl
c2V0KCkKIHsKICAgICBtX21vZGUgPSBJbmNvbXBsZXRlOworICAgIG1fZXh0ZW5zaW9ucy5yZXNl
dCgpOwogfQogCiB2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6Y2xlYXJTY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkKQEAgLTQ3OSw2ICs0ODYsMTEgQEAgY29uc3QgV2ViU29ja2V0SGFuZHNoYWtlUmVz
cG9uc2UmIFdlYlNvY2tldEhhbmRzaGFrZTo6c2VydmVySGFuZHNoYWtlUmVzcG9uc2UoKQogICAg
IHJldHVybiBtX3Jlc3BvbnNlOwogfQogCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6YWRkRXh0
ZW5zaW9uUHJvY2Vzc29yKFBhc3NPd25QdHI8V2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yPiBw
cm9jZXNzb3IpCit7CisgICAgbV9leHRlbnNpb25zLmFkZFByb2Nlc3Nvcihwcm9jZXNzb3IpOwor
fQorCiBLVVJMIFdlYlNvY2tldEhhbmRzaGFrZTo6aHR0cFVSTEZvckF1dGhlbnRpY2F0aW9uQW5k
Q29va2llcygpIGNvbnN0CiB7CiAgICAgS1VSTCB1cmwgPSBtX3VybC5jb3B5KCk7CkBAIC02OTIs
MTAgKzcwNCw3IEBAIGJvb2wgV2ViU29ja2V0SGFuZHNoYWtlOjpjaGVja1Jlc3BvbnNlSGVhZGVy
cygpCiAgICAgICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiRXJyb3IgZHVyaW5nIFdlYlNvY2tl
dCBoYW5kc2hha2U6IFNlYy1XZWJTb2NrZXQtQWNjZXB0IG1pc21hdGNoIjsKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAgICAgICBpZiAoIXNlcnZlcldlYlNvY2tldEV4
dGVuc2lvbnMuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIC8vIFdlYlNvY2tldCBwcm90b2NvbCBl
eHRlbnNpb25zIGFyZSBub3Qgc3VwcG9ydGVkIHlldC4KLSAgICAgICAgICAgIC8vIFdlIGRvIG5v
dCBzZW5kIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIgaW4gb3VyIHJlcXVlc3QsIHRo
dXMKLSAgICAgICAgICAgIC8vIHNlcnZlcnMgc2hvdWxkIG5vdCByZXR1cm4gdGhpcyBoZWFkZXIs
IGVpdGhlci4KKyAgICAgICAgaWYgKCFtX2V4dGVuc2lvbnMucHJvY2Vzc0hlYWRlclZhbHVlKHNl
cnZlcldlYlNvY2tldEV4dGVuc2lvbnMpKSB7CiAgICAgICAgICAgICBtX2ZhaWx1cmVSZWFzb24g
PSAiRXJyb3IgZHVyaW5nIFdlYlNvY2tldCBoYW5kc2hha2U6IFNlYy1XZWJTb2NrZXQtRXh0ZW5z
aW9ucyBoZWFkZXIgaXMgaW52YWxpZCI7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFu
ZHNoYWtlLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5o
CmluZGV4IDEyYzE4NDAxOWMyY2FjNjdkYTlmZjM0OTJjNDdiOWI3MDJhY2VhYjcuLmVjN2M4MmM4
MjkwYzQ2NWUwMDU2ZDU2ZDE4MDQ0ZDIyODI3N2VlYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaApAQCAtMzUsOCArMzUsMTAgQEAKIAogI2lu
Y2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIldl
YlNvY2tldEV4dGVuc2lvbnMuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0
LmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCIKKyNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTg1LDYgKzg3LDgg
QEAgcHVibGljOgogCiAgICAgY29uc3QgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UmIHNlcnZl
ckhhbmRzaGFrZVJlc3BvbnNlKCkgY29uc3Q7CiAKKyAgICB2b2lkIGFkZEV4dGVuc2lvblByb2Nl
c3NvcihQYXNzT3duUHRyPFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvcj4pOworCiBwcml2YXRl
OgogICAgIEtVUkwgaHR0cFVSTEZvckF1dGhlbnRpY2F0aW9uQW5kQ29va2llcygpIGNvbnN0Owog
CkBAIC0xMTYsNiArMTIwLDggQEAgcHJpdmF0ZToKICAgICAvLyBGb3IgaHliaS0xMCBoYW5kc2hh
a2UuCiAgICAgU3RyaW5nIG1fc2VjV2ViU29ja2V0S2V5OwogICAgIFN0cmluZyBtX2V4cGVjdGVk
QWNjZXB0OworCisgICAgV2ViU29ja2V0RXh0ZW5zaW9ucyBtX2V4dGVuc2lvbnM7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwCmluZGV4IDJlMGRhZDdmMDlhY2Fi
ODcyZjhkNDQ1NzE0YWQ0MWY2ZDI4ZDY0ZGEuLmU2MWQyYzljNjBmMGU5Y2U0NTRkMjUwMGJjMzQw
ZjVlOTEzMGUxN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwCkBAIC04Nyw3ICs4NywxMyBAQCBjb25zdCBI
VFRQSGVhZGVyTWFwJiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6aGVhZGVyRmllbGRzKCkg
Y29uc3QKIAogdm9pZCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6YWRkSGVhZGVyRmllbGQo
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIG1f
aGVhZGVyRmllbGRzLmFkZChuYW1lLCB2YWx1ZSk7CisgICAgLy8gU2VjLVdlYlNvY2tldC1FeHRl
bnNpb25zIGhlYWRlciBtYXkgYmUgc3BsaXQuIElmIHRoZSB2YWx1ZSBmb3IgU2VjLVdlYlNvY2tl
dC1FeHRlbnNpb25zIGFscmVhZHkgZXhpc3RzLAorICAgIC8vIHRoZXkgYXJlIGNvbm5lY3RlZCB3
aXRoIGNvbW1uYS4KKyAgICBIVFRQSGVhZGVyTWFwOjppdGVyYXRvciBpdGVyYXRvciA9IG1faGVh
ZGVyRmllbGRzLmZpbmQobmFtZSk7CisgICAgaWYgKGl0ZXJhdG9yICE9IG1faGVhZGVyRmllbGRz
LmVuZCgpICYmIGVxdWFsSWdub3JpbmdDYXNlKGl0ZXJhdG9yLT5maXJzdCwgInNlYy13ZWJzb2Nr
ZXQtZXh0ZW5zaW9ucyIpKQorICAgICAgICBtX2hlYWRlckZpZWxkcy5zZXQobmFtZSwgaXRlcmF0
b3ItPnNlY29uZCArICIsIiArIHZhbHVlKTsKKyAgICBlbHNlCisgICAgICAgIG1faGVhZGVyRmll
bGRzLmFkZChuYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9u
c2U6OmNsZWFySGVhZGVyRmllbGRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vV2ViS2l0Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCmluZGV4
IGM4NTAyZjU3M2M0NTE3MDE3MzU0ODVhZjQ3NTIzZTc1MTI5NGM4M2QuLjk3NTliM2ExOTY4N2Q2
N2I4NzliMjhiZTk4NjY5MzRhNmUwMzA2NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cGkKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
aQpAQCAtMTE4LDYgKzExOCw3IEBACiAgICAgICAgICAgICAndGVzdHMvV2ViTGF5ZXJUZXN0LmNw
cCcsCiAgICAgICAgICAgICAndGVzdHMvV2ViUGFnZU5ld1NlcmlhbGl6ZXJUZXN0LmNwcCcsCiAg
ICAgICAgICAgICAndGVzdHMvV2ViUGFnZVNlcmlhbGl6ZXJUZXN0LmNwcCcsCisgICAgICAgICAg
ICAndGVzdHMvV2ViU29ja2V0RXh0ZW5zaW9uc1Rlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0
cy9XZWJVUkxSZXF1ZXN0VGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1dlYlZpZXdUZXN0
LmNwcCcsCiAgICAgICAgIF0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL1dlYlNvY2tldEV4dGVuc2lvbnNUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvV2ViU29ja2V0RXh0ZW5zaW9uc1Rlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1ZGMxNTdjN2Ji
NGY3OTIyNDI5YTg5YzA0MGYwMWViNDg1ZDBhMmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlNvY2tldEV4dGVuc2lvbnNUZXN0LmNwcApAQCAtMCww
ICsxLDE4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIldlYlNv
Y2tldEV4dGVuc2lvbnMuaCIKKworI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFt
ZXNwYWNlIHsKKworY2xhc3MgV2ViU29ja2V0RXh0ZW5zaW9uc1Rlc3Q7CisKK2NsYXNzIE1vY2tX
ZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IgOiBwdWJsaWMgV2ViU29ja2V0RXh0ZW5zaW9uUHJv
Y2Vzc29yIHsKK3B1YmxpYzoKKyAgICBNb2NrV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yKGNv
bnN0IFN0cmluZyYgbmFtZSwgV2ViU29ja2V0RXh0ZW5zaW9uc1Rlc3QqIHRlc3QpCisgICAgICAg
IDogV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yKG5hbWUpCisgICAgICAgICwgbV90ZXN0KHRl
c3QpCisgICAgeworICAgIH0KKyAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyBoYW5kc2hha2VTdHJp
bmcoKSB7IHJldHVybiBleHRlbnNpb25Ub2tlbigpOyB9CisKK3ByaXZhdGU6CisgICAgdmlydHVh
bCBib29sIHByb2Nlc3NSZXNwb25zZUludGVybmFsKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJp
bmc+Jik7CisKKyAgICBXZWJTb2NrZXRFeHRlbnNpb25zVGVzdCogbV90ZXN0OworfTsKKworY2xh
c3MgV2ViU29ja2V0RXh0ZW5zaW9uc1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CitwdWJs
aWM6CisgICAgV2ViU29ja2V0RXh0ZW5zaW9uc1Rlc3QoKQorICAgIHsKKyAgICB9CisKKyAgICB2
b2lkIFNldFVwKCkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93bigpCisgICAgewor
ICAgIH0KKworICAgIHZvaWQgYWRkTW9ja1Byb2Nlc3Nvcihjb25zdCBTdHJpbmcmIGV4dGVuc2lv
blRva2VuKQorICAgIHsKKyAgICAgICAgbV9leHRlbnNpb25zLmFkZFByb2Nlc3NvcihhZG9wdFB0
cihuZXcgTW9ja1dlYlNvY2tldEV4dGVuc2lvblByb2Nlc3NvcihleHRlbnNpb25Ub2tlbiwgdGhp
cykpKTsKKworICAgIH0KKworICAgIHZvaWQgYXBwZW5kUmVzdWx0KGNvbnN0IFN0cmluZyYgZXh0
ZW5zaW9uVG9rZW4sIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBwYXJhbWV0ZXJzKQor
ICAgIHsKKyAgICAgICAgbV9wYXJzZWRFeHRlbnNpb25Ub2tlbnMuYXBwZW5kKGV4dGVuc2lvblRv
a2VuKTsKKyAgICAgICAgbV9wYXJzZWRQYXJhbWV0ZXJzLmFwcGVuZChwYXJhbWV0ZXJzKTsKKyAg
ICB9CisKK3Byb3RlY3RlZDoKKyAgICBXZWJTb2NrZXRFeHRlbnNpb25zIG1fZXh0ZW5zaW9uczsK
KyAgICBWZWN0b3I8U3RyaW5nPiBtX3BhcnNlZEV4dGVuc2lvblRva2VuczsKKyAgICBWZWN0b3I8
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gPiBtX3BhcnNlZFBhcmFtZXRlcnM7Cit9OworCitib29s
IE1vY2tXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I6OnByb2Nlc3NSZXNwb25zZUludGVybmFs
KGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBwYXJhbWV0ZXJzKQoreworICAgIG1fdGVz
dC0+YXBwZW5kUmVzdWx0KGV4dGVuc2lvblRva2VuKCksIHBhcmFtZXRlcnMpOworICAgIHJldHVy
biB0cnVlOworfQorCitURVNUX0YoV2ViU29ja2V0RXh0ZW5zaW9uc1Rlc3QsIFRlc3RTaW5nbGUp
Cit7CisgICAgYWRkTW9ja1Byb2Nlc3NvcigiZGVmbGF0ZS1mcmFtZSIpOworICAgIEVYUEVDVF9U
UlVFKG1fZXh0ZW5zaW9ucy5wcm9jZXNzSGVhZGVyVmFsdWUoImRlZmxhdGUtZnJhbWUiKSk7Cisg
ICAgRVhQRUNUX0VRKDFVTCwgbV9wYXJzZWRFeHRlbnNpb25Ub2tlbnMuc2l6ZSgpKTsKKyAgICBF
WFBFQ1RfRVEoImRlZmxhdGUtZnJhbWUiLCBtX3BhcnNlZEV4dGVuc2lvblRva2Vuc1swXSk7Cisg
ICAgRVhQRUNUX0VRKDAsIG1fcGFyc2VkUGFyYW1ldGVyc1swXS5zaXplKCkpOworfQorCitURVNU
X0YoV2ViU29ja2V0RXh0ZW5zaW9uc1Rlc3QsIFRlc3RQYXJhbWV0ZXJzKQoreworICAgIGFkZE1v
Y2tQcm9jZXNzb3IoIm11eCIpOworICAgIEVYUEVDVF9UUlVFKG1fZXh0ZW5zaW9ucy5wcm9jZXNz
SGVhZGVyVmFsdWUoIm11eDsgbWF4LWNoYW5uZWxzPTQ7IGZsb3ctY29udHJvbCAgIikpOworICAg
IEVYUEVDVF9FUSgxVUwsIG1fcGFyc2VkRXh0ZW5zaW9uVG9rZW5zLnNpemUoKSk7CisgICAgRVhQ
RUNUX0VRKCJtdXgiLCBtX3BhcnNlZEV4dGVuc2lvblRva2Vuc1swXSk7CisgICAgRVhQRUNUX0VR
KDIsIG1fcGFyc2VkUGFyYW1ldGVyc1swXS5zaXplKCkpOworICAgIEhhc2hNYXA8U3RyaW5nLCBT
dHJpbmc+OjppdGVyYXRvciBwYXJhbWV0ZXIgPSBtX3BhcnNlZFBhcmFtZXRlcnNbMF0uZmluZCgi
bWF4LWNoYW5uZWxzIik7CisgICAgRVhQRUNUX1RSVUUocGFyYW1ldGVyICE9IG1fcGFyc2VkUGFy
YW1ldGVyc1swXS5lbmQoKSk7CisgICAgRVhQRUNUX0VRKCI0IiwgcGFyYW1ldGVyLT5zZWNvbmQp
OworICAgIHBhcmFtZXRlciA9IG1fcGFyc2VkUGFyYW1ldGVyc1swXS5maW5kKCJmbG93LWNvbnRy
b2wiKTsKKyAgICBFWFBFQ1RfVFJVRShwYXJhbWV0ZXIgIT0gbV9wYXJzZWRQYXJhbWV0ZXJzWzBd
LmVuZCgpKTsKKyAgICBFWFBFQ1RfVFJVRShwYXJhbWV0ZXItPnNlY29uZC5pc051bGwoKSk7Cit9
CisKK1RFU1RfRihXZWJTb2NrZXRFeHRlbnNpb25zVGVzdCwgVGVzdE11bHRpcGxlKQoreworICAg
IHN0cnVjdCB7CisgICAgICAgIFN0cmluZyB0b2tlbjsKKyAgICAgICAgSGFzaE1hcDxTdHJpbmcs
IFN0cmluZz4gcGFyYW1ldGVyczsKKyAgICB9IGV4cGVjdGVkWzJdOworICAgIGV4cGVjdGVkWzBd
LnRva2VuID0gIm11eCI7CisgICAgZXhwZWN0ZWRbMF0ucGFyYW1ldGVycy5hZGQoIm1heC1jaGFu
bmVscyIsICI0Iik7CisgICAgZXhwZWN0ZWRbMF0ucGFyYW1ldGVycy5hZGQoImZsb3ctY29udHJv
bCIsIFN0cmluZygpKTsKKyAgICBleHBlY3RlZFsxXS50b2tlbiA9ICJkZWZsYXRlLWZyYW1lIjsK
KworICAgIGFkZE1vY2tQcm9jZXNzb3IoIm11eCIpOworICAgIGFkZE1vY2tQcm9jZXNzb3IoImRl
ZmxhdGUtZnJhbWUiKTsKKyAgICBFWFBFQ1RfVFJVRShtX2V4dGVuc2lvbnMucHJvY2Vzc0hlYWRl
clZhbHVlKCJtdXggOyAgbWF4LWNoYW5uZWxzID00O2Zsb3ctY29udHJvbCwgZGVmbGF0ZS1mcmFt
ZSAgIikpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZW9mKGV4cGVjdGVkKSAvIHNp
emVvZihleHBlY3RlZFswXSk7ICsraSkgeworICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRbaV0u
dG9rZW4sIG1fcGFyc2VkRXh0ZW5zaW9uVG9rZW5zW2ldKTsKKyAgICAgICAgSGFzaE1hcDxTdHJp
bmcsIFN0cmluZz4mIGV4cGVjdGVkUGFyYW1ldGVycyA9IGV4cGVjdGVkW2ldLnBhcmFtZXRlcnM7
CisgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBwYXJzZWRQYXJhbWV0ZXJzID0gbV9w
YXJzZWRQYXJhbWV0ZXJzW2ldOworICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRbaV0ucGFyYW1l
dGVycy5zaXplKCksIG1fcGFyc2VkUGFyYW1ldGVyc1tpXS5zaXplKCkpOworICAgICAgICBmb3Ig
KEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+OjppdGVyYXRvciBleHBlY3RlZCA9IGV4cGVjdGVkUGFy
YW1ldGVycy5iZWdpbigpOyBleHBlY3RlZCAhPSBleHBlY3RlZFBhcmFtZXRlcnMuZW5kKCk7ICsr
ZXhwZWN0ZWQpIHsKKyAgICAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+OjppdGVyYXRv
ciBwYXJzZWQgPSBwYXJzZWRQYXJhbWV0ZXJzLmZpbmQoZXhwZWN0ZWQtPmZpcnN0KTsKKyAgICAg
ICAgICAgIEVYUEVDVF9UUlVFKHBhcnNlZCAhPSBwYXJzZWRQYXJhbWV0ZXJzLmVuZCgpKTsKKyAg
ICAgICAgICAgIGlmIChleHBlY3RlZC0+c2Vjb25kLmlzTnVsbCgpKQorICAgICAgICAgICAgICAg
IEVYUEVDVF9UUlVFKHBhcnNlZC0+c2Vjb25kLmlzTnVsbCgpKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWQtPnNlY29uZCwgcGFyc2VkLT5zZWNv
bmQpOworICAgICAgICB9CisgICAgfQorfQorCitURVNUX0YoV2ViU29ja2V0RXh0ZW5zaW9uc1Rl
c3QsIFRlc3RRdW90ZWRTdHJpbmcpCit7CisgICAgYWRkTW9ja1Byb2Nlc3NvcigieC1mb28iKTsK
KyAgICBFWFBFQ1RfVFJVRShtX2V4dGVuc2lvbnMucHJvY2Vzc0hlYWRlclZhbHVlKCJ4LWZvbzsg
cGFyYW0xPVwicXVvdGVkIHN0cmluZ1wiOyBwYXJhbTI9XCJcXFwicXVvdGVkXFxcIiBzdHJpbmdc
XFxcXCIiKSk7CisgICAgRVhQRUNUX0VRKDIsIG1fcGFyc2VkUGFyYW1ldGVyc1swXS5zaXplKCkp
OworICAgIEVYUEVDVF9FUSgicXVvdGVkIHN0cmluZyIsIG1fcGFyc2VkUGFyYW1ldGVyc1swXS5n
ZXQoInBhcmFtMSIpKTsKKyAgICBFWFBFQ1RfRVEoIlwicXVvdGVkXCIgc3RyaW5nXFwiLCBtX3Bh
cnNlZFBhcmFtZXRlcnNbMF0uZ2V0KCJwYXJhbTIiKSk7Cit9CisKK1RFU1RfRihXZWJTb2NrZXRF
eHRlbnNpb25zVGVzdCwgVGVzdEludmFsaWQpCit7CisgICAgY29uc3QgY2hhciogaW5wdXRzW10g
PSB7CisgICAgICAgICJcIngtZm9vXCIiLAorICAgICAgICAieC1iYXoiLAorICAgICAgICAieC1m
b29cXCIsCisgICAgICAgICJ4LShmb28pIiwKKyAgICAgICAgIngtZm9vOyAiLAorICAgICAgICAi
eC1mb287IGJhcj0iLAorICAgICAgICAieC1mb287IGJhcj14IHkiLAorICAgICAgICAieC1mb287
IGJhcj1cIm1pc21hdGNoIHF1b3RlIiwKKyAgICAgICAgIngtZm9vOyBiYXI9XCJcXFwiIiwKKyAg
ICAgICAgIngtZm9vOyBcImJhclwiPWJheiIsCisgICAgICAgICJ4LWZvbyB4LWJhciIsCisgICAg
ICAgICJ4LWZvbywgeC1iYXoiCisgICAgICAgICJ4LWZvbywgIiwKKyAgICB9OworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgc2l6ZW9mKGlucHV0cykgLyBzaXplb2YoaW5wdXRzWzBdKTsgKytp
KSB7CisgICAgICAgIG1fZXh0ZW5zaW9ucy5yZXNldCgpOworICAgICAgICBhZGRNb2NrUHJvY2Vz
c29yKCJ4LWZvbyIpOworICAgICAgICBhZGRNb2NrUHJvY2Vzc29yKCJ4LWJhciIpOworICAgICAg
ICBFWFBFQ1RfRkFMU0UobV9leHRlbnNpb25zLnByb2Nlc3NIZWFkZXJWYWx1ZShpbnB1dHNbaV0p
KTsKKyAgICB9Cit9CisKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126012</attachid>
            <date>2012-02-07 23:07:50 -0800</date>
            <delta_ts>2012-02-08 02:32:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78079-20120208160746.patch</filename>
            <type>text/plain</type>
            <size>35609</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3MDM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjVjMjQ0YTc2ZGYyMTU0
ZjVjZjU4NzU4YzQzNzUxY2U0NmNhMDIzYS4uNTViMmQzZTY4YTQwMGQyODgwOTk2NTA1NDc3MGFl
ZWIzNTI0ZTg0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEyLTAyLTA3ICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgV2ViU29j
a2V0IGV4dGVuc2lvbiBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03ODA3OQorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBXZWJT
b2NrZXRFeHRlbnNpb25zIGNsYXNzLCB3aGljaCBjcmVhdGVzIGNsaWVudCdzCisgICAgICAgIFNl
Yy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIgZmllbGQgYW5kIHBhcnNlcyB0aGUgc2VydmVy
IHJlc3BvbnNlLgorICAgICAgICBUaGlzIHBhdGNoIGRvZXNuJ3QgYWRkIGFueSBhY3R1YWwgZXh0
ZW5zaW9uLCBzbyBubyBjaGFuZ2VzIGluIGJlaGF2aW9yLgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBleGNlcHQgZm9yIGNocm9t
aXVtIHBvcnQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkZWQgV2ViU29ja2V0RXh0
ZW5zaW9ucy4oY3BwfGgpLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IERpdHRvLgor
ICAgICAgICAqIFRhcmdldC5wcmk6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUuZ3lwaTogRGl0
dG8uCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6IERpdHRvLgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisgICAgICAg
ICogd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25zLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKEV4dGVuc2lvblBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25QYXJzZXI6OkV4dGVuc2lvblBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25QYXJzZXI6OmN1cnJlbnRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25Q
YXJzZXI6OmZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvblBhcnNlcjo6cGFy
c2VkU3VjY2Vzc2Z1bGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvblBhcnNlcjo6Y29u
c3VtZVNwYWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25QYXJzZXI6OmlzQ29udHJv
bCk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25QYXJzZXI6OmlzU2VwYXJhdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvblBhcnNlcjo6Y29uc3VtZVRva2VuKToKKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvblBhcnNlcjo6Y29uc3VtZVF1b3RlZFN0cmluZyk6CisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25QYXJzZXI6OmNvbnN1bWVDaGFyYWN0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yOjpwcm9jZXNzUmVzcG9uc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9uczo6cmVzZXQpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9uczo6YWRkUHJvY2Vzc29yKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlNvY2tldEV4dGVuc2lvbnM6OmZvcm1hdEFzSGVhZGVyVmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9uczo6cHJvY2Vzc0hlYWRlclZhbHVlKToKKyAg
ICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbnMuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I6On5XZWJTb2NrZXRFeHRl
bnNpb25Qcm9jZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9uUHJv
Y2Vzc29yOjpleHRlbnNpb25Ub2tlbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRl
bnNpb25Qcm9jZXNzb3I6OldlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvcik6CisgICAgICAgIChX
ZWJTb2NrZXRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lv
bnM6OldlYlNvY2tldEV4dGVuc2lvbnMpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0
SGFuZHNoYWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZTo6Y2xp
ZW50SGFuZHNoYWtlTWVzc2FnZSk6IEFkZHMgZXh0ZW5zaW9uIGhlYWRlciB2YWx1ZSBpZiBleGlz
dHMuCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6OmNsaWVudEhhbmRzaGFr
ZVJlcXVlc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZTo6
cmVzZXQpOiBSZXNldHMgV2ViU29ja2V0RXh0ZW5zaW9ucyBvYmplY3QuCisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6OmFkZEV4dGVuc2lvblByb2Nlc3Nvcik6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6
OmNoZWNrUmVzcG9uc2VIZWFkZXJzKTogQ2FsbHMgV2ViU29ja2V0RXh0ZW5zaW9zbjo6cHJvY2Vz
c0hlYWRlclZhbHVlKCkgdG8gY2hlY2sgdGhlIHJlc3BvbnNlLgorICAgICAgICAqIHdlYnNvY2tl
dHMvV2ViU29ja2V0SGFuZHNoYWtlLmg6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRI
YW5kc2hha2VSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hh
a2VSZXNwb25zZTo6YWRkSGVhZGVyRmllbGQpOiBNb2RpZmllZCB0byBqb2luIHRoZSB2YWx1ZSBv
ZiBTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgaWYgdGhlIHZhbHVlIGlzIGFscmVhZHkgZXhpc3Rz
LgorCiAyMDEyLTAyLTA3ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZW5hbWUgW0hhc092ZXJyaWRpbmdOYW1lR2V0dGVyXSBhdHRyaWJ1dGUgdG8gW0N1
c3RvbU5hbWVkR2V0dGVyXSBhdHRyaWJ1dGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
YTUzZmQxZWViYzNhOGFhYTkwYjEyM2MyNWRkYjBlZjlhMzFhYjFmOS4uODZjNjYyOGI3Njc3ZWIw
MTk4MTE1NjU4MzA4YWYzNzM4MDIyOTU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyOCBAQAorMjAxMi0wMi0wNyAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgQWRkIFdlYlNvY2tldCBleHRlbnNpb24gc3VwcG9ydAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgwNzkKKworICAg
ICAgICBBZGQgc29tZSB0ZXN0cyB3aGljaCBjaGVjayBXZWJTb2NrZXRFeHRlbnNpb25zOjpwcm9j
ZXNzSGVhZGVyVmFsdWUoKQorICAgICAgICBwYXJzZXMgdGhlIGdpdmVuIHJlc3BvbnNlIGNvcnJl
Y3RseS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdlYktpdC5neXBpOgorICAgICAgICAqIHRlc3RzL1dlYlNvY2tldEV4dGVuc2lvbnNUZXN0LmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKE1vY2tXZWJTb2NrZXRFeHRl
bnNpb25Qcm9jZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1dlYlNvY2tldEV4dGVuc2lv
blByb2Nlc3Nvcjo6TW9ja1dlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvcik6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yOjpoYW5kc2hha2VTdHJpbmcp
OgorICAgICAgICAoV2ViU29ja2V0RXh0ZW5zaW9uc1Rlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0RXh0ZW5zaW9uc1Rlc3Q6OldlYlNvY2tldEV4dGVuc2lvbnNUZXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvbnNUZXN0OjpTZXRVcCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25zVGVzdDo6VGVhckRvd24pOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0RXh0ZW5zaW9uc1Rlc3Q6OmFkZE1vY2tQcm9jZXNzb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9uc1Rlc3Q6OmFwcGVuZFJlc3VsdCk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yOjpwcm9jZXNzUmVz
cG9uc2VJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpURVNUX0YpOgorCiAyMDEyLTAyLTA3
ICBHcmVnZyBUYXZhcmVzICA8Z21hbkBnb29nbGUuY29tPgogCiAgICAgICAgIFBsdW1iIHRocm91
Z2ggd2ViR0xFcnJvcnNUb0NvbnNvbGVFbmFibGUgaW4gV2ViU2V0dGluZ3MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKaW5kZXggZGQwNGNmNmZiN2FmMjIyMTM0NjM4NTZhYjY2YzNkMjFmYzQ3Y2FjYS4uNjM2
ZjZlZDQ1MDhlNzkwNzQ2Zjc4NGQxMjU3MmQ1ZjlhYjQxNjUzYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKQEAgLTIwMzgsNiArMjAzOCw3IEBAIElGIChFTkFCTEVfV0VCX1NPQ0tFVFMpCiAgICAgICAg
IHdlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcAog
ICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKICAgICAgICAgd2Vic29ja2V0cy9XZWJT
b2NrZXRDaGFubmVsLmNwcAorICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbnMu
Y3BwCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAogICAgICAgICB3
ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwCiAgICAgICAgIHdlYnNvY2tl
dHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQppbmRleCBkZmU0OTMxMWFiNmI0NDYzODkyOGUxMzdhYzg3YTE1YWQ3MDc0OWE1Li42MDEz
NDYwZjM2NDZkM2Y1M2IxN2ZiNzQzNGRlMTllZTM4NjYyOTMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KQEAgLTQzMDMsNiArNDMwMyw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXQuaCBcCisJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRF
eHRlbnNpb25zLmNwcCBcCisJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRl
bnNpb25zLmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtl
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaCBc
CiAJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNw
cCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNv
cmUvVGFyZ2V0LnByaQppbmRleCA4MTFkMjQ5ZDQxNDE0YWIyOThmNDdkMDZhZmM3MDlmOTgzYTEx
MTc2Li5lNTA1NjA1NjM1ZDhlYjZjY2I2OTI2ZmE0OTE5NWIxZmIzNGQ3NjU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5w
cmkKQEAgLTM2NTUsNiArMzY1NSw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XRUJfU09D
S0VUUz0xKSB7CiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0LmggXAogICAgICAgICB3ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0
Q2hhbm5lbENsaWVudC5oIFwKKyAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25z
LmggXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oIFwKICAgICAgICAg
d2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmggXAogICAgICAgICB3ZWJzb2Nr
ZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmggXApAQCAtMzY2Myw2ICszNjY0LDcgQEAg
Y29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dFQl9TT0NLRVRTPTEpIHsKICAgICBTT1VSQ0VTICs9
IFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIFwKICAgICAgICAgd2Vic29ja2V0
cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBcCisgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0RXh0
ZW5zaW9ucy5jcHAgXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAg
XAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwIFwKICAg
ICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCmluZGV4IGZmMjQ4NTViMGFlZDRiZWNhNGUzZmUxYzVlNDA2MmM0ZGY5ZWVlNWEuLmU5
Y2U3YzBlMTI2OTQ2YmVlZTZhZjgzODYzZGE5ODBjNzQ1ZmFmYWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
QEAgLTQ3ODksNiArNDc4OSw4IEBACiAgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsLmNwcCcsCiAgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgn
LAogICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oJywKKyAg
ICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbnMuY3BwJywKKyAgICAgICAg
ICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbnMuaCcsCiAgICAgICAgICAgICAnd2Vi
c29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwJywKICAgICAgICAgICAgICd3ZWJzb2NrZXRz
L1dlYlNvY2tldEhhbmRzaGFrZS5oJywKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tl
dEhhbmRzaGFrZVJlcXVlc3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKaW5kZXggMGY0ZGM0N2M5ZmI1M2FkMmI3ZDgzMjk3Y2JmNzUzMWIwODcy
YjIyNC4uZWExMGUwODI0OTEyMzI4MjFjZjI0OTZlNjQyNjRhMjdiZDJjMzgyZCAxMDA3NTUKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTcyODk0LDYgKzcy
ODk0LDE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXHdlYnNvY2tldHNcV2ViU29ja2V0RXh0ZW5zaW9ucy5jcHAiCisJCQkJPgorCQkJPC9GaWxl
PgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHdlYnNvY2tldHNcV2ViU29ja2V0RXh0
ZW5zaW9ucy5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRo
PSIuLlx3ZWJzb2NrZXRzXFdlYlNvY2tldEhhbmRzaGFrZS5jcHAiCiAJCQkJPgogCQkJPC9GaWxl
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGJlMzBhNWNhOTkyNWM0NmViZTY0YzU2OGZiNmRkNjFjZTg5NzU0N2QuLjIxODcxNmM1
MDcwYmI5ZWMzYjFlNDcxOTJmYjIyODAwMzdlMmU2NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzNjUsNiArMTM2NSw4IEBA
CiAJCTRBNkU5RkM3MTNDMTdENTcwMDQ2QTdGOCAvKiBGb250RmVhdHVyZVNldHRpbmdzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBNkU5RkM1MTND
MTdENTcwMDQ2QTdGOCAvKiBGb250RmVhdHVyZVNldHRpbmdzLmNwcCAqLzsgfTsKIAkJNEE2RTlG
QzgxM0MxN0Q1NzAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlU2V0dGluZ3MuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBNkU5RkM2MTNDMTdENTcwMDQ2QTdG
OCAvKiBGb250RmVhdHVyZVNldHRpbmdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEE4Qzk2RUIwQkU2OTAzMjAwNEVFRkYwIC8qIEZyYW1lU2Vs
ZWN0aW9uTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNEE4Qzk2RUEwQkU2OTAzMjAwNEVFRkYwIC8qIEZyYW1lU2VsZWN0aW9uTWFjLm1tICovOyB9
OworCQk0QTk1N0YwNjE0RTI0MTJBMDA0OURCRkIgLyogV2ViU29ja2V0RXh0ZW5zaW9ucy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTk1N0YwMzE0
RTI0MTEwMDA0OURCRkIgLyogV2ViU29ja2V0RXh0ZW5zaW9ucy5jcHAgKi87IH07CisJCTRBOTU3
RjA3MTRFMjQxMzAwMDQ5REJGQiAvKiBXZWJTb2NrZXRFeHRlbnNpb25zLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTk1N0YwNDE0RTI0MTEwMDA0OURC
RkIgLyogV2ViU29ja2V0RXh0ZW5zaW9ucy5oICovOyB9OwogCQk0QUJERkYwQjE0REJFMzg1MDA0
RDExN0QgLyogSFRNTFNoYWRvd0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNEFCREZGMDcxNERCRTMxMjAwNEQxMTdEIC8qIEhUTUxTaGFk
b3dFbGVtZW50LmNwcCAqLzsgfTsKIAkJNEFCREZGMEMxNERCRTM4NTAwNEQxMTdEIC8qIEhUTUxT
aGFkb3dFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0QUJERkYwODE0REJFMzEyMDA0RDExN0QgLyogSFRNTFNoYWRvd0VsZW1lbnQuaCAqLzsg
fTsKIAkJNEFDQkMwQkUxMjcxM0NCRDAwOTRGOUIyIC8qIENsYXNzTGlzdC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QUNCQzBCQzEyNzEzQ0JEMDA5
NEY5QjIgLyogQ2xhc3NMaXN0LmNwcCAqLzsgfTsKQEAgLTgyMDIsNiArODIwNCw4IEBACiAJCTRB
NkU5RkM1MTNDMTdENTcwMDQ2QTdGOCAvKiBGb250RmVhdHVyZVNldHRpbmdzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRGZWF0dXJlU2V0dGluZ3MuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTZFOUZDNjEzQzE3RDU3MDA0NkE3RjggLyog
Rm9udEZlYXR1cmVTZXR0aW5ncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxp
Y2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgZmlsZUVuY29kaW5nID0gNDsgcGF0aCA9IEZv
bnRGZWF0dXJlU2V0dGluZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE4Qzk2
RUEwQkU2OTAzMjAwNEVFRkYwIC8qIEZyYW1lU2VsZWN0aW9uTWFjLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEZyYW1lU2VsZWN0aW9uTWFjLm1tOyBwYXRoID0g
bWFjL0ZyYW1lU2VsZWN0aW9uTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
QTk1N0YwMzE0RTI0MTEwMDA0OURCRkIgLyogV2ViU29ja2V0RXh0ZW5zaW9ucy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTb2NrZXRFeHRlbnNpb25zLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEE5NTdGMDQxNEUyNDExMDAwNDlEQkZCIC8q
IFdlYlNvY2tldEV4dGVuc2lvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViU29ja2V0RXh0ZW5zaW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QUJE
RkYwNzE0REJFMzEyMDA0RDExN0QgLyogSFRNTFNoYWRvd0VsZW1lbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTFNoYWRvd0VsZW1lbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0QUJERkYwODE0REJFMzEyMDA0RDExN0QgLyogSFRNTFNo
YWRvd0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTFNoYWRv
d0VsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEFCREZGMDkxNERCRTMx
MjAwNEQxMTdEIC8qIEhUTUxTaGFkb3dFbGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBIVE1MU2hhZG93RWxlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
NDc1Niw2ICsxNDc2MCw4IEBACiAJCQkJNTEwRDRBNDcxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNv
Y2tldENoYW5uZWwuY3BwICovLAogCQkJCTUxMEQ0QTQ4MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJT
b2NrZXRDaGFubmVsLmggKi8sCiAJCQkJNTEwRDRBNDkxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNv
Y2tldENoYW5uZWxDbGllbnQuaCAqLywKKwkJCQk0QTk1N0YwMzE0RTI0MTEwMDA0OURCRkIgLyog
V2ViU29ja2V0RXh0ZW5zaW9ucy5jcHAgKi8sCisJCQkJNEE5NTdGMDQxNEUyNDExMDAwNDlEQkZC
IC8qIFdlYlNvY2tldEV4dGVuc2lvbnMuaCAqLywKIAkJCQk1MUFCQUU0MjEwNDNBQjRBMDA4QzUy
NjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmNwcCAqLywKIAkJCQk1MUFCQUU0MzEwNDNBQjRBMDA4
QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmggKi8sCiAJCQkJNzYzN0M1NDAxMTJFN0I3NDAw
M0Q2Q0RDIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwICovLApAQCAtMjQxNTgsNiAr
MjQxNjQsNyBAQAogCQkJCTFBQUFEREU0MTREQzhDOEYwMEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVl
Tm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBQURERTkxNERDOERGODAwQUY2NEIzIC8qIFNj
cm9sbGluZ1RyZWVOb2RlTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTU0ODU4MDE0RTAyRDUx
MDA2QUUwNUEgLyogSW5zcGVjdG9ySGlzdG9yeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNEE5NTdG
MDcxNEUyNDEzMDAwNDlEQkZCIC8qIFdlYlNvY2tldEV4dGVuc2lvbnMuaCBpbiBIZWFkZXJzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpAQCAtMjcwOTYsNiArMjcxMDMsNyBAQAogCQkJCTFBQUFEREU4MTREQzhERjgwMEFGNjRCMyAv
KiBTY3JvbGxpbmdUcmVlTm9kZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdBNTQ4NTdGMTRF
MDJENTEwMDZBRTA1QSAvKiBJbnNwZWN0b3JIaXN0b3J5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUNEQUE4RDBBMTRENzFCMkUwMDYxRUE2MCAvKiBQbGF0Zm9ybUNsb2NrQ00ubW0gaW4gU291cmNl
cyAqLywKKwkJCQk0QTk1N0YwNjE0RTI0MTJBMDA0OURCRkIgLyogV2ViU29ja2V0RXh0ZW5zaW9u
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0RXh0ZW5zaW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldEV4dGVuc2lvbnMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5OTIwYWY3ODNjYzU4OGVjZjk1MWIz
NWQ3NGNhMTUxNDRhMDU1YWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbnMuY3BwCkBAIC0wLDAgKzEsMjI2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKworI2luY2x1ZGUgIldlYlNv
Y2tldEV4dGVuc2lvbnMuaCIKKworI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
SGFzaC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEV4dGVuc2lvblBhcnNlciB7
CitwdWJsaWM6CisgICAgRXh0ZW5zaW9uUGFyc2VyKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBj
aGFyKiBlbmQpCisgICAgICAgIDogbV9jdXJyZW50KHN0YXJ0KQorICAgICAgICAsIG1fZW5kKGVu
ZCkKKyAgICB7CisgICAgfQorICAgIGJvb2wgZmluaXNoZWQoKTsKKyAgICBib29sIHBhcnNlZFN1
Y2Nlc3NmdWxseSgpOworICAgIGJvb2wgY29uc3VtZVRva2VuKCk7CisgICAgYm9vbCBjb25zdW1l
UXVvdGVkU3RyaW5nKCk7CisgICAgYm9vbCBjb25zdW1lQ2hhcmFjdGVyKGNoYXIpOworICAgIGNv
bnN0IFN0cmluZyYgY3VycmVudFRva2VuKCkgeyByZXR1cm4gbV9jdXJyZW50VG9rZW47IH0KKwor
cHJpdmF0ZToKKyAgICB2b2lkIGNvbnN1bWVTcGFjZXMoKTsKKyAgICBib29sIGlzQ29udHJvbChj
aGFyKTsKKyAgICBib29sIGlzU2VwYXJhdG9yKGNoYXIpOworCisgICAgY29uc3QgY2hhciogbV9j
dXJyZW50OworICAgIGNvbnN0IGNoYXIqIG1fZW5kOworICAgIFN0cmluZyBtX2N1cnJlbnRUb2tl
bjsKK307CisKK2Jvb2wgRXh0ZW5zaW9uUGFyc2VyOjpmaW5pc2hlZCgpCit7CisgICAgcmV0dXJu
IG1fY3VycmVudCA+PSBtX2VuZDsKK30KKworYm9vbCBFeHRlbnNpb25QYXJzZXI6OnBhcnNlZFN1
Y2Nlc3NmdWxseSgpCit7CisgICAgcmV0dXJuIG1fY3VycmVudCA9PSBtX2VuZDsKK30KKworLy8g
VGhlc2UgZnVuY3Rpb25zIGJhc2ljYWxseSBmb2xsb3cgdGhlIGdyYW1tZXIgZGVmaW5lZCBpbiBT
ZWN0aW9uIDIuMiBvZiBSRkMgMjYxNi4KKwordm9pZCBFeHRlbnNpb25QYXJzZXI6OmNvbnN1bWVT
cGFjZXMoKQoreworICAgIHdoaWxlIChtX2N1cnJlbnQgPCBtX2VuZCAmJiAoKm1fY3VycmVudCA9
PSAnICcgfHwgKm1fY3VycmVudCA9PSAnXHQnKSkKKyAgICAgICAgKyttX2N1cnJlbnQ7Cit9CisK
K2Jvb2wgRXh0ZW5zaW9uUGFyc2VyOjppc0NvbnRyb2woY2hhciBjaGFyYWN0ZXIpCit7CisgICAg
cmV0dXJuIGNoYXJhY3RlciA8PSAzMSB8fCBjaGFyYWN0ZXIgPT0gMTI3OworfQorCitib29sIEV4
dGVuc2lvblBhcnNlcjo6aXNTZXBhcmF0b3IoY2hhciBjaGFyYWN0ZXIpCit7CisgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIHNlcGFyYXRvckNoYXJhY3RlcnMgPSAiKCk8PkAsOzpcXFwiL1tdPz17fSBc
dCI7CisgICAgZm9yIChjb25zdCBjaGFyKiBjdXJyZW50ID0gc2VwYXJhdG9yQ2hhcmFjdGVyczsg
KmN1cnJlbnQ7ICsrY3VycmVudCkgeworICAgICAgICBpZiAoKmN1cnJlbnQgPT0gY2hhcmFjdGVy
KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBFeHRlbnNpb25QYXJzZXI6OmNvbnN1bWVUb2tlbigpCit7CisgICAgY29uc3VtZVNw
YWNlcygpOworICAgIGNvbnN0IGNoYXIqIHN0YXJ0ID0gbV9jdXJyZW50OworICAgIHdoaWxlICht
X2N1cnJlbnQgPCBtX2VuZCAmJiAhaXNDb250cm9sKCptX2N1cnJlbnQpICYmICFpc1NlcGFyYXRv
cigqbV9jdXJyZW50KSkKKyAgICAgICAgKyttX2N1cnJlbnQ7CisgICAgaWYgKHN0YXJ0IDwgbV9j
dXJyZW50KSB7CisgICAgICAgIG1fY3VycmVudFRva2VuID0gU3RyaW5nKHN0YXJ0LCBtX2N1cnJl
bnQgLSBzdGFydCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK2Jvb2wgRXh0ZW5zaW9uUGFyc2VyOjpjb25zdW1lUXVvdGVkU3RyaW5nKCkKK3sK
KyAgICBjb25zdW1lU3BhY2VzKCk7CisgICAgaWYgKG1fY3VycmVudCA+PSBtX2VuZCB8fCAqbV9j
dXJyZW50ICE9ICciJykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKKyAgICArK21fY3VycmVudDsKKyAgICB3aGlsZSAobV9jdXJyZW50IDwgbV9lbmQg
JiYgKm1fY3VycmVudCAhPSAnIicpIHsKKyAgICAgICAgaWYgKCptX2N1cnJlbnQgPT0gJ1xcJyAm
JiArK21fY3VycmVudCA+PSBtX2VuZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQoKm1fY3VycmVudCk7CisgICAgICAgICsrbV9jdXJyZW50OworICAg
IH0KKyAgICBpZiAobV9jdXJyZW50ID49IG1fZW5kIHx8ICptX2N1cnJlbnQgIT0gJyInKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9jdXJyZW50VG9rZW4gPSBidWlsZGVyLnRvU3RyaW5n
KCk7CisgICAgKyttX2N1cnJlbnQ7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRXh0ZW5z
aW9uUGFyc2VyOjpjb25zdW1lQ2hhcmFjdGVyKGNoYXIgY2hhcmFjdGVyKQoreworICAgIGNvbnN1
bWVTcGFjZXMoKTsKKyAgICBpZiAobV9jdXJyZW50IDwgbV9lbmQgJiYgKm1fY3VycmVudCA9PSBj
aGFyYWN0ZXIpIHsKKyAgICAgICAgKyttX2N1cnJlbnQ7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgV2ViU29ja2V0RXh0ZW5zaW9uUHJv
Y2Vzc29yOjpwcm9jZXNzUmVzcG9uc2UoY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIHNl
cnZlclBhcmFtZXRlcnMpCit7CisgICAgaWYgKG1fcmVzcG9uc2VQcm9jZXNzZWQpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBtX3Jlc3BvbnNlUHJvY2Vzc2VkID0gdHJ1ZTsKKyAgICByZXR1
cm4gcHJvY2Vzc1Jlc3BvbnNlSW50ZXJuYWwoc2VydmVyUGFyYW1ldGVycyk7Cit9CisKK3ZvaWQg
V2ViU29ja2V0RXh0ZW5zaW9uczo6cmVzZXQoKQoreworICAgIG1fcHJvY2Vzc29ycy5jbGVhcigp
OworfQorCit2b2lkIFdlYlNvY2tldEV4dGVuc2lvbnM6OmFkZFByb2Nlc3NvcihQYXNzT3duUHRy
PFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvcj4gcHJvY2Vzc29yKQoreworICAgIG1fcHJvY2Vz
c29ycy5hcHBlbmQocHJvY2Vzc29yKTsKK30KKworY29uc3QgU3RyaW5nIFdlYlNvY2tldEV4dGVu
c2lvbnM6OmZvcm1hdEFzSGVhZGVyVmFsdWUoKSBjb25zdAoreworICAgIHNpemVfdCBudW1Qcm9j
ZXNzb3JzID0gbV9wcm9jZXNzb3JzLnNpemUoKTsKKyAgICBpZiAoIW51bVByb2Nlc3NvcnMpCisg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAg
ICBidWlsZGVyLmFwcGVuZChtX3Byb2Nlc3NvcnNbMF0tPmhhbmRzaGFrZVN0cmluZygpKTsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IG51bVByb2Nlc3NvcnM7ICsraSkgeworICAgICAgICBi
dWlsZGVyLmFwcGVuZCgiLCAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQobV9wcm9jZXNzb3Jz
W2ldLT5oYW5kc2hha2VTdHJpbmcoKSk7CisgICAgfQorICAgIHJldHVybiBidWlsZGVyLnRvU3Ry
aW5nKCk7Cit9CisKK2Jvb2wgV2ViU29ja2V0RXh0ZW5zaW9uczo6cHJvY2Vzc0hlYWRlclZhbHVl
KGNvbnN0IFN0cmluZyYgaGVhZGVyVmFsdWUpCit7CisgICAgaWYgKCFoZWFkZXJWYWx1ZS5sZW5n
dGgoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBJZiB3ZSBkb24ndCBzZW5kIFNl
Yy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIsIHRoZSBzZXJ2ZXIgc2hvdWxkIG5vdCByZXR1
cm4gdGhlIGhlYWRlcgorICAgIGlmICghbV9wcm9jZXNzb3JzLnNpemUoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgY29uc3QgQ1N0cmluZyBoZWFkZXJWYWx1ZURhdGEgPSBoZWFkZXJW
YWx1ZS51dGY4KCk7CisgICAgRXh0ZW5zaW9uUGFyc2VyIHBhcnNlcihoZWFkZXJWYWx1ZURhdGEu
ZGF0YSgpLCBoZWFkZXJWYWx1ZURhdGEuZGF0YSgpICsgaGVhZGVyVmFsdWVEYXRhLmxlbmd0aCgp
KTsKKworICAgIHdoaWxlICghcGFyc2VyLmZpbmlzaGVkKCkpIHsKKyAgICAgICAgLy8gUGFyc2Ug
ZXh0ZW5zaW9uLXRva2VuCisgICAgICAgIGlmICghcGFyc2VyLmNvbnN1bWVUb2tlbigpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBTdHJpbmcgZXh0ZW5zaW9uVG9rZW4gPSBw
YXJzZXIuY3VycmVudFRva2VuKCk7CisKKyAgICAgICAgLy8gUGFyc2UgZXh0ZW5zaW9uLXBhcmFt
ZXRlcnMgaWYgZXhpc3RzCisgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGV4dGVuc2lv
blBhcmFtZXRlcnM7CisgICAgICAgIHdoaWxlIChwYXJzZXIuY29uc3VtZUNoYXJhY3RlcignOycp
KSB7CisgICAgICAgICAgICBpZiAoIXBhcnNlci5jb25zdW1lVG9rZW4oKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBTdHJpbmcgcGFyYW1ldGVyVG9rZW4gPSBw
YXJzZXIuY3VycmVudFRva2VuKCk7CisgICAgICAgICAgICBpZiAocGFyc2VyLmNvbnN1bWVDaGFy
YWN0ZXIoJz0nKSkgeworICAgICAgICAgICAgICAgIGlmIChwYXJzZXIuY29uc3VtZVF1b3RlZFN0
cmluZygpIHx8IHBhcnNlci5jb25zdW1lVG9rZW4oKSkKKyAgICAgICAgICAgICAgICAgICAgZXh0
ZW5zaW9uUGFyYW1ldGVycy5hZGQocGFyYW1ldGVyVG9rZW4sIHBhcnNlci5jdXJyZW50VG9rZW4o
KSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBleHRlbnNpb25QYXJhbWV0
ZXJzLmFkZChwYXJhbWV0ZXJUb2tlbiwgU3RyaW5nKCkpOworICAgICAgICB9CisgICAgICAgIGlm
ICghcGFyc2VyLmZpbmlzaGVkKCkgJiYgIXBhcnNlci5jb25zdW1lQ2hhcmFjdGVyKCcsJykpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgc2l6ZV90IGluZGV4OworICAgICAg
ICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBtX3Byb2Nlc3NvcnMuc2l6ZSgpOyArK2luZGV4KSB7
CisgICAgICAgICAgICBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IqIHByb2Nlc3NvciA9IG1f
cHJvY2Vzc29yc1tpbmRleF0uZ2V0KCk7CisgICAgICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UoZXh0ZW5zaW9uVG9rZW4sIHByb2Nlc3Nvci0+ZXh0ZW5zaW9uVG9rZW4oKSkgJiYgcHJvY2Vz
c29yLT5wcm9jZXNzUmVzcG9uc2UoZXh0ZW5zaW9uUGFyYW1ldGVycykpCisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgLy8gVGhlcmUgaXMgbm8gZXh0ZW5zaW9uIHdo
aWNoIGNhbiBwcm9jZXNzIHRoZSByZXNwb25zZQorICAgICAgICBpZiAoaW5kZXggPT0gbV9wcm9j
ZXNzb3JzLnNpemUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0
dXJuIHBhcnNlci5wYXJzZWRTdWNjZXNzZnVsbHkoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25zLmggYi9Tb3VyY2UvV2ViQ29y
ZS93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOWY2MGFjZTFh
NDA5NTQ1OWM2Yzk2ODAzMGM4YzFhMTNmZGVkYzYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25zLmgKQEAgLTAsMCArMSw4OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdlYlNvY2tldEV4dGVuc2lvbnNfaAorI2RlZmluZSBXZWJTb2NrZXRFeHRlbnNp
b25zX2gKKworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdlYlNvY2tldEV4dGVuc2lvblByb2Nl
c3NvciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29y
KCkgeyB9CisKKyAgICBib29sIHByb2Nlc3NSZXNwb25zZShjb25zdCBIYXNoTWFwPFN0cmluZywg
U3RyaW5nPiYpOworICAgIGNvbnN0IFN0cmluZyBleHRlbnNpb25Ub2tlbigpIGNvbnN0IHsgcmV0
dXJuIG1fZXh0ZW5zaW9uVG9rZW47IH0KKworICAgIC8vIFRoZSByZXR1cm4gdmFsdWUgb2YgdGhp
cyBtZXRob2Qgd2lsbCBiZSBhIHBhcnQgb2YgdGhlIHZhbHVlIG9mCisgICAgLy8gU2VjLVdlYlNv
Y2tldC1FeHRlbnNpb25zLgorICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nIGhhbmRzaGFrZVN0cmlu
ZygpID0gMDsKKworcHJvdGVjdGVkOgorICAgIFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvcihj
b25zdCBTdHJpbmcmIGV4dGVuc2lvblRva2VuKQorICAgICAgICA6IG1fZXh0ZW5zaW9uVG9rZW4o
ZXh0ZW5zaW9uVG9rZW4pCisgICAgICAgICwgbV9yZXNwb25zZVByb2Nlc3NlZChmYWxzZSkKKyAg
ICB7CisgICAgfQorCisgICAgLy8gVGhpcyBzaG91bGQgdmFsaWRhdGUgdGhlIHNlcnZlcidzIHJl
c3BvbnNlIHBhcmFtZXRlcnMgd2hpY2ggYXJlIHBhc3NlZAorICAgIC8vIGFzIEhhc2hNYXA8a2V5
LCB2YWx1ZT4uIFRoaXMgbWF5IGFsc28gZG8gc29tZXRoaW5nIGZvciB0aGUgZXh0ZW5zaW9uLgor
ICAgIHZpcnR1YWwgYm9vbCBwcm9jZXNzUmVzcG9uc2VJbnRlcm5hbChjb25zdCBIYXNoTWFwPFN0
cmluZywgU3RyaW5nPiYpID0gMDsKKworcHJpdmF0ZToKKyAgICBTdHJpbmcgbV9leHRlbnNpb25U
b2tlbjsKKyAgICBib29sIG1fcmVzcG9uc2VQcm9jZXNzZWQ7Cit9OworCitjbGFzcyBXZWJTb2Nr
ZXRFeHRlbnNpb25zIHsKK3B1YmxpYzoKKyAgICBXZWJTb2NrZXRFeHRlbnNpb25zKCkgeyB9CisK
KyAgICB2b2lkIHJlc2V0KCk7CisgICAgdm9pZCBhZGRQcm9jZXNzb3IoUGFzc093blB0cjxXZWJT
b2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I+KTsKKyAgICBjb25zdCBTdHJpbmcgZm9ybWF0QXNIZWFk
ZXJWYWx1ZSgpIGNvbnN0OworICAgIGJvb2wgcHJvY2Vzc0hlYWRlclZhbHVlKGNvbnN0IFN0cmlu
ZyYpOworCitwcml2YXRlOgorICAgIFZlY3RvcjxPd25QdHI8V2ViU29ja2V0RXh0ZW5zaW9uUHJv
Y2Vzc29yPiA+IG1fcHJvY2Vzc29yczsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShXRUJf
U09DS0VUUykKKworI2VuZGlmIC8vIFdlYlNvY2tldEV4dGVuc2lvbnNfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCmluZGV4IDg5MDllZmFm
MTg0NGYxZmFjYWRiN2YxYjVlMjEzMmQyYmJkZGU4ZWYuLmUwMWU3NmM0NTkzNTY0MmJjMjE3MDcx
YzY0MjJkYWYyN2YxODFkZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0SGFuZHNoYWtlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZS5jcHAKQEAgLTI4Nyw2ICsyODcsOSBAQCBDU3RyaW5nIFdlYlNvY2tl
dEhhbmRzaGFrZTo6Y2xpZW50SGFuZHNoYWtlTWVzc2FnZSgpIGNvbnN0CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgZmllbGRzLmFwcGVuZCgiU2VjLVdlYlNvY2tldC1LZXk6ICIgKyBtX3NlY1dlYlNv
Y2tldEtleSk7CiAgICAgICAgIGZpZWxkcy5hcHBlbmQoIlNlYy1XZWJTb2NrZXQtVmVyc2lvbjog
MTMiKTsKKyAgICAgICAgY29uc3QgU3RyaW5nIGV4dGVuc2lvblZhbHVlID0gbV9leHRlbnNpb25z
LmZvcm1hdEFzSGVhZGVyVmFsdWUoKTsKKyAgICAgICAgaWYgKGV4dGVuc2lvblZhbHVlLmxlbmd0
aCgpKQorICAgICAgICAgICAgZmllbGRzLmFwcGVuZCgiU2VjLVdlYlNvY2tldC1FeHRlbnNpb25z
OiAiICsgZXh0ZW5zaW9uVmFsdWUpOwogICAgIH0KIAogICAgIC8vIEZpZWxkcyBpbiB0aGUgaGFu
ZHNoYWtlIGFyZSBzZW50IGJ5IHRoZSBjbGllbnQgaW4gYSByYW5kb20gb3JkZXI7IHRoZQpAQCAt
MzQ0LDYgKzM0Nyw5IEBAIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QgV2ViU29ja2V0SGFuZHNo
YWtlOjpjbGllbnRIYW5kc2hha2VSZXF1ZXN0KCkgY29uc3QKICAgICB9IGVsc2UgewogICAgICAg
ICByZXF1ZXN0LmFkZEhlYWRlckZpZWxkKCJTZWMtV2ViU29ja2V0LUtleSIsIG1fc2VjV2ViU29j
a2V0S2V5KTsKICAgICAgICAgcmVxdWVzdC5hZGRIZWFkZXJGaWVsZCgiU2VjLVdlYlNvY2tldC1W
ZXJzaW9uIiwgIjEzIik7CisgICAgICAgIGNvbnN0IFN0cmluZyBleHRlbnNpb25WYWx1ZSA9IG1f
ZXh0ZW5zaW9ucy5mb3JtYXRBc0hlYWRlclZhbHVlKCk7CisgICAgICAgIGlmIChleHRlbnNpb25W
YWx1ZS5sZW5ndGgoKSkKKyAgICAgICAgICAgIHJlcXVlc3QuYWRkSGVhZGVyRmllbGQoIlNlYy1X
ZWJTb2NrZXQtRXh0ZW5zaW9ucyIsIGV4dGVuc2lvblZhbHVlKTsKICAgICB9CiAKICAgICByZXR1
cm4gcmVxdWVzdDsKQEAgLTM1Miw2ICszNTgsNyBAQCBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0
IFdlYlNvY2tldEhhbmRzaGFrZTo6Y2xpZW50SGFuZHNoYWtlUmVxdWVzdCgpIGNvbnN0CiB2b2lk
IFdlYlNvY2tldEhhbmRzaGFrZTo6cmVzZXQoKQogewogICAgIG1fbW9kZSA9IEluY29tcGxldGU7
CisgICAgbV9leHRlbnNpb25zLnJlc2V0KCk7CiB9CiAKIHZvaWQgV2ViU29ja2V0SGFuZHNoYWtl
OjpjbGVhclNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQpAQCAtNDc5LDYgKzQ4NiwxMSBAQCBjb25z
dCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSYgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXJ2ZXJI
YW5kc2hha2VSZXNwb25zZSgpCiAgICAgcmV0dXJuIG1fcmVzcG9uc2U7CiB9CiAKK3ZvaWQgV2Vi
U29ja2V0SGFuZHNoYWtlOjphZGRFeHRlbnNpb25Qcm9jZXNzb3IoUGFzc093blB0cjxXZWJTb2Nr
ZXRFeHRlbnNpb25Qcm9jZXNzb3I+IHByb2Nlc3NvcikKK3sKKyAgICBtX2V4dGVuc2lvbnMuYWRk
UHJvY2Vzc29yKHByb2Nlc3Nvcik7Cit9CisKIEtVUkwgV2ViU29ja2V0SGFuZHNoYWtlOjpodHRw
VVJMRm9yQXV0aGVudGljYXRpb25BbmRDb29raWVzKCkgY29uc3QKIHsKICAgICBLVVJMIHVybCA9
IG1fdXJsLmNvcHkoKTsKQEAgLTY5MiwxMCArNzA0LDcgQEAgYm9vbCBXZWJTb2NrZXRIYW5kc2hh
a2U6OmNoZWNrUmVzcG9uc2VIZWFkZXJzKCkKICAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9
ICJFcnJvciBkdXJpbmcgV2ViU29ja2V0IGhhbmRzaGFrZTogU2VjLVdlYlNvY2tldC1BY2NlcHQg
bWlzbWF0Y2giOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAg
IGlmICghc2VydmVyV2ViU29ja2V0RXh0ZW5zaW9ucy5pc051bGwoKSkgewotICAgICAgICAgICAg
Ly8gV2ViU29ja2V0IHByb3RvY29sIGV4dGVuc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgeWV0Lgot
ICAgICAgICAgICAgLy8gV2UgZG8gbm90IHNlbmQgU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhl
YWRlciBpbiBvdXIgcmVxdWVzdCwgdGh1cwotICAgICAgICAgICAgLy8gc2VydmVycyBzaG91bGQg
bm90IHJldHVybiB0aGlzIGhlYWRlciwgZWl0aGVyLgorICAgICAgICBpZiAoIW1fZXh0ZW5zaW9u
cy5wcm9jZXNzSGVhZGVyVmFsdWUoc2VydmVyV2ViU29ja2V0RXh0ZW5zaW9ucykpIHsKICAgICAg
ICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJFcnJvciBkdXJpbmcgV2ViU29ja2V0IGhhbmRzaGFr
ZTogU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlciBpcyBpbnZhbGlkIjsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKaW5kZXggMTJjMTg0MDE5YzJjYWM2N2RhOWZmMzQ5MmM0
N2I5YjcwMmFjZWFiNy4uZWM3YzgyYzgyOTBjNDY1ZTAwNTZkNTZkMTgwNDRkMjI4Mjc3ZWVhYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oCkBA
IC0zNSw4ICszNSwxMCBAQAogCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
U3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViU29ja2V0RXh0ZW5zaW9ucy5oIgogI2luY2x1ZGUgIldl
YlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2VS
ZXNwb25zZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtODUsNiArODcsOCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBXZWJTb2NrZXRI
YW5kc2hha2VSZXNwb25zZSYgc2VydmVySGFuZHNoYWtlUmVzcG9uc2UoKSBjb25zdDsKIAorICAg
IHZvaWQgYWRkRXh0ZW5zaW9uUHJvY2Vzc29yKFBhc3NPd25QdHI8V2ViU29ja2V0RXh0ZW5zaW9u
UHJvY2Vzc29yPik7CisKIHByaXZhdGU6CiAgICAgS1VSTCBodHRwVVJMRm9yQXV0aGVudGljYXRp
b25BbmRDb29raWVzKCkgY29uc3Q7CiAKQEAgLTExNiw2ICsxMjAsOCBAQCBwcml2YXRlOgogICAg
IC8vIEZvciBoeWJpLTEwIGhhbmRzaGFrZS4KICAgICBTdHJpbmcgbV9zZWNXZWJTb2NrZXRLZXk7
CiAgICAgU3RyaW5nIG1fZXhwZWN0ZWRBY2NlcHQ7CisKKyAgICBXZWJTb2NrZXRFeHRlbnNpb25z
IG1fZXh0ZW5zaW9uczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5j
cHAKaW5kZXggMmUwZGFkN2YwOWFjYWI4NzJmOGQ0NDU3MTRhZDQxZjZkMjhkNjRkYS4uZTYxZDJj
OWM2MGYwZTljZTQ1NGQyNTAwYmMzNDBmNWU5MTMwZTE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAKQEAg
LTg3LDcgKzg3LDEzIEBAIGNvbnN0IEhUVFBIZWFkZXJNYXAmIFdlYlNvY2tldEhhbmRzaGFrZVJl
c3BvbnNlOjpoZWFkZXJGaWVsZHMoKSBjb25zdAogCiB2b2lkIFdlYlNvY2tldEhhbmRzaGFrZVJl
c3BvbnNlOjphZGRIZWFkZXJGaWVsZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgdmFsdWUpCiB7Ci0gICAgbV9oZWFkZXJGaWVsZHMuYWRkKG5hbWUsIHZhbHVlKTsKKyAg
ICAvLyBTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgaGVhZGVyIG1heSBiZSBzcGxpdC4gSWYgdGhl
IHZhbHVlIGZvciBTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgYWxyZWFkeSBleGlzdHMsCisgICAg
Ly8gdGhleSBhcmUgY29ubmVjdGVkIHdpdGggY29tbW5hLgorICAgIEhUVFBIZWFkZXJNYXA6Oml0
ZXJhdG9yIGl0ZXJhdG9yID0gbV9oZWFkZXJGaWVsZHMuZmluZChuYW1lKTsKKyAgICBpZiAoaXRl
cmF0b3IgIT0gbV9oZWFkZXJGaWVsZHMuZW5kKCkgJiYgZXF1YWxJZ25vcmluZ0Nhc2UoaXRlcmF0
b3ItPmZpcnN0LCAic2VjLXdlYnNvY2tldC1leHRlbnNpb25zIikpCisgICAgICAgIG1faGVhZGVy
RmllbGRzLnNldChuYW1lLCBpdGVyYXRvci0+c2Vjb25kICsgIiwiICsgdmFsdWUpOworICAgIGVs
c2UKKyAgICAgICAgbV9oZWFkZXJGaWVsZHMuYWRkKG5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBX
ZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6Y2xlYXJIZWFkZXJGaWVsZHMoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cGkKaW5kZXggYzg1MDJmNTczYzQ1MTcwMTczNTQ4NWFmNDc1MjNlNzUx
Mjk0YzgzZC4uOTc1OWIzYTE5Njg3ZDY3Yjg3OWIyOGJlOTg2NjkzNGE2ZTAzMDY0OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXBpCkBAIC0xMTgsNiArMTE4LDcgQEAKICAgICAgICAgICAg
ICd0ZXN0cy9XZWJMYXllclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9XZWJQYWdlTmV3
U2VyaWFsaXplclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9XZWJQYWdlU2VyaWFsaXpl
clRlc3QuY3BwJywKKyAgICAgICAgICAgICd0ZXN0cy9XZWJTb2NrZXRFeHRlbnNpb25zVGVzdC5j
cHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1dlYlVSTFJlcXVlc3RUZXN0LmNwcCcsCiAgICAgICAg
ICAgICAndGVzdHMvV2ViVmlld1Rlc3QuY3BwJywKICAgICAgICAgXSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViU29ja2V0RXh0ZW5zaW9uc1Rlc3QuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJTb2NrZXRFeHRlbnNpb25zVGVzdC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYzUyNDAxNDU1NjA1OWZmMDdhNTQyNDVhYTkxMDk5YzgxMGQyNDNlZgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViU29ja2V0RXh0
ZW5zaW9uc1Rlc3QuY3BwCkBAIC0wLDAgKzEsMTgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaW5jbHVkZSAiV2ViU29ja2V0RXh0ZW5zaW9ucy5oIgorCisjaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgeworCitjbGFzcyBXZWJTb2NrZXRFeHRlbnNp
b25zVGVzdDsKKworY2xhc3MgTW9ja1dlYlNvY2tldEV4dGVuc2lvblByb2Nlc3NvciA6IHB1Ymxp
YyBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IgeworcHVibGljOgorICAgIE1vY2tXZWJTb2Nr
ZXRFeHRlbnNpb25Qcm9jZXNzb3IoY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJTb2NrZXRFeHRlbnNp
b25zVGVzdCogdGVzdCkKKyAgICAgICAgOiBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IobmFt
ZSkKKyAgICAgICAgLCBtX3Rlc3QodGVzdCkKKyAgICB7CisgICAgfQorICAgIHZpcnR1YWwgY29u
c3QgU3RyaW5nIGhhbmRzaGFrZVN0cmluZygpIHsgcmV0dXJuIGV4dGVuc2lvblRva2VuKCk7IH0K
KworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgcHJvY2Vzc1Jlc3BvbnNlSW50ZXJuYWwoY29u
c3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mKTsKKworICAgIFdlYlNvY2tldEV4dGVuc2lvbnNU
ZXN0KiBtX3Rlc3Q7Cit9OworCitjbGFzcyBXZWJTb2NrZXRFeHRlbnNpb25zVGVzdCA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0IHsKK3B1YmxpYzoKKyAgICBXZWJTb2NrZXRFeHRlbnNpb25zVGVzdCgp
CisgICAgeworICAgIH0KKworICAgIHZvaWQgU2V0VXAoKQorICAgIHsKKyAgICB9CisKKyAgICB2
b2lkIFRlYXJEb3duKCkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBhZGRNb2NrUHJvY2Vzc29y
KGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uVG9rZW4pCisgICAgeworICAgICAgICBtX2V4dGVuc2lv
bnMuYWRkUHJvY2Vzc29yKGFkb3B0UHRyKG5ldyBNb2NrV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vz
c29yKGV4dGVuc2lvblRva2VuLCB0aGlzKSkpOworCisgICAgfQorCisgICAgdm9pZCBhcHBlbmRS
ZXN1bHQoY29uc3QgU3RyaW5nJiBleHRlbnNpb25Ub2tlbiwgY29uc3QgSGFzaE1hcDxTdHJpbmcs
IFN0cmluZz4mIHBhcmFtZXRlcnMpCisgICAgeworICAgICAgICBtX3BhcnNlZEV4dGVuc2lvblRv
a2Vucy5hcHBlbmQoZXh0ZW5zaW9uVG9rZW4pOworICAgICAgICBtX3BhcnNlZFBhcmFtZXRlcnMu
YXBwZW5kKHBhcmFtZXRlcnMpOworICAgIH0KKworcHJvdGVjdGVkOgorICAgIFdlYlNvY2tldEV4
dGVuc2lvbnMgbV9leHRlbnNpb25zOworICAgIFZlY3RvcjxTdHJpbmc+IG1fcGFyc2VkRXh0ZW5z
aW9uVG9rZW5zOworICAgIFZlY3RvcjxIYXNoTWFwPFN0cmluZywgU3RyaW5nPiA+IG1fcGFyc2Vk
UGFyYW1ldGVyczsKK307CisKK2Jvb2wgTW9ja1dlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvcjo6
cHJvY2Vzc1Jlc3BvbnNlSW50ZXJuYWwoY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIHBh
cmFtZXRlcnMpCit7CisgICAgbV90ZXN0LT5hcHBlbmRSZXN1bHQoZXh0ZW5zaW9uVG9rZW4oKSwg
cGFyYW1ldGVycyk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1RFU1RfRihXZWJTb2NrZXRFeHRl
bnNpb25zVGVzdCwgVGVzdFNpbmdsZSkKK3sKKyAgICBhZGRNb2NrUHJvY2Vzc29yKCJkZWZsYXRl
LWZyYW1lIik7CisgICAgRVhQRUNUX1RSVUUobV9leHRlbnNpb25zLnByb2Nlc3NIZWFkZXJWYWx1
ZSgiZGVmbGF0ZS1mcmFtZSIpKTsKKyAgICBFWFBFQ1RfRVEoMVVMLCBtX3BhcnNlZEV4dGVuc2lv
blRva2Vucy5zaXplKCkpOworICAgIEVYUEVDVF9FUSgiZGVmbGF0ZS1mcmFtZSIsIG1fcGFyc2Vk
RXh0ZW5zaW9uVG9rZW5zWzBdKTsKKyAgICBFWFBFQ1RfRVEoMCwgbV9wYXJzZWRQYXJhbWV0ZXJz
WzBdLnNpemUoKSk7Cit9CisKK1RFU1RfRihXZWJTb2NrZXRFeHRlbnNpb25zVGVzdCwgVGVzdFBh
cmFtZXRlcnMpCit7CisgICAgYWRkTW9ja1Byb2Nlc3NvcigibXV4Iik7CisgICAgRVhQRUNUX1RS
VUUobV9leHRlbnNpb25zLnByb2Nlc3NIZWFkZXJWYWx1ZSgibXV4OyBtYXgtY2hhbm5lbHM9NDsg
Zmxvdy1jb250cm9sICAiKSk7CisgICAgRVhQRUNUX0VRKDFVTCwgbV9wYXJzZWRFeHRlbnNpb25U
b2tlbnMuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoIm11eCIsIG1fcGFyc2VkRXh0ZW5zaW9uVG9r
ZW5zWzBdKTsKKyAgICBFWFBFQ1RfRVEoMiwgbV9wYXJzZWRQYXJhbWV0ZXJzWzBdLnNpemUoKSk7
CisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46Oml0ZXJhdG9yIHBhcmFtZXRlciA9IG1fcGFy
c2VkUGFyYW1ldGVyc1swXS5maW5kKCJtYXgtY2hhbm5lbHMiKTsKKyAgICBFWFBFQ1RfVFJVRShw
YXJhbWV0ZXIgIT0gbV9wYXJzZWRQYXJhbWV0ZXJzWzBdLmVuZCgpKTsKKyAgICBFWFBFQ1RfRVEo
IjQiLCBwYXJhbWV0ZXItPnNlY29uZCk7CisgICAgcGFyYW1ldGVyID0gbV9wYXJzZWRQYXJhbWV0
ZXJzWzBdLmZpbmQoImZsb3ctY29udHJvbCIpOworICAgIEVYUEVDVF9UUlVFKHBhcmFtZXRlciAh
PSBtX3BhcnNlZFBhcmFtZXRlcnNbMF0uZW5kKCkpOworICAgIEVYUEVDVF9UUlVFKHBhcmFtZXRl
ci0+c2Vjb25kLmlzTnVsbCgpKTsKK30KKworVEVTVF9GKFdlYlNvY2tldEV4dGVuc2lvbnNUZXN0
LCBUZXN0TXVsdGlwbGUpCit7CisgICAgc3RydWN0IHsKKyAgICAgICAgU3RyaW5nIHRva2VuOwor
ICAgICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBwYXJhbWV0ZXJzOworICAgIH0gZXhwZWN0
ZWRbMl07CisgICAgZXhwZWN0ZWRbMF0udG9rZW4gPSAibXV4IjsKKyAgICBleHBlY3RlZFswXS5w
YXJhbWV0ZXJzLmFkZCgibWF4LWNoYW5uZWxzIiwgIjQiKTsKKyAgICBleHBlY3RlZFswXS5wYXJh
bWV0ZXJzLmFkZCgiZmxvdy1jb250cm9sIiwgU3RyaW5nKCkpOworICAgIGV4cGVjdGVkWzFdLnRv
a2VuID0gImRlZmxhdGUtZnJhbWUiOworCisgICAgYWRkTW9ja1Byb2Nlc3NvcigibXV4Iik7Cisg
ICAgYWRkTW9ja1Byb2Nlc3NvcigiZGVmbGF0ZS1mcmFtZSIpOworICAgIEVYUEVDVF9UUlVFKG1f
ZXh0ZW5zaW9ucy5wcm9jZXNzSGVhZGVyVmFsdWUoIm11eCA7ICBtYXgtY2hhbm5lbHMgPTQ7Zmxv
dy1jb250cm9sLCBkZWZsYXRlLWZyYW1lICAiKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzaXplb2YoZXhwZWN0ZWQpIC8gc2l6ZW9mKGV4cGVjdGVkWzBdKTsgKytpKSB7CisgICAgICAg
IEVYUEVDVF9FUShleHBlY3RlZFtpXS50b2tlbiwgbV9wYXJzZWRFeHRlbnNpb25Ub2tlbnNbaV0p
OworICAgICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgZXhwZWN0ZWRQYXJhbWV0ZXJzID0g
ZXhwZWN0ZWRbaV0ucGFyYW1ldGVyczsKKyAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4m
IHBhcnNlZFBhcmFtZXRlcnMgPSBtX3BhcnNlZFBhcmFtZXRlcnNbaV07CisgICAgICAgIEVYUEVD
VF9FUShleHBlY3RlZFtpXS5wYXJhbWV0ZXJzLnNpemUoKSwgbV9wYXJzZWRQYXJhbWV0ZXJzW2ld
LnNpemUoKSk7CisgICAgICAgIGZvciAoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46Oml0ZXJhdG9y
IGl0ZXJhdG9yID0gZXhwZWN0ZWRQYXJhbWV0ZXJzLmJlZ2luKCk7IGl0ZXJhdG9yICE9IGV4cGVj
dGVkUGFyYW1ldGVycy5lbmQoKTsgKytpdGVyYXRvcikgeworICAgICAgICAgICAgSGFzaE1hcDxT
dHJpbmcsIFN0cmluZz46Oml0ZXJhdG9yIHBhcnNlZCA9IHBhcnNlZFBhcmFtZXRlcnMuZmluZChp
dGVyYXRvci0+Zmlyc3QpOworICAgICAgICAgICAgRVhQRUNUX1RSVUUocGFyc2VkICE9IHBhcnNl
ZFBhcmFtZXRlcnMuZW5kKCkpOworICAgICAgICAgICAgaWYgKGl0ZXJhdG9yLT5zZWNvbmQuaXNO
dWxsKCkpCisgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUocGFyc2VkLT5zZWNvbmQuaXNOdWxs
KCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIEVYUEVDVF9FUShpdGVyYXRv
ci0+c2Vjb25kLCBwYXJzZWQtPnNlY29uZCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK1RFU1Rf
RihXZWJTb2NrZXRFeHRlbnNpb25zVGVzdCwgVGVzdFF1b3RlZFN0cmluZykKK3sKKyAgICBhZGRN
b2NrUHJvY2Vzc29yKCJ4LWZvbyIpOworICAgIEVYUEVDVF9UUlVFKG1fZXh0ZW5zaW9ucy5wcm9j
ZXNzSGVhZGVyVmFsdWUoIngtZm9vOyBwYXJhbTE9XCJxdW90ZWQgc3RyaW5nXCI7IHBhcmFtMj1c
IlxcXCJxdW90ZWRcXFwiIHN0cmluZ1xcXFxcIiIpKTsKKyAgICBFWFBFQ1RfRVEoMiwgbV9wYXJz
ZWRQYXJhbWV0ZXJzWzBdLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKCJxdW90ZWQgc3RyaW5nIiwg
bV9wYXJzZWRQYXJhbWV0ZXJzWzBdLmdldCgicGFyYW0xIikpOworICAgIEVYUEVDVF9FUSgiXCJx
dW90ZWRcIiBzdHJpbmdcXCIsIG1fcGFyc2VkUGFyYW1ldGVyc1swXS5nZXQoInBhcmFtMiIpKTsK
K30KKworVEVTVF9GKFdlYlNvY2tldEV4dGVuc2lvbnNUZXN0LCBUZXN0SW52YWxpZCkKK3sKKyAg
ICBjb25zdCBjaGFyKiBpbnB1dHNbXSA9IHsKKyAgICAgICAgIlwieC1mb29cIiIsCisgICAgICAg
ICJ4LWJheiIsCisgICAgICAgICJ4LWZvb1xcIiwKKyAgICAgICAgIngtKGZvbykiLAorICAgICAg
ICAieC1mb287ICIsCisgICAgICAgICJ4LWZvbzsgYmFyPSIsCisgICAgICAgICJ4LWZvbzsgYmFy
PXggeSIsCisgICAgICAgICJ4LWZvbzsgYmFyPVwibWlzbWF0Y2ggcXVvdGUiLAorICAgICAgICAi
eC1mb287IGJhcj1cIlxcXCIiLAorICAgICAgICAieC1mb287IFwiYmFyXCI9YmF6IiwKKyAgICAg
ICAgIngtZm9vIHgtYmFyIiwKKyAgICAgICAgIngtZm9vLCB4LWJheiIKKyAgICAgICAgIngtZm9v
LCAiLAorICAgIH07CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplb2YoaW5wdXRzKSAv
IHNpemVvZihpbnB1dHNbMF0pOyArK2kpIHsKKyAgICAgICAgbV9leHRlbnNpb25zLnJlc2V0KCk7
CisgICAgICAgIGFkZE1vY2tQcm9jZXNzb3IoIngtZm9vIik7CisgICAgICAgIGFkZE1vY2tQcm9j
ZXNzb3IoIngtYmFyIik7CisgICAgICAgIEVYUEVDVF9GQUxTRShtX2V4dGVuc2lvbnMucHJvY2Vz
c0hlYWRlclZhbHVlKGlucHV0c1tpXSkpOworICAgIH0KK30KKworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126036</attachid>
            <date>2012-02-08 02:32:15 -0800</date>
            <delta_ts>2012-02-08 16:36:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78079-20120208193214.patch</filename>
            <type>text/plain</type>
            <size>37534</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3MDM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjVjMjQ0YTc2ZGYyMTU0
ZjVjZjU4NzU4YzQzNzUxY2U0NmNhMDIzYS4uNDQ1YzRhM2MzZjdjZWJlMjRkNGI1YzU4MzcwMDc1
NjRhMzJlZTI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEyLTAyLTA4ICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgV2ViU29j
a2V0IGV4dGVuc2lvbiBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03ODA3OQorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBXZWJT
b2NrZXRFeHRlbnNpb25zIGNsYXNzLCB3aGljaCBjcmVhdGVzIGNsaWVudCdzCisgICAgICAgIFNl
Yy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIgZmllbGQgYW5kIHBhcnNlcyB0aGUgc2VydmVy
IHJlc3BvbnNlLgorICAgICAgICBUaGlzIHBhdGNoIGRvZXNuJ3QgYWRkIGFueSBhY3R1YWwgZXh0
ZW5zaW9uLCBzbyBubyBjaGFuZ2VzIGluIGJlaGF2aW9yLgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBleGNlcHQgZm9yIGNocm9t
aXVtIHBvcnQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkZWQgV2ViU29ja2V0RXh0
ZW5zaW9ucy4oY3BwfGgpLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IERpdHRvLgor
ICAgICAgICAqIFRhcmdldC5wcmk6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUuZ3lwaTogRGl0
dG8uCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6IERpdHRvLgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisgICAgICAg
ICogd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25zLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKEV4dGVuc2lvblBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25QYXJzZXI6OkV4dGVuc2lvblBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25QYXJzZXI6OmN1cnJlbnRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25Q
YXJzZXI6OmZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvblBhcnNlcjo6cGFy
c2VkU3VjY2Vzc2Z1bGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvblBhcnNlcjo6Y29u
c3VtZVNwYWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25QYXJzZXI6OmlzQ29udHJv
bCk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25QYXJzZXI6OmlzU2VwYXJhdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvblBhcnNlcjo6Y29uc3VtZVRva2VuKToKKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvblBhcnNlcjo6Y29uc3VtZVF1b3RlZFN0cmluZyk6CisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25QYXJzZXI6OmNvbnN1bWVDaGFyYWN0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9uczo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0RXh0ZW5zaW9uczo6YWRkUHJvY2Vzc29yKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldEV4dGVuc2lvbnM6OmZvcm1hdEFzSGVhZGVyVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0RXh0ZW5zaW9uczo6cHJvY2Vzc0hlYWRlclZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlNvY2tldEV4dGVuc2lvbnM6OmZhaWx1cmVSZWFzb24pOgorICAgICAgICAqIHdl
YnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvcjo6fldlYlNvY2tldEV4dGVuc2lvblByb2Nl
c3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I6OmV4
dGVuc2lvblRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvblByb2Nl
c3Nvcjo6ZmFpbHVyZVJlYXNvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNp
b25Qcm9jZXNzb3I6OldlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvcik6CisgICAgICAgIChXZWJT
b2NrZXRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvbnM6
OldlYlNvY2tldEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5z
aW9uczo6RXh0ZW5zaW9uOjpFeHRlbnNpb24pOgorICAgICAgICAoRXh0ZW5zaW9uKToKKyAgICAg
ICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJTb2NrZXRIYW5kc2hha2U6OmNsaWVudEhhbmRzaGFrZU1lc3NhZ2UpOiBBZGRzIGV4dGVu
c2lvbiBoZWFkZXIgdmFsdWUgaWYgZXhpc3RzLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
SGFuZHNoYWtlOjpjbGllbnRIYW5kc2hha2VSZXF1ZXN0KTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6OnJlc2V0KTogUmVzZXRzIFdlYlNvY2tldEV4dGVuc2lv
bnMgb2JqZWN0LgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpzZXJ2ZXJI
YW5kc2hha2VSZXNwb25zZSk6IFJlbW92ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRI
YW5kc2hha2U6OmFkZEV4dGVuc2lvblByb2Nlc3Nvcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkSFRUUEhlYWRlcnMpOiBQYXJzZXMgYW5kIGNoZWNr
cyBldmVyeSB0aW1lIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIgYXBwZWFycy4KKyAg
ICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZTo6Y2hlY2tSZXNwb25zZUhlYWRlcnMp
OiBSZW1vdmVkIHRoZSBjaGVjayBvZiBTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMuCisgICAgICAg
ICogd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaDogUmVtb3ZlZCBzZXJ2ZXJIYW5kc2hh
a2VSZXNwb25zZSgpLgorCiAyMDEyLTAyLTA3ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBSZW5hbWUgW0hhc092ZXJyaWRpbmdOYW1lR2V0dGVyXSBhdHRy
aWJ1dGUgdG8gW0N1c3RvbU5hbWVkR2V0dGVyXSBhdHRyaWJ1dGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKaW5kZXggYTUzZmQxZWViYzNhOGFhYTkwYjEyM2MyNWRkYjBlZjlhMzFhYjFmOS4uNjQ1
MTdhZTQwMGI4MmI0MWFiZjc4NDZkZGI2M2Q5ZDZhMmU1MWU1ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMi0wMi0wOCAgS2VuaWNoaSBJc2hpYmFzaGkg
IDxiYXNoaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIFdlYlNvY2tldCBleHRlbnNpb24g
c3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzgwNzkKKworICAgICAgICBBZGQgc29tZSB0ZXN0cyB3aGljaCBjaGVjayBXZWJTb2NrZXRFeHRl
bnNpb25zOjpwcm9jZXNzSGVhZGVyVmFsdWUoKQorICAgICAgICBwYXJzZXMgdGhlIGdpdmVuIHJl
c3BvbnNlIGNvcnJlY3RseS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYktpdC5neXBpOgorICAgICAgICAqIHRlc3RzL1dlYlNvY2tldEV4dGVu
c2lvbnNUZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKE1vY2tX
ZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1dlYlNv
Y2tldEV4dGVuc2lvblByb2Nlc3Nvcjo6TW9ja1dlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvcik6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yOjpoYW5k
c2hha2VTdHJpbmcpOgorICAgICAgICAoV2ViU29ja2V0RXh0ZW5zaW9uc1Rlc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9uc1Rlc3Q6OldlYlNvY2tldEV4dGVuc2lvbnNU
ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvbnNUZXN0OjpTZXRVcCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25zVGVzdDo6VGVhckRvd24pOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9uc1Rlc3Q6OmFkZE1vY2tQcm9jZXNz
b3IpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9uc1Rlc3Q6OmFwcGVuZFJl
c3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29y
Ojpwcm9jZXNzUmVzcG9uc2VJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpURVNUX0YpOgor
CiAyMDEyLTAyLTA3ICBHcmVnZyBUYXZhcmVzICA8Z21hbkBnb29nbGUuY29tPgogCiAgICAgICAg
IFBsdW1iIHRocm91Z2ggd2ViR0xFcnJvcnNUb0NvbnNvbGVFbmFibGUgaW4gV2ViU2V0dGluZ3MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZGQwNGNmNmZiN2FmMjIyMTM0NjM4NTZhYjY2YzNkMjFm
YzQ3Y2FjYS4uNjM2ZjZlZDQ1MDhlNzkwNzQ2Zjc4NGQxMjU3MmQ1ZjlhYjQxNjUzYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKQEAgLTIwMzgsNiArMjAzOCw3IEBAIElGIChFTkFCTEVfV0VCX1NPQ0tF
VFMpCiAgICAgICAgIHdlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRX
cmFwcGVyLmNwcAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKICAgICAgICAgd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tl
dEV4dGVuc2lvbnMuY3BwCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNw
cAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwCiAgICAg
ICAgIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQppbmRleCBkZmU0OTMxMWFiNmI0NDYzODkyOGUxMzdhYzg3YTE1YWQ3
MDc0OWE1Li42MDEzNDYwZjM2NDZkM2Y1M2IxN2ZiNzQzNGRlMTllZTM4NjYyOTMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQzMDMsNiArNDMwMyw4IEBAIHdlYmNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgg
XAogCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaCBcCisJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0
cy9XZWJTb2NrZXRFeHRlbnNpb25zLmNwcCBcCisJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXRFeHRlbnNpb25zLmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0SGFuZHNoYWtlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRI
YW5kc2hha2UuaCBcCiAJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hh
a2VSZXF1ZXN0LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIv
U291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCA4MTFkMjQ5ZDQxNDE0YWIyOThmNDdkMDZh
ZmM3MDlmOTgzYTExMTc2Li5lNTA1NjA1NjM1ZDhlYjZjY2I2OTI2ZmE0OTE5NWIxZmIzNGQ3NjU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkKQEAgLTM2NTUsNiArMzY1NSw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVO
QUJMRV9XRUJfU09DS0VUUz0xKSB7CiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0LmggXAog
ICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCBcCiAgICAgICAgIHdlYnNvY2tl
dHMvV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIFwKKyAgICAgICAgd2Vic29ja2V0cy9XZWJTb2Nr
ZXRFeHRlbnNpb25zLmggXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5o
IFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmggXAogICAg
ICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmggXApAQCAtMzY2Myw2
ICszNjY0LDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dFQl9TT0NLRVRTPTEpIHsKICAg
ICBTT1VSQ0VTICs9IFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIFwKICAgICAg
ICAgd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBcCisgICAgICAgIHdlYnNvY2tldHMv
V2ViU29ja2V0RXh0ZW5zaW9ucy5jcHAgXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhh
bmRzaGFrZS5jcHAgXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVl
c3QuY3BwIFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5j
cHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGZmMjQ4NTViMGFlZDRiZWNhNGUzZmUxYzVlNDA2MmM0
ZGY5ZWVlNWEuLmU5Y2U3YzBlMTI2OTQ2YmVlZTZhZjgzODYzZGE5ODBjNzQ1ZmFmYWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKQEAgLTQ3ODksNiArNDc4OSw4IEBACiAgICAgICAgICAgICAnd2Vic29ja2V0
cy9XZWJTb2NrZXRDaGFubmVsLmNwcCcsCiAgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsLmgnLAogICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENs
aWVudC5oJywKKyAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbnMuY3Bw
JywKKyAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbnMuaCcsCiAgICAg
ICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwJywKICAgICAgICAgICAg
ICd3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oJywKICAgICAgICAgICAgICd3ZWJzb2Nr
ZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggMGY0ZGM0N2M5ZmI1M2FkMmI3ZDgzMjk3
Y2JmNzUzMWIwODcyYjIyNC4uZWExMGUwODI0OTEyMzI4MjFjZjI0OTZlNjQyNjRhMjdiZDJjMzgy
ZCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAg
LTcyODk0LDYgKzcyODk0LDE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXHdlYnNvY2tldHNcV2ViU29ja2V0RXh0ZW5zaW9ucy5jcHAiCisJCQkJ
PgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHdlYnNvY2tldHNc
V2ViU29ja2V0RXh0ZW5zaW9ucy5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJ
UmVsYXRpdmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFdlYlNvY2tldEhhbmRzaGFrZS5jcHAiCiAJCQkJ
PgogCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGJlMzBhNWNhOTkyNWM0NmViZTY0YzU2OGZiNmRkNjFjZTg5NzU0
N2QuLjIxODcxNmM1MDcwYmI5ZWMzYjFlNDcxOTJmYjIyODAwMzdlMmU2NDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzNjUs
NiArMTM2NSw4IEBACiAJCTRBNkU5RkM3MTNDMTdENTcwMDQ2QTdGOCAvKiBGb250RmVhdHVyZVNl
dHRpbmdzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRBNkU5RkM1MTNDMTdENTcwMDQ2QTdGOCAvKiBGb250RmVhdHVyZVNldHRpbmdzLmNwcCAqLzsg
fTsKIAkJNEE2RTlGQzgxM0MxN0Q1NzAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlU2V0dGluZ3MuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBNkU5RkM2MTND
MTdENTcwMDQ2QTdGOCAvKiBGb250RmVhdHVyZVNldHRpbmdzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEE4Qzk2RUIwQkU2OTAzMjAwNEVFRkYw
IC8qIEZyYW1lU2VsZWN0aW9uTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNEE4Qzk2RUEwQkU2OTAzMjAwNEVFRkYwIC8qIEZyYW1lU2VsZWN0aW9u
TWFjLm1tICovOyB9OworCQk0QTk1N0YwNjE0RTI0MTJBMDA0OURCRkIgLyogV2ViU29ja2V0RXh0
ZW5zaW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0QTk1N0YwMzE0RTI0MTEwMDA0OURCRkIgLyogV2ViU29ja2V0RXh0ZW5zaW9ucy5jcHAgKi87
IH07CisJCTRBOTU3RjA3MTRFMjQxMzAwMDQ5REJGQiAvKiBXZWJTb2NrZXRFeHRlbnNpb25zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTk1N0YwNDE0
RTI0MTEwMDA0OURCRkIgLyogV2ViU29ja2V0RXh0ZW5zaW9ucy5oICovOyB9OwogCQk0QUJERkYw
QjE0REJFMzg1MDA0RDExN0QgLyogSFRNTFNoYWRvd0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEFCREZGMDcxNERCRTMxMjAwNEQxMTdE
IC8qIEhUTUxTaGFkb3dFbGVtZW50LmNwcCAqLzsgfTsKIAkJNEFCREZGMEMxNERCRTM4NTAwNEQx
MTdEIC8qIEhUTUxTaGFkb3dFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0QUJERkYwODE0REJFMzEyMDA0RDExN0QgLyogSFRNTFNoYWRvd0Vs
ZW1lbnQuaCAqLzsgfTsKIAkJNEFDQkMwQkUxMjcxM0NCRDAwOTRGOUIyIC8qIENsYXNzTGlzdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QUNCQzBC
QzEyNzEzQ0JEMDA5NEY5QjIgLyogQ2xhc3NMaXN0LmNwcCAqLzsgfTsKQEAgLTgyMDIsNiArODIw
NCw4IEBACiAJCTRBNkU5RkM1MTNDMTdENTcwMDQ2QTdGOCAvKiBGb250RmVhdHVyZVNldHRpbmdz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRGZWF0dXJlU2V0
dGluZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTZFOUZDNjEzQzE3RDU3
MDA0NkE3RjggLyogRm9udEZlYXR1cmVTZXR0aW5ncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgZmlsZUVuY29kaW5nID0g
NDsgcGF0aCA9IEZvbnRGZWF0dXJlU2V0dGluZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNEE4Qzk2RUEwQkU2OTAzMjAwNEVFRkYwIC8qIEZyYW1lU2VsZWN0aW9uTWFjLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEZyYW1lU2VsZWN0aW9uTWFj
Lm1tOyBwYXRoID0gbWFjL0ZyYW1lU2VsZWN0aW9uTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0QTk1N0YwMzE0RTI0MTEwMDA0OURCRkIgLyogV2ViU29ja2V0RXh0ZW5zaW9u
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTb2NrZXRFeHRl
bnNpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEE5NTdGMDQxNEUyNDEx
MDAwNDlEQkZCIC8qIFdlYlNvY2tldEV4dGVuc2lvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViU29ja2V0RXh0ZW5zaW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0QUJERkYwNzE0REJFMzEyMDA0RDExN0QgLyogSFRNTFNoYWRvd0VsZW1lbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTFNoYWRvd0VsZW1lbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QUJERkYwODE0REJFMzEyMDA0RDEx
N0QgLyogSFRNTFNoYWRvd0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSFRNTFNoYWRvd0VsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEFC
REZGMDkxNERCRTMxMjAwNEQxMTdEIC8qIEhUTUxTaGFkb3dFbGVtZW50LmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBIVE1MU2hhZG93RWxlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xNDc1Niw2ICsxNDc2MCw4IEBACiAJCQkJNTEwRDRBNDcxMDMxNzdBMjAwNDlF
QTU0IC8qIFdlYlNvY2tldENoYW5uZWwuY3BwICovLAogCQkJCTUxMEQ0QTQ4MTAzMTc3QTIwMDQ5
RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmggKi8sCiAJCQkJNTEwRDRBNDkxMDMxNzdBMjAwNDlF
QTU0IC8qIFdlYlNvY2tldENoYW5uZWxDbGllbnQuaCAqLywKKwkJCQk0QTk1N0YwMzE0RTI0MTEw
MDA0OURCRkIgLyogV2ViU29ja2V0RXh0ZW5zaW9ucy5jcHAgKi8sCisJCQkJNEE5NTdGMDQxNEUy
NDExMDAwNDlEQkZCIC8qIFdlYlNvY2tldEV4dGVuc2lvbnMuaCAqLywKIAkJCQk1MUFCQUU0MjEw
NDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmNwcCAqLywKIAkJCQk1MUFCQUU0
MzEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmggKi8sCiAJCQkJNzYzN0M1
NDAxMTJFN0I3NDAwM0Q2Q0RDIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwICovLApA
QCAtMjQxNTgsNiArMjQxNjQsNyBAQAogCQkJCTFBQUFEREU0MTREQzhDOEYwMEFGNjRCMyAvKiBT
Y3JvbGxpbmdUcmVlTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBQURERTkxNERDOERGODAw
QUY2NEIzIC8qIFNjcm9sbGluZ1RyZWVOb2RlTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTU0
ODU4MDE0RTAyRDUxMDA2QUUwNUEgLyogSW5zcGVjdG9ySGlzdG9yeS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNEE5NTdGMDcxNEUyNDEzMDAwNDlEQkZCIC8qIFdlYlNvY2tldEV4dGVuc2lvbnMuaCBp
biBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpAQCAtMjcwOTYsNiArMjcxMDMsNyBAQAogCQkJCTFBQUFEREU4MTREQzhE
RjgwMEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlTm9kZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTdBNTQ4NTdGMTRFMDJENTEwMDZBRTA1QSAvKiBJbnNwZWN0b3JIaXN0b3J5LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUNEQUE4RDBBMTRENzFCMkUwMDYxRUE2MCAvKiBQbGF0Zm9ybUNsb2NrQ00u
bW0gaW4gU291cmNlcyAqLywKKwkJCQk0QTk1N0YwNjE0RTI0MTJBMDA0OURCRkIgLyogV2ViU29j
a2V0RXh0ZW5zaW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbnMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyNDEzMWYyZGJm
OTY5YTlmZGQ4YjUwNmU1Mzg0MThjZTNiMTljYzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbnMuY3BwCkBAIC0wLDAgKzEsMjQx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKworI2lu
Y2x1ZGUgIldlYlNvY2tldEV4dGVuc2lvbnMuaCIKKworI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nSGFzaC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEV4dGVu
c2lvblBhcnNlciB7CitwdWJsaWM6CisgICAgRXh0ZW5zaW9uUGFyc2VyKGNvbnN0IGNoYXIqIHN0
YXJ0LCBjb25zdCBjaGFyKiBlbmQpCisgICAgICAgIDogbV9jdXJyZW50KHN0YXJ0KQorICAgICAg
ICAsIG1fZW5kKGVuZCkKKyAgICB7CisgICAgfQorICAgIGJvb2wgZmluaXNoZWQoKTsKKyAgICBi
b29sIHBhcnNlZFN1Y2Nlc3NmdWxseSgpOworICAgIGJvb2wgY29uc3VtZVRva2VuKCk7CisgICAg
Ym9vbCBjb25zdW1lUXVvdGVkU3RyaW5nKCk7CisgICAgYm9vbCBjb25zdW1lQ2hhcmFjdGVyKGNo
YXIpOworICAgIGNvbnN0IFN0cmluZyYgY3VycmVudFRva2VuKCkgeyByZXR1cm4gbV9jdXJyZW50
VG9rZW47IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGNvbnN1bWVTcGFjZXMoKTsKKyAgICBib29s
IGlzQ29udHJvbChjaGFyKTsKKyAgICBib29sIGlzU2VwYXJhdG9yKGNoYXIpOworCisgICAgY29u
c3QgY2hhciogbV9jdXJyZW50OworICAgIGNvbnN0IGNoYXIqIG1fZW5kOworICAgIFN0cmluZyBt
X2N1cnJlbnRUb2tlbjsKK307CisKK2Jvb2wgRXh0ZW5zaW9uUGFyc2VyOjpmaW5pc2hlZCgpCit7
CisgICAgcmV0dXJuIG1fY3VycmVudCA+PSBtX2VuZDsKK30KKworYm9vbCBFeHRlbnNpb25QYXJz
ZXI6OnBhcnNlZFN1Y2Nlc3NmdWxseSgpCit7CisgICAgcmV0dXJuIG1fY3VycmVudCA9PSBtX2Vu
ZDsKK30KKworLy8gVGhlc2UgZnVuY3Rpb25zIGJhc2ljYWxseSBmb2xsb3cgdGhlIGdyYW1tZXIg
ZGVmaW5lZCBpbiBTZWN0aW9uIDIuMiBvZiBSRkMgMjYxNi4KKwordm9pZCBFeHRlbnNpb25QYXJz
ZXI6OmNvbnN1bWVTcGFjZXMoKQoreworICAgIHdoaWxlIChtX2N1cnJlbnQgPCBtX2VuZCAmJiAo
Km1fY3VycmVudCA9PSAnICcgfHwgKm1fY3VycmVudCA9PSAnXHQnKSkKKyAgICAgICAgKyttX2N1
cnJlbnQ7Cit9CisKK2Jvb2wgRXh0ZW5zaW9uUGFyc2VyOjppc0NvbnRyb2woY2hhciBjaGFyYWN0
ZXIpCit7CisgICAgcmV0dXJuIGNoYXJhY3RlciA8PSAzMSB8fCBjaGFyYWN0ZXIgPT0gMTI3Owor
fQorCitib29sIEV4dGVuc2lvblBhcnNlcjo6aXNTZXBhcmF0b3IoY2hhciBjaGFyYWN0ZXIpCit7
CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHNlcGFyYXRvckNoYXJhY3RlcnMgPSAiKCk8PkAsOzpc
XFwiL1tdPz17fSBcdCI7CisgICAgZm9yIChjb25zdCBjaGFyKiBjdXJyZW50ID0gc2VwYXJhdG9y
Q2hhcmFjdGVyczsgKmN1cnJlbnQ7ICsrY3VycmVudCkgeworICAgICAgICBpZiAoKmN1cnJlbnQg
PT0gY2hhcmFjdGVyKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVy
biBmYWxzZTsKK30KKworYm9vbCBFeHRlbnNpb25QYXJzZXI6OmNvbnN1bWVUb2tlbigpCit7Cisg
ICAgY29uc3VtZVNwYWNlcygpOworICAgIGNvbnN0IGNoYXIqIHN0YXJ0ID0gbV9jdXJyZW50Owor
ICAgIHdoaWxlIChtX2N1cnJlbnQgPCBtX2VuZCAmJiAhaXNDb250cm9sKCptX2N1cnJlbnQpICYm
ICFpc1NlcGFyYXRvcigqbV9jdXJyZW50KSkKKyAgICAgICAgKyttX2N1cnJlbnQ7CisgICAgaWYg
KHN0YXJ0IDwgbV9jdXJyZW50KSB7CisgICAgICAgIG1fY3VycmVudFRva2VuID0gU3RyaW5nKHN0
YXJ0LCBtX2N1cnJlbnQgLSBzdGFydCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRXh0ZW5zaW9uUGFyc2VyOjpjb25zdW1lUXVvdGVk
U3RyaW5nKCkKK3sKKyAgICBjb25zdW1lU3BhY2VzKCk7CisgICAgaWYgKG1fY3VycmVudCA+PSBt
X2VuZCB8fCAqbV9jdXJyZW50ICE9ICciJykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFN0
cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICArK21fY3VycmVudDsKKyAgICB3aGlsZSAobV9jdXJy
ZW50IDwgbV9lbmQgJiYgKm1fY3VycmVudCAhPSAnIicpIHsKKyAgICAgICAgaWYgKCptX2N1cnJl
bnQgPT0gJ1xcJyAmJiArK21fY3VycmVudCA+PSBtX2VuZCkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKm1fY3VycmVudCk7CisgICAgICAgICsrbV9j
dXJyZW50OworICAgIH0KKyAgICBpZiAobV9jdXJyZW50ID49IG1fZW5kIHx8ICptX2N1cnJlbnQg
IT0gJyInKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9jdXJyZW50VG9rZW4gPSBidWls
ZGVyLnRvU3RyaW5nKCk7CisgICAgKyttX2N1cnJlbnQ7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2Jvb2wgRXh0ZW5zaW9uUGFyc2VyOjpjb25zdW1lQ2hhcmFjdGVyKGNoYXIgY2hhcmFjdGVyKQor
eworICAgIGNvbnN1bWVTcGFjZXMoKTsKKyAgICBpZiAobV9jdXJyZW50IDwgbV9lbmQgJiYgKm1f
Y3VycmVudCA9PSBjaGFyYWN0ZXIpIHsKKyAgICAgICAgKyttX2N1cnJlbnQ7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2ViU29ja2V0
RXh0ZW5zaW9uczo6cmVzZXQoKQoreworICAgIG1fZXh0ZW5zaW9ucy5jbGVhcigpOworfQorCit2
b2lkIFdlYlNvY2tldEV4dGVuc2lvbnM6OmFkZFByb2Nlc3NvcihQYXNzT3duUHRyPFdlYlNvY2tl
dEV4dGVuc2lvblByb2Nlc3Nvcj4gcHJvY2Vzc29yKQoreworICAgIG1fZXh0ZW5zaW9ucy5hcHBl
bmQoYWRvcHRQdHIobmV3IEV4dGVuc2lvbihwcm9jZXNzb3IpKSk7Cit9CisKK2NvbnN0IFN0cmlu
ZyBXZWJTb2NrZXRFeHRlbnNpb25zOjpmb3JtYXRBc0hlYWRlclZhbHVlKCkgY29uc3QKK3sKKyAg
ICBzaXplX3QgbnVtRXh0ZW5zaW9ucyA9IG1fZXh0ZW5zaW9ucy5zaXplKCk7CisgICAgaWYgKCFu
dW1FeHRlbnNpb25zKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBTdHJpbmdCdWls
ZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQobV9leHRlbnNpb25zWzBdLT5tX3Byb2Nl
c3Nvci0+aGFuZHNoYWtlU3RyaW5nKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgbnVt
RXh0ZW5zaW9uczsgKytpKSB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIsICIpOworICAgICAg
ICBidWlsZGVyLmFwcGVuZChtX2V4dGVuc2lvbnNbaV0tPm1fcHJvY2Vzc29yLT5oYW5kc2hha2VT
dHJpbmcoKSk7CisgICAgfQorICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK2Jv
b2wgV2ViU29ja2V0RXh0ZW5zaW9uczo6cHJvY2Vzc0hlYWRlclZhbHVlKGNvbnN0IFN0cmluZyYg
aGVhZGVyVmFsdWUpCit7CisgICAgaWYgKCFoZWFkZXJWYWx1ZS5sZW5ndGgoKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICAvLyBJZiB3ZSBkb24ndCBzZW5kIFNlYy1XZWJTb2NrZXQtRXh0
ZW5zaW9ucyBoZWFkZXIsIHRoZSBzZXJ2ZXIgc2hvdWxkIG5vdCByZXR1cm4gdGhlIGhlYWRlcgor
ICAgIGlmICghbV9leHRlbnNpb25zLnNpemUoKSkgeworICAgICAgICBtX2ZhaWx1cmVSZWFzb24g
PSAiUmVjZWl2ZWQgdW5leHBlY3RlZCBTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgaGVhZGVyIjsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGNvbnN0IENTdHJpbmcgaGVhZGVy
VmFsdWVEYXRhID0gaGVhZGVyVmFsdWUudXRmOCgpOworICAgIEV4dGVuc2lvblBhcnNlciBwYXJz
ZXIoaGVhZGVyVmFsdWVEYXRhLmRhdGEoKSwgaGVhZGVyVmFsdWVEYXRhLmRhdGEoKSArIGhlYWRl
clZhbHVlRGF0YS5sZW5ndGgoKSk7CisKKyAgICB3aGlsZSAoIXBhcnNlci5maW5pc2hlZCgpKSB7
CisgICAgICAgIC8vIFBhcnNlIGV4dGVuc2lvbi10b2tlbgorICAgICAgICBpZiAoIXBhcnNlci5j
b25zdW1lVG9rZW4oKSkgeworICAgICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gIlNlYy1XZWJT
b2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIgaXMgaW52YWxpZCI7CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgU3RyaW5nIGV4dGVuc2lvblRva2VuID0gcGFyc2Vy
LmN1cnJlbnRUb2tlbigpOworCisgICAgICAgIC8vIFBhcnNlIGV4dGVuc2lvbi1wYXJhbWV0ZXJz
IGlmIGV4aXN0cworICAgICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBleHRlbnNpb25QYXJh
bWV0ZXJzOworICAgICAgICB3aGlsZSAocGFyc2VyLmNvbnN1bWVDaGFyYWN0ZXIoJzsnKSkgewor
ICAgICAgICAgICAgaWYgKCFwYXJzZXIuY29uc3VtZVRva2VuKCkpIHsKKyAgICAgICAgICAgICAg
ICBtX2ZhaWx1cmVSZWFzb24gPSAiU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlciBpcyBp
bnZhbGlkIjsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIFN0cmluZyBwYXJhbWV0ZXJUb2tlbiA9IHBhcnNlci5jdXJyZW50VG9rZW4o
KTsKKyAgICAgICAgICAgIGlmIChwYXJzZXIuY29uc3VtZUNoYXJhY3RlcignPScpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKHBhcnNlci5jb25zdW1lUXVvdGVkU3RyaW5nKCkgfHwgcGFyc2VyLmNv
bnN1bWVUb2tlbigpKQorICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25QYXJhbWV0ZXJzLmFk
ZChwYXJhbWV0ZXJUb2tlbiwgcGFyc2VyLmN1cnJlbnRUb2tlbigpKTsKKyAgICAgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gIlNlYy1XZWJT
b2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIgaXMgaW52YWxpZCI7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgICAgICBleHRlbnNpb25QYXJhbWV0ZXJzLmFkZChwYXJhbWV0ZXJUb2tlbiwgU3Ry
aW5nKCkpOworICAgICAgICB9CisgICAgICAgIGlmICghcGFyc2VyLmZpbmlzaGVkKCkgJiYgIXBh
cnNlci5jb25zdW1lQ2hhcmFjdGVyKCcsJykpIHsKKyAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNv
biA9ICJTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgaGVhZGVyIGlzIGludmFsaWQiOworICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgc2l6ZV90IGluZGV4Owor
ICAgICAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBtX2V4dGVuc2lvbnMuc2l6ZSgpOyArK2lu
ZGV4KSB7CisgICAgICAgICAgICBFeHRlbnNpb24qIGV4dGVuc2lvbiA9IG1fZXh0ZW5zaW9uc1tp
bmRleF0uZ2V0KCk7CisgICAgICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZXh0ZW5zaW9u
VG9rZW4sIGV4dGVuc2lvbi0+bV9wcm9jZXNzb3ItPmV4dGVuc2lvblRva2VuKCkpICYmICFleHRl
bnNpb24tPm1fcmVzcG9uc2VIYW5kbGVkKSB7CisgICAgICAgICAgICAgICAgZXh0ZW5zaW9uLT5t
X3Jlc3BvbnNlSGFuZGxlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgaWYgKGV4dGVuc2lvbi0+
bV9wcm9jZXNzb3ItPnByb2Nlc3NSZXNwb25zZShleHRlbnNpb25QYXJhbWV0ZXJzKSkKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0g
ZXh0ZW5zaW9uLT5tX3Byb2Nlc3Nvci0+ZmFpbHVyZVJlYXNvbigpOworICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAvLyBUaGVy
ZSBpcyBubyBleHRlbnNpb24gd2hpY2ggY2FuIHByb2Nlc3MgdGhlIHJlc3BvbnNlCisgICAgICAg
IGlmIChpbmRleCA9PSBtX2V4dGVuc2lvbnMuc2l6ZSgpKSB7CisgICAgICAgICAgICBtX2ZhaWx1
cmVSZWFzb24gPSAiUmVjZWl2ZWQgdW5leHBlY3RlZCBleHRlbnNpb246ICIgKyBleHRlbnNpb25U
b2tlbjsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBy
ZXR1cm4gcGFyc2VyLnBhcnNlZFN1Y2Nlc3NmdWxseSgpOworfQorCitTdHJpbmcgV2ViU29ja2V0
RXh0ZW5zaW9uczo6ZmFpbHVyZVJlYXNvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZmFpbHVy
ZVJlYXNvbjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KFdFQl9TT0NLRVRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXRFeHRlbnNpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEV4
dGVuc2lvbnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYWE1NGYzMTIzNzUyNDY3OTA2ZTYzMmI4MzYyNzM0MGQ4
MWJlMWNlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXRFeHRlbnNpb25zLmgKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTb2NrZXRFeHRl
bnNpb25zX2gKKyNkZWZpbmUgV2ViU29ja2V0RXh0ZW5zaW9uc19oCisKKyNpZiBFTkFCTEUoV0VC
X1NPQ0tFVFMpCisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IgeworcHVibGljOgorICAgIHZp
cnR1YWwgfldlYlNvY2tldEV4dGVuc2lvblByb2Nlc3NvcigpIHsgfQorCisgICAgY29uc3QgU3Ry
aW5nIGV4dGVuc2lvblRva2VuKCkgY29uc3QgeyByZXR1cm4gbV9leHRlbnNpb25Ub2tlbjsgfQor
CisgICAgLy8gVGhlIHJldHVybiB2YWx1ZSBvZiB0aGlzIG1ldGhvZCB3aWxsIGJlIGEgcGFydCBv
ZiB0aGUgdmFsdWUgb2YKKyAgICAvLyBTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMuCisgICAgdmly
dHVhbCBjb25zdCBTdHJpbmcgaGFuZHNoYWtlU3RyaW5nKCkgPSAwOworCisgICAgLy8gVGhpcyBz
aG91bGQgdmFsaWRhdGUgdGhlIHNlcnZlcidzIHJlc3BvbnNlIHBhcmFtZXRlcnMgd2hpY2ggYXJl
IHBhc3NlZAorICAgIC8vIGFzIEhhc2hNYXA8a2V5LCB2YWx1ZT4uIFRoaXMgbWF5IGFsc28gZG8g
c29tZXRoaW5nIGZvciB0aGUgZXh0ZW5zaW9uLgorICAgIHZpcnR1YWwgYm9vbCBwcm9jZXNzUmVz
cG9uc2UoY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mKSA9IDA7CisKKyAgICAvLyBJZiBw
cm9jZWNzc1Jlc3BvbnNlKCkgcmV0dXJucyBmYWxzZSwgdGhpcyBzaG91bGQgcHJvdmlkZSB0aGUg
cmVhc29uLgorICAgIHZpcnR1YWwgU3RyaW5nIGZhaWx1cmVSZWFzb24oKSB7IHJldHVybiAiRXh0
ZW5zaW9uICIgKyBtX2V4dGVuc2lvblRva2VuICsgIiBmYWlsZWQiOyB9CisKK3Byb3RlY3RlZDoK
KyAgICBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IoY29uc3QgU3RyaW5nJiBleHRlbnNpb25U
b2tlbikKKyAgICAgICAgOiBtX2V4dGVuc2lvblRva2VuKGV4dGVuc2lvblRva2VuKQorICAgIHsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgU3RyaW5nIG1fZXh0ZW5zaW9uVG9rZW47Cit9OworCitj
bGFzcyBXZWJTb2NrZXRFeHRlbnNpb25zIHsKK3B1YmxpYzoKKyAgICBXZWJTb2NrZXRFeHRlbnNp
b25zKCkgeyB9CisKKyAgICB2b2lkIHJlc2V0KCk7CisgICAgdm9pZCBhZGRQcm9jZXNzb3IoUGFz
c093blB0cjxXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I+KTsKKyAgICBjb25zdCBTdHJpbmcg
Zm9ybWF0QXNIZWFkZXJWYWx1ZSgpIGNvbnN0OworCisgICAgYm9vbCBwcm9jZXNzSGVhZGVyVmFs
dWUoY29uc3QgU3RyaW5nJik7CisgICAgU3RyaW5nIGZhaWx1cmVSZWFzb24oKSBjb25zdDsKKwor
cHJpdmF0ZToKKyAgICBzdHJ1Y3QgRXh0ZW5zaW9uIHsKKyAgICAgICAgRXh0ZW5zaW9uKFBhc3NP
d25QdHI8V2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yPiBwcm9jZXNzb3IpCisgICAgICAgICAg
ICA6IG1fcHJvY2Vzc29yKHByb2Nlc3NvcikKKyAgICAgICAgICAgICwgbV9yZXNwb25zZUhhbmRs
ZWQoZmFsc2UpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIE93blB0cjxXZWJTb2Nr
ZXRFeHRlbnNpb25Qcm9jZXNzb3I+IG1fcHJvY2Vzc29yOworICAgICAgICBib29sIG1fcmVzcG9u
c2VIYW5kbGVkOworICAgIH07CisKKyAgICBWZWN0b3I8T3duUHRyPEV4dGVuc2lvbj4gPiBtX2V4
dGVuc2lvbnM7CisgICAgU3RyaW5nIG1fZmFpbHVyZVJlYXNvbjsKK307CisKK30KKworI2VuZGlm
IC8vIEVOQUJMRShXRUJfU09DS0VUUykKKworI2VuZGlmIC8vIFdlYlNvY2tldEV4dGVuc2lvbnNf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hh
a2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3Bw
CmluZGV4IDg5MDllZmFmMTg0NGYxZmFjYWRiN2YxYjVlMjEzMmQyYmJkZGU4ZWYuLjk1MTJmZDkz
OTVhOWRhMWJkZjAwYmY4ZTE5MWYzNzA1NzMyZGRiZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKQEAgLTI4Nyw2ICsyODcsOSBAQCBD
U3RyaW5nIFdlYlNvY2tldEhhbmRzaGFrZTo6Y2xpZW50SGFuZHNoYWtlTWVzc2FnZSgpIGNvbnN0
CiAgICAgfSBlbHNlIHsKICAgICAgICAgZmllbGRzLmFwcGVuZCgiU2VjLVdlYlNvY2tldC1LZXk6
ICIgKyBtX3NlY1dlYlNvY2tldEtleSk7CiAgICAgICAgIGZpZWxkcy5hcHBlbmQoIlNlYy1XZWJT
b2NrZXQtVmVyc2lvbjogMTMiKTsKKyAgICAgICAgY29uc3QgU3RyaW5nIGV4dGVuc2lvblZhbHVl
ID0gbV9leHRlbnNpb25zLmZvcm1hdEFzSGVhZGVyVmFsdWUoKTsKKyAgICAgICAgaWYgKGV4dGVu
c2lvblZhbHVlLmxlbmd0aCgpKQorICAgICAgICAgICAgZmllbGRzLmFwcGVuZCgiU2VjLVdlYlNv
Y2tldC1FeHRlbnNpb25zOiAiICsgZXh0ZW5zaW9uVmFsdWUpOwogICAgIH0KIAogICAgIC8vIEZp
ZWxkcyBpbiB0aGUgaGFuZHNoYWtlIGFyZSBzZW50IGJ5IHRoZSBjbGllbnQgaW4gYSByYW5kb20g
b3JkZXI7IHRoZQpAQCAtMzQ0LDYgKzM0Nyw5IEBAIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3Qg
V2ViU29ja2V0SGFuZHNoYWtlOjpjbGllbnRIYW5kc2hha2VSZXF1ZXN0KCkgY29uc3QKICAgICB9
IGVsc2UgewogICAgICAgICByZXF1ZXN0LmFkZEhlYWRlckZpZWxkKCJTZWMtV2ViU29ja2V0LUtl
eSIsIG1fc2VjV2ViU29ja2V0S2V5KTsKICAgICAgICAgcmVxdWVzdC5hZGRIZWFkZXJGaWVsZCgi
U2VjLVdlYlNvY2tldC1WZXJzaW9uIiwgIjEzIik7CisgICAgICAgIGNvbnN0IFN0cmluZyBleHRl
bnNpb25WYWx1ZSA9IG1fZXh0ZW5zaW9ucy5mb3JtYXRBc0hlYWRlclZhbHVlKCk7CisgICAgICAg
IGlmIChleHRlbnNpb25WYWx1ZS5sZW5ndGgoKSkKKyAgICAgICAgICAgIHJlcXVlc3QuYWRkSGVh
ZGVyRmllbGQoIlNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyIsIGV4dGVuc2lvblZhbHVlKTsKICAg
ICB9CiAKICAgICByZXR1cm4gcmVxdWVzdDsKQEAgLTM1Miw2ICszNTgsNyBAQCBXZWJTb2NrZXRI
YW5kc2hha2VSZXF1ZXN0IFdlYlNvY2tldEhhbmRzaGFrZTo6Y2xpZW50SGFuZHNoYWtlUmVxdWVz
dCgpIGNvbnN0CiB2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6cmVzZXQoKQogewogICAgIG1fbW9k
ZSA9IEluY29tcGxldGU7CisgICAgbV9leHRlbnNpb25zLnJlc2V0KCk7CiB9CiAKIHZvaWQgV2Vi
U29ja2V0SGFuZHNoYWtlOjpjbGVhclNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQpAQCAtNDY5LDE0
ICs0NzYsMTQgQEAgU3RyaW5nIFdlYlNvY2tldEhhbmRzaGFrZTo6c2VydmVyV2ViU29ja2V0QWNj
ZXB0KCkgY29uc3QKICAgICByZXR1cm4gbV9yZXNwb25zZS5oZWFkZXJGaWVsZHMoKS5nZXQoInNl
Yy13ZWJzb2NrZXQtYWNjZXB0Iik7CiB9CiAKLVN0cmluZyBXZWJTb2NrZXRIYW5kc2hha2U6OnNl
cnZlcldlYlNvY2tldEV4dGVuc2lvbnMoKSBjb25zdAorY29uc3QgV2ViU29ja2V0SGFuZHNoYWtl
UmVzcG9uc2UmIFdlYlNvY2tldEhhbmRzaGFrZTo6c2VydmVySGFuZHNoYWtlUmVzcG9uc2UoKSBj
b25zdAogewotICAgIHJldHVybiBtX3Jlc3BvbnNlLmhlYWRlckZpZWxkcygpLmdldCgic2VjLXdl
YnNvY2tldC1leHRlbnNpb25zIik7CisgICAgcmV0dXJuIG1fcmVzcG9uc2U7CiB9CiAKLWNvbnN0
IFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlJiBXZWJTb2NrZXRIYW5kc2hha2U6OnNlcnZlckhh
bmRzaGFrZVJlc3BvbnNlKCkgY29uc3QKK3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjphZGRFeHRl
bnNpb25Qcm9jZXNzb3IoUGFzc093blB0cjxXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I+IHBy
b2Nlc3NvcikKIHsKLSAgICByZXR1cm4gbV9yZXNwb25zZTsKKyAgICBtX2V4dGVuc2lvbnMuYWRk
UHJvY2Vzc29yKHByb2Nlc3Nvcik7CiB9CiAKIEtVUkwgV2ViU29ja2V0SGFuZHNoYWtlOjpodHRw
VVJMRm9yQXV0aGVudGljYXRpb25BbmRDb29raWVzKCkgY29uc3QKQEAgLTYyNSw3ICs2MzIsMTUg
QEAgY29uc3QgY2hhciogV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkSFRUUEhlYWRlcnMoY29uc3Qg
Y2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGUKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAg
ICB9CiAgICAgICAgIExPRyhOZXR3b3JrLCAibmFtZT0lcyB2YWx1ZT0lcyIsIG5hbWVTdHIuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSwgdmFsdWVTdHIudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIG1f
cmVzcG9uc2UuYWRkSGVhZGVyRmllbGQobmFtZVN0ciwgdmFsdWVTdHIpOworICAgICAgICAvLyBT
ZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgbWF5IGJlIHNwbGl0LiBXZSBwYXJzZSBhbmQgY2hlY2sg
dGhlCisgICAgICAgIC8vIGhlYWRlciB2YWx1ZSBldmVyeSB0aW1lIHRoZSBoZWFkZXIgYXBwZWFy
cy4KKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKCJzZWMtd2Vic29ja2V0LWV4dGVuc2lv
bnMiLCBuYW1lU3RyKSkgeworICAgICAgICAgICAgaWYgKCFtX2V4dGVuc2lvbnMucHJvY2Vzc0hl
YWRlclZhbHVlKHZhbHVlU3RyKSkgeworICAgICAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9
IG1fZXh0ZW5zaW9ucy5mYWlsdXJlUmVhc29uKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9yZXNwb25zZS5h
ZGRIZWFkZXJGaWVsZChuYW1lU3RyLCB2YWx1ZVN0cik7CiAgICAgfQogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIHJldHVybiAwOwpAQCAtNjM5LDcgKzY1NCw2IEBAIGJvb2wgV2ViU29j
a2V0SGFuZHNoYWtlOjpjaGVja1Jlc3BvbnNlSGVhZGVycygpCiAgICAgY29uc3QgU3RyaW5nJiBz
ZXJ2ZXJVcGdyYWRlID0gdGhpcy0+c2VydmVyVXBncmFkZSgpOwogICAgIGNvbnN0IFN0cmluZyYg
c2VydmVyQ29ubmVjdGlvbiA9IHRoaXMtPnNlcnZlckNvbm5lY3Rpb24oKTsKICAgICBjb25zdCBT
dHJpbmcmIHNlcnZlcldlYlNvY2tldEFjY2VwdCA9IHRoaXMtPnNlcnZlcldlYlNvY2tldEFjY2Vw
dCgpOwotICAgIGNvbnN0IFN0cmluZyYgc2VydmVyV2ViU29ja2V0RXh0ZW5zaW9ucyA9IHRoaXMt
PnNlcnZlcldlYlNvY2tldEV4dGVuc2lvbnMoKTsKIAogICAgIGlmIChzZXJ2ZXJVcGdyYWRlLmlz
TnVsbCgpKSB7CiAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJFcnJvciBkdXJpbmcgV2ViU29j
a2V0IGhhbmRzaGFrZTogJ1VwZ3JhZGUnIGhlYWRlciBpcyBtaXNzaW5nIjsKQEAgLTY5MiwxMyAr
NzA2LDYgQEAgYm9vbCBXZWJTb2NrZXRIYW5kc2hha2U6OmNoZWNrUmVzcG9uc2VIZWFkZXJzKCkK
ICAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJFcnJvciBkdXJpbmcgV2ViU29ja2V0IGhh
bmRzaGFrZTogU2VjLVdlYlNvY2tldC1BY2NlcHQgbWlzbWF0Y2giOwogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIGlmICghc2VydmVyV2ViU29ja2V0RXh0ZW5z
aW9ucy5pc051bGwoKSkgewotICAgICAgICAgICAgLy8gV2ViU29ja2V0IHByb3RvY29sIGV4dGVu
c2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgeWV0LgotICAgICAgICAgICAgLy8gV2UgZG8gbm90IHNl
bmQgU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlciBpbiBvdXIgcmVxdWVzdCwgdGh1cwot
ICAgICAgICAgICAgLy8gc2VydmVycyBzaG91bGQgbm90IHJldHVybiB0aGlzIGhlYWRlciwgZWl0
aGVyLgotICAgICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gIkVycm9yIGR1cmluZyBXZWJTb2Nr
ZXQgaGFuZHNoYWtlOiBTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgaGVhZGVyIGlzIGludmFsaWQi
OwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9CiAgICAgfQogICAgIHJldHVy
biB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRIYW5kc2hha2UuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNo
YWtlLmgKaW5kZXggMTJjMTg0MDE5YzJjYWM2N2RhOWZmMzQ5MmM0N2I5YjcwMmFjZWFiNy4uNTBh
N2YyZGU3YzY5M2QzMWU5MzI0ZTEwMDVmZmRiZDk0MmViNGM2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oCkBAIC0zNSw4ICszNSwxMCBAQAog
CiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVk
ZSAiV2ViU29ja2V0RXh0ZW5zaW9ucy5oIgogI2luY2x1ZGUgIldlYlNvY2tldEhhbmRzaGFrZVJl
cXVlc3QuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oIgorI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtODEsMTAg
KzgzLDExIEBAIHB1YmxpYzoKICAgICBTdHJpbmcgc2VydmVyVXBncmFkZSgpIGNvbnN0OwogICAg
IFN0cmluZyBzZXJ2ZXJDb25uZWN0aW9uKCkgY29uc3Q7CiAgICAgU3RyaW5nIHNlcnZlcldlYlNv
Y2tldEFjY2VwdCgpIGNvbnN0OyAvLyBPbmx5IGZvciBoeWJpLTEwIGhhbmRzaGFrZS4KLSAgICBT
dHJpbmcgc2VydmVyV2ViU29ja2V0RXh0ZW5zaW9ucygpIGNvbnN0OyAvLyBPbmx5IGZvciBoeWJp
LTEwIGhhbmRzaGFrZS4KIAogICAgIGNvbnN0IFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlJiBz
ZXJ2ZXJIYW5kc2hha2VSZXNwb25zZSgpIGNvbnN0OwogCisgICAgdm9pZCBhZGRFeHRlbnNpb25Q
cm9jZXNzb3IoUGFzc093blB0cjxXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I+KTsKKwogcHJp
dmF0ZToKICAgICBLVVJMIGh0dHBVUkxGb3JBdXRoZW50aWNhdGlvbkFuZENvb2tpZXMoKSBjb25z
dDsKIApAQCAtMTE2LDYgKzExOSw4IEBAIHByaXZhdGU6CiAgICAgLy8gRm9yIGh5YmktMTAgaGFu
ZHNoYWtlLgogICAgIFN0cmluZyBtX3NlY1dlYlNvY2tldEtleTsKICAgICBTdHJpbmcgbV9leHBl
Y3RlZEFjY2VwdDsKKworICAgIFdlYlNvY2tldEV4dGVuc2lvbnMgbV9leHRlbnNpb25zOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKaW5k
ZXggYzg1MDJmNTczYzQ1MTcwMTczNTQ4NWFmNDc1MjNlNzUxMjk0YzgzZC4uOTc1OWIzYTE5Njg3
ZDY3Yjg3OWIyOGJlOTg2NjkzNGE2ZTAzMDY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwaQorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5n
eXBpCkBAIC0xMTgsNiArMTE4LDcgQEAKICAgICAgICAgICAgICd0ZXN0cy9XZWJMYXllclRlc3Qu
Y3BwJywKICAgICAgICAgICAgICd0ZXN0cy9XZWJQYWdlTmV3U2VyaWFsaXplclRlc3QuY3BwJywK
ICAgICAgICAgICAgICd0ZXN0cy9XZWJQYWdlU2VyaWFsaXplclRlc3QuY3BwJywKKyAgICAgICAg
ICAgICd0ZXN0cy9XZWJTb2NrZXRFeHRlbnNpb25zVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rl
c3RzL1dlYlVSTFJlcXVlc3RUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvV2ViVmlld1Rl
c3QuY3BwJywKICAgICAgICAgXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvV2ViU29ja2V0RXh0ZW5zaW9uc1Rlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9XZWJTb2NrZXRFeHRlbnNpb25zVGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjdhYWYxZjcy
OWQzODgzNWQzNTY1YmZlYmQ1MmNkOTg3ZjIzZjg2MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViU29ja2V0RXh0ZW5zaW9uc1Rlc3QuY3BwCkBAIC0w
LDAgKzEsMTgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiV2Vi
U29ja2V0RXh0ZW5zaW9ucy5oIgorCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitu
YW1lc3BhY2UgeworCitjbGFzcyBXZWJTb2NrZXRFeHRlbnNpb25zVGVzdDsKKworY2xhc3MgTW9j
a1dlYlNvY2tldEV4dGVuc2lvblByb2Nlc3NvciA6IHB1YmxpYyBXZWJTb2NrZXRFeHRlbnNpb25Q
cm9jZXNzb3IgeworcHVibGljOgorICAgIE1vY2tXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3Io
Y29uc3QgU3RyaW5nJiBuYW1lLCBXZWJTb2NrZXRFeHRlbnNpb25zVGVzdCogdGVzdCkKKyAgICAg
ICAgOiBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IobmFtZSkKKyAgICAgICAgLCBtX3Rlc3Qo
dGVzdCkKKyAgICB7CisgICAgfQorICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nIGhhbmRzaGFrZVN0
cmluZygpIHsgcmV0dXJuIGV4dGVuc2lvblRva2VuKCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcHJv
Y2Vzc1Jlc3BvbnNlKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Jik7CisKK3ByaXZhdGU6
CisKKyAgICBXZWJTb2NrZXRFeHRlbnNpb25zVGVzdCogbV90ZXN0OworfTsKKworY2xhc3MgV2Vi
U29ja2V0RXh0ZW5zaW9uc1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CitwdWJsaWM6Cisg
ICAgV2ViU29ja2V0RXh0ZW5zaW9uc1Rlc3QoKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIFNl
dFVwKCkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93bigpCisgICAgeworICAgIH0K
KworICAgIHZvaWQgYWRkTW9ja1Byb2Nlc3Nvcihjb25zdCBTdHJpbmcmIGV4dGVuc2lvblRva2Vu
KQorICAgIHsKKyAgICAgICAgbV9leHRlbnNpb25zLmFkZFByb2Nlc3NvcihhZG9wdFB0cihuZXcg
TW9ja1dlYlNvY2tldEV4dGVuc2lvblByb2Nlc3NvcihleHRlbnNpb25Ub2tlbiwgdGhpcykpKTsK
KworICAgIH0KKworICAgIHZvaWQgYXBwZW5kUmVzdWx0KGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9u
VG9rZW4sIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBwYXJhbWV0ZXJzKQorICAgIHsK
KyAgICAgICAgbV9wYXJzZWRFeHRlbnNpb25Ub2tlbnMuYXBwZW5kKGV4dGVuc2lvblRva2VuKTsK
KyAgICAgICAgbV9wYXJzZWRQYXJhbWV0ZXJzLmFwcGVuZChwYXJhbWV0ZXJzKTsKKyAgICB9CisK
K3Byb3RlY3RlZDoKKyAgICBXZWJTb2NrZXRFeHRlbnNpb25zIG1fZXh0ZW5zaW9uczsKKyAgICBW
ZWN0b3I8U3RyaW5nPiBtX3BhcnNlZEV4dGVuc2lvblRva2VuczsKKyAgICBWZWN0b3I8SGFzaE1h
cDxTdHJpbmcsIFN0cmluZz4gPiBtX3BhcnNlZFBhcmFtZXRlcnM7Cit9OworCitib29sIE1vY2tX
ZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I6OnByb2Nlc3NSZXNwb25zZShjb25zdCBIYXNoTWFw
PFN0cmluZywgU3RyaW5nPiYgcGFyYW1ldGVycykKK3sKKyAgICBtX3Rlc3QtPmFwcGVuZFJlc3Vs
dChleHRlbnNpb25Ub2tlbigpLCBwYXJhbWV0ZXJzKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
VEVTVF9GKFdlYlNvY2tldEV4dGVuc2lvbnNUZXN0LCBUZXN0U2luZ2xlKQoreworICAgIGFkZE1v
Y2tQcm9jZXNzb3IoImRlZmxhdGUtZnJhbWUiKTsKKyAgICBFWFBFQ1RfVFJVRShtX2V4dGVuc2lv
bnMucHJvY2Vzc0hlYWRlclZhbHVlKCJkZWZsYXRlLWZyYW1lIikpOworICAgIEVYUEVDVF9FUSgx
VUwsIG1fcGFyc2VkRXh0ZW5zaW9uVG9rZW5zLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKCJkZWZs
YXRlLWZyYW1lIiwgbV9wYXJzZWRFeHRlbnNpb25Ub2tlbnNbMF0pOworICAgIEVYUEVDVF9FUSgw
LCBtX3BhcnNlZFBhcmFtZXRlcnNbMF0uc2l6ZSgpKTsKK30KKworVEVTVF9GKFdlYlNvY2tldEV4
dGVuc2lvbnNUZXN0LCBUZXN0UGFyYW1ldGVycykKK3sKKyAgICBhZGRNb2NrUHJvY2Vzc29yKCJt
dXgiKTsKKyAgICBFWFBFQ1RfVFJVRShtX2V4dGVuc2lvbnMucHJvY2Vzc0hlYWRlclZhbHVlKCJt
dXg7IG1heC1jaGFubmVscz00OyBmbG93LWNvbnRyb2wgICIpKTsKKyAgICBFWFBFQ1RfRVEoMVVM
LCBtX3BhcnNlZEV4dGVuc2lvblRva2Vucy5zaXplKCkpOworICAgIEVYUEVDVF9FUSgibXV4Iiwg
bV9wYXJzZWRFeHRlbnNpb25Ub2tlbnNbMF0pOworICAgIEVYUEVDVF9FUSgyLCBtX3BhcnNlZFBh
cmFtZXRlcnNbMF0uc2l6ZSgpKTsKKyAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6aXRlcmF0
b3IgcGFyYW1ldGVyID0gbV9wYXJzZWRQYXJhbWV0ZXJzWzBdLmZpbmQoIm1heC1jaGFubmVscyIp
OworICAgIEVYUEVDVF9UUlVFKHBhcmFtZXRlciAhPSBtX3BhcnNlZFBhcmFtZXRlcnNbMF0uZW5k
KCkpOworICAgIEVYUEVDVF9FUSgiNCIsIHBhcmFtZXRlci0+c2Vjb25kKTsKKyAgICBwYXJhbWV0
ZXIgPSBtX3BhcnNlZFBhcmFtZXRlcnNbMF0uZmluZCgiZmxvdy1jb250cm9sIik7CisgICAgRVhQ
RUNUX1RSVUUocGFyYW1ldGVyICE9IG1fcGFyc2VkUGFyYW1ldGVyc1swXS5lbmQoKSk7CisgICAg
RVhQRUNUX1RSVUUocGFyYW1ldGVyLT5zZWNvbmQuaXNOdWxsKCkpOworfQorCitURVNUX0YoV2Vi
U29ja2V0RXh0ZW5zaW9uc1Rlc3QsIFRlc3RNdWx0aXBsZSkKK3sKKyAgICBzdHJ1Y3QgeworICAg
ICAgICBTdHJpbmcgdG9rZW47CisgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IHBhcmFt
ZXRlcnM7CisgICAgfSBleHBlY3RlZFsyXTsKKyAgICBleHBlY3RlZFswXS50b2tlbiA9ICJtdXgi
OworICAgIGV4cGVjdGVkWzBdLnBhcmFtZXRlcnMuYWRkKCJtYXgtY2hhbm5lbHMiLCAiNCIpOwor
ICAgIGV4cGVjdGVkWzBdLnBhcmFtZXRlcnMuYWRkKCJmbG93LWNvbnRyb2wiLCBTdHJpbmcoKSk7
CisgICAgZXhwZWN0ZWRbMV0udG9rZW4gPSAiZGVmbGF0ZS1mcmFtZSI7CisKKyAgICBhZGRNb2Nr
UHJvY2Vzc29yKCJtdXgiKTsKKyAgICBhZGRNb2NrUHJvY2Vzc29yKCJkZWZsYXRlLWZyYW1lIik7
CisgICAgRVhQRUNUX1RSVUUobV9leHRlbnNpb25zLnByb2Nlc3NIZWFkZXJWYWx1ZSgibXV4IDsg
IG1heC1jaGFubmVscyA9NDtmbG93LWNvbnRyb2wsIGRlZmxhdGUtZnJhbWUgICIpKTsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemVvZihleHBlY3RlZCkgLyBzaXplb2YoZXhwZWN0ZWRb
MF0pOyArK2kpIHsKKyAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkW2ldLnRva2VuLCBtX3BhcnNl
ZEV4dGVuc2lvblRva2Vuc1tpXSk7CisgICAgICAgIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJp
bmc+JiBleHBlY3RlZFBhcmFtZXRlcnMgPSBleHBlY3RlZFtpXS5wYXJhbWV0ZXJzOworICAgICAg
ICBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgcGFyc2VkUGFyYW1ldGVycyA9IG1fcGFy
c2VkUGFyYW1ldGVyc1tpXTsKKyAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkW2ldLnBhcmFtZXRl
cnMuc2l6ZSgpLCBtX3BhcnNlZFBhcmFtZXRlcnNbaV0uc2l6ZSgpKTsKKyAgICAgICAgZm9yIChI
YXNoTWFwPFN0cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXRlcmF0b3IgPSBleHBlY3Rl
ZFBhcmFtZXRlcnMuYmVnaW4oKTsgaXRlcmF0b3IgIT0gZXhwZWN0ZWRQYXJhbWV0ZXJzLmVuZCgp
OyArK2l0ZXJhdG9yKSB7CisgICAgICAgICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6Y29u
c3RfaXRlcmF0b3IgcGFyc2VkID0gcGFyc2VkUGFyYW1ldGVycy5maW5kKGl0ZXJhdG9yLT5maXJz
dCk7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShwYXJzZWQgIT0gcGFyc2VkUGFyYW1ldGVycy5l
bmQoKSk7CisgICAgICAgICAgICBpZiAoaXRlcmF0b3ItPnNlY29uZC5pc051bGwoKSkKKyAgICAg
ICAgICAgICAgICBFWFBFQ1RfVFJVRShwYXJzZWQtPnNlY29uZC5pc051bGwoKSk7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgRVhQRUNUX0VRKGl0ZXJhdG9yLT5zZWNvbmQsIHBh
cnNlZC0+c2Vjb25kKTsKKyAgICAgICAgfQorICAgIH0KK30KKworVEVTVF9GKFdlYlNvY2tldEV4
dGVuc2lvbnNUZXN0LCBUZXN0UXVvdGVkU3RyaW5nKQoreworICAgIGFkZE1vY2tQcm9jZXNzb3Io
IngtZm9vIik7CisgICAgRVhQRUNUX1RSVUUobV9leHRlbnNpb25zLnByb2Nlc3NIZWFkZXJWYWx1
ZSgieC1mb287IHBhcmFtMT1cInF1b3RlZCBzdHJpbmdcIjsgcGFyYW0yPVwiXFxcInF1b3RlZFxc
XCIgc3RyaW5nXFxcXFwiIikpOworICAgIEVYUEVDVF9FUSgyLCBtX3BhcnNlZFBhcmFtZXRlcnNb
MF0uc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoInF1b3RlZCBzdHJpbmciLCBtX3BhcnNlZFBhcmFt
ZXRlcnNbMF0uZ2V0KCJwYXJhbTEiKSk7CisgICAgRVhQRUNUX0VRKCJcInF1b3RlZFwiIHN0cmlu
Z1xcIiwgbV9wYXJzZWRQYXJhbWV0ZXJzWzBdLmdldCgicGFyYW0yIikpOworfQorCitURVNUX0Yo
V2ViU29ja2V0RXh0ZW5zaW9uc1Rlc3QsIFRlc3RJbnZhbGlkKQoreworICAgIGNvbnN0IGNoYXIq
IGlucHV0c1tdID0geworICAgICAgICAiXCJ4LWZvb1wiIiwKKyAgICAgICAgIngtYmF6IiwKKyAg
ICAgICAgIngtZm9vXFwiLAorICAgICAgICAieC0oZm9vKSIsCisgICAgICAgICJ4LWZvbzsgIiwK
KyAgICAgICAgIngtZm9vOyBiYXI9IiwKKyAgICAgICAgIngtZm9vOyBiYXI9eCB5IiwKKyAgICAg
ICAgIngtZm9vOyBiYXI9XCJtaXNtYXRjaCBxdW90ZSIsCisgICAgICAgICJ4LWZvbzsgYmFyPVwi
XFxcIiIsCisgICAgICAgICJ4LWZvbzsgXCJiYXJcIj1iYXoiLAorICAgICAgICAieC1mb28geC1i
YXIiLAorICAgICAgICAieC1mb28sIHgtYmF6IgorICAgICAgICAieC1mb28sICIsCisgICAgfTsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemVvZihpbnB1dHMpIC8gc2l6ZW9mKGlucHV0
c1swXSk7ICsraSkgeworICAgICAgICBtX2V4dGVuc2lvbnMucmVzZXQoKTsKKyAgICAgICAgYWRk
TW9ja1Byb2Nlc3NvcigieC1mb28iKTsKKyAgICAgICAgYWRkTW9ja1Byb2Nlc3NvcigieC1iYXIi
KTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG1fZXh0ZW5zaW9ucy5wcm9jZXNzSGVhZGVyVmFsdWUo
aW5wdXRzW2ldKSk7CisgICAgfQorfQorCit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126186</attachid>
            <date>2012-02-08 16:36:59 -0800</date>
            <delta_ts>2012-02-09 03:09:10 -0800</delta_ts>
            <desc>added test rebaseline</desc>
            <filename>bug-78079-20120209093658.patch</filename>
            <type>text/plain</type>
            <size>39026</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3MTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRiMTBlMzY1YzkyMjE4
YzJlNTQ0ZTQyOTdmOTI4ODhlNTI2MzVjMi4uMjhmMGQxMjRjYWRjNDc4MmZjNWM2NWQzMWEzMzQz
MzE0M2RmMDIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEyLTAyLTA4ICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgV2ViU29j
a2V0IGV4dGVuc2lvbiBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03ODA3OQorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBXZWJT
b2NrZXRFeHRlbnNpb25zIGNsYXNzLCB3aGljaCBjcmVhdGVzIGNsaWVudCdzCisgICAgICAgIFNl
Yy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIgZmllbGQgYW5kIHBhcnNlcyB0aGUgc2VydmVy
IHJlc3BvbnNlLgorICAgICAgICBUaGlzIHBhdGNoIGRvZXNuJ3QgYWRkIGFueSBhY3R1YWwgZXh0
ZW5zaW9uLCBzbyBubyBjaGFuZ2VzIGluIGJlaGF2aW9yLgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBleGNlcHQgZm9yIGNocm9t
aXVtIHBvcnQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkZWQgV2ViU29ja2V0RXh0
ZW5zaW9ucy4oY3BwfGgpLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IERpdHRvLgor
ICAgICAgICAqIFRhcmdldC5wcmk6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUuZ3lwaTogRGl0
dG8uCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6IERpdHRvLgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisgICAgICAg
ICogd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25zLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKEV4dGVuc2lvblBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25QYXJzZXI6OkV4dGVuc2lvblBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25QYXJzZXI6OmN1cnJlbnRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25Q
YXJzZXI6OmZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvblBhcnNlcjo6cGFy
c2VkU3VjY2Vzc2Z1bGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvblBhcnNlcjo6Y29u
c3VtZVNwYWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25QYXJzZXI6OmlzQ29udHJv
bCk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25QYXJzZXI6OmlzU2VwYXJhdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvblBhcnNlcjo6Y29uc3VtZVRva2VuKToKKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvblBhcnNlcjo6Y29uc3VtZVF1b3RlZFN0cmluZyk6CisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25QYXJzZXI6OmNvbnN1bWVDaGFyYWN0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9uczo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0RXh0ZW5zaW9uczo6YWRkUHJvY2Vzc29yKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldEV4dGVuc2lvbnM6OmZvcm1hdEFzSGVhZGVyVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0RXh0ZW5zaW9uczo6cHJvY2Vzc0hlYWRlclZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlNvY2tldEV4dGVuc2lvbnM6OmZhaWx1cmVSZWFzb24pOgorICAgICAgICAqIHdl
YnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvcjo6fldlYlNvY2tldEV4dGVuc2lvblByb2Nl
c3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I6OmV4
dGVuc2lvblRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvblByb2Nl
c3Nvcjo6ZmFpbHVyZVJlYXNvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNp
b25Qcm9jZXNzb3I6OldlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvcik6CisgICAgICAgIChXZWJT
b2NrZXRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvbnM6
OldlYlNvY2tldEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5z
aW9uczo6RXh0ZW5zaW9uOjpFeHRlbnNpb24pOgorICAgICAgICAoRXh0ZW5zaW9uKToKKyAgICAg
ICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJTb2NrZXRIYW5kc2hha2U6OmNsaWVudEhhbmRzaGFrZU1lc3NhZ2UpOiBBZGRzIGV4dGVu
c2lvbiBoZWFkZXIgdmFsdWUgaWYgZXhpc3RzLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
SGFuZHNoYWtlOjpjbGllbnRIYW5kc2hha2VSZXF1ZXN0KTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6OnJlc2V0KTogUmVzZXRzIFdlYlNvY2tldEV4dGVuc2lv
bnMgb2JqZWN0LgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpzZXJ2ZXJI
YW5kc2hha2VSZXNwb25zZSk6IFJlbW92ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRI
YW5kc2hha2U6OmFkZEV4dGVuc2lvblByb2Nlc3Nvcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkSFRUUEhlYWRlcnMpOiBQYXJzZXMgYW5kIGNoZWNr
cyBldmVyeSB0aW1lIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIgYXBwZWFycy4KKyAg
ICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZTo6Y2hlY2tSZXNwb25zZUhlYWRlcnMp
OiBSZW1vdmVkIHRoZSBjaGVjayBvZiBTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMuCisgICAgICAg
ICogd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaDogUmVtb3ZlZCBzZXJ2ZXJIYW5kc2hh
a2VSZXNwb25zZSgpLgorCiAyMDEyLTAyLTA4ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBSZW1vdmUgW0N1c3RvbUhlYWRlcl0gZnJvbSBDYW52YXNQaXhl
bEFycmF5IGFuZCByZW5hbWUgW0N1c3RvbUhlYWRlcl0gdG8gW0pTQ3VzdG9tSGVhZGVyXQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBhY2VkYmFkNGYwZWRkYTdmY2VmNzQxNjA1ZDAwNThi
M2VmOGZiMGJmLi44NmIzZmZjZmFhMjVkMzM3YTc4YzIxZjJlMzA2MWIxMTI0ZjFjN2FmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTAyLTA4ICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgV2ViU29j
a2V0IGV4dGVuc2lvbiBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03ODA3OQorCisgICAgICAgIEFkZCBzb21lIHRlc3RzIHdoaWNoIGNoZWNr
IFdlYlNvY2tldEV4dGVuc2lvbnM6OnByb2Nlc3NIZWFkZXJWYWx1ZSgpCisgICAgICAgIHBhcnNl
cyB0aGUgZ2l2ZW4gcmVzcG9uc2UgY29ycmVjdGx5LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lmd5cGk6CisgICAgICAgICogdGVzdHMv
V2ViU29ja2V0RXh0ZW5zaW9uc1Rlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoTW9ja1dlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvcik6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yOjpNb2NrV2ViU29ja2V0RXh0ZW5z
aW9uUHJvY2Vzc29yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tXZWJTb2NrZXRFeHRlbnNpb25Q
cm9jZXNzb3I6OmhhbmRzaGFrZVN0cmluZyk6CisgICAgICAgIChXZWJTb2NrZXRFeHRlbnNpb25z
VGVzdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25zVGVzdDo6V2ViU29j
a2V0RXh0ZW5zaW9uc1Rlc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9u
c1Rlc3Q6OlNldFVwKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvbnNUZXN0
OjpUZWFyRG93bik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25zVGVzdDo6
YWRkTW9ja1Byb2Nlc3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25z
VGVzdDo6YXBwZW5kUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tXZWJTb2NrZXRFeHRl
bnNpb25Qcm9jZXNzb3I6OnByb2Nlc3NSZXNwb25zZUludGVybmFsKToKKyAgICAgICAgKFdlYkNv
cmU6OlRFU1RfRik6CisKIDIwMTItMDItMDggIFNoYXduIFNpbmdoICA8c2hhd25zaW5naEBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBSZW1vdmUgaW5jb3JyZWN0IGVhcmx5IGV4
aXQgaW4gQ0NEYW1hZ2VUcmFja2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDExMGY4N2JjNWJk
ZGIwMTQ3MzRjY2MxMTc2YTQ0OWZjNGRlZDY3NjMuLjk5NTBiMDg3M2NmOGRjZjRhNzg2ZDA5MmI2
YzFlOWY5M2IzOTI4NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMDM4LDYgKzIwMzgsNyBA
QCBJRiAoRU5BQkxFX1dFQl9TT0NLRVRTKQogICAgICAgICB3ZWJzb2NrZXRzL1RocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAKICAgICAgICAgd2Vic29ja2V0cy9XZWJT
b2NrZXQuY3BwCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKyAgICAg
ICAgd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25zLmNwcAogICAgICAgICB3ZWJzb2NrZXRz
L1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5k
c2hha2VSZXF1ZXN0LmNwcAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJl
c3BvbnNlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggYWQ5ZTJmNjA4MjQ4
YTU0NmFiYWMyYWYyMDljNjA3OTQ1M2ZjOGYwNy4uZWY1MjBmNWEyYzc5ZmI4NTM0NWM1ZDhiMzUw
NGJmMGVlYjJkYWExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC00MzA3LDYg
KzQzMDcsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0Q2hhbm5lbC5oIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmggXAorCVNv
dXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9ucy5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9ucy5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggYWYx
ZWI1OGRiODM2Y2Q5ZWUyZmFmNGFiYmZhZTQyNDZkZDliM2NhYy4uYTE5NzczY2U0NTRlN2Y3OTdh
ZTAyZTVkNDk3ODA1NTYzNTc2OTFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0zNjU2LDYgKzM2NTYsNyBA
QCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV0VCX1NPQ0tFVFM9MSkgewogICAgICAgICB3ZWJz
b2NrZXRzL1dlYlNvY2tldC5oIFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmggXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWxDbGllbnQuaCBcCisgICAg
ICAgIHdlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9ucy5oIFwKICAgICAgICAgd2Vic29ja2V0
cy9XZWJTb2NrZXRIYW5kc2hha2UuaCBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0SGFu
ZHNoYWtlUmVxdWVzdC5oIFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VS
ZXNwb25zZS5oIFwKQEAgLTM2NjQsNiArMzY2NSw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJM
RV9XRUJfU09DS0VUUz0xKSB7CiAgICAgU09VUkNFUyArPSBcCiAgICAgICAgIHdlYnNvY2tldHMv
V2ViU29ja2V0LmNwcCBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAg
XAorICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbnMuY3BwIFwKICAgICAgICAg
d2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwIFwKICAgICAgICAgd2Vic29ja2V0cy9X
ZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29j
a2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAzYWI5MzMxZDlh
ZTczOTE5NWExNTRhYzdhOTY0Y2ZhMTIwYjc3OGE4Li5hZDAyZjU5YjRmNjJlMDhmZjMxYWEzYzMx
MTdkOGEyMmNhYjQxYzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC00Nzg5LDYgKzQ3ODksOCBAQAog
ICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAnLAogICAgICAgICAg
ICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oJywKICAgICAgICAgICAgICd3ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWxDbGllbnQuaCcsCisgICAgICAgICAgICAnd2Vic29ja2V0cy9X
ZWJTb2NrZXRFeHRlbnNpb25zLmNwcCcsCisgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2Nr
ZXRFeHRlbnNpb25zLmgnLAogICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNo
YWtlLmNwcCcsCiAgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaCcs
CiAgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCcs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGZj
NGEyMTgzYjA2YWJjMTE2NjcwNWFjZTdjODQ5ODAzZmJjOTI3YjUuLmY4ZTQwZjZjZmViODY2MjRk
NGU1OWU0N2RkMTdhMjU1NGJlMThkNGEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCkBAIC03Mjg5OCw2ICs3Mjg5OCwxNCBAQAogCQkJCT4KIAkJCTwv
RmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFdlYlNvY2tl
dEV4dGVuc2lvbnMuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFdlYlNvY2tldEV4dGVuc2lvbnMuaCIKKwkJCQk+CisJCQk8
L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cd2Vic29ja2V0c1xXZWJTb2Nr
ZXRIYW5kc2hha2UuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5NjU0NGU1ZmQ1OTVjYTgw
ODRiYjJiMjFmYWJhY2YzOThlNjcxNjg1Li5kOGU3NWFhYzU5MjhlYTcyNjE4NDc1NDkzN2UzMGMy
ODI1ZTVmM2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xMzY2LDYgKzEzNjYsOCBAQAogCQk0QTZFOUZDNzEzQzE3RDU3MDA0
NkE3RjggLyogRm9udEZlYXR1cmVTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTZFOUZDNTEzQzE3RDU3MDA0NkE3RjggLyogRm9udEZl
YXR1cmVTZXR0aW5ncy5jcHAgKi87IH07CiAJCTRBNkU5RkM4MTNDMTdENTcwMDQ2QTdGOCAvKiBG
b250RmVhdHVyZVNldHRpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0QTZFOUZDNjEzQzE3RDU3MDA0NkE3RjggLyogRm9udEZlYXR1cmVTZXR0aW5n
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRB
OEM5NkVCMEJFNjkwMzIwMDRFRUZGMCAvKiBGcmFtZVNlbGVjdGlvbk1hYy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBOEM5NkVBMEJFNjkwMzIwMDRF
RUZGMCAvKiBGcmFtZVNlbGVjdGlvbk1hYy5tbSAqLzsgfTsKKwkJNEE5NTdGMDYxNEUyNDEyQTAw
NDlEQkZCIC8qIFdlYlNvY2tldEV4dGVuc2lvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE5NTdGMDMxNEUyNDExMDAwNDlEQkZCIC8qIFdlYlNv
Y2tldEV4dGVuc2lvbnMuY3BwICovOyB9OworCQk0QTk1N0YwNzE0RTI0MTMwMDA0OURCRkIgLyog
V2ViU29ja2V0RXh0ZW5zaW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEE5NTdGMDQxNEUyNDExMDAwNDlEQkZCIC8qIFdlYlNvY2tldEV4dGVuc2lv
bnMuaCAqLzsgfTsKIAkJNEFCREZGMEIxNERCRTM4NTAwNEQxMTdEIC8qIEhUTUxTaGFkb3dFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRB
QkRGRjA3MTREQkUzMTIwMDREMTE3RCAvKiBIVE1MU2hhZG93RWxlbWVudC5jcHAgKi87IH07CiAJ
CTRBQkRGRjBDMTREQkUzODUwMDREMTE3RCAvKiBIVE1MU2hhZG93RWxlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEFCREZGMDgxNERCRTMxMjAw
NEQxMTdEIC8qIEhUTUxTaGFkb3dFbGVtZW50LmggKi87IH07CiAJCTRBQ0JDMEJFMTI3MTNDQkQw
MDk0RjlCMiAvKiBDbGFzc0xpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNEFDQkMwQkMxMjcxM0NCRDAwOTRGOUIyIC8qIENsYXNzTGlzdC5jcHAg
Ki87IH07CkBAIC04MjA0LDYgKzgyMDYsOCBAQAogCQk0QTZFOUZDNTEzQzE3RDU3MDA0NkE3Rjgg
LyogRm9udEZlYXR1cmVTZXR0aW5ncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBGb250RmVhdHVyZVNldHRpbmdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNEE2RTlGQzYxM0MxN0Q1NzAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlU2V0dGluZ3MuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGggPSBGb250RmVhdHVyZVNldHRpbmdzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBOEM5NkVBMEJFNjkwMzIwMDRFRUZGMCAvKiBG
cmFtZVNlbGVjdGlvbk1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5h
bWUgPSBGcmFtZVNlbGVjdGlvbk1hYy5tbTsgcGF0aCA9IG1hYy9GcmFtZVNlbGVjdGlvbk1hYy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEE5NTdGMDMxNEUyNDExMDAwNDlEQkZC
IC8qIFdlYlNvY2tldEV4dGVuc2lvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViU29ja2V0RXh0ZW5zaW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTRBOTU3RjA0MTRFMjQxMTAwMDQ5REJGQiAvKiBXZWJTb2NrZXRFeHRlbnNpb25zLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tldEV4dGVuc2lvbnMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEFCREZGMDcxNERCRTMxMjAwNEQxMTdEIC8q
IEhUTUxTaGFkb3dFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEhUTUxTaGFkb3dFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NEFCREZGMDgxNERCRTMxMjAwNEQxMTdEIC8qIEhUTUxTaGFkb3dFbGVtZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxTaGFkb3dFbGVtZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTRBQkRGRjA5MTREQkUzMTIwMDREMTE3RCAvKiBIVE1MU2hhZG93
RWxlbWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRNTFNoYWRvd0VsZW1lbnQuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ3NTgsNiArMTQ3NjIsOCBAQAogCQkJ
CTUxMEQ0QTQ3MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmNwcCAqLywKIAkJ
CQk1MTBENEE0ODEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5oICovLAogCQkJ
CTUxMEQ0QTQ5MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmggKi8s
CisJCQkJNEE5NTdGMDMxNEUyNDExMDAwNDlEQkZCIC8qIFdlYlNvY2tldEV4dGVuc2lvbnMuY3Bw
ICovLAorCQkJCTRBOTU3RjA0MTRFMjQxMTAwMDQ5REJGQiAvKiBXZWJTb2NrZXRFeHRlbnNpb25z
LmggKi8sCiAJCQkJNTFBQkFFNDIxMDQzQUI0QTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFr
ZS5jcHAgKi8sCiAJCQkJNTFBQkFFNDMxMDQzQUI0QTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRz
aGFrZS5oICovLAogCQkJCTc2MzdDNTQwMTEyRTdCNzQwMDNENkNEQyAvKiBXZWJTb2NrZXRIYW5k
c2hha2VSZXF1ZXN0LmNwcCAqLywKQEAgLTI0MTYyLDYgKzI0MTY4LDcgQEAKIAkJCQkxQUFBRERF
OTE0REM4REY4MDBBRjY0QjMgLyogU2Nyb2xsaW5nVHJlZU5vZGVNYWMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTEwRkIwODRCMTRFMTVDN0UwMEEzREI5OCAvKiBQdWJsaWNVUkxNYW5hZ2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk3QTU0ODU4MDE0RTAyRDUxMDA2QUUwNUEgLyogSW5zcGVjdG9ySGlz
dG9yeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNEE5NTdGMDcxNEUyNDEzMDAwNDlEQkZCIC8qIFdl
YlNvY2tldEV4dGVuc2lvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjcxMDAsNiArMjcxMDcsNyBA
QAogCQkJCTFBQUFEREU4MTREQzhERjgwMEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlTm9kZU1hYy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTdBNTQ4NTdGMTRFMDJENTEwMDZBRTA1QSAvKiBJbnNwZWN0
b3JIaXN0b3J5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQUE4RDBBMTRENzFCMkUwMDYxRUE2
MCAvKiBQbGF0Zm9ybUNsb2NrQ00ubW0gaW4gU291cmNlcyAqLywKKwkJCQk0QTk1N0YwNjE0RTI0
MTJBMDA0OURCRkIgLyogV2ViU29ja2V0RXh0ZW5zaW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9ucy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbnMuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjAyNDEzMWYyZGJmOTY5YTlmZGQ4YjUwNmU1Mzg0MThjZTNiMTljYzIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lv
bnMuY3BwCkBAIC0wLDAgKzEsMjQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2ds
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJM
RShXRUJfU09DS0VUUykKKworI2luY2x1ZGUgIldlYlNvY2tldEV4dGVuc2lvbnMuaCIKKworI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEV4dGVuc2lvblBhcnNlciB7CitwdWJsaWM6CisgICAgRXh0ZW5zaW9u
UGFyc2VyKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQpCisgICAgICAgIDogbV9j
dXJyZW50KHN0YXJ0KQorICAgICAgICAsIG1fZW5kKGVuZCkKKyAgICB7CisgICAgfQorICAgIGJv
b2wgZmluaXNoZWQoKTsKKyAgICBib29sIHBhcnNlZFN1Y2Nlc3NmdWxseSgpOworICAgIGJvb2wg
Y29uc3VtZVRva2VuKCk7CisgICAgYm9vbCBjb25zdW1lUXVvdGVkU3RyaW5nKCk7CisgICAgYm9v
bCBjb25zdW1lQ2hhcmFjdGVyKGNoYXIpOworICAgIGNvbnN0IFN0cmluZyYgY3VycmVudFRva2Vu
KCkgeyByZXR1cm4gbV9jdXJyZW50VG9rZW47IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGNvbnN1
bWVTcGFjZXMoKTsKKyAgICBib29sIGlzQ29udHJvbChjaGFyKTsKKyAgICBib29sIGlzU2VwYXJh
dG9yKGNoYXIpOworCisgICAgY29uc3QgY2hhciogbV9jdXJyZW50OworICAgIGNvbnN0IGNoYXIq
IG1fZW5kOworICAgIFN0cmluZyBtX2N1cnJlbnRUb2tlbjsKK307CisKK2Jvb2wgRXh0ZW5zaW9u
UGFyc2VyOjpmaW5pc2hlZCgpCit7CisgICAgcmV0dXJuIG1fY3VycmVudCA+PSBtX2VuZDsKK30K
KworYm9vbCBFeHRlbnNpb25QYXJzZXI6OnBhcnNlZFN1Y2Nlc3NmdWxseSgpCit7CisgICAgcmV0
dXJuIG1fY3VycmVudCA9PSBtX2VuZDsKK30KKworLy8gVGhlc2UgZnVuY3Rpb25zIGJhc2ljYWxs
eSBmb2xsb3cgdGhlIGdyYW1tZXIgZGVmaW5lZCBpbiBTZWN0aW9uIDIuMiBvZiBSRkMgMjYxNi4K
Kwordm9pZCBFeHRlbnNpb25QYXJzZXI6OmNvbnN1bWVTcGFjZXMoKQoreworICAgIHdoaWxlICht
X2N1cnJlbnQgPCBtX2VuZCAmJiAoKm1fY3VycmVudCA9PSAnICcgfHwgKm1fY3VycmVudCA9PSAn
XHQnKSkKKyAgICAgICAgKyttX2N1cnJlbnQ7Cit9CisKK2Jvb2wgRXh0ZW5zaW9uUGFyc2VyOjpp
c0NvbnRyb2woY2hhciBjaGFyYWN0ZXIpCit7CisgICAgcmV0dXJuIGNoYXJhY3RlciA8PSAzMSB8
fCBjaGFyYWN0ZXIgPT0gMTI3OworfQorCitib29sIEV4dGVuc2lvblBhcnNlcjo6aXNTZXBhcmF0
b3IoY2hhciBjaGFyYWN0ZXIpCit7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHNlcGFyYXRvckNo
YXJhY3RlcnMgPSAiKCk8PkAsOzpcXFwiL1tdPz17fSBcdCI7CisgICAgZm9yIChjb25zdCBjaGFy
KiBjdXJyZW50ID0gc2VwYXJhdG9yQ2hhcmFjdGVyczsgKmN1cnJlbnQ7ICsrY3VycmVudCkgewor
ICAgICAgICBpZiAoKmN1cnJlbnQgPT0gY2hhcmFjdGVyKQorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBFeHRlbnNpb25QYXJzZXI6
OmNvbnN1bWVUb2tlbigpCit7CisgICAgY29uc3VtZVNwYWNlcygpOworICAgIGNvbnN0IGNoYXIq
IHN0YXJ0ID0gbV9jdXJyZW50OworICAgIHdoaWxlIChtX2N1cnJlbnQgPCBtX2VuZCAmJiAhaXND
b250cm9sKCptX2N1cnJlbnQpICYmICFpc1NlcGFyYXRvcigqbV9jdXJyZW50KSkKKyAgICAgICAg
KyttX2N1cnJlbnQ7CisgICAgaWYgKHN0YXJ0IDwgbV9jdXJyZW50KSB7CisgICAgICAgIG1fY3Vy
cmVudFRva2VuID0gU3RyaW5nKHN0YXJ0LCBtX2N1cnJlbnQgLSBzdGFydCk7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRXh0ZW5zaW9u
UGFyc2VyOjpjb25zdW1lUXVvdGVkU3RyaW5nKCkKK3sKKyAgICBjb25zdW1lU3BhY2VzKCk7Cisg
ICAgaWYgKG1fY3VycmVudCA+PSBtX2VuZCB8fCAqbV9jdXJyZW50ICE9ICciJykKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICArK21fY3VycmVu
dDsKKyAgICB3aGlsZSAobV9jdXJyZW50IDwgbV9lbmQgJiYgKm1fY3VycmVudCAhPSAnIicpIHsK
KyAgICAgICAgaWYgKCptX2N1cnJlbnQgPT0gJ1xcJyAmJiArK21fY3VycmVudCA+PSBtX2VuZCkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKm1fY3Vy
cmVudCk7CisgICAgICAgICsrbV9jdXJyZW50OworICAgIH0KKyAgICBpZiAobV9jdXJyZW50ID49
IG1fZW5kIHx8ICptX2N1cnJlbnQgIT0gJyInKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
bV9jdXJyZW50VG9rZW4gPSBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgKyttX2N1cnJlbnQ7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRXh0ZW5zaW9uUGFyc2VyOjpjb25zdW1lQ2hhcmFj
dGVyKGNoYXIgY2hhcmFjdGVyKQoreworICAgIGNvbnN1bWVTcGFjZXMoKTsKKyAgICBpZiAobV9j
dXJyZW50IDwgbV9lbmQgJiYgKm1fY3VycmVudCA9PSBjaGFyYWN0ZXIpIHsKKyAgICAgICAgKytt
X2N1cnJlbnQ7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK3ZvaWQgV2ViU29ja2V0RXh0ZW5zaW9uczo6cmVzZXQoKQoreworICAgIG1fZXh0ZW5z
aW9ucy5jbGVhcigpOworfQorCit2b2lkIFdlYlNvY2tldEV4dGVuc2lvbnM6OmFkZFByb2Nlc3Nv
cihQYXNzT3duUHRyPFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvcj4gcHJvY2Vzc29yKQorewor
ICAgIG1fZXh0ZW5zaW9ucy5hcHBlbmQoYWRvcHRQdHIobmV3IEV4dGVuc2lvbihwcm9jZXNzb3Ip
KSk7Cit9CisKK2NvbnN0IFN0cmluZyBXZWJTb2NrZXRFeHRlbnNpb25zOjpmb3JtYXRBc0hlYWRl
clZhbHVlKCkgY29uc3QKK3sKKyAgICBzaXplX3QgbnVtRXh0ZW5zaW9ucyA9IG1fZXh0ZW5zaW9u
cy5zaXplKCk7CisgICAgaWYgKCFudW1FeHRlbnNpb25zKQorICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CisKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQobV9l
eHRlbnNpb25zWzBdLT5tX3Byb2Nlc3Nvci0+aGFuZHNoYWtlU3RyaW5nKCkpOworICAgIGZvciAo
c2l6ZV90IGkgPSAxOyBpIDwgbnVtRXh0ZW5zaW9uczsgKytpKSB7CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCIsICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZChtX2V4dGVuc2lvbnNbaV0tPm1f
cHJvY2Vzc29yLT5oYW5kc2hha2VTdHJpbmcoKSk7CisgICAgfQorICAgIHJldHVybiBidWlsZGVy
LnRvU3RyaW5nKCk7Cit9CisKK2Jvb2wgV2ViU29ja2V0RXh0ZW5zaW9uczo6cHJvY2Vzc0hlYWRl
clZhbHVlKGNvbnN0IFN0cmluZyYgaGVhZGVyVmFsdWUpCit7CisgICAgaWYgKCFoZWFkZXJWYWx1
ZS5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBJZiB3ZSBkb24ndCBz
ZW5kIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIsIHRoZSBzZXJ2ZXIgc2hvdWxkIG5v
dCByZXR1cm4gdGhlIGhlYWRlcgorICAgIGlmICghbV9leHRlbnNpb25zLnNpemUoKSkgeworICAg
ICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiUmVjZWl2ZWQgdW5leHBlY3RlZCBTZWMtV2ViU29ja2V0
LUV4dGVuc2lvbnMgaGVhZGVyIjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IGNvbnN0IENTdHJpbmcgaGVhZGVyVmFsdWVEYXRhID0gaGVhZGVyVmFsdWUudXRmOCgpOworICAg
IEV4dGVuc2lvblBhcnNlciBwYXJzZXIoaGVhZGVyVmFsdWVEYXRhLmRhdGEoKSwgaGVhZGVyVmFs
dWVEYXRhLmRhdGEoKSArIGhlYWRlclZhbHVlRGF0YS5sZW5ndGgoKSk7CisKKyAgICB3aGlsZSAo
IXBhcnNlci5maW5pc2hlZCgpKSB7CisgICAgICAgIC8vIFBhcnNlIGV4dGVuc2lvbi10b2tlbgor
ICAgICAgICBpZiAoIXBhcnNlci5jb25zdW1lVG9rZW4oKSkgeworICAgICAgICAgICAgbV9mYWls
dXJlUmVhc29uID0gIlNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIgaXMgaW52YWxpZCI7
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgU3RyaW5nIGV4
dGVuc2lvblRva2VuID0gcGFyc2VyLmN1cnJlbnRUb2tlbigpOworCisgICAgICAgIC8vIFBhcnNl
IGV4dGVuc2lvbi1wYXJhbWV0ZXJzIGlmIGV4aXN0cworICAgICAgICBIYXNoTWFwPFN0cmluZywg
U3RyaW5nPiBleHRlbnNpb25QYXJhbWV0ZXJzOworICAgICAgICB3aGlsZSAocGFyc2VyLmNvbnN1
bWVDaGFyYWN0ZXIoJzsnKSkgeworICAgICAgICAgICAgaWYgKCFwYXJzZXIuY29uc3VtZVRva2Vu
KCkpIHsKKyAgICAgICAgICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiU2VjLVdlYlNvY2tldC1F
eHRlbnNpb25zIGhlYWRlciBpcyBpbnZhbGlkIjsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFN0cmluZyBwYXJhbWV0ZXJUb2tlbiA9
IHBhcnNlci5jdXJyZW50VG9rZW4oKTsKKyAgICAgICAgICAgIGlmIChwYXJzZXIuY29uc3VtZUNo
YXJhY3RlcignPScpKSB7CisgICAgICAgICAgICAgICAgaWYgKHBhcnNlci5jb25zdW1lUXVvdGVk
U3RyaW5nKCkgfHwgcGFyc2VyLmNvbnN1bWVUb2tlbigpKQorICAgICAgICAgICAgICAgICAgICBl
eHRlbnNpb25QYXJhbWV0ZXJzLmFkZChwYXJhbWV0ZXJUb2tlbiwgcGFyc2VyLmN1cnJlbnRUb2tl
bigpKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbV9mYWls
dXJlUmVhc29uID0gIlNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIgaXMgaW52YWxpZCI7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBleHRlbnNpb25QYXJhbWV0ZXJzLmFk
ZChwYXJhbWV0ZXJUb2tlbiwgU3RyaW5nKCkpOworICAgICAgICB9CisgICAgICAgIGlmICghcGFy
c2VyLmZpbmlzaGVkKCkgJiYgIXBhcnNlci5jb25zdW1lQ2hhcmFjdGVyKCcsJykpIHsKKyAgICAg
ICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgaGVhZGVy
IGlzIGludmFsaWQiOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAg
ICAgICAgc2l6ZV90IGluZGV4OworICAgICAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBtX2V4
dGVuc2lvbnMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgICAgICBFeHRlbnNpb24qIGV4dGVu
c2lvbiA9IG1fZXh0ZW5zaW9uc1tpbmRleF0uZ2V0KCk7CisgICAgICAgICAgICBpZiAoZXF1YWxJ
Z25vcmluZ0Nhc2UoZXh0ZW5zaW9uVG9rZW4sIGV4dGVuc2lvbi0+bV9wcm9jZXNzb3ItPmV4dGVu
c2lvblRva2VuKCkpICYmICFleHRlbnNpb24tPm1fcmVzcG9uc2VIYW5kbGVkKSB7CisgICAgICAg
ICAgICAgICAgZXh0ZW5zaW9uLT5tX3Jlc3BvbnNlSGFuZGxlZCA9IHRydWU7CisgICAgICAgICAg
ICAgICAgaWYgKGV4dGVuc2lvbi0+bV9wcm9jZXNzb3ItPnByb2Nlc3NSZXNwb25zZShleHRlbnNp
b25QYXJhbWV0ZXJzKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgbV9mYWlsdXJlUmVhc29uID0gZXh0ZW5zaW9uLT5tX3Byb2Nlc3Nvci0+ZmFpbHVyZVJlYXNv
bigpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICAvLyBUaGVyZSBpcyBubyBleHRlbnNpb24gd2hpY2ggY2FuIHByb2Nlc3Mg
dGhlIHJlc3BvbnNlCisgICAgICAgIGlmIChpbmRleCA9PSBtX2V4dGVuc2lvbnMuc2l6ZSgpKSB7
CisgICAgICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiUmVjZWl2ZWQgdW5leHBlY3RlZCBleHRl
bnNpb246ICIgKyBleHRlbnNpb25Ub2tlbjsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcGFyc2VyLnBhcnNlZFN1Y2Nlc3NmdWxseSgpOwor
fQorCitTdHJpbmcgV2ViU29ja2V0RXh0ZW5zaW9uczo6ZmFpbHVyZVJlYXNvbigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fZmFpbHVyZVJlYXNvbjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS93
ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYWE1NGYzMTIzNzUy
NDY3OTA2ZTYzMmI4MzYyNzM0MGQ4MWJlMWNlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25zLmgKQEAgLTAsMCArMSwxMDIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBXZWJTb2NrZXRFeHRlbnNpb25zX2gKKyNkZWZpbmUgV2ViU29ja2V0RXh0ZW5zaW9u
c19oCisKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNz
b3IgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvcigp
IHsgfQorCisgICAgY29uc3QgU3RyaW5nIGV4dGVuc2lvblRva2VuKCkgY29uc3QgeyByZXR1cm4g
bV9leHRlbnNpb25Ub2tlbjsgfQorCisgICAgLy8gVGhlIHJldHVybiB2YWx1ZSBvZiB0aGlzIG1l
dGhvZCB3aWxsIGJlIGEgcGFydCBvZiB0aGUgdmFsdWUgb2YKKyAgICAvLyBTZWMtV2ViU29ja2V0
LUV4dGVuc2lvbnMuCisgICAgdmlydHVhbCBjb25zdCBTdHJpbmcgaGFuZHNoYWtlU3RyaW5nKCkg
PSAwOworCisgICAgLy8gVGhpcyBzaG91bGQgdmFsaWRhdGUgdGhlIHNlcnZlcidzIHJlc3BvbnNl
IHBhcmFtZXRlcnMgd2hpY2ggYXJlIHBhc3NlZAorICAgIC8vIGFzIEhhc2hNYXA8a2V5LCB2YWx1
ZT4uIFRoaXMgbWF5IGFsc28gZG8gc29tZXRoaW5nIGZvciB0aGUgZXh0ZW5zaW9uLgorICAgIHZp
cnR1YWwgYm9vbCBwcm9jZXNzUmVzcG9uc2UoY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4m
KSA9IDA7CisKKyAgICAvLyBJZiBwcm9jZWNzc1Jlc3BvbnNlKCkgcmV0dXJucyBmYWxzZSwgdGhp
cyBzaG91bGQgcHJvdmlkZSB0aGUgcmVhc29uLgorICAgIHZpcnR1YWwgU3RyaW5nIGZhaWx1cmVS
ZWFzb24oKSB7IHJldHVybiAiRXh0ZW5zaW9uICIgKyBtX2V4dGVuc2lvblRva2VuICsgIiBmYWls
ZWQiOyB9CisKK3Byb3RlY3RlZDoKKyAgICBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IoY29u
c3QgU3RyaW5nJiBleHRlbnNpb25Ub2tlbikKKyAgICAgICAgOiBtX2V4dGVuc2lvblRva2VuKGV4
dGVuc2lvblRva2VuKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgU3RyaW5nIG1fZXh0
ZW5zaW9uVG9rZW47Cit9OworCitjbGFzcyBXZWJTb2NrZXRFeHRlbnNpb25zIHsKK3B1YmxpYzoK
KyAgICBXZWJTb2NrZXRFeHRlbnNpb25zKCkgeyB9CisKKyAgICB2b2lkIHJlc2V0KCk7CisgICAg
dm9pZCBhZGRQcm9jZXNzb3IoUGFzc093blB0cjxXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I+
KTsKKyAgICBjb25zdCBTdHJpbmcgZm9ybWF0QXNIZWFkZXJWYWx1ZSgpIGNvbnN0OworCisgICAg
Ym9vbCBwcm9jZXNzSGVhZGVyVmFsdWUoY29uc3QgU3RyaW5nJik7CisgICAgU3RyaW5nIGZhaWx1
cmVSZWFzb24oKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgRXh0ZW5zaW9uIHsKKyAg
ICAgICAgRXh0ZW5zaW9uKFBhc3NPd25QdHI8V2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yPiBw
cm9jZXNzb3IpCisgICAgICAgICAgICA6IG1fcHJvY2Vzc29yKHByb2Nlc3NvcikKKyAgICAgICAg
ICAgICwgbV9yZXNwb25zZUhhbmRsZWQoZmFsc2UpCisgICAgICAgIHsKKyAgICAgICAgfQorCisg
ICAgICAgIE93blB0cjxXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I+IG1fcHJvY2Vzc29yOwor
ICAgICAgICBib29sIG1fcmVzcG9uc2VIYW5kbGVkOworICAgIH07CisKKyAgICBWZWN0b3I8T3du
UHRyPEV4dGVuc2lvbj4gPiBtX2V4dGVuc2lvbnM7CisgICAgU3RyaW5nIG1fZmFpbHVyZVJlYXNv
bjsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShXRUJfU09DS0VUUykKKworI2VuZGlmIC8v
IFdlYlNvY2tldEV4dGVuc2lvbnNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXRIYW5kc2hha2UuY3BwCmluZGV4IDg5MDllZmFmMTg0NGYxZmFjYWRiN2YxYjVlMjEz
MmQyYmJkZGU4ZWYuLjk1MTJmZDkzOTVhOWRhMWJkZjAwYmY4ZTE5MWYzNzA1NzMyZGRiZTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAK
QEAgLTI4Nyw2ICsyODcsOSBAQCBDU3RyaW5nIFdlYlNvY2tldEhhbmRzaGFrZTo6Y2xpZW50SGFu
ZHNoYWtlTWVzc2FnZSgpIGNvbnN0CiAgICAgfSBlbHNlIHsKICAgICAgICAgZmllbGRzLmFwcGVu
ZCgiU2VjLVdlYlNvY2tldC1LZXk6ICIgKyBtX3NlY1dlYlNvY2tldEtleSk7CiAgICAgICAgIGZp
ZWxkcy5hcHBlbmQoIlNlYy1XZWJTb2NrZXQtVmVyc2lvbjogMTMiKTsKKyAgICAgICAgY29uc3Qg
U3RyaW5nIGV4dGVuc2lvblZhbHVlID0gbV9leHRlbnNpb25zLmZvcm1hdEFzSGVhZGVyVmFsdWUo
KTsKKyAgICAgICAgaWYgKGV4dGVuc2lvblZhbHVlLmxlbmd0aCgpKQorICAgICAgICAgICAgZmll
bGRzLmFwcGVuZCgiU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zOiAiICsgZXh0ZW5zaW9uVmFsdWUp
OwogICAgIH0KIAogICAgIC8vIEZpZWxkcyBpbiB0aGUgaGFuZHNoYWtlIGFyZSBzZW50IGJ5IHRo
ZSBjbGllbnQgaW4gYSByYW5kb20gb3JkZXI7IHRoZQpAQCAtMzQ0LDYgKzM0Nyw5IEBAIFdlYlNv
Y2tldEhhbmRzaGFrZVJlcXVlc3QgV2ViU29ja2V0SGFuZHNoYWtlOjpjbGllbnRIYW5kc2hha2VS
ZXF1ZXN0KCkgY29uc3QKICAgICB9IGVsc2UgewogICAgICAgICByZXF1ZXN0LmFkZEhlYWRlckZp
ZWxkKCJTZWMtV2ViU29ja2V0LUtleSIsIG1fc2VjV2ViU29ja2V0S2V5KTsKICAgICAgICAgcmVx
dWVzdC5hZGRIZWFkZXJGaWVsZCgiU2VjLVdlYlNvY2tldC1WZXJzaW9uIiwgIjEzIik7CisgICAg
ICAgIGNvbnN0IFN0cmluZyBleHRlbnNpb25WYWx1ZSA9IG1fZXh0ZW5zaW9ucy5mb3JtYXRBc0hl
YWRlclZhbHVlKCk7CisgICAgICAgIGlmIChleHRlbnNpb25WYWx1ZS5sZW5ndGgoKSkKKyAgICAg
ICAgICAgIHJlcXVlc3QuYWRkSGVhZGVyRmllbGQoIlNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyIs
IGV4dGVuc2lvblZhbHVlKTsKICAgICB9CiAKICAgICByZXR1cm4gcmVxdWVzdDsKQEAgLTM1Miw2
ICszNTgsNyBAQCBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0IFdlYlNvY2tldEhhbmRzaGFrZTo6
Y2xpZW50SGFuZHNoYWtlUmVxdWVzdCgpIGNvbnN0CiB2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6
cmVzZXQoKQogewogICAgIG1fbW9kZSA9IEluY29tcGxldGU7CisgICAgbV9leHRlbnNpb25zLnJl
c2V0KCk7CiB9CiAKIHZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjpjbGVhclNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKQpAQCAtNDY5LDE0ICs0NzYsMTQgQEAgU3RyaW5nIFdlYlNvY2tldEhhbmRzaGFr
ZTo6c2VydmVyV2ViU29ja2V0QWNjZXB0KCkgY29uc3QKICAgICByZXR1cm4gbV9yZXNwb25zZS5o
ZWFkZXJGaWVsZHMoKS5nZXQoInNlYy13ZWJzb2NrZXQtYWNjZXB0Iik7CiB9CiAKLVN0cmluZyBX
ZWJTb2NrZXRIYW5kc2hha2U6OnNlcnZlcldlYlNvY2tldEV4dGVuc2lvbnMoKSBjb25zdAorY29u
c3QgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UmIFdlYlNvY2tldEhhbmRzaGFrZTo6c2VydmVy
SGFuZHNoYWtlUmVzcG9uc2UoKSBjb25zdAogewotICAgIHJldHVybiBtX3Jlc3BvbnNlLmhlYWRl
ckZpZWxkcygpLmdldCgic2VjLXdlYnNvY2tldC1leHRlbnNpb25zIik7CisgICAgcmV0dXJuIG1f
cmVzcG9uc2U7CiB9CiAKLWNvbnN0IFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlJiBXZWJTb2Nr
ZXRIYW5kc2hha2U6OnNlcnZlckhhbmRzaGFrZVJlc3BvbnNlKCkgY29uc3QKK3ZvaWQgV2ViU29j
a2V0SGFuZHNoYWtlOjphZGRFeHRlbnNpb25Qcm9jZXNzb3IoUGFzc093blB0cjxXZWJTb2NrZXRF
eHRlbnNpb25Qcm9jZXNzb3I+IHByb2Nlc3NvcikKIHsKLSAgICByZXR1cm4gbV9yZXNwb25zZTsK
KyAgICBtX2V4dGVuc2lvbnMuYWRkUHJvY2Vzc29yKHByb2Nlc3Nvcik7CiB9CiAKIEtVUkwgV2Vi
U29ja2V0SGFuZHNoYWtlOjpodHRwVVJMRm9yQXV0aGVudGljYXRpb25BbmRDb29raWVzKCkgY29u
c3QKQEAgLTYyNSw3ICs2MzIsMTUgQEAgY29uc3QgY2hhciogV2ViU29ja2V0SGFuZHNoYWtlOjpy
ZWFkSFRUUEhlYWRlcnMoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGUKICAgICAgICAg
ICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgICAgIExPRyhOZXR3b3JrLCAibmFtZT0lcyB2
YWx1ZT0lcyIsIG5hbWVTdHIuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgdmFsdWVTdHIudXRmOCgp
LmRhdGEoKSk7Ci0gICAgICAgIG1fcmVzcG9uc2UuYWRkSGVhZGVyRmllbGQobmFtZVN0ciwgdmFs
dWVTdHIpOworICAgICAgICAvLyBTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgbWF5IGJlIHNwbGl0
LiBXZSBwYXJzZSBhbmQgY2hlY2sgdGhlCisgICAgICAgIC8vIGhlYWRlciB2YWx1ZSBldmVyeSB0
aW1lIHRoZSBoZWFkZXIgYXBwZWFycy4KKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKCJz
ZWMtd2Vic29ja2V0LWV4dGVuc2lvbnMiLCBuYW1lU3RyKSkgeworICAgICAgICAgICAgaWYgKCFt
X2V4dGVuc2lvbnMucHJvY2Vzc0hlYWRlclZhbHVlKHZhbHVlU3RyKSkgeworICAgICAgICAgICAg
ICAgIG1fZmFpbHVyZVJlYXNvbiA9IG1fZXh0ZW5zaW9ucy5mYWlsdXJlUmVhc29uKCk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgbV9yZXNwb25zZS5hZGRIZWFkZXJGaWVsZChuYW1lU3RyLCB2YWx1ZVN0cik7CiAg
ICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiAwOwpAQCAtNjM5LDcg
KzY1NCw2IEBAIGJvb2wgV2ViU29ja2V0SGFuZHNoYWtlOjpjaGVja1Jlc3BvbnNlSGVhZGVycygp
CiAgICAgY29uc3QgU3RyaW5nJiBzZXJ2ZXJVcGdyYWRlID0gdGhpcy0+c2VydmVyVXBncmFkZSgp
OwogICAgIGNvbnN0IFN0cmluZyYgc2VydmVyQ29ubmVjdGlvbiA9IHRoaXMtPnNlcnZlckNvbm5l
Y3Rpb24oKTsKICAgICBjb25zdCBTdHJpbmcmIHNlcnZlcldlYlNvY2tldEFjY2VwdCA9IHRoaXMt
PnNlcnZlcldlYlNvY2tldEFjY2VwdCgpOwotICAgIGNvbnN0IFN0cmluZyYgc2VydmVyV2ViU29j
a2V0RXh0ZW5zaW9ucyA9IHRoaXMtPnNlcnZlcldlYlNvY2tldEV4dGVuc2lvbnMoKTsKIAogICAg
IGlmIChzZXJ2ZXJVcGdyYWRlLmlzTnVsbCgpKSB7CiAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9
ICJFcnJvciBkdXJpbmcgV2ViU29ja2V0IGhhbmRzaGFrZTogJ1VwZ3JhZGUnIGhlYWRlciBpcyBt
aXNzaW5nIjsKQEAgLTY5MiwxMyArNzA2LDYgQEAgYm9vbCBXZWJTb2NrZXRIYW5kc2hha2U6OmNo
ZWNrUmVzcG9uc2VIZWFkZXJzKCkKICAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJFcnJv
ciBkdXJpbmcgV2ViU29ja2V0IGhhbmRzaGFrZTogU2VjLVdlYlNvY2tldC1BY2NlcHQgbWlzbWF0
Y2giOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIGlmICgh
c2VydmVyV2ViU29ja2V0RXh0ZW5zaW9ucy5pc051bGwoKSkgewotICAgICAgICAgICAgLy8gV2Vi
U29ja2V0IHByb3RvY29sIGV4dGVuc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgeWV0LgotICAgICAg
ICAgICAgLy8gV2UgZG8gbm90IHNlbmQgU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlciBp
biBvdXIgcmVxdWVzdCwgdGh1cwotICAgICAgICAgICAgLy8gc2VydmVycyBzaG91bGQgbm90IHJl
dHVybiB0aGlzIGhlYWRlciwgZWl0aGVyLgotICAgICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0g
IkVycm9yIGR1cmluZyBXZWJTb2NrZXQgaGFuZHNoYWtlOiBTZWMtV2ViU29ja2V0LUV4dGVuc2lv
bnMgaGVhZGVyIGlzIGludmFsaWQiOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICB9CiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKaW5kZXggMTJjMTg0MDE5YzJjYWM2N2RhOWZmMzQ5
MmM0N2I5YjcwMmFjZWFiNy4uNTBhN2YyZGU3YzY5M2QzMWU5MzI0ZTEwMDVmZmRiZDk0MmViNGM2
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hh
a2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5o
CkBAIC0zNSw4ICszNSwxMCBAQAogCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViU29ja2V0RXh0ZW5zaW9ucy5oIgogI2luY2x1ZGUg
IldlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hh
a2VSZXNwb25zZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtODEsMTAgKzgzLDExIEBAIHB1YmxpYzoKICAgICBTdHJpbmcgc2VydmVy
VXBncmFkZSgpIGNvbnN0OwogICAgIFN0cmluZyBzZXJ2ZXJDb25uZWN0aW9uKCkgY29uc3Q7CiAg
ICAgU3RyaW5nIHNlcnZlcldlYlNvY2tldEFjY2VwdCgpIGNvbnN0OyAvLyBPbmx5IGZvciBoeWJp
LTEwIGhhbmRzaGFrZS4KLSAgICBTdHJpbmcgc2VydmVyV2ViU29ja2V0RXh0ZW5zaW9ucygpIGNv
bnN0OyAvLyBPbmx5IGZvciBoeWJpLTEwIGhhbmRzaGFrZS4KIAogICAgIGNvbnN0IFdlYlNvY2tl
dEhhbmRzaGFrZVJlc3BvbnNlJiBzZXJ2ZXJIYW5kc2hha2VSZXNwb25zZSgpIGNvbnN0OwogCisg
ICAgdm9pZCBhZGRFeHRlbnNpb25Qcm9jZXNzb3IoUGFzc093blB0cjxXZWJTb2NrZXRFeHRlbnNp
b25Qcm9jZXNzb3I+KTsKKwogcHJpdmF0ZToKICAgICBLVVJMIGh0dHBVUkxGb3JBdXRoZW50aWNh
dGlvbkFuZENvb2tpZXMoKSBjb25zdDsKIApAQCAtMTE2LDYgKzExOSw4IEBAIHByaXZhdGU6CiAg
ICAgLy8gRm9yIGh5YmktMTAgaGFuZHNoYWtlLgogICAgIFN0cmluZyBtX3NlY1dlYlNvY2tldEtl
eTsKICAgICBTdHJpbmcgbV9leHBlY3RlZEFjY2VwdDsKKworICAgIFdlYlNvY2tldEV4dGVuc2lv
bnMgbV9leHRlbnNpb25zOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cGkKaW5kZXggYzg1MDJmNTczYzQ1MTcwMTczNTQ4NWFmNDc1MjNlNzUx
Mjk0YzgzZC4uOTc1OWIzYTE5Njg3ZDY3Yjg3OWIyOGJlOTg2NjkzNGE2ZTAzMDY0OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXBpCkBAIC0xMTgsNiArMTE4LDcgQEAKICAgICAgICAgICAg
ICd0ZXN0cy9XZWJMYXllclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9XZWJQYWdlTmV3
U2VyaWFsaXplclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9XZWJQYWdlU2VyaWFsaXpl
clRlc3QuY3BwJywKKyAgICAgICAgICAgICd0ZXN0cy9XZWJTb2NrZXRFeHRlbnNpb25zVGVzdC5j
cHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1dlYlVSTFJlcXVlc3RUZXN0LmNwcCcsCiAgICAgICAg
ICAgICAndGVzdHMvV2ViVmlld1Rlc3QuY3BwJywKICAgICAgICAgXSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViU29ja2V0RXh0ZW5zaW9uc1Rlc3QuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJTb2NrZXRFeHRlbnNpb25zVGVzdC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjdhYWYxZjcyOWQzODgzNWQzNTY1YmZlYmQ1MmNkOTg3ZjIzZjg2MQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViU29ja2V0RXh0
ZW5zaW9uc1Rlc3QuY3BwCkBAIC0wLDAgKzEsMTgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaW5jbHVkZSAiV2ViU29ja2V0RXh0ZW5zaW9ucy5oIgorCisjaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgeworCitjbGFzcyBXZWJTb2NrZXRFeHRlbnNp
b25zVGVzdDsKKworY2xhc3MgTW9ja1dlYlNvY2tldEV4dGVuc2lvblByb2Nlc3NvciA6IHB1Ymxp
YyBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IgeworcHVibGljOgorICAgIE1vY2tXZWJTb2Nr
ZXRFeHRlbnNpb25Qcm9jZXNzb3IoY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJTb2NrZXRFeHRlbnNp
b25zVGVzdCogdGVzdCkKKyAgICAgICAgOiBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IobmFt
ZSkKKyAgICAgICAgLCBtX3Rlc3QodGVzdCkKKyAgICB7CisgICAgfQorICAgIHZpcnR1YWwgY29u
c3QgU3RyaW5nIGhhbmRzaGFrZVN0cmluZygpIHsgcmV0dXJuIGV4dGVuc2lvblRva2VuKCk7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgcHJvY2Vzc1Jlc3BvbnNlKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBT
dHJpbmc+Jik7CisKK3ByaXZhdGU6CisKKyAgICBXZWJTb2NrZXRFeHRlbnNpb25zVGVzdCogbV90
ZXN0OworfTsKKworY2xhc3MgV2ViU29ja2V0RXh0ZW5zaW9uc1Rlc3QgOiBwdWJsaWMgdGVzdGlu
Zzo6VGVzdCB7CitwdWJsaWM6CisgICAgV2ViU29ja2V0RXh0ZW5zaW9uc1Rlc3QoKQorICAgIHsK
KyAgICB9CisKKyAgICB2b2lkIFNldFVwKCkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBUZWFy
RG93bigpCisgICAgeworICAgIH0KKworICAgIHZvaWQgYWRkTW9ja1Byb2Nlc3Nvcihjb25zdCBT
dHJpbmcmIGV4dGVuc2lvblRva2VuKQorICAgIHsKKyAgICAgICAgbV9leHRlbnNpb25zLmFkZFBy
b2Nlc3NvcihhZG9wdFB0cihuZXcgTW9ja1dlYlNvY2tldEV4dGVuc2lvblByb2Nlc3NvcihleHRl
bnNpb25Ub2tlbiwgdGhpcykpKTsKKworICAgIH0KKworICAgIHZvaWQgYXBwZW5kUmVzdWx0KGNv
bnN0IFN0cmluZyYgZXh0ZW5zaW9uVG9rZW4sIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+
JiBwYXJhbWV0ZXJzKQorICAgIHsKKyAgICAgICAgbV9wYXJzZWRFeHRlbnNpb25Ub2tlbnMuYXBw
ZW5kKGV4dGVuc2lvblRva2VuKTsKKyAgICAgICAgbV9wYXJzZWRQYXJhbWV0ZXJzLmFwcGVuZChw
YXJhbWV0ZXJzKTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBXZWJTb2NrZXRFeHRlbnNpb25z
IG1fZXh0ZW5zaW9uczsKKyAgICBWZWN0b3I8U3RyaW5nPiBtX3BhcnNlZEV4dGVuc2lvblRva2Vu
czsKKyAgICBWZWN0b3I8SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gPiBtX3BhcnNlZFBhcmFtZXRl
cnM7Cit9OworCitib29sIE1vY2tXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I6OnByb2Nlc3NS
ZXNwb25zZShjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgcGFyYW1ldGVycykKK3sKKyAg
ICBtX3Rlc3QtPmFwcGVuZFJlc3VsdChleHRlbnNpb25Ub2tlbigpLCBwYXJhbWV0ZXJzKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworVEVTVF9GKFdlYlNvY2tldEV4dGVuc2lvbnNUZXN0LCBUZXN0
U2luZ2xlKQoreworICAgIGFkZE1vY2tQcm9jZXNzb3IoImRlZmxhdGUtZnJhbWUiKTsKKyAgICBF
WFBFQ1RfVFJVRShtX2V4dGVuc2lvbnMucHJvY2Vzc0hlYWRlclZhbHVlKCJkZWZsYXRlLWZyYW1l
IikpOworICAgIEVYUEVDVF9FUSgxVUwsIG1fcGFyc2VkRXh0ZW5zaW9uVG9rZW5zLnNpemUoKSk7
CisgICAgRVhQRUNUX0VRKCJkZWZsYXRlLWZyYW1lIiwgbV9wYXJzZWRFeHRlbnNpb25Ub2tlbnNb
MF0pOworICAgIEVYUEVDVF9FUSgwLCBtX3BhcnNlZFBhcmFtZXRlcnNbMF0uc2l6ZSgpKTsKK30K
KworVEVTVF9GKFdlYlNvY2tldEV4dGVuc2lvbnNUZXN0LCBUZXN0UGFyYW1ldGVycykKK3sKKyAg
ICBhZGRNb2NrUHJvY2Vzc29yKCJtdXgiKTsKKyAgICBFWFBFQ1RfVFJVRShtX2V4dGVuc2lvbnMu
cHJvY2Vzc0hlYWRlclZhbHVlKCJtdXg7IG1heC1jaGFubmVscz00OyBmbG93LWNvbnRyb2wgICIp
KTsKKyAgICBFWFBFQ1RfRVEoMVVMLCBtX3BhcnNlZEV4dGVuc2lvblRva2Vucy5zaXplKCkpOwor
ICAgIEVYUEVDVF9FUSgibXV4IiwgbV9wYXJzZWRFeHRlbnNpb25Ub2tlbnNbMF0pOworICAgIEVY
UEVDVF9FUSgyLCBtX3BhcnNlZFBhcmFtZXRlcnNbMF0uc2l6ZSgpKTsKKyAgICBIYXNoTWFwPFN0
cmluZywgU3RyaW5nPjo6aXRlcmF0b3IgcGFyYW1ldGVyID0gbV9wYXJzZWRQYXJhbWV0ZXJzWzBd
LmZpbmQoIm1heC1jaGFubmVscyIpOworICAgIEVYUEVDVF9UUlVFKHBhcmFtZXRlciAhPSBtX3Bh
cnNlZFBhcmFtZXRlcnNbMF0uZW5kKCkpOworICAgIEVYUEVDVF9FUSgiNCIsIHBhcmFtZXRlci0+
c2Vjb25kKTsKKyAgICBwYXJhbWV0ZXIgPSBtX3BhcnNlZFBhcmFtZXRlcnNbMF0uZmluZCgiZmxv
dy1jb250cm9sIik7CisgICAgRVhQRUNUX1RSVUUocGFyYW1ldGVyICE9IG1fcGFyc2VkUGFyYW1l
dGVyc1swXS5lbmQoKSk7CisgICAgRVhQRUNUX1RSVUUocGFyYW1ldGVyLT5zZWNvbmQuaXNOdWxs
KCkpOworfQorCitURVNUX0YoV2ViU29ja2V0RXh0ZW5zaW9uc1Rlc3QsIFRlc3RNdWx0aXBsZSkK
K3sKKyAgICBzdHJ1Y3QgeworICAgICAgICBTdHJpbmcgdG9rZW47CisgICAgICAgIEhhc2hNYXA8
U3RyaW5nLCBTdHJpbmc+IHBhcmFtZXRlcnM7CisgICAgfSBleHBlY3RlZFsyXTsKKyAgICBleHBl
Y3RlZFswXS50b2tlbiA9ICJtdXgiOworICAgIGV4cGVjdGVkWzBdLnBhcmFtZXRlcnMuYWRkKCJt
YXgtY2hhbm5lbHMiLCAiNCIpOworICAgIGV4cGVjdGVkWzBdLnBhcmFtZXRlcnMuYWRkKCJmbG93
LWNvbnRyb2wiLCBTdHJpbmcoKSk7CisgICAgZXhwZWN0ZWRbMV0udG9rZW4gPSAiZGVmbGF0ZS1m
cmFtZSI7CisKKyAgICBhZGRNb2NrUHJvY2Vzc29yKCJtdXgiKTsKKyAgICBhZGRNb2NrUHJvY2Vz
c29yKCJkZWZsYXRlLWZyYW1lIik7CisgICAgRVhQRUNUX1RSVUUobV9leHRlbnNpb25zLnByb2Nl
c3NIZWFkZXJWYWx1ZSgibXV4IDsgIG1heC1jaGFubmVscyA9NDtmbG93LWNvbnRyb2wsIGRlZmxh
dGUtZnJhbWUgICIpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemVvZihleHBlY3Rl
ZCkgLyBzaXplb2YoZXhwZWN0ZWRbMF0pOyArK2kpIHsKKyAgICAgICAgRVhQRUNUX0VRKGV4cGVj
dGVkW2ldLnRva2VuLCBtX3BhcnNlZEV4dGVuc2lvblRva2Vuc1tpXSk7CisgICAgICAgIGNvbnN0
IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBleHBlY3RlZFBhcmFtZXRlcnMgPSBleHBlY3RlZFtp
XS5wYXJhbWV0ZXJzOworICAgICAgICBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgcGFy
c2VkUGFyYW1ldGVycyA9IG1fcGFyc2VkUGFyYW1ldGVyc1tpXTsKKyAgICAgICAgRVhQRUNUX0VR
KGV4cGVjdGVkW2ldLnBhcmFtZXRlcnMuc2l6ZSgpLCBtX3BhcnNlZFBhcmFtZXRlcnNbaV0uc2l6
ZSgpKTsKKyAgICAgICAgZm9yIChIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0
b3IgaXRlcmF0b3IgPSBleHBlY3RlZFBhcmFtZXRlcnMuYmVnaW4oKTsgaXRlcmF0b3IgIT0gZXhw
ZWN0ZWRQYXJhbWV0ZXJzLmVuZCgpOyArK2l0ZXJhdG9yKSB7CisgICAgICAgICAgICBIYXNoTWFw
PFN0cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgcGFyc2VkID0gcGFyc2VkUGFyYW1ldGVy
cy5maW5kKGl0ZXJhdG9yLT5maXJzdCk7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShwYXJzZWQg
IT0gcGFyc2VkUGFyYW1ldGVycy5lbmQoKSk7CisgICAgICAgICAgICBpZiAoaXRlcmF0b3ItPnNl
Y29uZC5pc051bGwoKSkKKyAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShwYXJzZWQtPnNlY29u
ZC5pc051bGwoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgRVhQRUNUX0VR
KGl0ZXJhdG9yLT5zZWNvbmQsIHBhcnNlZC0+c2Vjb25kKTsKKyAgICAgICAgfQorICAgIH0KK30K
KworVEVTVF9GKFdlYlNvY2tldEV4dGVuc2lvbnNUZXN0LCBUZXN0UXVvdGVkU3RyaW5nKQorewor
ICAgIGFkZE1vY2tQcm9jZXNzb3IoIngtZm9vIik7CisgICAgRVhQRUNUX1RSVUUobV9leHRlbnNp
b25zLnByb2Nlc3NIZWFkZXJWYWx1ZSgieC1mb287IHBhcmFtMT1cInF1b3RlZCBzdHJpbmdcIjsg
cGFyYW0yPVwiXFxcInF1b3RlZFxcXCIgc3RyaW5nXFxcXFwiIikpOworICAgIEVYUEVDVF9FUSgy
LCBtX3BhcnNlZFBhcmFtZXRlcnNbMF0uc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoInF1b3RlZCBz
dHJpbmciLCBtX3BhcnNlZFBhcmFtZXRlcnNbMF0uZ2V0KCJwYXJhbTEiKSk7CisgICAgRVhQRUNU
X0VRKCJcInF1b3RlZFwiIHN0cmluZ1xcIiwgbV9wYXJzZWRQYXJhbWV0ZXJzWzBdLmdldCgicGFy
YW0yIikpOworfQorCitURVNUX0YoV2ViU29ja2V0RXh0ZW5zaW9uc1Rlc3QsIFRlc3RJbnZhbGlk
KQoreworICAgIGNvbnN0IGNoYXIqIGlucHV0c1tdID0geworICAgICAgICAiXCJ4LWZvb1wiIiwK
KyAgICAgICAgIngtYmF6IiwKKyAgICAgICAgIngtZm9vXFwiLAorICAgICAgICAieC0oZm9vKSIs
CisgICAgICAgICJ4LWZvbzsgIiwKKyAgICAgICAgIngtZm9vOyBiYXI9IiwKKyAgICAgICAgIngt
Zm9vOyBiYXI9eCB5IiwKKyAgICAgICAgIngtZm9vOyBiYXI9XCJtaXNtYXRjaCBxdW90ZSIsCisg
ICAgICAgICJ4LWZvbzsgYmFyPVwiXFxcIiIsCisgICAgICAgICJ4LWZvbzsgXCJiYXJcIj1iYXoi
LAorICAgICAgICAieC1mb28geC1iYXIiLAorICAgICAgICAieC1mb28sIHgtYmF6IgorICAgICAg
ICAieC1mb28sICIsCisgICAgfTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemVvZihp
bnB1dHMpIC8gc2l6ZW9mKGlucHV0c1swXSk7ICsraSkgeworICAgICAgICBtX2V4dGVuc2lvbnMu
cmVzZXQoKTsKKyAgICAgICAgYWRkTW9ja1Byb2Nlc3NvcigieC1mb28iKTsKKyAgICAgICAgYWRk
TW9ja1Byb2Nlc3NvcigieC1iYXIiKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG1fZXh0ZW5zaW9u
cy5wcm9jZXNzSGVhZGVyVmFsdWUoaW5wdXRzW2ldKSk7CisgICAgfQorfQorCit9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
MTViNjBhYjMxZjMxYzAwMzI0ZTIzYzRjMWM1M2I1NmE5N2Y4MTNjNS4uYTgxODE1ZjA2NmYxMmMy
OTE4OTdlOTY5ODAwNjNmYjRjMGE1Nzk3ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEyLTAy
LTA4ICBLZW5pY2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBB
ZGQgV2ViU29ja2V0IGV4dGVuc2lvbiBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODA3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9o
YW5kc2hha2UtZmFpbC1ieS1leHRlbnNpb25zLWhlYWRlci1leHBlY3RlZC50eHQ6IFJlYmFzZWxp
bmVkLgorCiAyMDEyLTAyLTA4ICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1l
eHRlbnNpb25zLWhlYWRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LWV4dGVuc2lvbnMtaGVhZGVyLWV4
cGVjdGVkLnR4dAppbmRleCBiMTQ2OTdjOWRiYzhhNzY5MDFkYzU4NWRlMTNlNGJjNTk0OTE1MDFi
Li5hZGYwNmI2NTFkNmI0NzE1YjRhMWI5N2M4N2M5NjAyMzNhYWUxZmEwIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWls
LWJ5LWV4dGVuc2lvbnMtaGVhZGVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LWV4dGVuc2lvbnMt
aGVhZGVyLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKLUNPTlNPTEUgTUVTU0FHRTogRXJy
b3IgZHVyaW5nIFdlYlNvY2tldCBoYW5kc2hha2U6IFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBo
ZWFkZXIgaXMgaW52YWxpZAorQ09OU09MRSBNRVNTQUdFOiBSZWNlaXZlZCB1bmV4cGVjdGVkIFNl
Yy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIKIFRlc3Qgd2hldGhlciBXZWJTb2NrZXQgaGFu
ZHNoYWtlIGZhaWxzIGlmIHRoZSBzZXJ2ZXIgc2VuZHMgU2VjLVdlYlNvY2tldC1FeHRlbnNpb25z
IGhlYWRlci4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126255</attachid>
            <date>2012-02-09 01:06:19 -0800</date>
            <delta_ts>2012-02-09 02:35:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78079-20120209180617.patch</filename>
            <type>text/plain</type>
            <size>45175</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3MTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRiMTBlMzY1YzkyMjE4
YzJlNTQ0ZTQyOTdmOTI4ODhlNTI2MzVjMi4uOTg4MzVhYmE5ZGJhMGExNjVlMTFmYjkxNDZmMzhm
NzdiZDUxOGNjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDEyLTAyLTA5ICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgV2ViU29j
a2V0IGV4dGVuc2lvbiBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03ODA3OQorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBXZWJT
b2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyIGNsYXNzLCB3aGljaCBjcmVhdGVzIGNsaWVudCdzCisg
ICAgICAgIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIgZmllbGQgYW5kIHBhcnNlcyB0
aGUgc2VydmVyIHJlc3BvbnNlLgorICAgICAgICBUaGlzIHBhdGNoIGRvZXNuJ3QgYWRkIGFueSBh
Y3R1YWwgZXh0ZW5zaW9uLCBzbyBubyBjaGFuZ2VzIGluIGJlaGF2aW9yLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBleGNlcHQg
Zm9yIGNocm9taXVtIHBvcnQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkZWQgV2Vi
U29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci4oY3BwfGgpIGFuZCBXZWJTb2NrZXRFeHRlbnNpb25Q
cm9jZXNzb3IuaC4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBEaXR0by4KKyAgICAg
ICAgKiBUYXJnZXQucHJpOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6IERpdHRvLgor
ICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOiBEaXR0by4KKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorICAgICAgICAqIHdl
YnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChFeHRlbnNpb25QYXJzZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uUGFyc2VyOjpFeHRlbnNpb25QYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uUGFyc2VyOjpjdXJyZW50VG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uUGFyc2VyOjpmaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25QYXJzZXI6
OnBhcnNlZFN1Y2Nlc3NmdWxseSk6CisgICAgICAgIChXZWJDb3JlOjppc1Rva2VuQ2hhcmFjdGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OmlzU2VwYXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvblBhcnNlcjo6c2tpcFNwYWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25Q
YXJzZXI6OmNvbnN1bWVUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25QYXJzZXI6
OmNvbnN1bWVRdW90ZWRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uUGFyc2Vy
Ojpjb25zdW1lUXVvdGVkU3RyaW5nT3JUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25QYXJzZXI6OmNvbnN1bWVDaGFyYWN0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
RXh0ZW5zaW9uRGlzcGF0Y2hlcjo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
RXh0ZW5zaW9uRGlzcGF0Y2hlcjo6YWRkUHJvY2Vzc29yKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXI6OmNyZWF0ZUhlYWRlclZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXI6OnByb2Nlc3NIZWFkZXJWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyOjpmYWls
dXJlUmVhc29uKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3Bh
dGNoZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYlNvY2tldEV4
dGVuc2lvbkRpc3BhdGNoZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9u
RGlzcGF0Y2hlcjo6V2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlcik6CisgICAgICAgICogd2Vi
c29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I6On5XZWJTb2NrZXRFeHRlbnNp
b25Qcm9jZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vz
c29yOjpleHRlbnNpb25Ub2tlbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNp
b25Qcm9jZXNzb3I6OmZhaWx1cmVSZWFzb24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
RXh0ZW5zaW9uUHJvY2Vzc29yOjpXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IpOgorICAgICAg
ICAqIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldEhhbmRzaGFrZTo6Y2xpZW50SGFuZHNoYWtlTWVzc2FnZSk6IEFkZHMgZXh0ZW5z
aW9uIGhlYWRlciB2YWx1ZSBpZiBleGlzdHMuCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRI
YW5kc2hha2U6OmNsaWVudEhhbmRzaGFrZVJlcXVlc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldEhhbmRzaGFrZTo6cmVzZXQpOiBSZXNldHMgV2ViU29ja2V0RXh0ZW5zaW9u
RGlzcGF0Y2hlciBvYmplY3QuCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6
OnNlcnZlckhhbmRzaGFrZVJlc3BvbnNlKTogUmVtb3ZlZC4KKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldEhhbmRzaGFrZTo6YWRkRXh0ZW5zaW9uUHJvY2Vzc29yKTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRIVFRQSGVhZGVycyk6IFBhcnNlcyBh
bmQgY2hlY2tzIGV2ZXJ5IHRpbWUgU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlciBhcHBl
YXJzLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpjaGVja1Jlc3BvbnNl
SGVhZGVycyk6IFJlbW92ZWQgdGhlIGNoZWNrIG9mIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucy4K
KyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oOiBSZW1vdmVkIHNlcnZl
ckhhbmRzaGFrZVJlc3BvbnNlKCkuCisKIDIwMTItMDItMDggIEtlbnRhcm8gSGFyYSAgPGhhcmFr
ZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSBbQ3VzdG9tSGVhZGVyXSBmcm9tIENh
bnZhc1BpeGVsQXJyYXkgYW5kIHJlbmFtZSBbQ3VzdG9tSGVhZGVyXSB0byBbSlNDdXN0b21IZWFk
ZXJdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGFjZWRiYWQ0ZjBlZGRhN2ZjZWY3NDE2
MDVkMDA1OGIzZWY4ZmIwYmYuLjMyODlhMjJkYzFjMDBiM2U0ODNiOGM3Nzk1OGMxZDQwZjIwMWZi
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTItMDIt
MDkgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFk
ZCBXZWJTb2NrZXQgZXh0ZW5zaW9uIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc4MDc5CisKKyAgICAgICAgQWRkIHNvbWUgdGVzdHMgd2hp
Y2ggY2hlY2sgV2ViU29ja2V0RXh0ZW5zaW9uczo6cHJvY2Vzc0hlYWRlclZhbHVlKCkKKyAgICAg
ICAgcGFyc2VzIHRoZSBnaXZlbiByZXNwb25zZSBjb3JyZWN0bHkuCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAg
KiB0ZXN0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyVGVzdC5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChNb2NrV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29y
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I6Ok1v
Y2tXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IpOgorICAgICAgICAoV2ViU29ja2V0RXh0ZW5z
aW9uRGlzcGF0Y2hlclRlc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9u
RGlzcGF0Y2hlclRlc3Q6OldlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXJUZXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXJUZXN0OjpTZXRVcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyVGVzdDo6VGVhckRv
d24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlclRlc3Q6
OmFkZE1vY2tQcm9jZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9u
RGlzcGF0Y2hlclRlc3Q6OmFwcGVuZFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrV2Vi
U29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yOjpwcm9jZXNzUmVzcG9uc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6VEVTVF9GKToKKwogMjAxMi0wMi0wOCAgU2hhd24gU2luZ2ggIDxzaGF3bnNpbmdoQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFJlbW92ZSBpbmNvcnJlY3QgZWFybHkg
ZXhpdCBpbiBDQ0RhbWFnZVRyYWNrZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMTEwZjg3YmM1
YmRkYjAxNDczNGNjYzExNzZhNDQ5ZmM0ZGVkNjc2My4uOTY3ZjA4ODU4YjAwOWNkNzVlNDA2MDE3
ZWI4YzRhNGI4MTMyNDQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIwMzgsNiArMjAzOCw3
IEBAIElGIChFTkFCTEVfV0VCX1NPQ0tFVFMpCiAgICAgICAgIHdlYnNvY2tldHMvVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcAogICAgICAgICB3ZWJzb2NrZXRzL1dl
YlNvY2tldC5jcHAKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorICAg
ICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwCiAgICAgICAg
IHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAogICAgICAgICB3ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0
SGFuZHNoYWtlUmVzcG9uc2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBh
ZDllMmY2MDgyNDhhNTQ2YWJhYzJhZjIwOWM2MDc5NDUzZmM4ZjA3Li4yYzk5ZjMzMDg5NTY5ZTBl
MWM4MzM2NTM2NDdiYWI3M2VmNWU5ZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
QEAgLTQzMDcsNiArNDMwNyw5IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuaCBcCisJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNw
YXRjaGVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNp
b25EaXNwYXRjaGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0
ZW5zaW9uUHJvY2Vzc29yLmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
SGFuZHNoYWtlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5k
c2hha2UuaCBcCiAJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VS
ZXF1ZXN0LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCBhZjFlYjU4ZGI4MzZjZDllZTJmYWY0YWJiZmFl
NDI0NmRkOWIzY2FjLi4wMmExMzU5MDUzMzU4NzE1YmQzMmZjMTFjMGE2ZGE3YWU4YTRhZTMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkKQEAgLTM2NTYsNiArMzY1Niw4IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJM
RV9XRUJfU09DS0VUUz0xKSB7CiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0LmggXAogICAg
ICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCBcCiAgICAgICAgIHdlYnNvY2tldHMv
V2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIFwKKyAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRF
eHRlbnNpb25EaXNwYXRjaGVyLmggXAorICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVu
c2lvblByb2Nlc3Nvci5oIFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2Uu
aCBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oIFwKICAg
ICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oIFwKQEAgLTM2NjQs
NiArMzY2Niw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XRUJfU09DS0VUUz0xKSB7CiAg
ICAgU09VUkNFUyArPSBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBcCiAgICAg
ICAgIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgXAorICAgICAgICB3ZWJzb2NrZXRz
L1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwIFwKICAgICAgICAgd2Vic29ja2V0cy9X
ZWJTb2NrZXRIYW5kc2hha2UuY3BwIFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5k
c2hha2VSZXF1ZXN0LmNwcCBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtl
UmVzcG9uc2UuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAzYWI5MzMxZDlhZTczOTE5NWExNTRh
YzdhOTY0Y2ZhMTIwYjc3OGE4Li5hYjUyYmI4MzYwMWFjZDA4NGY1Y2M5Zjk3NDAxZmU4NmVlZGIz
ZDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC00Nzg5LDYgKzQ3ODksOSBAQAogICAgICAgICAgICAg
J3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAnLAogICAgICAgICAgICAgJ3dlYnNvY2tl
dHMvV2ViU29ja2V0Q2hhbm5lbC5oJywKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tl
dENoYW5uZWxDbGllbnQuaCcsCisgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRl
bnNpb25EaXNwYXRjaGVyLmNwcCcsCisgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRF
eHRlbnNpb25EaXNwYXRjaGVyLmgnLAorICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0
RXh0ZW5zaW9uUHJvY2Vzc29yLmgnLAogICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0
SGFuZHNoYWtlLmNwcCcsCiAgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hh
a2UuaCcsCiAgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0
LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmlu
ZGV4IGZjNGEyMTgzYjA2YWJjMTE2NjcwNWFjZTdjODQ5ODAzZmJjOTI3YjUuLmM2Y2U4NmM5ZTMz
Y2YzNWFlNzNhN2Y2NmVmNmJkYmU2Mzc2MDkyMzggMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC03Mjg5OCw2ICs3Mjg5OCwxOCBAQAogCQkJCT4K
IAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFdl
YlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxG
aWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFdlYlNvY2tldEV4dGVuc2lvbkRp
c3BhdGNoZXIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5cd2Vic29ja2V0c1xXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCIKKwkJCQk+CisJ
CQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cd2Vic29ja2V0c1xXZWJT
b2NrZXRIYW5kc2hha2UuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5NjU0NGU1ZmQ1OTVj
YTgwODRiYjJiMjFmYWJhY2YzOThlNjcxNjg1Li43M2MxNTU3NWQ0OTljNGMwM2E2OGUwZjVkMDQy
YjU0OTdiZWFkMDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xMzY2LDYgKzEzNjYsOCBAQAogCQk0QTZFOUZDNzEzQzE3RDU3
MDA0NkE3RjggLyogRm9udEZlYXR1cmVTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTZFOUZDNTEzQzE3RDU3MDA0NkE3RjggLyogRm9u
dEZlYXR1cmVTZXR0aW5ncy5jcHAgKi87IH07CiAJCTRBNkU5RkM4MTNDMTdENTcwMDQ2QTdGOCAv
KiBGb250RmVhdHVyZVNldHRpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0QTZFOUZDNjEzQzE3RDU3MDA0NkE3RjggLyogRm9udEZlYXR1cmVTZXR0
aW5ncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTRBOEM5NkVCMEJFNjkwMzIwMDRFRUZGMCAvKiBGcmFtZVNlbGVjdGlvbk1hYy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBOEM5NkVBMEJFNjkwMzIw
MDRFRUZGMCAvKiBGcmFtZVNlbGVjdGlvbk1hYy5tbSAqLzsgfTsKKwkJNEE5NTdGMDYxNEUyNDEy
QTAwNDlEQkZCIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE5NTdGMDMxNEUyNDExMDAwNDlE
QkZCIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwICovOyB9OworCQk0QTk1N0Yw
NzE0RTI0MTMwMDA0OURCRkIgLyogV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE5NTdGMDQxNEUyNDEx
MDAwNDlEQkZCIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCAqLzsgfTsKIAkJNEFC
REZGMEIxNERCRTM4NTAwNEQxMTdEIC8qIEhUTUxTaGFkb3dFbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBQkRGRjA3MTREQkUzMTIwMDRE
MTE3RCAvKiBIVE1MU2hhZG93RWxlbWVudC5jcHAgKi87IH07CiAJCTRBQkRGRjBDMTREQkUzODUw
MDREMTE3RCAvKiBIVE1MU2hhZG93RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNEFCREZGMDgxNERCRTMxMjAwNEQxMTdEIC8qIEhUTUxTaGFk
b3dFbGVtZW50LmggKi87IH07CiAJCTRBQ0JDMEJFMTI3MTNDQkQwMDk0RjlCMiAvKiBDbGFzc0xp
c3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEFD
QkMwQkMxMjcxM0NCRDAwOTRGOUIyIC8qIENsYXNzTGlzdC5jcHAgKi87IH07CkBAIC0xMzc5LDYg
KzEzODEsNyBAQAogCQk0QUQwMTAwOTEyN0U2NDJBMDAxNTAzNUYgLyogSFRNTE91dHB1dEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBRDAx
MDA2MTI3RTY0MkEwMDE1MDM1RiAvKiBIVE1MT3V0cHV0RWxlbWVudC5oICovOyB9OwogCQk0QUQw
MTczQzEyN0U4Mjg2MDAxNTAzNUYgLyogSlNIVE1MT3V0cHV0RWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QUQwMTczQTEyN0U4Mjg2MDAx
NTAzNUYgLyogSlNIVE1MT3V0cHV0RWxlbWVudC5jcHAgKi87IH07CiAJCTRBRDAxNzNEMTI3RTgy
ODYwMDE1MDM1RiAvKiBKU0hUTUxPdXRwdXRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QUQwMTczQjEyN0U4Mjg2MDAxNTAzNUYgLyogSlNI
VE1MT3V0cHV0RWxlbWVudC5oICovOyB9OworCQk0QURFMjVGQTE0RTNCQjRDMDA0QzIyMTMgLyog
V2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0QURFMjVGOTE0RTNCQjRDMDA0QzIyMTMgLyogV2ViU29ja2V0
RXh0ZW5zaW9uUHJvY2Vzc29yLmggKi87IH07CiAJCTRBRjFBRDNFMTNGRDIzQTQwMEFBOTU5MCAv
KiBFdmVudERpc3BhdGNoTWVkaWF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNEFGMUFEM0MxM0ZEMjNBNDAwQUE5NTkwIC8qIEV2ZW50RGlzcGF0
Y2hNZWRpYXRvci5jcHAgKi87IH07CiAJCTRBRjFBRDNGMTNGRDIzQTQwMEFBOTU5MCAvKiBFdmVu
dERpc3BhdGNoTWVkaWF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDRBRjFBRDNEMTNGRDIzQTQwMEFBOTU5MCAvKiBFdmVudERpc3BhdGNoTWVkaWF0
b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
QjI3MDhDNzBBRjE5RUU0MDA2NTEyN0YgLyogUGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEIyNzA4QzUwQUYxOUVFNDAwNjUxMjdGIC8q
IFBhc3RlYm9hcmQuaCAqLzsgfTsKQEAgLTgyMDQsNiArODIwNyw4IEBACiAJCTRBNkU5RkM1MTND
MTdENTcwMDQ2QTdGOCAvKiBGb250RmVhdHVyZVNldHRpbmdzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRGZWF0dXJlU2V0dGluZ3MuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0QTZFOUZDNjEzQzE3RDU3MDA0NkE3RjggLyogRm9udEZlYXR1
cmVTZXR0aW5ncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgZmlsZUVuY29kaW5nID0gNDsgcGF0aCA9IEZvbnRGZWF0dXJl
U2V0dGluZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE4Qzk2RUEwQkU2OTAz
MjAwNEVFRkYwIC8qIEZyYW1lU2VsZWN0aW9uTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgbmFtZSA9IEZyYW1lU2VsZWN0aW9uTWFjLm1tOyBwYXRoID0gbWFjL0ZyYW1l
U2VsZWN0aW9uTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QTk1N0YwMzE0
RTI0MTEwMDA0OURCRkIgLyogV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRj
aGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEE5NTdGMDQxNEUyNDExMDAw
NDlEQkZCIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0QUJERkYwNzE0REJFMzEyMDA0RDExN0QgLyogSFRNTFNo
YWRvd0VsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRN
TFNoYWRvd0VsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QUJERkYw
ODE0REJFMzEyMDA0RDExN0QgLyogSFRNTFNoYWRvd0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSFRNTFNoYWRvd0VsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNEFCREZGMDkxNERCRTMxMjAwNEQxMTdEIC8qIEhUTUxTaGFkb3dFbGVtZW50
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MU2hhZG93RWxlbWVudC5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MjIwLDYgKzgyMjUsNyBAQAogCQk0QUQwMTAwNzEy
N0U2NDJBMDAxNTAzNUYgLyogSFRNTE91dHB1dEVsZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IEhUTUxPdXRwdXRFbGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNEFEMDE3M0ExMjdFODI4NjAwMTUwMzVGIC8qIEpTSFRNTE91dHB1dEVsZW1lbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MT3V0cHV0RWxlbWVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBRDAxNzNCMTI3RTgyODYwMDE1MDM1
RiAvKiBKU0hUTUxPdXRwdXRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTSFRNTE91dHB1dEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NEFERTI1RjkxNEUzQkI0QzAwNEMyMjEzIC8qIFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTb2NrZXRFeHRlbnNpb25Qcm9j
ZXNzb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEFGMUFEM0MxM0ZEMjNBNDAw
QUE5NTkwIC8qIEV2ZW50RGlzcGF0Y2hNZWRpYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBFdmVudERpc3BhdGNoTWVkaWF0b3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0QUYxQUQzRDEzRkQyM0E0MDBBQTk1OTAgLyogRXZlbnREaXNwYXRj
aE1lZGlhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV2ZW50RGlzcGF0
Y2hNZWRpYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QjI3MDhDNTBBRjE5
RUU0MDA2NTEyN0YgLyogUGFzdGVib2FyZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQYXN0ZWJvYXJkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDc0Niw2
ICsxNDc1Miw3IEBACiAJCTUxOEEzNEJEMTAyNkM4MzEwMDFCNjg5NiAvKiB3ZWJzb2NrZXRzICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0QURFMjVGOTE0
RTNCQjRDMDA0QzIyMTMgLyogV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmggKi8sCiAJCQkJ
NTFGQjU0RjQxMTNFMzY0MjAwODIxMTc2IC8qIENsb3NlRXZlbnQuaCAqLywKIAkJCQk1MUZCNTRG
NjExM0UzNjU5MDA4MjExNzYgLyogQ2xvc2VFdmVudC5pZGwgKi8sCiAJCQkJNTExMjI0NzExMENG
QjhDNjAwODA5OUQ3IC8qIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCAqLywKQEAgLTE0
NzU4LDYgKzE0NzY1LDggQEAKIAkJCQk1MTBENEE0NzEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29j
a2V0Q2hhbm5lbC5jcHAgKi8sCiAJCQkJNTEwRDRBNDgxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNv
Y2tldENoYW5uZWwuaCAqLywKIAkJCQk1MTBENEE0OTEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29j
a2V0Q2hhbm5lbENsaWVudC5oICovLAorCQkJCTRBOTU3RjAzMTRFMjQxMTAwMDQ5REJGQiAvKiBX
ZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcCAqLywKKwkJCQk0QTk1N0YwNDE0RTI0MTEw
MDA0OURCRkIgLyogV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5oICovLAogCQkJCTUxQUJB
RTQyMTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2UuY3BwICovLAogCQkJCTUx
QUJBRTQzMTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2UuaCAqLywKIAkJCQk3
NjM3QzU0MDExMkU3Qjc0MDAzRDZDREMgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAg
Ki8sCkBAIC0yNDE2Miw2ICsyNDE3MSw4IEBACiAJCQkJMUFBQURERTkxNERDOERGODAwQUY2NEIz
IC8qIFNjcm9sbGluZ1RyZWVOb2RlTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQkxMEZCMDg0QjE0
RTE1QzdFMDBBM0RCOTggLyogUHVibGljVVJMTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
N0E1NDg1ODAxNEUwMkQ1MTAwNkFFMDVBIC8qIEluc3BlY3Rvckhpc3RvcnkuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTRBOTU3RjA3MTRFMjQxMzAwMDQ5REJGQiAvKiBXZWJTb2NrZXRFeHRlbnNpb25E
aXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0QURFMjVGQTE0RTNCQjRDMDA0QzIyMTMg
LyogV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI3MTAw
LDYgKzI3MTExLDcgQEAKIAkJCQkxQUFBRERFODE0REM4REY4MDBBRjY0QjMgLyogU2Nyb2xsaW5n
VHJlZU5vZGVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QTU0ODU3RjE0RTAyRDUxMDA2QUUw
NUEgLyogSW5zcGVjdG9ySGlzdG9yeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREFBOEQwQTE0
RDcxQjJFMDA2MUVBNjAgLyogUGxhdGZvcm1DbG9ja0NNLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJ
NEE5NTdGMDYxNEUyNDEyQTAwNDlEQkZCIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMjAxM2Mx
OGY5YzAxOTk5OWQ5ZWYzZDQ0MzdjNDZhMzcwN2RjYmUxCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcApA
QCAtMCwwICsxLDI0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX1NP
Q0tFVFMpCisKKyNpbmNsdWRlICJXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmgiCisKKyNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBFeHRlbnNpb25QYXJzZXIgeworcHVibGljOgorICAgIEV4dGVuc2lv
blBhcnNlcihjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogZW5kKQorICAgICAgICA6IG1f
Y3VycmVudChzdGFydCkKKyAgICAgICAgLCBtX2VuZChlbmQpCisgICAgeworICAgIH0KKyAgICBi
b29sIGZpbmlzaGVkKCk7CisgICAgYm9vbCBwYXJzZWRTdWNjZXNzZnVsbHkoKTsKKyAgICBjb25z
dCBTdHJpbmcmIGN1cnJlbnRUb2tlbigpIHsgcmV0dXJuIG1fY3VycmVudFRva2VuOyB9CisKKyAg
ICAvLyBUaGUgZm9sbG93aW5nIG1lbWJlciBmdW5jdGlvbnMgYmFzaWNhbGx5IGZvbGxvdyB0aGUg
Z3JhbW1lciBkZWZpbmVkCisgICAgLy8gaW4gU2VjdGlvbiAyLjIgb2YgUkZDIDI2MTYuCisgICAg
Ym9vbCBjb25zdW1lVG9rZW4oKTsKKyAgICBib29sIGNvbnN1bWVRdW90ZWRTdHJpbmcoKTsKKyAg
ICBib29sIGNvbnN1bWVRdW90ZWRTdHJpbmdPclRva2VuKCk7CisgICAgYm9vbCBjb25zdW1lQ2hh
cmFjdGVyKGNoYXIpOworcHJpdmF0ZToKKyAgICB2b2lkIHNraXBTcGFjZXMoKTsKKworICAgIGNv
bnN0IGNoYXIqIG1fY3VycmVudDsKKyAgICBjb25zdCBjaGFyKiBtX2VuZDsKKyAgICBTdHJpbmcg
bV9jdXJyZW50VG9rZW47Cit9OworCitib29sIEV4dGVuc2lvblBhcnNlcjo6ZmluaXNoZWQoKQor
eworICAgIHJldHVybiBtX2N1cnJlbnQgPj0gbV9lbmQ7Cit9CisKK2Jvb2wgRXh0ZW5zaW9uUGFy
c2VyOjpwYXJzZWRTdWNjZXNzZnVsbHkoKQoreworICAgIHJldHVybiBtX2N1cnJlbnQgPT0gbV9l
bmQ7Cit9CisKK3N0YXRpYyBib29sIGlzVG9rZW5DaGFyYWN0ZXIoY2hhciBjaGFyYWN0ZXIpCit7
CisgICAgLy8gQSB0b2tlbiBjaGFyYWN0ZXIgaXMgYSBDSEFSIChvY3RldHMgMCAtIDEyNykgYnV0
IG5vdCBDVEwgKG9jdGV0cyAwIC0gMzEgYW5kIDEyNykKKyAgICByZXR1cm4gY2hhcmFjdGVyID4g
MzEgJiYgY2hhcmFjdGVyIDwgMTI3OworfQorCitzdGF0aWMgYm9vbCBpc1NlcGFyYXRvcihjaGFy
IGNoYXJhY3RlcikKK3sKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc2VwYXJhdG9yQ2hhcmFjdGVy
cyA9ICIoKTw+QCw7OlxcXCIvW10/PXt9IFx0IjsKKyAgICBjb25zdCBjaGFyKiBwID0gc3RyY2hy
KHNlcGFyYXRvckNoYXJhY3RlcnMsIGNoYXJhY3Rlcik7CisgICAgcmV0dXJuIHAgJiYgKnA7Cit9
CisKK3ZvaWQgRXh0ZW5zaW9uUGFyc2VyOjpza2lwU3BhY2VzKCkKK3sKKyAgICB3aGlsZSAobV9j
dXJyZW50IDwgbV9lbmQgJiYgKCptX2N1cnJlbnQgPT0gJyAnIHx8ICptX2N1cnJlbnQgPT0gJ1x0
JykpCisgICAgICAgICsrbV9jdXJyZW50OworfQorCitib29sIEV4dGVuc2lvblBhcnNlcjo6Y29u
c3VtZVRva2VuKCkKK3sKKyAgICBza2lwU3BhY2VzKCk7CisgICAgY29uc3QgY2hhciogc3RhcnQg
PSBtX2N1cnJlbnQ7CisgICAgd2hpbGUgKG1fY3VycmVudCA8IG1fZW5kICYmIGlzVG9rZW5DaGFy
YWN0ZXIoKm1fY3VycmVudCkgJiYgIWlzU2VwYXJhdG9yKCptX2N1cnJlbnQpKQorICAgICAgICAr
K21fY3VycmVudDsKKyAgICBpZiAoc3RhcnQgPCBtX2N1cnJlbnQpIHsKKyAgICAgICAgbV9jdXJy
ZW50VG9rZW4gPSBTdHJpbmcoc3RhcnQsIG1fY3VycmVudCAtIHN0YXJ0KTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBFeHRlbnNpb25Q
YXJzZXI6OmNvbnN1bWVRdW90ZWRTdHJpbmcoKQoreworICAgIHNraXBTcGFjZXMoKTsKKyAgICBp
ZiAobV9jdXJyZW50ID49IG1fZW5kIHx8ICptX2N1cnJlbnQgIT0gJyInKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgICsrbV9jdXJyZW50Owor
ICAgIHdoaWxlIChtX2N1cnJlbnQgPCBtX2VuZCAmJiAqbV9jdXJyZW50ICE9ICciJykgeworICAg
ICAgICBpZiAoKm1fY3VycmVudCA9PSAnXFwnICYmICsrbV9jdXJyZW50ID49IG1fZW5kKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBidWlsZGVyLmFwcGVuZCgqbV9jdXJyZW50
KTsKKyAgICAgICAgKyttX2N1cnJlbnQ7CisgICAgfQorICAgIGlmIChtX2N1cnJlbnQgPj0gbV9l
bmQgfHwgKm1fY3VycmVudCAhPSAnIicpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBtX2N1
cnJlbnRUb2tlbiA9IGJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICArK21fY3VycmVudDsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBFeHRlbnNpb25QYXJzZXI6OmNvbnN1bWVRdW90ZWRTdHJp
bmdPclRva2VuKCkKK3sKKyAgICByZXR1cm4gY29uc3VtZVF1b3RlZFN0cmluZygpIHx8IGNvbnN1
bWVUb2tlbigpOworfQorCitib29sIEV4dGVuc2lvblBhcnNlcjo6Y29uc3VtZUNoYXJhY3Rlcihj
aGFyIGNoYXJhY3RlcikKK3sKKyAgICBza2lwU3BhY2VzKCk7CisgICAgaWYgKG1fY3VycmVudCA8
IG1fZW5kICYmICptX2N1cnJlbnQgPT0gY2hhcmFjdGVyKSB7CisgICAgICAgICsrbV9jdXJyZW50
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2
b2lkIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXI6OnJlc2V0KCkKK3sKKyAgICBtX3Byb2Nl
c3NvcnMuY2xlYXIoKTsKK30KKwordm9pZCBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyOjph
ZGRQcm9jZXNzb3IoUGFzc093blB0cjxXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I+IHByb2Nl
c3NvcikKK3sKKyAgICBBU1NFUlQocHJvY2Vzc29yLT5oYW5kc2hha2VTdHJpbmcoKS5sZW5ndGgo
KSk7CisgICAgbV9wcm9jZXNzb3JzLmFwcGVuZChwcm9jZXNzb3IpOworfQorCitjb25zdCBTdHJp
bmcgV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlcjo6Y3JlYXRlSGVhZGVyVmFsdWUoKSBjb25z
dAoreworICAgIHNpemVfdCBudW1Qcm9jZXNzb3JzID0gbV9wcm9jZXNzb3JzLnNpemUoKTsKKyAg
ICBpZiAoIW51bVByb2Nlc3NvcnMpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIFN0
cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChtX3Byb2Nlc3NvcnNbMF0t
PmhhbmRzaGFrZVN0cmluZygpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IG51bVByb2Nl
c3NvcnM7ICsraSkgeworICAgICAgICBidWlsZGVyLmFwcGVuZCgiLCAiKTsKKyAgICAgICAgYnVp
bGRlci5hcHBlbmQobV9wcm9jZXNzb3JzW2ldLT5oYW5kc2hha2VTdHJpbmcoKSk7CisgICAgfQor
ICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK2Jvb2wgV2ViU29ja2V0RXh0ZW5z
aW9uRGlzcGF0Y2hlcjo6cHJvY2Vzc0hlYWRlclZhbHVlKGNvbnN0IFN0cmluZyYgaGVhZGVyVmFs
dWUpCit7CisgICAgaWYgKCFoZWFkZXJWYWx1ZS5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisKKyAgICAvLyBJZiB3ZSBkb24ndCBzZW5kIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBo
ZWFkZXIsIHRoZSBzZXJ2ZXIgc2hvdWxkIG5vdCByZXR1cm4gdGhlIGhlYWRlci4KKyAgICBpZiAo
IW1fcHJvY2Vzc29ycy5zaXplKCkpIHsKKyAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gIlJlY2Vp
dmVkIHVuZXhwZWN0ZWQgU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlciI7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBjb25zdCBDU3RyaW5nIGhlYWRlclZhbHVlRGF0
YSA9IGhlYWRlclZhbHVlLnV0ZjgoKTsKKyAgICBFeHRlbnNpb25QYXJzZXIgcGFyc2VyKGhlYWRl
clZhbHVlRGF0YS5kYXRhKCksIGhlYWRlclZhbHVlRGF0YS5kYXRhKCkgKyBoZWFkZXJWYWx1ZURh
dGEubGVuZ3RoKCkpOworCisgICAgd2hpbGUgKCFwYXJzZXIuZmluaXNoZWQoKSkgeworICAgICAg
ICAvLyBQYXJzZSBleHRlbnNpb24tdG9rZW4uCisgICAgICAgIGlmICghcGFyc2VyLmNvbnN1bWVU
b2tlbigpKSB7CisgICAgICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiU2VjLVdlYlNvY2tldC1F
eHRlbnNpb25zIGhlYWRlciBpcyBpbnZhbGlkIjsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorICAgICAgICBTdHJpbmcgZXh0ZW5zaW9uVG9rZW4gPSBwYXJzZXIuY3VycmVu
dFRva2VuKCk7CisKKyAgICAgICAgLy8gUGFyc2UgZXh0ZW5zaW9uLXBhcmFtZXRlcnMgaWYgZXhp
c3RzLgorICAgICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBleHRlbnNpb25QYXJhbWV0ZXJz
OworICAgICAgICB3aGlsZSAocGFyc2VyLmNvbnN1bWVDaGFyYWN0ZXIoJzsnKSkgeworICAgICAg
ICAgICAgaWYgKCFwYXJzZXIuY29uc3VtZVRva2VuKCkpIHsKKyAgICAgICAgICAgICAgICBtX2Zh
aWx1cmVSZWFzb24gPSAiU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlciBpcyBpbnZhbGlk
IjsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIFN0cmluZyBwYXJhbWV0ZXJUb2tlbiA9IHBhcnNlci5jdXJyZW50VG9rZW4oKTsKKyAg
ICAgICAgICAgIGlmIChwYXJzZXIuY29uc3VtZUNoYXJhY3RlcignPScpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKHBhcnNlci5jb25zdW1lUXVvdGVkU3RyaW5nT3JUb2tlbigpKQorICAgICAgICAg
ICAgICAgICAgICBleHRlbnNpb25QYXJhbWV0ZXJzLmFkZChwYXJhbWV0ZXJUb2tlbiwgcGFyc2Vy
LmN1cnJlbnRUb2tlbigpKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgbV9mYWlsdXJlUmVhc29uID0gIlNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIg
aXMgaW52YWxpZCI7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBleHRlbnNpb25Q
YXJhbWV0ZXJzLmFkZChwYXJhbWV0ZXJUb2tlbiwgU3RyaW5nKCkpOworICAgICAgICB9CisgICAg
ICAgIGlmICghcGFyc2VyLmZpbmlzaGVkKCkgJiYgIXBhcnNlci5jb25zdW1lQ2hhcmFjdGVyKCcs
JykpIHsKKyAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJTZWMtV2ViU29ja2V0LUV4dGVu
c2lvbnMgaGVhZGVyIGlzIGludmFsaWQiOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CisKKyAgICAgICAgc2l6ZV90IGluZGV4OworICAgICAgICBmb3IgKGluZGV4ID0gMDsg
aW5kZXggPCBtX3Byb2Nlc3NvcnMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgICAgICBXZWJT
b2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IqIHByb2Nlc3NvciA9IG1fcHJvY2Vzc29yc1tpbmRleF0u
Z2V0KCk7CisgICAgICAgICAgICBpZiAoZXh0ZW5zaW9uVG9rZW4gPT0gcHJvY2Vzc29yLT5leHRl
bnNpb25Ub2tlbigpKSB7CisgICAgICAgICAgICAgICAgaWYgKHByb2Nlc3Nvci0+cHJvY2Vzc1Jl
c3BvbnNlKGV4dGVuc2lvblBhcmFtZXRlcnMpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSBwcm9jZXNzb3ItPmZhaWx1cmVSZWFz
b24oKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgLy8gVGhlcmUgaXMgbm8gZXh0ZW5zaW9uIHdoaWNoIGNhbiBwcm9jZXNz
IHRoZSByZXNwb25zZS4KKyAgICAgICAgaWYgKGluZGV4ID09IG1fcHJvY2Vzc29ycy5zaXplKCkp
IHsKKyAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJSZWNlaXZlZCB1bmV4cGVjdGVkIGV4
dGVuc2lvbjogIiArIGV4dGVuc2lvblRva2VuOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBwYXJzZXIucGFyc2VkU3VjY2Vzc2Z1bGx5KCk7
Cit9CisKK1N0cmluZyBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyOjpmYWlsdXJlUmVhc29u
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9mYWlsdXJlUmVhc29uOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hl
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmY4ODJiYjlkMDgyYTQ2YzdlZWY2Mjc4OGFmZTZkMjQ1NDJlMDZiNjIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEV4
dGVuc2lvbkRpc3BhdGNoZXIuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU29ja2V0RXh0
ZW5zaW9uRGlzcGF0Y2hlcl9oCisjZGVmaW5lIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXJf
aAorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjaW5jbHVkZSAiV2ViU29ja2V0RXh0ZW5z
aW9uUHJvY2Vzc29yLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdlYlNvY2tldEV4
dGVuc2lvbkRpc3BhdGNoZXIgeworcHVibGljOgorICAgIFdlYlNvY2tldEV4dGVuc2lvbkRpc3Bh
dGNoZXIoKSB7IH0KKworICAgIHZvaWQgcmVzZXQoKTsKKyAgICB2b2lkIGFkZFByb2Nlc3NvcihQ
YXNzT3duUHRyPFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvcj4pOworICAgIGNvbnN0IFN0cmlu
ZyBjcmVhdGVIZWFkZXJWYWx1ZSgpIGNvbnN0OworCisgICAgYm9vbCBwcm9jZXNzSGVhZGVyVmFs
dWUoY29uc3QgU3RyaW5nJik7CisgICAgU3RyaW5nIGZhaWx1cmVSZWFzb24oKSBjb25zdDsKKwor
cHJpdmF0ZToKKyAgICBWZWN0b3I8T3duUHRyPFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvcj4g
PiBtX3Byb2Nlc3NvcnM7CisgICAgU3RyaW5nIG1fZmFpbHVyZVJlYXNvbjsKK307CisKK30KKwor
I2VuZGlmIC8vIEVOQUJMRShXRUJfU09DS0VUUykKKworI2VuZGlmIC8vIFdlYlNvY2tldEV4dGVu
c2lvbkRpc3BhdGNoZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWUzZDUzZDQxYzU1MzZl
MDZjN2Q2MzU4MTQwZDZjM2QxNmNiMTY3NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmgKQEAgLTAsMCArMSw3
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvcl9oCisjZGVmaW5lIFdlYlNv
Y2tldEV4dGVuc2lvblByb2Nlc3Nvcl9oCisKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nv
ciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yKCkg
eyB9CisKKyAgICBTdHJpbmcgZXh0ZW5zaW9uVG9rZW4oKSBjb25zdCB7IHJldHVybiBtX2V4dGVu
c2lvblRva2VuOyB9CisKKyAgICAvLyBUaGUgcmV0dXJuIHZhbHVlIG9mIHRoaXMgbWV0aG9kIHdp
bGwgYmUgYSBwYXJ0IG9mIHRoZSB2YWx1ZSBvZgorICAgIC8vIFNlYy1XZWJTb2NrZXQtRXh0ZW5z
aW9ucy4KKyAgICB2aXJ0dWFsIFN0cmluZyBoYW5kc2hha2VTdHJpbmcoKSA9IDA7CisKKyAgICAv
LyBUaGlzIHNob3VsZCB2YWxpZGF0ZSB0aGUgc2VydmVyJ3MgcmVzcG9uc2UgcGFyYW1ldGVycyB3
aGljaCBhcmUgcGFzc2VkCisgICAgLy8gYXMgSGFzaE1hcDxrZXksIHZhbHVlPi4gVGhpcyBtYXkg
YWxzbyBkbyBzb21ldGhpbmcgZm9yIHRoZSBleHRlbnNpb24uCisgICAgLy8gTm90ZSB0aGF0IHRo
aXMgbWV0aG9kIG1heSBiZSBjYWxsZWQgbW9yZSB0aGFuIG9uY2Ugd2hlbiB0aGUgc2VydmVyCisg
ICAgLy8gcmVzcG9uc2UgY29udGFpbnMgZHVwbGljYXRlIGV4dGVuc2lvbiB0b2tlbiB0aGF0IG1h
dGNoZXMgZXh0ZW5zaW9uVG9rZW4oKS4KKyAgICB2aXJ0dWFsIGJvb2wgcHJvY2Vzc1Jlc3BvbnNl
KGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JikgPSAwOworCisgICAgLy8gSWYgcHJvY2Vj
c3NSZXNwb25zZSgpIHJldHVybnMgZmFsc2UsIHRoaXMgc2hvdWxkIHByb3ZpZGUgdGhlIHJlYXNv
bi4KKyAgICB2aXJ0dWFsIFN0cmluZyBmYWlsdXJlUmVhc29uKCkgeyByZXR1cm4gIkV4dGVuc2lv
biAiICsgbV9leHRlbnNpb25Ub2tlbiArICIgZmFpbGVkIjsgfQorCitwcm90ZWN0ZWQ6CisgICAg
V2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uVG9rZW4p
CisgICAgICAgIDogbV9leHRlbnNpb25Ub2tlbihleHRlbnNpb25Ub2tlbikKKyAgICB7CisgICAg
fQorCitwcml2YXRlOgorICAgIFN0cmluZyBtX2V4dGVuc2lvblRva2VuOworfTsKKworfQorCisj
ZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjZW5kaWYgLy8gV2ViU29ja2V0RXh0ZW5z
aW9uUHJvY2Vzc29yX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0SGFuZHNoYWtlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
SGFuZHNoYWtlLmNwcAppbmRleCA4OTA5ZWZhZjE4NDRmMWZhY2FkYjdmMWI1ZTIxMzJkMmJiZGRl
OGVmLi5iMjYxNTU3Mzg0ZmM1OGNlY2IzZDRjYzc4ZGY2NmNiNWJmOGYyYmZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCkBAIC0yODcs
NiArMjg3LDkgQEAgQ1N0cmluZyBXZWJTb2NrZXRIYW5kc2hha2U6OmNsaWVudEhhbmRzaGFrZU1l
c3NhZ2UoKSBjb25zdAogICAgIH0gZWxzZSB7CiAgICAgICAgIGZpZWxkcy5hcHBlbmQoIlNlYy1X
ZWJTb2NrZXQtS2V5OiAiICsgbV9zZWNXZWJTb2NrZXRLZXkpOwogICAgICAgICBmaWVsZHMuYXBw
ZW5kKCJTZWMtV2ViU29ja2V0LVZlcnNpb246IDEzIik7CisgICAgICAgIGNvbnN0IFN0cmluZyBl
eHRlbnNpb25WYWx1ZSA9IG1fZXh0ZW5zaW9uRGlzcGF0Y2hlci5jcmVhdGVIZWFkZXJWYWx1ZSgp
OworICAgICAgICBpZiAoZXh0ZW5zaW9uVmFsdWUubGVuZ3RoKCkpCisgICAgICAgICAgICBmaWVs
ZHMuYXBwZW5kKCJTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnM6ICIgKyBleHRlbnNpb25WYWx1ZSk7
CiAgICAgfQogCiAgICAgLy8gRmllbGRzIGluIHRoZSBoYW5kc2hha2UgYXJlIHNlbnQgYnkgdGhl
IGNsaWVudCBpbiBhIHJhbmRvbSBvcmRlcjsgdGhlCkBAIC0zNDQsNiArMzQ3LDkgQEAgV2ViU29j
a2V0SGFuZHNoYWtlUmVxdWVzdCBXZWJTb2NrZXRIYW5kc2hha2U6OmNsaWVudEhhbmRzaGFrZVJl
cXVlc3QoKSBjb25zdAogICAgIH0gZWxzZSB7CiAgICAgICAgIHJlcXVlc3QuYWRkSGVhZGVyRmll
bGQoIlNlYy1XZWJTb2NrZXQtS2V5IiwgbV9zZWNXZWJTb2NrZXRLZXkpOwogICAgICAgICByZXF1
ZXN0LmFkZEhlYWRlckZpZWxkKCJTZWMtV2ViU29ja2V0LVZlcnNpb24iLCAiMTMiKTsKKyAgICAg
ICAgY29uc3QgU3RyaW5nIGV4dGVuc2lvblZhbHVlID0gbV9leHRlbnNpb25EaXNwYXRjaGVyLmNy
ZWF0ZUhlYWRlclZhbHVlKCk7CisgICAgICAgIGlmIChleHRlbnNpb25WYWx1ZS5sZW5ndGgoKSkK
KyAgICAgICAgICAgIHJlcXVlc3QuYWRkSGVhZGVyRmllbGQoIlNlYy1XZWJTb2NrZXQtRXh0ZW5z
aW9ucyIsIGV4dGVuc2lvblZhbHVlKTsKICAgICB9CiAKICAgICByZXR1cm4gcmVxdWVzdDsKQEAg
LTM1Miw2ICszNTgsNyBAQCBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0IFdlYlNvY2tldEhhbmRz
aGFrZTo6Y2xpZW50SGFuZHNoYWtlUmVxdWVzdCgpIGNvbnN0CiB2b2lkIFdlYlNvY2tldEhhbmRz
aGFrZTo6cmVzZXQoKQogewogICAgIG1fbW9kZSA9IEluY29tcGxldGU7CisgICAgbV9leHRlbnNp
b25EaXNwYXRjaGVyLnJlc2V0KCk7CiB9CiAKIHZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjpjbGVh
clNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQpAQCAtNDY5LDE0ICs0NzYsMTQgQEAgU3RyaW5nIFdl
YlNvY2tldEhhbmRzaGFrZTo6c2VydmVyV2ViU29ja2V0QWNjZXB0KCkgY29uc3QKICAgICByZXR1
cm4gbV9yZXNwb25zZS5oZWFkZXJGaWVsZHMoKS5nZXQoInNlYy13ZWJzb2NrZXQtYWNjZXB0Iik7
CiB9CiAKLVN0cmluZyBXZWJTb2NrZXRIYW5kc2hha2U6OnNlcnZlcldlYlNvY2tldEV4dGVuc2lv
bnMoKSBjb25zdAorY29uc3QgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UmIFdlYlNvY2tldEhh
bmRzaGFrZTo6c2VydmVySGFuZHNoYWtlUmVzcG9uc2UoKSBjb25zdAogewotICAgIHJldHVybiBt
X3Jlc3BvbnNlLmhlYWRlckZpZWxkcygpLmdldCgic2VjLXdlYnNvY2tldC1leHRlbnNpb25zIik7
CisgICAgcmV0dXJuIG1fcmVzcG9uc2U7CiB9CiAKLWNvbnN0IFdlYlNvY2tldEhhbmRzaGFrZVJl
c3BvbnNlJiBXZWJTb2NrZXRIYW5kc2hha2U6OnNlcnZlckhhbmRzaGFrZVJlc3BvbnNlKCkgY29u
c3QKK3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjphZGRFeHRlbnNpb25Qcm9jZXNzb3IoUGFzc093
blB0cjxXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I+IHByb2Nlc3NvcikKIHsKLSAgICByZXR1
cm4gbV9yZXNwb25zZTsKKyAgICBtX2V4dGVuc2lvbkRpc3BhdGNoZXIuYWRkUHJvY2Vzc29yKHBy
b2Nlc3Nvcik7CiB9CiAKIEtVUkwgV2ViU29ja2V0SGFuZHNoYWtlOjpodHRwVVJMRm9yQXV0aGVu
dGljYXRpb25BbmRDb29raWVzKCkgY29uc3QKQEAgLTYyNSw3ICs2MzIsMTUgQEAgY29uc3QgY2hh
ciogV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkSFRUUEhlYWRlcnMoY29uc3QgY2hhciogc3RhcnQs
IGNvbnN0IGNoYXIqIGUKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgICAg
IExPRyhOZXR3b3JrLCAibmFtZT0lcyB2YWx1ZT0lcyIsIG5hbWVTdHIuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSwgdmFsdWVTdHIudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIG1fcmVzcG9uc2UuYWRk
SGVhZGVyRmllbGQobmFtZVN0ciwgdmFsdWVTdHIpOworICAgICAgICAvLyBTZWMtV2ViU29ja2V0
LUV4dGVuc2lvbnMgbWF5IGJlIHNwbGl0LiBXZSBwYXJzZSBhbmQgY2hlY2sgdGhlCisgICAgICAg
IC8vIGhlYWRlciB2YWx1ZSBldmVyeSB0aW1lIHRoZSBoZWFkZXIgYXBwZWFycy4KKyAgICAgICAg
aWYgKGVxdWFsSWdub3JpbmdDYXNlKCJzZWMtd2Vic29ja2V0LWV4dGVuc2lvbnMiLCBuYW1lU3Ry
KSkgeworICAgICAgICAgICAgaWYgKCFtX2V4dGVuc2lvbkRpc3BhdGNoZXIucHJvY2Vzc0hlYWRl
clZhbHVlKHZhbHVlU3RyKSkgeworICAgICAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9IG1f
ZXh0ZW5zaW9uRGlzcGF0Y2hlci5mYWlsdXJlUmVhc29uKCk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9yZXNw
b25zZS5hZGRIZWFkZXJGaWVsZChuYW1lU3RyLCB2YWx1ZVN0cik7CiAgICAgfQogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiAwOwpAQCAtNjM5LDcgKzY1NCw2IEBAIGJvb2wg
V2ViU29ja2V0SGFuZHNoYWtlOjpjaGVja1Jlc3BvbnNlSGVhZGVycygpCiAgICAgY29uc3QgU3Ry
aW5nJiBzZXJ2ZXJVcGdyYWRlID0gdGhpcy0+c2VydmVyVXBncmFkZSgpOwogICAgIGNvbnN0IFN0
cmluZyYgc2VydmVyQ29ubmVjdGlvbiA9IHRoaXMtPnNlcnZlckNvbm5lY3Rpb24oKTsKICAgICBj
b25zdCBTdHJpbmcmIHNlcnZlcldlYlNvY2tldEFjY2VwdCA9IHRoaXMtPnNlcnZlcldlYlNvY2tl
dEFjY2VwdCgpOwotICAgIGNvbnN0IFN0cmluZyYgc2VydmVyV2ViU29ja2V0RXh0ZW5zaW9ucyA9
IHRoaXMtPnNlcnZlcldlYlNvY2tldEV4dGVuc2lvbnMoKTsKIAogICAgIGlmIChzZXJ2ZXJVcGdy
YWRlLmlzTnVsbCgpKSB7CiAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJFcnJvciBkdXJpbmcg
V2ViU29ja2V0IGhhbmRzaGFrZTogJ1VwZ3JhZGUnIGhlYWRlciBpcyBtaXNzaW5nIjsKQEAgLTY5
MiwxMyArNzA2LDYgQEAgYm9vbCBXZWJTb2NrZXRIYW5kc2hha2U6OmNoZWNrUmVzcG9uc2VIZWFk
ZXJzKCkKICAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJFcnJvciBkdXJpbmcgV2ViU29j
a2V0IGhhbmRzaGFrZTogU2VjLVdlYlNvY2tldC1BY2NlcHQgbWlzbWF0Y2giOwogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIGlmICghc2VydmVyV2ViU29ja2V0
RXh0ZW5zaW9ucy5pc051bGwoKSkgewotICAgICAgICAgICAgLy8gV2ViU29ja2V0IHByb3RvY29s
IGV4dGVuc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgeWV0LgotICAgICAgICAgICAgLy8gV2UgZG8g
bm90IHNlbmQgU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlciBpbiBvdXIgcmVxdWVzdCwg
dGh1cwotICAgICAgICAgICAgLy8gc2VydmVycyBzaG91bGQgbm90IHJldHVybiB0aGlzIGhlYWRl
ciwgZWl0aGVyLgotICAgICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gIkVycm9yIGR1cmluZyBX
ZWJTb2NrZXQgaGFuZHNoYWtlOiBTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgaGVhZGVyIGlzIGlu
dmFsaWQiOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9CiAgICAgfQogICAg
IHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXRIYW5kc2hha2UuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
SGFuZHNoYWtlLmgKaW5kZXggMTJjMTg0MDE5YzJjYWM2N2RhOWZmMzQ5MmM0N2I5YjcwMmFjZWFi
Ny4uOTc3N2ZiOTRkYWU1YmJmNzJjZjVkNjk1ZThjZmEwZTA5YTkxNTg0YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oCkBAIC0zNSw4ICszNSwx
MSBAQAogCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisj
aW5jbHVkZSAiV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5oIgorI2luY2x1ZGUgIldlYlNv
Y2tldEV4dGVuc2lvblByb2Nlc3Nvci5oIgogI2luY2x1ZGUgIldlYlNvY2tldEhhbmRzaGFrZVJl
cXVlc3QuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oIgorI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtODEsMTAg
Kzg0LDExIEBAIHB1YmxpYzoKICAgICBTdHJpbmcgc2VydmVyVXBncmFkZSgpIGNvbnN0OwogICAg
IFN0cmluZyBzZXJ2ZXJDb25uZWN0aW9uKCkgY29uc3Q7CiAgICAgU3RyaW5nIHNlcnZlcldlYlNv
Y2tldEFjY2VwdCgpIGNvbnN0OyAvLyBPbmx5IGZvciBoeWJpLTEwIGhhbmRzaGFrZS4KLSAgICBT
dHJpbmcgc2VydmVyV2ViU29ja2V0RXh0ZW5zaW9ucygpIGNvbnN0OyAvLyBPbmx5IGZvciBoeWJp
LTEwIGhhbmRzaGFrZS4KIAogICAgIGNvbnN0IFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlJiBz
ZXJ2ZXJIYW5kc2hha2VSZXNwb25zZSgpIGNvbnN0OwogCisgICAgdm9pZCBhZGRFeHRlbnNpb25Q
cm9jZXNzb3IoUGFzc093blB0cjxXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I+KTsKKwogcHJp
dmF0ZToKICAgICBLVVJMIGh0dHBVUkxGb3JBdXRoZW50aWNhdGlvbkFuZENvb2tpZXMoKSBjb25z
dDsKIApAQCAtMTE2LDYgKzEyMCw4IEBAIHByaXZhdGU6CiAgICAgLy8gRm9yIGh5YmktMTAgaGFu
ZHNoYWtlLgogICAgIFN0cmluZyBtX3NlY1dlYlNvY2tldEtleTsKICAgICBTdHJpbmcgbV9leHBl
Y3RlZEFjY2VwdDsKKworICAgIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIgbV9leHRlbnNp
b25EaXNwYXRjaGVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vV2ViS2l0Lmd5cGkKaW5kZXggYzg1MDJmNTczYzQ1MTcwMTczNTQ4NWFmNDc1MjNlNzUxMjk0
YzgzZC4uMzVmMmIxOTkwNzc5ZDY2OWVmODA0MDJmYjAwZjJhNTU2MTQ3YzMyNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXBpCkBAIC0xMTgsNiArMTE4LDcgQEAKICAgICAgICAgICAgICd0
ZXN0cy9XZWJMYXllclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9XZWJQYWdlTmV3U2Vy
aWFsaXplclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9XZWJQYWdlU2VyaWFsaXplclRl
c3QuY3BwJywKKyAgICAgICAgICAgICd0ZXN0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVy
VGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1dlYlVSTFJlcXVlc3RUZXN0LmNwcCcsCiAg
ICAgICAgICAgICAndGVzdHMvV2ViVmlld1Rlc3QuY3BwJywKICAgICAgICAgXSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0
Y2hlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJTb2NrZXRFeHRl
bnNpb25EaXNwYXRjaGVyVGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmEwYjdkN2RkYThhNmRmZjY5NThj
ZTJlODQxNTRiYTMyNzA2NTE0ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlclRlc3QuY3BwCkBAIC0wLDAg
KzEsMTc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiV2ViU29j
a2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5oIgorCisjaW5jbHVkZSAiV2ViU29ja2V0RXh0ZW5zaW9u
UHJvY2Vzc29yLmgiCisKKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0hhc2guaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFj
ZSB7CisKK2NsYXNzIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXJUZXN0OworCitjbGFzcyBN
b2NrV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yIDogcHVibGljIFdlYlNvY2tldEV4dGVuc2lv
blByb2Nlc3NvciB7CitwdWJsaWM6CisgICAgTW9ja1dlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nv
cihjb25zdCBTdHJpbmcmIG5hbWUsIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXJUZXN0KiB0
ZXN0KQorICAgICAgICA6IFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3NvcihuYW1lKQorICAgICAg
ICAsIG1fdGVzdCh0ZXN0KQorICAgIHsKKyAgICB9CisgICAgdmlydHVhbCBTdHJpbmcgaGFuZHNo
YWtlU3RyaW5nKCkgT1ZFUlJJREUgeyByZXR1cm4gZXh0ZW5zaW9uVG9rZW4oKTsgfQorICAgIHZp
cnR1YWwgYm9vbCBwcm9jZXNzUmVzcG9uc2UoY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4m
KSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVy
VGVzdCogbV90ZXN0OworfTsKKworY2xhc3MgV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlclRl
c3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CitwdWJsaWM6CisgICAgV2ViU29ja2V0RXh0ZW5z
aW9uRGlzcGF0Y2hlclRlc3QoKSB7IH0KKworICAgIHZvaWQgU2V0VXAoKSB7IH0KKworICAgIHZv
aWQgVGVhckRvd24oKSB7IH0KKworICAgIHZvaWQgYWRkTW9ja1Byb2Nlc3Nvcihjb25zdCBTdHJp
bmcmIGV4dGVuc2lvblRva2VuKQorICAgIHsKKyAgICAgICAgbV9leHRlbnNpb25zLmFkZFByb2Nl
c3NvcihhZG9wdFB0cihuZXcgTW9ja1dlYlNvY2tldEV4dGVuc2lvblByb2Nlc3NvcihleHRlbnNp
b25Ub2tlbiwgdGhpcykpKTsKKworICAgIH0KKworICAgIHZvaWQgYXBwZW5kUmVzdWx0KGNvbnN0
IFN0cmluZyYgZXh0ZW5zaW9uVG9rZW4sIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBw
YXJhbWV0ZXJzKQorICAgIHsKKyAgICAgICAgbV9wYXJzZWRFeHRlbnNpb25Ub2tlbnMuYXBwZW5k
KGV4dGVuc2lvblRva2VuKTsKKyAgICAgICAgbV9wYXJzZWRQYXJhbWV0ZXJzLmFwcGVuZChwYXJh
bWV0ZXJzKTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBXZWJTb2NrZXRFeHRlbnNpb25EaXNw
YXRjaGVyIG1fZXh0ZW5zaW9uczsKKyAgICBWZWN0b3I8U3RyaW5nPiBtX3BhcnNlZEV4dGVuc2lv
blRva2VuczsKKyAgICBWZWN0b3I8SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gPiBtX3BhcnNlZFBh
cmFtZXRlcnM7Cit9OworCitib29sIE1vY2tXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I6OnBy
b2Nlc3NSZXNwb25zZShjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgcGFyYW1ldGVycykK
K3sKKyAgICBtX3Rlc3QtPmFwcGVuZFJlc3VsdChleHRlbnNpb25Ub2tlbigpLCBwYXJhbWV0ZXJz
KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworVEVTVF9GKFdlYlNvY2tldEV4dGVuc2lvbkRpc3Bh
dGNoZXJUZXN0LCBUZXN0U2luZ2xlKQoreworICAgIGFkZE1vY2tQcm9jZXNzb3IoImRlZmxhdGUt
ZnJhbWUiKTsKKyAgICBFWFBFQ1RfVFJVRShtX2V4dGVuc2lvbnMucHJvY2Vzc0hlYWRlclZhbHVl
KCJkZWZsYXRlLWZyYW1lIikpOworICAgIEVYUEVDVF9FUSgxVUwsIG1fcGFyc2VkRXh0ZW5zaW9u
VG9rZW5zLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKCJkZWZsYXRlLWZyYW1lIiwgbV9wYXJzZWRF
eHRlbnNpb25Ub2tlbnNbMF0pOworICAgIEVYUEVDVF9FUSgwLCBtX3BhcnNlZFBhcmFtZXRlcnNb
MF0uc2l6ZSgpKTsKK30KKworVEVTVF9GKFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXJUZXN0
LCBUZXN0UGFyYW1ldGVycykKK3sKKyAgICBhZGRNb2NrUHJvY2Vzc29yKCJtdXgiKTsKKyAgICBF
WFBFQ1RfVFJVRShtX2V4dGVuc2lvbnMucHJvY2Vzc0hlYWRlclZhbHVlKCJtdXg7IG1heC1jaGFu
bmVscz00OyBmbG93LWNvbnRyb2wgICIpKTsKKyAgICBFWFBFQ1RfRVEoMVVMLCBtX3BhcnNlZEV4
dGVuc2lvblRva2Vucy5zaXplKCkpOworICAgIEVYUEVDVF9FUSgibXV4IiwgbV9wYXJzZWRFeHRl
bnNpb25Ub2tlbnNbMF0pOworICAgIEVYUEVDVF9FUSgyLCBtX3BhcnNlZFBhcmFtZXRlcnNbMF0u
c2l6ZSgpKTsKKyAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6aXRlcmF0b3IgcGFyYW1ldGVy
ID0gbV9wYXJzZWRQYXJhbWV0ZXJzWzBdLmZpbmQoIm1heC1jaGFubmVscyIpOworICAgIEVYUEVD
VF9UUlVFKHBhcmFtZXRlciAhPSBtX3BhcnNlZFBhcmFtZXRlcnNbMF0uZW5kKCkpOworICAgIEVY
UEVDVF9FUSgiNCIsIHBhcmFtZXRlci0+c2Vjb25kKTsKKyAgICBwYXJhbWV0ZXIgPSBtX3BhcnNl
ZFBhcmFtZXRlcnNbMF0uZmluZCgiZmxvdy1jb250cm9sIik7CisgICAgRVhQRUNUX1RSVUUocGFy
YW1ldGVyICE9IG1fcGFyc2VkUGFyYW1ldGVyc1swXS5lbmQoKSk7CisgICAgRVhQRUNUX1RSVUUo
cGFyYW1ldGVyLT5zZWNvbmQuaXNOdWxsKCkpOworfQorCitURVNUX0YoV2ViU29ja2V0RXh0ZW5z
aW9uRGlzcGF0Y2hlclRlc3QsIFRlc3RNdWx0aXBsZSkKK3sKKyAgICBzdHJ1Y3QgeworICAgICAg
ICBTdHJpbmcgdG9rZW47CisgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IHBhcmFtZXRl
cnM7CisgICAgfSBleHBlY3RlZFsyXTsKKyAgICBleHBlY3RlZFswXS50b2tlbiA9ICJtdXgiOwor
ICAgIGV4cGVjdGVkWzBdLnBhcmFtZXRlcnMuYWRkKCJtYXgtY2hhbm5lbHMiLCAiNCIpOworICAg
IGV4cGVjdGVkWzBdLnBhcmFtZXRlcnMuYWRkKCJmbG93LWNvbnRyb2wiLCBTdHJpbmcoKSk7Cisg
ICAgZXhwZWN0ZWRbMV0udG9rZW4gPSAiZGVmbGF0ZS1mcmFtZSI7CisKKyAgICBhZGRNb2NrUHJv
Y2Vzc29yKCJtdXgiKTsKKyAgICBhZGRNb2NrUHJvY2Vzc29yKCJkZWZsYXRlLWZyYW1lIik7Cisg
ICAgRVhQRUNUX1RSVUUobV9leHRlbnNpb25zLnByb2Nlc3NIZWFkZXJWYWx1ZSgibXV4IDsgIG1h
eC1jaGFubmVscyA9NDtmbG93LWNvbnRyb2wsIGRlZmxhdGUtZnJhbWUgICIpKTsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHNpemVvZihleHBlY3RlZCkgLyBzaXplb2YoZXhwZWN0ZWRbMF0p
OyArK2kpIHsKKyAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkW2ldLnRva2VuLCBtX3BhcnNlZEV4
dGVuc2lvblRva2Vuc1tpXSk7CisgICAgICAgIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+
JiBleHBlY3RlZFBhcmFtZXRlcnMgPSBleHBlY3RlZFtpXS5wYXJhbWV0ZXJzOworICAgICAgICBj
b25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgcGFyc2VkUGFyYW1ldGVycyA9IG1fcGFyc2Vk
UGFyYW1ldGVyc1tpXTsKKyAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkW2ldLnBhcmFtZXRlcnMu
c2l6ZSgpLCBtX3BhcnNlZFBhcmFtZXRlcnNbaV0uc2l6ZSgpKTsKKyAgICAgICAgZm9yIChIYXNo
TWFwPFN0cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXRlcmF0b3IgPSBleHBlY3RlZFBh
cmFtZXRlcnMuYmVnaW4oKTsgaXRlcmF0b3IgIT0gZXhwZWN0ZWRQYXJhbWV0ZXJzLmVuZCgpOyAr
K2l0ZXJhdG9yKSB7CisgICAgICAgICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6Y29uc3Rf
aXRlcmF0b3IgcGFyc2VkID0gcGFyc2VkUGFyYW1ldGVycy5maW5kKGl0ZXJhdG9yLT5maXJzdCk7
CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShwYXJzZWQgIT0gcGFyc2VkUGFyYW1ldGVycy5lbmQo
KSk7CisgICAgICAgICAgICBpZiAoaXRlcmF0b3ItPnNlY29uZC5pc051bGwoKSkKKyAgICAgICAg
ICAgICAgICBFWFBFQ1RfVFJVRShwYXJzZWQtPnNlY29uZC5pc051bGwoKSk7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgRVhQRUNUX0VRKGl0ZXJhdG9yLT5zZWNvbmQsIHBhcnNl
ZC0+c2Vjb25kKTsKKyAgICAgICAgfQorICAgIH0KK30KKworVEVTVF9GKFdlYlNvY2tldEV4dGVu
c2lvbkRpc3BhdGNoZXJUZXN0LCBUZXN0UXVvdGVkU3RyaW5nKQoreworICAgIGFkZE1vY2tQcm9j
ZXNzb3IoIngtZm9vIik7CisgICAgRVhQRUNUX1RSVUUobV9leHRlbnNpb25zLnByb2Nlc3NIZWFk
ZXJWYWx1ZSgieC1mb287IHBhcmFtMT1cInF1b3RlZCBzdHJpbmdcIjsgcGFyYW0yPVwiXFxcInF1
b3RlZFxcXCIgc3RyaW5nXFxcXFwiIikpOworICAgIEVYUEVDVF9FUSgyLCBtX3BhcnNlZFBhcmFt
ZXRlcnNbMF0uc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoInF1b3RlZCBzdHJpbmciLCBtX3BhcnNl
ZFBhcmFtZXRlcnNbMF0uZ2V0KCJwYXJhbTEiKSk7CisgICAgRVhQRUNUX0VRKCJcInF1b3RlZFwi
IHN0cmluZ1xcIiwgbV9wYXJzZWRQYXJhbWV0ZXJzWzBdLmdldCgicGFyYW0yIikpOworfQorCitU
RVNUX0YoV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlclRlc3QsIFRlc3RJbnZhbGlkKQorewor
ICAgIGNvbnN0IGNoYXIqIGlucHV0c1tdID0geworICAgICAgICAiXCJ4LWZvb1wiIiwKKyAgICAg
ICAgIngtYmF6IiwKKyAgICAgICAgIngtZm9vXFwiLAorICAgICAgICAieC0oZm9vKSIsCisgICAg
ICAgICJ4LWZvbzsgIiwKKyAgICAgICAgIngtZm9vOyBiYXI9IiwKKyAgICAgICAgIngtZm9vOyBi
YXI9eCB5IiwKKyAgICAgICAgIngtZm9vOyBiYXI9XCJtaXNtYXRjaCBxdW90ZSIsCisgICAgICAg
ICJ4LWZvbzsgYmFyPVwiXFxcIiIsCisgICAgICAgICJ4LWZvbzsgXCJiYXJcIj1iYXoiLAorICAg
ICAgICAieC1mb28geC1iYXIiLAorICAgICAgICAieC1mb28sIHgtYmF6IgorICAgICAgICAieC1m
b28sICIsCisgICAgfTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemVvZihpbnB1dHMp
IC8gc2l6ZW9mKGlucHV0c1swXSk7ICsraSkgeworICAgICAgICBtX2V4dGVuc2lvbnMucmVzZXQo
KTsKKyAgICAgICAgYWRkTW9ja1Byb2Nlc3NvcigieC1mb28iKTsKKyAgICAgICAgYWRkTW9ja1By
b2Nlc3NvcigieC1iYXIiKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG1fZXh0ZW5zaW9ucy5wcm9j
ZXNzSGVhZGVyVmFsdWUoaW5wdXRzW2ldKSk7CisgICAgfQorfQorCit9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTViNjBh
YjMxZjMxYzAwMzI0ZTIzYzRjMWM1M2I1NmE5N2Y4MTNjNS4uOGZhNTJiY2U2ODZhNTNmYjM0ZDVj
NzRhZDI2NmIxYzg2ZjYyNDMyYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTAyLTA5ICBL
ZW5pY2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgV2Vi
U29ja2V0IGV4dGVuc2lvbiBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03ODA3OQorCisgICAgICAgIE5lZWQgYSBzaG9ydCBkZXNjcmlwdGlv
biBhbmQgYnVnIFVSTCAoT09QUyEpCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFr
ZS1mYWlsLWJ5LWV4dGVuc2lvbnMtaGVhZGVyLWV4cGVjdGVkLnR4dDogUmViYXNlbGluZWQuCisK
IDIwMTItMDItMDggIEp1bGllbiBDaGFmZnJhaXggIDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCBnYXJkZW5pbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LWV4dGVuc2lv
bnMtaGVhZGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvaGFuZHNoYWtlLWZhaWwtYnktZXh0ZW5zaW9ucy1oZWFkZXItZXhwZWN0ZWQu
dHh0CmluZGV4IGIxNDY5N2M5ZGJjOGE3NjkwMWRjNTg1ZGUxM2U0YmM1OTQ5MTUwMWIuLmFkZjA2
YjY1MWQ2YjQ3MTViNGExYjk3Yzg3Yzk2MDIzM2FhZTFmYTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaGFuZHNoYWtlLWZhaWwtYnktZXh0
ZW5zaW9ucy1oZWFkZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvaGFuZHNoYWtlLWZhaWwtYnktZXh0ZW5zaW9ucy1oZWFkZXIt
ZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotQ09OU09MRSBNRVNTQUdFOiBFcnJvciBkdXJp
bmcgV2ViU29ja2V0IGhhbmRzaGFrZTogU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlciBp
cyBpbnZhbGlkCitDT05TT0xFIE1FU1NBR0U6IFJlY2VpdmVkIHVuZXhwZWN0ZWQgU2VjLVdlYlNv
Y2tldC1FeHRlbnNpb25zIGhlYWRlcgogVGVzdCB3aGV0aGVyIFdlYlNvY2tldCBoYW5kc2hha2Ug
ZmFpbHMgaWYgdGhlIHNlcnZlciBzZW5kcyBTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgaGVhZGVy
LgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126261</attachid>
            <date>2012-02-09 02:33:23 -0800</date>
            <delta_ts>2012-02-09 02:46:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78079-20120209193322.patch</filename>
            <type>text/plain</type>
            <size>45578</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3MTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRiMTBlMzY1YzkyMjE4
YzJlNTQ0ZTQyOTdmOTI4ODhlNTI2MzVjMi4uOTg4MzVhYmE5ZGJhMGExNjVlMTFmYjkxNDZmMzhm
NzdiZDUxOGNjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDEyLTAyLTA5ICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgV2ViU29j
a2V0IGV4dGVuc2lvbiBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03ODA3OQorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBXZWJT
b2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyIGNsYXNzLCB3aGljaCBjcmVhdGVzIGNsaWVudCdzCisg
ICAgICAgIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIgZmllbGQgYW5kIHBhcnNlcyB0
aGUgc2VydmVyIHJlc3BvbnNlLgorICAgICAgICBUaGlzIHBhdGNoIGRvZXNuJ3QgYWRkIGFueSBh
Y3R1YWwgZXh0ZW5zaW9uLCBzbyBubyBjaGFuZ2VzIGluIGJlaGF2aW9yLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBleGNlcHQg
Zm9yIGNocm9taXVtIHBvcnQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkZWQgV2Vi
U29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci4oY3BwfGgpIGFuZCBXZWJTb2NrZXRFeHRlbnNpb25Q
cm9jZXNzb3IuaC4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBEaXR0by4KKyAgICAg
ICAgKiBUYXJnZXQucHJpOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6IERpdHRvLgor
ICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOiBEaXR0by4KKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorICAgICAgICAqIHdl
YnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChFeHRlbnNpb25QYXJzZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uUGFyc2VyOjpFeHRlbnNpb25QYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uUGFyc2VyOjpjdXJyZW50VG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uUGFyc2VyOjpmaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25QYXJzZXI6
OnBhcnNlZFN1Y2Nlc3NmdWxseSk6CisgICAgICAgIChXZWJDb3JlOjppc1Rva2VuQ2hhcmFjdGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OmlzU2VwYXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvblBhcnNlcjo6c2tpcFNwYWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25Q
YXJzZXI6OmNvbnN1bWVUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25QYXJzZXI6
OmNvbnN1bWVRdW90ZWRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uUGFyc2Vy
Ojpjb25zdW1lUXVvdGVkU3RyaW5nT3JUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25QYXJzZXI6OmNvbnN1bWVDaGFyYWN0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
RXh0ZW5zaW9uRGlzcGF0Y2hlcjo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
RXh0ZW5zaW9uRGlzcGF0Y2hlcjo6YWRkUHJvY2Vzc29yKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXI6OmNyZWF0ZUhlYWRlclZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXI6OnByb2Nlc3NIZWFkZXJWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyOjpmYWls
dXJlUmVhc29uKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3Bh
dGNoZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYlNvY2tldEV4
dGVuc2lvbkRpc3BhdGNoZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9u
RGlzcGF0Y2hlcjo6V2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlcik6CisgICAgICAgICogd2Vi
c29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I6On5XZWJTb2NrZXRFeHRlbnNp
b25Qcm9jZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vz
c29yOjpleHRlbnNpb25Ub2tlbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNp
b25Qcm9jZXNzb3I6OmZhaWx1cmVSZWFzb24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
RXh0ZW5zaW9uUHJvY2Vzc29yOjpXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IpOgorICAgICAg
ICAqIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldEhhbmRzaGFrZTo6Y2xpZW50SGFuZHNoYWtlTWVzc2FnZSk6IEFkZHMgZXh0ZW5z
aW9uIGhlYWRlciB2YWx1ZSBpZiBleGlzdHMuCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRI
YW5kc2hha2U6OmNsaWVudEhhbmRzaGFrZVJlcXVlc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldEhhbmRzaGFrZTo6cmVzZXQpOiBSZXNldHMgV2ViU29ja2V0RXh0ZW5zaW9u
RGlzcGF0Y2hlciBvYmplY3QuCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6
OnNlcnZlckhhbmRzaGFrZVJlc3BvbnNlKTogUmVtb3ZlZC4KKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldEhhbmRzaGFrZTo6YWRkRXh0ZW5zaW9uUHJvY2Vzc29yKTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRIVFRQSGVhZGVycyk6IFBhcnNlcyBh
bmQgY2hlY2tzIGV2ZXJ5IHRpbWUgU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlciBhcHBl
YXJzLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpjaGVja1Jlc3BvbnNl
SGVhZGVycyk6IFJlbW92ZWQgdGhlIGNoZWNrIG9mIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucy4K
KyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oOiBSZW1vdmVkIHNlcnZl
ckhhbmRzaGFrZVJlc3BvbnNlKCkuCisKIDIwMTItMDItMDggIEtlbnRhcm8gSGFyYSAgPGhhcmFr
ZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSBbQ3VzdG9tSGVhZGVyXSBmcm9tIENh
bnZhc1BpeGVsQXJyYXkgYW5kIHJlbmFtZSBbQ3VzdG9tSGVhZGVyXSB0byBbSlNDdXN0b21IZWFk
ZXJdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGFjZWRiYWQ0ZjBlZGRhN2ZjZWY3NDE2
MDVkMDA1OGIzZWY4ZmIwYmYuLjMyODlhMjJkYzFjMDBiM2U0ODNiOGM3Nzk1OGMxZDQwZjIwMWZi
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTItMDIt
MDkgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFk
ZCBXZWJTb2NrZXQgZXh0ZW5zaW9uIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc4MDc5CisKKyAgICAgICAgQWRkIHNvbWUgdGVzdHMgd2hp
Y2ggY2hlY2sgV2ViU29ja2V0RXh0ZW5zaW9uczo6cHJvY2Vzc0hlYWRlclZhbHVlKCkKKyAgICAg
ICAgcGFyc2VzIHRoZSBnaXZlbiByZXNwb25zZSBjb3JyZWN0bHkuCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAg
KiB0ZXN0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyVGVzdC5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChNb2NrV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29y
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I6Ok1v
Y2tXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IpOgorICAgICAgICAoV2ViU29ja2V0RXh0ZW5z
aW9uRGlzcGF0Y2hlclRlc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9u
RGlzcGF0Y2hlclRlc3Q6OldlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXJUZXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXJUZXN0OjpTZXRVcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyVGVzdDo6VGVhckRv
d24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlclRlc3Q6
OmFkZE1vY2tQcm9jZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9u
RGlzcGF0Y2hlclRlc3Q6OmFwcGVuZFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrV2Vi
U29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yOjpwcm9jZXNzUmVzcG9uc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6VEVTVF9GKToKKwogMjAxMi0wMi0wOCAgU2hhd24gU2luZ2ggIDxzaGF3bnNpbmdoQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFJlbW92ZSBpbmNvcnJlY3QgZWFybHkg
ZXhpdCBpbiBDQ0RhbWFnZVRyYWNrZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMTEwZjg3YmM1
YmRkYjAxNDczNGNjYzExNzZhNDQ5ZmM0ZGVkNjc2My4uOTY3ZjA4ODU4YjAwOWNkNzVlNDA2MDE3
ZWI4YzRhNGI4MTMyNDQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIwMzgsNiArMjAzOCw3
IEBAIElGIChFTkFCTEVfV0VCX1NPQ0tFVFMpCiAgICAgICAgIHdlYnNvY2tldHMvVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcAogICAgICAgICB3ZWJzb2NrZXRzL1dl
YlNvY2tldC5jcHAKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorICAg
ICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwCiAgICAgICAg
IHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAogICAgICAgICB3ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0
SGFuZHNoYWtlUmVzcG9uc2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBh
ZDllMmY2MDgyNDhhNTQ2YWJhYzJhZjIwOWM2MDc5NDUzZmM4ZjA3Li4yYzk5ZjMzMDg5NTY5ZTBl
MWM4MzM2NTM2NDdiYWI3M2VmNWU5ZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
QEAgLTQzMDcsNiArNDMwNyw5IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuaCBcCisJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNw
YXRjaGVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNp
b25EaXNwYXRjaGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0
ZW5zaW9uUHJvY2Vzc29yLmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
SGFuZHNoYWtlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5k
c2hha2UuaCBcCiAJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VS
ZXF1ZXN0LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCBhZjFlYjU4ZGI4MzZjZDllZTJmYWY0YWJiZmFl
NDI0NmRkOWIzY2FjLi4wMmExMzU5MDUzMzU4NzE1YmQzMmZjMTFjMGE2ZGE3YWU4YTRhZTMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkKQEAgLTM2NTYsNiArMzY1Niw4IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJM
RV9XRUJfU09DS0VUUz0xKSB7CiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0LmggXAogICAg
ICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCBcCiAgICAgICAgIHdlYnNvY2tldHMv
V2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIFwKKyAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRF
eHRlbnNpb25EaXNwYXRjaGVyLmggXAorICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVu
c2lvblByb2Nlc3Nvci5oIFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2Uu
aCBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oIFwKICAg
ICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oIFwKQEAgLTM2NjQs
NiArMzY2Niw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XRUJfU09DS0VUUz0xKSB7CiAg
ICAgU09VUkNFUyArPSBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBcCiAgICAg
ICAgIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgXAorICAgICAgICB3ZWJzb2NrZXRz
L1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwIFwKICAgICAgICAgd2Vic29ja2V0cy9X
ZWJTb2NrZXRIYW5kc2hha2UuY3BwIFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5k
c2hha2VSZXF1ZXN0LmNwcCBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtl
UmVzcG9uc2UuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAzYWI5MzMxZDlhZTczOTE5NWExNTRh
YzdhOTY0Y2ZhMTIwYjc3OGE4Li5hYjUyYmI4MzYwMWFjZDA4NGY1Y2M5Zjk3NDAxZmU4NmVlZGIz
ZDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC00Nzg5LDYgKzQ3ODksOSBAQAogICAgICAgICAgICAg
J3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAnLAogICAgICAgICAgICAgJ3dlYnNvY2tl
dHMvV2ViU29ja2V0Q2hhbm5lbC5oJywKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tl
dENoYW5uZWxDbGllbnQuaCcsCisgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRl
bnNpb25EaXNwYXRjaGVyLmNwcCcsCisgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRF
eHRlbnNpb25EaXNwYXRjaGVyLmgnLAorICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0
RXh0ZW5zaW9uUHJvY2Vzc29yLmgnLAogICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0
SGFuZHNoYWtlLmNwcCcsCiAgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hh
a2UuaCcsCiAgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0
LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmlu
ZGV4IGZjNGEyMTgzYjA2YWJjMTE2NjcwNWFjZTdjODQ5ODAzZmJjOTI3YjUuLmM2Y2U4NmM5ZTMz
Y2YzNWFlNzNhN2Y2NmVmNmJkYmU2Mzc2MDkyMzggMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC03Mjg5OCw2ICs3Mjg5OCwxOCBAQAogCQkJCT4K
IAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFdl
YlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxG
aWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFdlYlNvY2tldEV4dGVuc2lvbkRp
c3BhdGNoZXIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5cd2Vic29ja2V0c1xXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCIKKwkJCQk+CisJ
CQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cd2Vic29ja2V0c1xXZWJT
b2NrZXRIYW5kc2hha2UuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5NjU0NGU1ZmQ1OTVj
YTgwODRiYjJiMjFmYWJhY2YzOThlNjcxNjg1Li43M2MxNTU3NWQ0OTljNGMwM2E2OGUwZjVkMDQy
YjU0OTdiZWFkMDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xMzY2LDYgKzEzNjYsOCBAQAogCQk0QTZFOUZDNzEzQzE3RDU3
MDA0NkE3RjggLyogRm9udEZlYXR1cmVTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTZFOUZDNTEzQzE3RDU3MDA0NkE3RjggLyogRm9u
dEZlYXR1cmVTZXR0aW5ncy5jcHAgKi87IH07CiAJCTRBNkU5RkM4MTNDMTdENTcwMDQ2QTdGOCAv
KiBGb250RmVhdHVyZVNldHRpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0QTZFOUZDNjEzQzE3RDU3MDA0NkE3RjggLyogRm9udEZlYXR1cmVTZXR0
aW5ncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTRBOEM5NkVCMEJFNjkwMzIwMDRFRUZGMCAvKiBGcmFtZVNlbGVjdGlvbk1hYy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBOEM5NkVBMEJFNjkwMzIw
MDRFRUZGMCAvKiBGcmFtZVNlbGVjdGlvbk1hYy5tbSAqLzsgfTsKKwkJNEE5NTdGMDYxNEUyNDEy
QTAwNDlEQkZCIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE5NTdGMDMxNEUyNDExMDAwNDlE
QkZCIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwICovOyB9OworCQk0QTk1N0Yw
NzE0RTI0MTMwMDA0OURCRkIgLyogV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE5NTdGMDQxNEUyNDEx
MDAwNDlEQkZCIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCAqLzsgfTsKIAkJNEFC
REZGMEIxNERCRTM4NTAwNEQxMTdEIC8qIEhUTUxTaGFkb3dFbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBQkRGRjA3MTREQkUzMTIwMDRE
MTE3RCAvKiBIVE1MU2hhZG93RWxlbWVudC5jcHAgKi87IH07CiAJCTRBQkRGRjBDMTREQkUzODUw
MDREMTE3RCAvKiBIVE1MU2hhZG93RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNEFCREZGMDgxNERCRTMxMjAwNEQxMTdEIC8qIEhUTUxTaGFk
b3dFbGVtZW50LmggKi87IH07CiAJCTRBQ0JDMEJFMTI3MTNDQkQwMDk0RjlCMiAvKiBDbGFzc0xp
c3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEFD
QkMwQkMxMjcxM0NCRDAwOTRGOUIyIC8qIENsYXNzTGlzdC5jcHAgKi87IH07CkBAIC0xMzc5LDYg
KzEzODEsNyBAQAogCQk0QUQwMTAwOTEyN0U2NDJBMDAxNTAzNUYgLyogSFRNTE91dHB1dEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBRDAx
MDA2MTI3RTY0MkEwMDE1MDM1RiAvKiBIVE1MT3V0cHV0RWxlbWVudC5oICovOyB9OwogCQk0QUQw
MTczQzEyN0U4Mjg2MDAxNTAzNUYgLyogSlNIVE1MT3V0cHV0RWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QUQwMTczQTEyN0U4Mjg2MDAx
NTAzNUYgLyogSlNIVE1MT3V0cHV0RWxlbWVudC5jcHAgKi87IH07CiAJCTRBRDAxNzNEMTI3RTgy
ODYwMDE1MDM1RiAvKiBKU0hUTUxPdXRwdXRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QUQwMTczQjEyN0U4Mjg2MDAxNTAzNUYgLyogSlNI
VE1MT3V0cHV0RWxlbWVudC5oICovOyB9OworCQk0QURFMjVGQTE0RTNCQjRDMDA0QzIyMTMgLyog
V2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0QURFMjVGOTE0RTNCQjRDMDA0QzIyMTMgLyogV2ViU29ja2V0
RXh0ZW5zaW9uUHJvY2Vzc29yLmggKi87IH07CiAJCTRBRjFBRDNFMTNGRDIzQTQwMEFBOTU5MCAv
KiBFdmVudERpc3BhdGNoTWVkaWF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNEFGMUFEM0MxM0ZEMjNBNDAwQUE5NTkwIC8qIEV2ZW50RGlzcGF0
Y2hNZWRpYXRvci5jcHAgKi87IH07CiAJCTRBRjFBRDNGMTNGRDIzQTQwMEFBOTU5MCAvKiBFdmVu
dERpc3BhdGNoTWVkaWF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDRBRjFBRDNEMTNGRDIzQTQwMEFBOTU5MCAvKiBFdmVudERpc3BhdGNoTWVkaWF0
b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
QjI3MDhDNzBBRjE5RUU0MDA2NTEyN0YgLyogUGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEIyNzA4QzUwQUYxOUVFNDAwNjUxMjdGIC8q
IFBhc3RlYm9hcmQuaCAqLzsgfTsKQEAgLTgyMDQsNiArODIwNyw4IEBACiAJCTRBNkU5RkM1MTND
MTdENTcwMDQ2QTdGOCAvKiBGb250RmVhdHVyZVNldHRpbmdzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRGZWF0dXJlU2V0dGluZ3MuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0QTZFOUZDNjEzQzE3RDU3MDA0NkE3RjggLyogRm9udEZlYXR1
cmVTZXR0aW5ncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgZmlsZUVuY29kaW5nID0gNDsgcGF0aCA9IEZvbnRGZWF0dXJl
U2V0dGluZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE4Qzk2RUEwQkU2OTAz
MjAwNEVFRkYwIC8qIEZyYW1lU2VsZWN0aW9uTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgbmFtZSA9IEZyYW1lU2VsZWN0aW9uTWFjLm1tOyBwYXRoID0gbWFjL0ZyYW1l
U2VsZWN0aW9uTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QTk1N0YwMzE0
RTI0MTEwMDA0OURCRkIgLyogV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRj
aGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEE5NTdGMDQxNEUyNDExMDAw
NDlEQkZCIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0QUJERkYwNzE0REJFMzEyMDA0RDExN0QgLyogSFRNTFNo
YWRvd0VsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRN
TFNoYWRvd0VsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QUJERkYw
ODE0REJFMzEyMDA0RDExN0QgLyogSFRNTFNoYWRvd0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSFRNTFNoYWRvd0VsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNEFCREZGMDkxNERCRTMxMjAwNEQxMTdEIC8qIEhUTUxTaGFkb3dFbGVtZW50
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MU2hhZG93RWxlbWVudC5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MjIwLDYgKzgyMjUsNyBAQAogCQk0QUQwMTAwNzEy
N0U2NDJBMDAxNTAzNUYgLyogSFRNTE91dHB1dEVsZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IEhUTUxPdXRwdXRFbGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNEFEMDE3M0ExMjdFODI4NjAwMTUwMzVGIC8qIEpTSFRNTE91dHB1dEVsZW1lbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MT3V0cHV0RWxlbWVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBRDAxNzNCMTI3RTgyODYwMDE1MDM1
RiAvKiBKU0hUTUxPdXRwdXRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTSFRNTE91dHB1dEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NEFERTI1RjkxNEUzQkI0QzAwNEMyMjEzIC8qIFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTb2NrZXRFeHRlbnNpb25Qcm9j
ZXNzb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEFGMUFEM0MxM0ZEMjNBNDAw
QUE5NTkwIC8qIEV2ZW50RGlzcGF0Y2hNZWRpYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBFdmVudERpc3BhdGNoTWVkaWF0b3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0QUYxQUQzRDEzRkQyM0E0MDBBQTk1OTAgLyogRXZlbnREaXNwYXRj
aE1lZGlhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV2ZW50RGlzcGF0
Y2hNZWRpYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QjI3MDhDNTBBRjE5
RUU0MDA2NTEyN0YgLyogUGFzdGVib2FyZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQYXN0ZWJvYXJkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDc0Niw2
ICsxNDc1Miw3IEBACiAJCTUxOEEzNEJEMTAyNkM4MzEwMDFCNjg5NiAvKiB3ZWJzb2NrZXRzICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0QURFMjVGOTE0
RTNCQjRDMDA0QzIyMTMgLyogV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmggKi8sCiAJCQkJ
NTFGQjU0RjQxMTNFMzY0MjAwODIxMTc2IC8qIENsb3NlRXZlbnQuaCAqLywKIAkJCQk1MUZCNTRG
NjExM0UzNjU5MDA4MjExNzYgLyogQ2xvc2VFdmVudC5pZGwgKi8sCiAJCQkJNTExMjI0NzExMENG
QjhDNjAwODA5OUQ3IC8qIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCAqLywKQEAgLTE0
NzU4LDYgKzE0NzY1LDggQEAKIAkJCQk1MTBENEE0NzEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29j
a2V0Q2hhbm5lbC5jcHAgKi8sCiAJCQkJNTEwRDRBNDgxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNv
Y2tldENoYW5uZWwuaCAqLywKIAkJCQk1MTBENEE0OTEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29j
a2V0Q2hhbm5lbENsaWVudC5oICovLAorCQkJCTRBOTU3RjAzMTRFMjQxMTAwMDQ5REJGQiAvKiBX
ZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcCAqLywKKwkJCQk0QTk1N0YwNDE0RTI0MTEw
MDA0OURCRkIgLyogV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5oICovLAogCQkJCTUxQUJB
RTQyMTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2UuY3BwICovLAogCQkJCTUx
QUJBRTQzMTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2UuaCAqLywKIAkJCQk3
NjM3QzU0MDExMkU3Qjc0MDAzRDZDREMgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAg
Ki8sCkBAIC0yNDE2Miw2ICsyNDE3MSw4IEBACiAJCQkJMUFBQURERTkxNERDOERGODAwQUY2NEIz
IC8qIFNjcm9sbGluZ1RyZWVOb2RlTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQkxMEZCMDg0QjE0
RTE1QzdFMDBBM0RCOTggLyogUHVibGljVVJMTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
N0E1NDg1ODAxNEUwMkQ1MTAwNkFFMDVBIC8qIEluc3BlY3Rvckhpc3RvcnkuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTRBOTU3RjA3MTRFMjQxMzAwMDQ5REJGQiAvKiBXZWJTb2NrZXRFeHRlbnNpb25E
aXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0QURFMjVGQTE0RTNCQjRDMDA0QzIyMTMg
LyogV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI3MTAw
LDYgKzI3MTExLDcgQEAKIAkJCQkxQUFBRERFODE0REM4REY4MDBBRjY0QjMgLyogU2Nyb2xsaW5n
VHJlZU5vZGVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QTU0ODU3RjE0RTAyRDUxMDA2QUUw
NUEgLyogSW5zcGVjdG9ySGlzdG9yeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREFBOEQwQTE0
RDcxQjJFMDA2MUVBNjAgLyogUGxhdGZvcm1DbG9ja0NNLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJ
NEE5NTdGMDYxNEUyNDEyQTAwNDlEQkZCIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzRlYWMw
OWI5OGY2MjRkMDc2MWRjYjY3Nzk4MDU5ZWVjMDBhMTU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcApA
QCAtMCwwICsxLDI1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX1NP
Q0tFVFMpCisKKyNpbmNsdWRlICJXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmgiCisKKyNp
bmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nSGFzaC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEV4dGVuc2lvblBh
cnNlciB7CitwdWJsaWM6CisgICAgRXh0ZW5zaW9uUGFyc2VyKGNvbnN0IGNoYXIqIHN0YXJ0LCBj
b25zdCBjaGFyKiBlbmQpCisgICAgICAgIDogbV9jdXJyZW50KHN0YXJ0KQorICAgICAgICAsIG1f
ZW5kKGVuZCkKKyAgICB7CisgICAgfQorICAgIGJvb2wgZmluaXNoZWQoKTsKKyAgICBib29sIHBh
cnNlZFN1Y2Nlc3NmdWxseSgpOworICAgIGNvbnN0IFN0cmluZyYgY3VycmVudFRva2VuKCkgeyBy
ZXR1cm4gbV9jdXJyZW50VG9rZW47IH0KKworICAgIC8vIFRoZSBmb2xsb3dpbmcgbWVtYmVyIGZ1
bmN0aW9ucyBiYXNpY2FsbHkgZm9sbG93IHRoZSBncmFtbWVyIGRlZmluZWQKKyAgICAvLyBpbiBT
ZWN0aW9uIDIuMiBvZiBSRkMgMjYxNi4KKyAgICBib29sIGNvbnN1bWVUb2tlbigpOworICAgIGJv
b2wgY29uc3VtZVF1b3RlZFN0cmluZygpOworICAgIGJvb2wgY29uc3VtZVF1b3RlZFN0cmluZ09y
VG9rZW4oKTsKKyAgICBib29sIGNvbnN1bWVDaGFyYWN0ZXIoY2hhcik7CisKK3ByaXZhdGU6Cisg
ICAgdm9pZCBza2lwU3BhY2VzKCk7CisKKyAgICBjb25zdCBjaGFyKiBtX2N1cnJlbnQ7CisgICAg
Y29uc3QgY2hhciogbV9lbmQ7CisgICAgU3RyaW5nIG1fY3VycmVudFRva2VuOworfTsKKworYm9v
bCBFeHRlbnNpb25QYXJzZXI6OmZpbmlzaGVkKCkKK3sKKyAgICByZXR1cm4gbV9jdXJyZW50ID49
IG1fZW5kOworfQorCitib29sIEV4dGVuc2lvblBhcnNlcjo6cGFyc2VkU3VjY2Vzc2Z1bGx5KCkK
K3sKKyAgICByZXR1cm4gbV9jdXJyZW50ID09IG1fZW5kOworfQorCitzdGF0aWMgYm9vbCBpc1Nl
cGFyYXRvcihjaGFyIGNoYXJhY3RlcikKK3sKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc2VwYXJh
dG9yQ2hhcmFjdGVycyA9ICIoKTw+QCw7OlxcXCIvW10/PXt9IFx0IjsKKyAgICBjb25zdCBjaGFy
KiBwID0gc3RyY2hyKHNlcGFyYXRvckNoYXJhY3RlcnMsIGNoYXJhY3Rlcik7CisgICAgcmV0dXJu
IHAgJiYgKnA7Cit9CisKK3ZvaWQgRXh0ZW5zaW9uUGFyc2VyOjpza2lwU3BhY2VzKCkKK3sKKyAg
ICB3aGlsZSAobV9jdXJyZW50IDwgbV9lbmQgJiYgKCptX2N1cnJlbnQgPT0gJyAnIHx8ICptX2N1
cnJlbnQgPT0gJ1x0JykpCisgICAgICAgICsrbV9jdXJyZW50OworfQorCitib29sIEV4dGVuc2lv
blBhcnNlcjo6Y29uc3VtZVRva2VuKCkKK3sKKyAgICBza2lwU3BhY2VzKCk7CisgICAgY29uc3Qg
Y2hhciogc3RhcnQgPSBtX2N1cnJlbnQ7CisgICAgd2hpbGUgKG1fY3VycmVudCA8IG1fZW5kICYm
IGlzQVNDSUlQcmludGFibGUoKm1fY3VycmVudCkgJiYgIWlzU2VwYXJhdG9yKCptX2N1cnJlbnQp
KQorICAgICAgICArK21fY3VycmVudDsKKyAgICBpZiAoc3RhcnQgPCBtX2N1cnJlbnQpIHsKKyAg
ICAgICAgbV9jdXJyZW50VG9rZW4gPSBTdHJpbmcoc3RhcnQsIG1fY3VycmVudCAtIHN0YXJ0KTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBFeHRlbnNpb25QYXJzZXI6OmNvbnN1bWVRdW90ZWRTdHJpbmcoKQoreworICAgIHNraXBTcGFj
ZXMoKTsKKyAgICBpZiAobV9jdXJyZW50ID49IG1fZW5kIHx8ICptX2N1cnJlbnQgIT0gJyInKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyOworICAgICsr
bV9jdXJyZW50OworICAgIHdoaWxlIChtX2N1cnJlbnQgPCBtX2VuZCAmJiAqbV9jdXJyZW50ICE9
ICciJykgeworICAgICAgICBpZiAoKm1fY3VycmVudCA9PSAnXFwnICYmICsrbV9jdXJyZW50ID49
IG1fZW5kKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBidWZmZXIuYXBwZW5k
KCptX2N1cnJlbnQpOworICAgICAgICArK21fY3VycmVudDsKKyAgICB9CisgICAgaWYgKG1fY3Vy
cmVudCA+PSBtX2VuZCB8fCAqbV9jdXJyZW50ICE9ICciJykKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIG1fY3VycmVudFRva2VuID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXIuZGF0YSgpLCBi
dWZmZXIuc2l6ZSgpKTsKKyAgICArK21fY3VycmVudDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Ym9vbCBFeHRlbnNpb25QYXJzZXI6OmNvbnN1bWVRdW90ZWRTdHJpbmdPclRva2VuKCkKK3sKKyAg
ICAvLyBUaGlzIGlzIG9rIGJlY2F1c2UgY29uc3VtZVF1b3RlZFN0cmluZygpIGRvZXNuJ3QgdXBk
YXRlIG1fY3VycmVudCBvcgorICAgIC8vIG1ha2VzIGl0IHNhbWUgYXMgbV9lbmQgb24gZmFpbHVy
ZS4KKyAgICByZXR1cm4gY29uc3VtZVF1b3RlZFN0cmluZygpIHx8IGNvbnN1bWVUb2tlbigpOwor
fQorCitib29sIEV4dGVuc2lvblBhcnNlcjo6Y29uc3VtZUNoYXJhY3RlcihjaGFyIGNoYXJhY3Rl
cikKK3sKKyAgICBza2lwU3BhY2VzKCk7CisgICAgaWYgKG1fY3VycmVudCA8IG1fZW5kICYmICpt
X2N1cnJlbnQgPT0gY2hhcmFjdGVyKSB7CisgICAgICAgICsrbV9jdXJyZW50OworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFdlYlNvY2tl
dEV4dGVuc2lvbkRpc3BhdGNoZXI6OnJlc2V0KCkKK3sKKyAgICBtX3Byb2Nlc3NvcnMuY2xlYXIo
KTsKK30KKwordm9pZCBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyOjphZGRQcm9jZXNzb3Io
UGFzc093blB0cjxXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I+IHByb2Nlc3NvcikKK3sKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcHJvY2Vzc29ycy5zaXplKCk7ICsraSkgeworICAg
ICAgICBpZiAobV9wcm9jZXNzb3JzW2ldLT5leHRlbnNpb25Ub2tlbigpID09IHByb2Nlc3Nvci0+
ZXh0ZW5zaW9uVG9rZW4oKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJU
KHByb2Nlc3Nvci0+aGFuZHNoYWtlU3RyaW5nKCkubGVuZ3RoKCkpOworICAgIG1fcHJvY2Vzc29y
cy5hcHBlbmQocHJvY2Vzc29yKTsKK30KKworc3RhdGljIHZvaWQgYXBwZW5kSGVhZGVyVmFsdWUo
U3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgU3RyaW5nJiBoZWFkZXJWYWx1ZSkKK3sKKyAg
ICBBU1NFUlQoIWhlYWRlclZhbHVlLmNvbnRhaW5zKCdcbicpKTsKKyAgICBBU1NFUlQoIWhlYWRl
clZhbHVlLmNvbnRhaW5zKHN0YXRpY19jYXN0PFVDaGFyPignXDAnKSkpOworICAgIGJ1aWxkZXIu
YXBwZW5kKGhlYWRlclZhbHVlKTsKK30KKworY29uc3QgU3RyaW5nIFdlYlNvY2tldEV4dGVuc2lv
bkRpc3BhdGNoZXI6OmNyZWF0ZUhlYWRlclZhbHVlKCkgY29uc3QKK3sKKyAgICBzaXplX3QgbnVt
UHJvY2Vzc29ycyA9IG1fcHJvY2Vzc29ycy5zaXplKCk7CisgICAgaWYgKCFudW1Qcm9jZXNzb3Jz
KQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7
CisgICAgYXBwZW5kSGVhZGVyVmFsdWUoYnVpbGRlciwgbV9wcm9jZXNzb3JzWzBdLT5oYW5kc2hh
a2VTdHJpbmcoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBudW1Qcm9jZXNzb3JzOyAr
K2kpIHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIiwgIik7CisgICAgICAgIGFwcGVuZEhlYWRl
clZhbHVlKGJ1aWxkZXIsIG1fcHJvY2Vzc29yc1tpXS0+aGFuZHNoYWtlU3RyaW5nKCkpOworICAg
IH0KKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCitib29sIFdlYlNvY2tldEV4
dGVuc2lvbkRpc3BhdGNoZXI6OnByb2Nlc3NIZWFkZXJWYWx1ZShjb25zdCBTdHJpbmcmIGhlYWRl
clZhbHVlKQoreworICAgIGlmICghaGVhZGVyVmFsdWUubGVuZ3RoKCkpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgLy8gSWYgd2UgZG9uJ3Qgc2VuZCBTZWMtV2ViU29ja2V0LUV4dGVuc2lv
bnMgaGVhZGVyLCB0aGUgc2VydmVyIHNob3VsZCBub3QgcmV0dXJuIHRoZSBoZWFkZXIuCisgICAg
aWYgKCFtX3Byb2Nlc3NvcnMuc2l6ZSgpKSB7CisgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJS
ZWNlaXZlZCB1bmV4cGVjdGVkIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIiOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY29uc3QgQ1N0cmluZyBoZWFkZXJWYWx1
ZURhdGEgPSBoZWFkZXJWYWx1ZS51dGY4KCk7CisgICAgRXh0ZW5zaW9uUGFyc2VyIHBhcnNlciho
ZWFkZXJWYWx1ZURhdGEuZGF0YSgpLCBoZWFkZXJWYWx1ZURhdGEuZGF0YSgpICsgaGVhZGVyVmFs
dWVEYXRhLmxlbmd0aCgpKTsKKworICAgIHdoaWxlICghcGFyc2VyLmZpbmlzaGVkKCkpIHsKKyAg
ICAgICAgLy8gUGFyc2UgZXh0ZW5zaW9uLXRva2VuLgorICAgICAgICBpZiAoIXBhcnNlci5jb25z
dW1lVG9rZW4oKSkgeworICAgICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gIlNlYy1XZWJTb2Nr
ZXQtRXh0ZW5zaW9ucyBoZWFkZXIgaXMgaW52YWxpZCI7CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyAgICAgICAgU3RyaW5nIGV4dGVuc2lvblRva2VuID0gcGFyc2VyLmN1
cnJlbnRUb2tlbigpOworCisgICAgICAgIC8vIFBhcnNlIGV4dGVuc2lvbi1wYXJhbWV0ZXJzIGlm
IGV4aXN0cy4KKyAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gZXh0ZW5zaW9uUGFyYW1l
dGVyczsKKyAgICAgICAgd2hpbGUgKHBhcnNlci5jb25zdW1lQ2hhcmFjdGVyKCc7JykpIHsKKyAg
ICAgICAgICAgIGlmICghcGFyc2VyLmNvbnN1bWVUb2tlbigpKSB7CisgICAgICAgICAgICAgICAg
bV9mYWlsdXJlUmVhc29uID0gIlNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIgaXMgaW52
YWxpZCI7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBTdHJpbmcgcGFyYW1ldGVyVG9rZW4gPSBwYXJzZXIuY3VycmVudFRva2VuKCk7
CisgICAgICAgICAgICBpZiAocGFyc2VyLmNvbnN1bWVDaGFyYWN0ZXIoJz0nKSkgeworICAgICAg
ICAgICAgICAgIGlmIChwYXJzZXIuY29uc3VtZVF1b3RlZFN0cmluZ09yVG9rZW4oKSkKKyAgICAg
ICAgICAgICAgICAgICAgZXh0ZW5zaW9uUGFyYW1ldGVycy5hZGQocGFyYW1ldGVyVG9rZW4sIHBh
cnNlci5jdXJyZW50VG9rZW4oKSk7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgaGVh
ZGVyIGlzIGludmFsaWQiOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgZXh0ZW5z
aW9uUGFyYW1ldGVycy5hZGQocGFyYW1ldGVyVG9rZW4sIFN0cmluZygpKTsKKyAgICAgICAgfQor
ICAgICAgICBpZiAoIXBhcnNlci5maW5pc2hlZCgpICYmICFwYXJzZXIuY29uc3VtZUNoYXJhY3Rl
cignLCcpKSB7CisgICAgICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiU2VjLVdlYlNvY2tldC1F
eHRlbnNpb25zIGhlYWRlciBpcyBpbnZhbGlkIjsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorCisgICAgICAgIHNpemVfdCBpbmRleDsKKyAgICAgICAgZm9yIChpbmRleCA9
IDA7IGluZGV4IDwgbV9wcm9jZXNzb3JzLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICAgICAg
V2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yKiBwcm9jZXNzb3IgPSBtX3Byb2Nlc3NvcnNbaW5k
ZXhdLmdldCgpOworICAgICAgICAgICAgaWYgKGV4dGVuc2lvblRva2VuID09IHByb2Nlc3Nvci0+
ZXh0ZW5zaW9uVG9rZW4oKSkgeworICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzb3ItPnByb2Nl
c3NSZXNwb25zZShleHRlbnNpb25QYXJhbWV0ZXJzKSkKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gcHJvY2Vzc29yLT5mYWlsdXJl
UmVhc29uKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIC8vIFRoZXJlIGlzIG5vIGV4dGVuc2lvbiB3aGljaCBjYW4gcHJv
Y2VzcyB0aGUgcmVzcG9uc2UuCisgICAgICAgIGlmIChpbmRleCA9PSBtX3Byb2Nlc3NvcnMuc2l6
ZSgpKSB7CisgICAgICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiUmVjZWl2ZWQgdW5leHBlY3Rl
ZCBleHRlbnNpb246ICIgKyBleHRlbnNpb25Ub2tlbjsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcGFyc2VyLnBhcnNlZFN1Y2Nlc3NmdWxs
eSgpOworfQorCitTdHJpbmcgV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlcjo6ZmFpbHVyZVJl
YXNvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZmFpbHVyZVJlYXNvbjsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRj
aGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3Bh
dGNoZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mODgyYmI5ZDA4MmE0NmM3ZWVmNjI3ODhhZmU2ZDI0NTQyZTA2
YjYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRFeHRlbnNpb25EaXNwYXRjaGVyLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNvY2tl
dEV4dGVuc2lvbkRpc3BhdGNoZXJfaAorI2RlZmluZSBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRj
aGVyX2gKKworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKworI2luY2x1ZGUgIldlYlNvY2tldEV4
dGVuc2lvblByb2Nlc3Nvci5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXZWJTb2Nr
ZXRFeHRlbnNpb25EaXNwYXRjaGVyIHsKK3B1YmxpYzoKKyAgICBXZWJTb2NrZXRFeHRlbnNpb25E
aXNwYXRjaGVyKCkgeyB9CisKKyAgICB2b2lkIHJlc2V0KCk7CisgICAgdm9pZCBhZGRQcm9jZXNz
b3IoUGFzc093blB0cjxXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I+KTsKKyAgICBjb25zdCBT
dHJpbmcgY3JlYXRlSGVhZGVyVmFsdWUoKSBjb25zdDsKKworICAgIGJvb2wgcHJvY2Vzc0hlYWRl
clZhbHVlKGNvbnN0IFN0cmluZyYpOworICAgIFN0cmluZyBmYWlsdXJlUmVhc29uKCkgY29uc3Q7
CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPE93blB0cjxXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNz
b3I+ID4gbV9wcm9jZXNzb3JzOworICAgIFN0cmluZyBtX2ZhaWx1cmVSZWFzb247Cit9OworCit9
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNlbmRpZiAvLyBXZWJTb2NrZXRF
eHRlbnNpb25EaXNwYXRjaGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlM2Q1M2Q0MWM1
NTM2ZTA2YzdkNjM1ODE0MGQ2YzNkMTZjYjE2NzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvci5oCkBAIC0wLDAg
KzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3JfaAorI2RlZmluZSBX
ZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3JfaAorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQor
CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXZWJTb2NrZXRFeHRlbnNpb25Qcm9j
ZXNzb3IgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nv
cigpIHsgfQorCisgICAgU3RyaW5nIGV4dGVuc2lvblRva2VuKCkgY29uc3QgeyByZXR1cm4gbV9l
eHRlbnNpb25Ub2tlbjsgfQorCisgICAgLy8gVGhlIHJldHVybiB2YWx1ZSBvZiB0aGlzIG1ldGhv
ZCB3aWxsIGJlIGEgcGFydCBvZiB0aGUgdmFsdWUgb2YKKyAgICAvLyBTZWMtV2ViU29ja2V0LUV4
dGVuc2lvbnMuCisgICAgdmlydHVhbCBTdHJpbmcgaGFuZHNoYWtlU3RyaW5nKCkgPSAwOworCisg
ICAgLy8gVGhpcyBzaG91bGQgdmFsaWRhdGUgdGhlIHNlcnZlcidzIHJlc3BvbnNlIHBhcmFtZXRl
cnMgd2hpY2ggYXJlIHBhc3NlZAorICAgIC8vIGFzIEhhc2hNYXA8a2V5LCB2YWx1ZT4uIFRoaXMg
bWF5IGFsc28gZG8gc29tZXRoaW5nIGZvciB0aGUgZXh0ZW5zaW9uLgorICAgIC8vIE5vdGUgdGhh
dCB0aGlzIG1ldGhvZCBtYXkgYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmNlIHdoZW4gdGhlIHNlcnZl
cgorICAgIC8vIHJlc3BvbnNlIGNvbnRhaW5zIGR1cGxpY2F0ZSBleHRlbnNpb24gdG9rZW4gdGhh
dCBtYXRjaGVzIGV4dGVuc2lvblRva2VuKCkuCisgICAgdmlydHVhbCBib29sIHByb2Nlc3NSZXNw
b25zZShjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYpID0gMDsKKworICAgIC8vIElmIHBy
b2NlY3NzUmVzcG9uc2UoKSByZXR1cm5zIGZhbHNlLCB0aGlzIHNob3VsZCBwcm92aWRlIHRoZSBy
ZWFzb24uCisgICAgdmlydHVhbCBTdHJpbmcgZmFpbHVyZVJlYXNvbigpIHsgcmV0dXJuICJFeHRl
bnNpb24gIiArIG1fZXh0ZW5zaW9uVG9rZW4gKyAiIGZhaWxlZCI7IH0KKworcHJvdGVjdGVkOgor
ICAgIFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvcihjb25zdCBTdHJpbmcmIGV4dGVuc2lvblRv
a2VuKQorICAgICAgICA6IG1fZXh0ZW5zaW9uVG9rZW4oZXh0ZW5zaW9uVG9rZW4pCisgICAgewor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBTdHJpbmcgbV9leHRlbnNpb25Ub2tlbjsKK307CisKK30K
KworI2VuZGlmIC8vIEVOQUJMRShXRUJfU09DS0VUUykKKworI2VuZGlmIC8vIFdlYlNvY2tldEV4
dGVuc2lvblByb2Nlc3Nvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldEhhbmRzaGFrZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldEhhbmRzaGFrZS5jcHAKaW5kZXggODkwOWVmYWYxODQ0ZjFmYWNhZGI3ZjFiNWUyMTMyZDJi
YmRkZThlZi4uYjI2MTU1NzM4NGZjNThjZWNiM2Q0Y2M3OGRmNjZjYjViZjhmMmJmZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcApAQCAt
Mjg3LDYgKzI4Nyw5IEBAIENTdHJpbmcgV2ViU29ja2V0SGFuZHNoYWtlOjpjbGllbnRIYW5kc2hh
a2VNZXNzYWdlKCkgY29uc3QKICAgICB9IGVsc2UgewogICAgICAgICBmaWVsZHMuYXBwZW5kKCJT
ZWMtV2ViU29ja2V0LUtleTogIiArIG1fc2VjV2ViU29ja2V0S2V5KTsKICAgICAgICAgZmllbGRz
LmFwcGVuZCgiU2VjLVdlYlNvY2tldC1WZXJzaW9uOiAxMyIpOworICAgICAgICBjb25zdCBTdHJp
bmcgZXh0ZW5zaW9uVmFsdWUgPSBtX2V4dGVuc2lvbkRpc3BhdGNoZXIuY3JlYXRlSGVhZGVyVmFs
dWUoKTsKKyAgICAgICAgaWYgKGV4dGVuc2lvblZhbHVlLmxlbmd0aCgpKQorICAgICAgICAgICAg
ZmllbGRzLmFwcGVuZCgiU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zOiAiICsgZXh0ZW5zaW9uVmFs
dWUpOwogICAgIH0KIAogICAgIC8vIEZpZWxkcyBpbiB0aGUgaGFuZHNoYWtlIGFyZSBzZW50IGJ5
IHRoZSBjbGllbnQgaW4gYSByYW5kb20gb3JkZXI7IHRoZQpAQCAtMzQ0LDYgKzM0Nyw5IEBAIFdl
YlNvY2tldEhhbmRzaGFrZVJlcXVlc3QgV2ViU29ja2V0SGFuZHNoYWtlOjpjbGllbnRIYW5kc2hh
a2VSZXF1ZXN0KCkgY29uc3QKICAgICB9IGVsc2UgewogICAgICAgICByZXF1ZXN0LmFkZEhlYWRl
ckZpZWxkKCJTZWMtV2ViU29ja2V0LUtleSIsIG1fc2VjV2ViU29ja2V0S2V5KTsKICAgICAgICAg
cmVxdWVzdC5hZGRIZWFkZXJGaWVsZCgiU2VjLVdlYlNvY2tldC1WZXJzaW9uIiwgIjEzIik7Cisg
ICAgICAgIGNvbnN0IFN0cmluZyBleHRlbnNpb25WYWx1ZSA9IG1fZXh0ZW5zaW9uRGlzcGF0Y2hl
ci5jcmVhdGVIZWFkZXJWYWx1ZSgpOworICAgICAgICBpZiAoZXh0ZW5zaW9uVmFsdWUubGVuZ3Ro
KCkpCisgICAgICAgICAgICByZXF1ZXN0LmFkZEhlYWRlckZpZWxkKCJTZWMtV2ViU29ja2V0LUV4
dGVuc2lvbnMiLCBleHRlbnNpb25WYWx1ZSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHJlcXVlc3Q7
CkBAIC0zNTIsNiArMzU4LDcgQEAgV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdCBXZWJTb2NrZXRI
YW5kc2hha2U6OmNsaWVudEhhbmRzaGFrZVJlcXVlc3QoKSBjb25zdAogdm9pZCBXZWJTb2NrZXRI
YW5kc2hha2U6OnJlc2V0KCkKIHsKICAgICBtX21vZGUgPSBJbmNvbXBsZXRlOworICAgIG1fZXh0
ZW5zaW9uRGlzcGF0Y2hlci5yZXNldCgpOwogfQogCiB2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6
Y2xlYXJTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkKQEAgLTQ2OSwxNCArNDc2LDE0IEBAIFN0cmlu
ZyBXZWJTb2NrZXRIYW5kc2hha2U6OnNlcnZlcldlYlNvY2tldEFjY2VwdCgpIGNvbnN0CiAgICAg
cmV0dXJuIG1fcmVzcG9uc2UuaGVhZGVyRmllbGRzKCkuZ2V0KCJzZWMtd2Vic29ja2V0LWFjY2Vw
dCIpOwogfQogCi1TdHJpbmcgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXJ2ZXJXZWJTb2NrZXRFeHRl
bnNpb25zKCkgY29uc3QKK2NvbnN0IFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlJiBXZWJTb2Nr
ZXRIYW5kc2hha2U6OnNlcnZlckhhbmRzaGFrZVJlc3BvbnNlKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbV9yZXNwb25zZS5oZWFkZXJGaWVsZHMoKS5nZXQoInNlYy13ZWJzb2NrZXQtZXh0ZW5zaW9u
cyIpOworICAgIHJldHVybiBtX3Jlc3BvbnNlOwogfQogCi1jb25zdCBXZWJTb2NrZXRIYW5kc2hh
a2VSZXNwb25zZSYgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXJ2ZXJIYW5kc2hha2VSZXNwb25zZSgp
IGNvbnN0Cit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6YWRkRXh0ZW5zaW9uUHJvY2Vzc29yKFBh
c3NPd25QdHI8V2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yPiBwcm9jZXNzb3IpCiB7Ci0gICAg
cmV0dXJuIG1fcmVzcG9uc2U7CisgICAgbV9leHRlbnNpb25EaXNwYXRjaGVyLmFkZFByb2Nlc3Nv
cihwcm9jZXNzb3IpOwogfQogCiBLVVJMIFdlYlNvY2tldEhhbmRzaGFrZTo6aHR0cFVSTEZvckF1
dGhlbnRpY2F0aW9uQW5kQ29va2llcygpIGNvbnN0CkBAIC02MjUsNyArNjMyLDE1IEBAIGNvbnN0
IGNoYXIqIFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZEhUVFBIZWFkZXJzKGNvbnN0IGNoYXIqIHN0
YXJ0LCBjb25zdCBjaGFyKiBlCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAg
ICAgICBMT0coTmV0d29yaywgIm5hbWU9JXMgdmFsdWU9JXMiLCBuYW1lU3RyLnN0cmluZygpLnV0
ZjgoKS5kYXRhKCksIHZhbHVlU3RyLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBtX3Jlc3BvbnNl
LmFkZEhlYWRlckZpZWxkKG5hbWVTdHIsIHZhbHVlU3RyKTsKKyAgICAgICAgLy8gU2VjLVdlYlNv
Y2tldC1FeHRlbnNpb25zIG1heSBiZSBzcGxpdC4gV2UgcGFyc2UgYW5kIGNoZWNrIHRoZQorICAg
ICAgICAvLyBoZWFkZXIgdmFsdWUgZXZlcnkgdGltZSB0aGUgaGVhZGVyIGFwcGVhcnMuCisgICAg
ICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSgic2VjLXdlYnNvY2tldC1leHRlbnNpb25zIiwgbmFt
ZVN0cikpIHsKKyAgICAgICAgICAgIGlmICghbV9leHRlbnNpb25EaXNwYXRjaGVyLnByb2Nlc3NI
ZWFkZXJWYWx1ZSh2YWx1ZVN0cikpIHsKKyAgICAgICAgICAgICAgICBtX2ZhaWx1cmVSZWFzb24g
PSBtX2V4dGVuc2lvbkRpc3BhdGNoZXIuZmFpbHVyZVJlYXNvbigpOworICAgICAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1f
cmVzcG9uc2UuYWRkSGVhZGVyRmllbGQobmFtZVN0ciwgdmFsdWVTdHIpOwogICAgIH0KICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gMDsKQEAgLTYzOSw3ICs2NTQsNiBAQCBi
b29sIFdlYlNvY2tldEhhbmRzaGFrZTo6Y2hlY2tSZXNwb25zZUhlYWRlcnMoKQogICAgIGNvbnN0
IFN0cmluZyYgc2VydmVyVXBncmFkZSA9IHRoaXMtPnNlcnZlclVwZ3JhZGUoKTsKICAgICBjb25z
dCBTdHJpbmcmIHNlcnZlckNvbm5lY3Rpb24gPSB0aGlzLT5zZXJ2ZXJDb25uZWN0aW9uKCk7CiAg
ICAgY29uc3QgU3RyaW5nJiBzZXJ2ZXJXZWJTb2NrZXRBY2NlcHQgPSB0aGlzLT5zZXJ2ZXJXZWJT
b2NrZXRBY2NlcHQoKTsKLSAgICBjb25zdCBTdHJpbmcmIHNlcnZlcldlYlNvY2tldEV4dGVuc2lv
bnMgPSB0aGlzLT5zZXJ2ZXJXZWJTb2NrZXRFeHRlbnNpb25zKCk7CiAKICAgICBpZiAoc2VydmVy
VXBncmFkZS5pc051bGwoKSkgewogICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiRXJyb3IgZHVy
aW5nIFdlYlNvY2tldCBoYW5kc2hha2U6ICdVcGdyYWRlJyBoZWFkZXIgaXMgbWlzc2luZyI7CkBA
IC02OTIsMTMgKzcwNiw2IEBAIGJvb2wgV2ViU29ja2V0SGFuZHNoYWtlOjpjaGVja1Jlc3BvbnNl
SGVhZGVycygpCiAgICAgICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiRXJyb3IgZHVyaW5nIFdl
YlNvY2tldCBoYW5kc2hha2U6IFNlYy1XZWJTb2NrZXQtQWNjZXB0IG1pc21hdGNoIjsKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAgICAgICBpZiAoIXNlcnZlcldlYlNv
Y2tldEV4dGVuc2lvbnMuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIC8vIFdlYlNvY2tldCBwcm90
b2NvbCBleHRlbnNpb25zIGFyZSBub3Qgc3VwcG9ydGVkIHlldC4KLSAgICAgICAgICAgIC8vIFdl
IGRvIG5vdCBzZW5kIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIgaW4gb3VyIHJlcXVl
c3QsIHRodXMKLSAgICAgICAgICAgIC8vIHNlcnZlcnMgc2hvdWxkIG5vdCByZXR1cm4gdGhpcyBo
ZWFkZXIsIGVpdGhlci4KLSAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJFcnJvciBkdXJp
bmcgV2ViU29ja2V0IGhhbmRzaGFrZTogU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlciBp
cyBpbnZhbGlkIjsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQogICAgIH0K
ICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0SGFuZHNoYWtlLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldEhhbmRzaGFrZS5oCmluZGV4IDEyYzE4NDAxOWMyY2FjNjdkYTlmZjM0OTJjNDdiOWI3MDJh
Y2VhYjcuLjk3NzdmYjk0ZGFlNWJiZjcyY2Y1ZDY5NWU4Y2ZhMGUwOWE5MTU4NGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaApAQCAtMzUsOCAr
MzUsMTEgQEAKIAogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5o
IgorI2luY2x1ZGUgIldlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCIKKyNpbmNsdWRlICJX
ZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hh
a2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCIKKyNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTgx
LDEwICs4NCwxMSBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHNlcnZlclVwZ3JhZGUoKSBjb25zdDsK
ICAgICBTdHJpbmcgc2VydmVyQ29ubmVjdGlvbigpIGNvbnN0OwogICAgIFN0cmluZyBzZXJ2ZXJX
ZWJTb2NrZXRBY2NlcHQoKSBjb25zdDsgLy8gT25seSBmb3IgaHliaS0xMCBoYW5kc2hha2UuCi0g
ICAgU3RyaW5nIHNlcnZlcldlYlNvY2tldEV4dGVuc2lvbnMoKSBjb25zdDsgLy8gT25seSBmb3Ig
aHliaS0xMCBoYW5kc2hha2UuCiAKICAgICBjb25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25z
ZSYgc2VydmVySGFuZHNoYWtlUmVzcG9uc2UoKSBjb25zdDsKIAorICAgIHZvaWQgYWRkRXh0ZW5z
aW9uUHJvY2Vzc29yKFBhc3NPd25QdHI8V2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yPik7CisK
IHByaXZhdGU6CiAgICAgS1VSTCBodHRwVVJMRm9yQXV0aGVudGljYXRpb25BbmRDb29raWVzKCkg
Y29uc3Q7CiAKQEAgLTExNiw2ICsxMjAsOCBAQCBwcml2YXRlOgogICAgIC8vIEZvciBoeWJpLTEw
IGhhbmRzaGFrZS4KICAgICBTdHJpbmcgbV9zZWNXZWJTb2NrZXRLZXk7CiAgICAgU3RyaW5nIG1f
ZXhwZWN0ZWRBY2NlcHQ7CisKKyAgICBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyIG1fZXh0
ZW5zaW9uRGlzcGF0Y2hlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXBpCmluZGV4IGM4NTAyZjU3M2M0NTE3MDE3MzU0ODVhZjQ3NTIzZTc1
MTI5NGM4M2QuLjM1ZjJiMTk5MDc3OWQ2NjllZjgwNDAyZmIwMGYyYTU1NjE0N2MzMjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQpAQCAtMTE4LDYgKzExOCw3IEBACiAgICAgICAgICAg
ICAndGVzdHMvV2ViTGF5ZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvV2ViUGFnZU5l
d1NlcmlhbGl6ZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvV2ViUGFnZVNlcmlhbGl6
ZXJUZXN0LmNwcCcsCisgICAgICAgICAgICAndGVzdHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0
Y2hlclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9XZWJVUkxSZXF1ZXN0VGVzdC5jcHAn
LAogICAgICAgICAgICAgJ3Rlc3RzL1dlYlZpZXdUZXN0LmNwcCcsCiAgICAgICAgIF0sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlNvY2tldEV4dGVuc2lvbkRp
c3BhdGNoZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViU29ja2V0
RXh0ZW5zaW9uRGlzcGF0Y2hlclRlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhMGI3ZDdkZGE4YTZkZmY2
OTU4Y2UyZTg0MTU0YmEzMjcwNjUxNGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXJUZXN0LmNwcApAQCAt
MCwwICsxLDE3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIldl
YlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCIKKworI2luY2x1ZGUgIldlYlNvY2tldEV4dGVu
c2lvblByb2Nlc3Nvci5oIgorCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1l
c3BhY2UgeworCitjbGFzcyBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyVGVzdDsKKworY2xh
c3MgTW9ja1dlYlNvY2tldEV4dGVuc2lvblByb2Nlc3NvciA6IHB1YmxpYyBXZWJTb2NrZXRFeHRl
bnNpb25Qcm9jZXNzb3IgeworcHVibGljOgorICAgIE1vY2tXZWJTb2NrZXRFeHRlbnNpb25Qcm9j
ZXNzb3IoY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyVGVz
dCogdGVzdCkKKyAgICAgICAgOiBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IobmFtZSkKKyAg
ICAgICAgLCBtX3Rlc3QodGVzdCkKKyAgICB7CisgICAgfQorICAgIHZpcnR1YWwgU3RyaW5nIGhh
bmRzaGFrZVN0cmluZygpIE9WRVJSSURFIHsgcmV0dXJuIGV4dGVuc2lvblRva2VuKCk7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgcHJvY2Vzc1Jlc3BvbnNlKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJp
bmc+JikgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0
Y2hlclRlc3QqIG1fdGVzdDsKK307CisKK2NsYXNzIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNo
ZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworcHVibGljOgorICAgIFdlYlNvY2tldEV4
dGVuc2lvbkRpc3BhdGNoZXJUZXN0KCkgeyB9CisKKyAgICB2b2lkIFNldFVwKCkgeyB9CisKKyAg
ICB2b2lkIFRlYXJEb3duKCkgeyB9CisKKyAgICB2b2lkIGFkZE1vY2tQcm9jZXNzb3IoY29uc3Qg
U3RyaW5nJiBleHRlbnNpb25Ub2tlbikKKyAgICB7CisgICAgICAgIG1fZXh0ZW5zaW9ucy5hZGRQ
cm9jZXNzb3IoYWRvcHRQdHIobmV3IE1vY2tXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IoZXh0
ZW5zaW9uVG9rZW4sIHRoaXMpKSk7CisKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZFJlc3VsdChj
b25zdCBTdHJpbmcmIGV4dGVuc2lvblRva2VuLCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5n
PiYgcGFyYW1ldGVycykKKyAgICB7CisgICAgICAgIG1fcGFyc2VkRXh0ZW5zaW9uVG9rZW5zLmFw
cGVuZChleHRlbnNpb25Ub2tlbik7CisgICAgICAgIG1fcGFyc2VkUGFyYW1ldGVycy5hcHBlbmQo
cGFyYW1ldGVycyk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgV2ViU29ja2V0RXh0ZW5zaW9u
RGlzcGF0Y2hlciBtX2V4dGVuc2lvbnM7CisgICAgVmVjdG9yPFN0cmluZz4gbV9wYXJzZWRFeHRl
bnNpb25Ub2tlbnM7CisgICAgVmVjdG9yPEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+ID4gbV9wYXJz
ZWRQYXJhbWV0ZXJzOworfTsKKworYm9vbCBNb2NrV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29y
Ojpwcm9jZXNzUmVzcG9uc2UoY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIHBhcmFtZXRl
cnMpCit7CisgICAgbV90ZXN0LT5hcHBlbmRSZXN1bHQoZXh0ZW5zaW9uVG9rZW4oKSwgcGFyYW1l
dGVycyk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1RFU1RfRihXZWJTb2NrZXRFeHRlbnNpb25E
aXNwYXRjaGVyVGVzdCwgVGVzdFNpbmdsZSkKK3sKKyAgICBhZGRNb2NrUHJvY2Vzc29yKCJkZWZs
YXRlLWZyYW1lIik7CisgICAgRVhQRUNUX1RSVUUobV9leHRlbnNpb25zLnByb2Nlc3NIZWFkZXJW
YWx1ZSgiZGVmbGF0ZS1mcmFtZSIpKTsKKyAgICBFWFBFQ1RfRVEoMVVMLCBtX3BhcnNlZEV4dGVu
c2lvblRva2Vucy5zaXplKCkpOworICAgIEVYUEVDVF9FUSgiZGVmbGF0ZS1mcmFtZSIsIG1fcGFy
c2VkRXh0ZW5zaW9uVG9rZW5zWzBdKTsKKyAgICBFWFBFQ1RfRVEoMCwgbV9wYXJzZWRQYXJhbWV0
ZXJzWzBdLnNpemUoKSk7Cit9CisKK1RFU1RfRihXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVy
VGVzdCwgVGVzdFBhcmFtZXRlcnMpCit7CisgICAgYWRkTW9ja1Byb2Nlc3NvcigibXV4Iik7Cisg
ICAgRVhQRUNUX1RSVUUobV9leHRlbnNpb25zLnByb2Nlc3NIZWFkZXJWYWx1ZSgibXV4OyBtYXgt
Y2hhbm5lbHM9NDsgZmxvdy1jb250cm9sICAiKSk7CisgICAgRVhQRUNUX0VRKDFVTCwgbV9wYXJz
ZWRFeHRlbnNpb25Ub2tlbnMuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoIm11eCIsIG1fcGFyc2Vk
RXh0ZW5zaW9uVG9rZW5zWzBdKTsKKyAgICBFWFBFQ1RfRVEoMiwgbV9wYXJzZWRQYXJhbWV0ZXJz
WzBdLnNpemUoKSk7CisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46Oml0ZXJhdG9yIHBhcmFt
ZXRlciA9IG1fcGFyc2VkUGFyYW1ldGVyc1swXS5maW5kKCJtYXgtY2hhbm5lbHMiKTsKKyAgICBF
WFBFQ1RfVFJVRShwYXJhbWV0ZXIgIT0gbV9wYXJzZWRQYXJhbWV0ZXJzWzBdLmVuZCgpKTsKKyAg
ICBFWFBFQ1RfRVEoIjQiLCBwYXJhbWV0ZXItPnNlY29uZCk7CisgICAgcGFyYW1ldGVyID0gbV9w
YXJzZWRQYXJhbWV0ZXJzWzBdLmZpbmQoImZsb3ctY29udHJvbCIpOworICAgIEVYUEVDVF9UUlVF
KHBhcmFtZXRlciAhPSBtX3BhcnNlZFBhcmFtZXRlcnNbMF0uZW5kKCkpOworICAgIEVYUEVDVF9U
UlVFKHBhcmFtZXRlci0+c2Vjb25kLmlzTnVsbCgpKTsKK30KKworVEVTVF9GKFdlYlNvY2tldEV4
dGVuc2lvbkRpc3BhdGNoZXJUZXN0LCBUZXN0TXVsdGlwbGUpCit7CisgICAgc3RydWN0IHsKKyAg
ICAgICAgU3RyaW5nIHRva2VuOworICAgICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBwYXJh
bWV0ZXJzOworICAgIH0gZXhwZWN0ZWRbMl07CisgICAgZXhwZWN0ZWRbMF0udG9rZW4gPSAibXV4
IjsKKyAgICBleHBlY3RlZFswXS5wYXJhbWV0ZXJzLmFkZCgibWF4LWNoYW5uZWxzIiwgIjQiKTsK
KyAgICBleHBlY3RlZFswXS5wYXJhbWV0ZXJzLmFkZCgiZmxvdy1jb250cm9sIiwgU3RyaW5nKCkp
OworICAgIGV4cGVjdGVkWzFdLnRva2VuID0gImRlZmxhdGUtZnJhbWUiOworCisgICAgYWRkTW9j
a1Byb2Nlc3NvcigibXV4Iik7CisgICAgYWRkTW9ja1Byb2Nlc3NvcigiZGVmbGF0ZS1mcmFtZSIp
OworICAgIEVYUEVDVF9UUlVFKG1fZXh0ZW5zaW9ucy5wcm9jZXNzSGVhZGVyVmFsdWUoIm11eCA7
ICBtYXgtY2hhbm5lbHMgPTQ7Zmxvdy1jb250cm9sLCBkZWZsYXRlLWZyYW1lICAiKSk7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplb2YoZXhwZWN0ZWQpIC8gc2l6ZW9mKGV4cGVjdGVk
WzBdKTsgKytpKSB7CisgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZFtpXS50b2tlbiwgbV9wYXJz
ZWRFeHRlbnNpb25Ub2tlbnNbaV0pOworICAgICAgICBjb25zdCBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiYgZXhwZWN0ZWRQYXJhbWV0ZXJzID0gZXhwZWN0ZWRbaV0ucGFyYW1ldGVyczsKKyAgICAg
ICAgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIHBhcnNlZFBhcmFtZXRlcnMgPSBtX3Bh
cnNlZFBhcmFtZXRlcnNbaV07CisgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZFtpXS5wYXJhbWV0
ZXJzLnNpemUoKSwgbV9wYXJzZWRQYXJhbWV0ZXJzW2ldLnNpemUoKSk7CisgICAgICAgIGZvciAo
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ZXJhdG9yID0gZXhwZWN0
ZWRQYXJhbWV0ZXJzLmJlZ2luKCk7IGl0ZXJhdG9yICE9IGV4cGVjdGVkUGFyYW1ldGVycy5lbmQo
KTsgKytpdGVyYXRvcikgeworICAgICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNv
bnN0X2l0ZXJhdG9yIHBhcnNlZCA9IHBhcnNlZFBhcmFtZXRlcnMuZmluZChpdGVyYXRvci0+Zmly
c3QpOworICAgICAgICAgICAgRVhQRUNUX1RSVUUocGFyc2VkICE9IHBhcnNlZFBhcmFtZXRlcnMu
ZW5kKCkpOworICAgICAgICAgICAgaWYgKGl0ZXJhdG9yLT5zZWNvbmQuaXNOdWxsKCkpCisgICAg
ICAgICAgICAgICAgRVhQRUNUX1RSVUUocGFyc2VkLT5zZWNvbmQuaXNOdWxsKCkpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIEVYUEVDVF9FUShpdGVyYXRvci0+c2Vjb25kLCBw
YXJzZWQtPnNlY29uZCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK1RFU1RfRihXZWJTb2NrZXRF
eHRlbnNpb25EaXNwYXRjaGVyVGVzdCwgVGVzdFF1b3RlZFN0cmluZykKK3sKKyAgICBhZGRNb2Nr
UHJvY2Vzc29yKCJ4LWZvbyIpOworICAgIEVYUEVDVF9UUlVFKG1fZXh0ZW5zaW9ucy5wcm9jZXNz
SGVhZGVyVmFsdWUoIngtZm9vOyBwYXJhbTE9XCJxdW90ZWQgc3RyaW5nXCI7IHBhcmFtMj1cIlxc
XCJxdW90ZWRcXFwiIHN0cmluZ1xcXFxcIiIpKTsKKyAgICBFWFBFQ1RfRVEoMiwgbV9wYXJzZWRQ
YXJhbWV0ZXJzWzBdLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKCJxdW90ZWQgc3RyaW5nIiwgbV9w
YXJzZWRQYXJhbWV0ZXJzWzBdLmdldCgicGFyYW0xIikpOworICAgIEVYUEVDVF9FUSgiXCJxdW90
ZWRcIiBzdHJpbmdcXCIsIG1fcGFyc2VkUGFyYW1ldGVyc1swXS5nZXQoInBhcmFtMiIpKTsKK30K
KworVEVTVF9GKFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXJUZXN0LCBUZXN0SW52YWxpZCkK
K3sKKyAgICBjb25zdCBjaGFyKiBpbnB1dHNbXSA9IHsKKyAgICAgICAgIlwieC1mb29cIiIsCisg
ICAgICAgICJ4LWJheiIsCisgICAgICAgICJ4LWZvb1xcIiwKKyAgICAgICAgIngtKGZvbykiLAor
ICAgICAgICAieC1mb287ICIsCisgICAgICAgICJ4LWZvbzsgYmFyPSIsCisgICAgICAgICJ4LWZv
bzsgYmFyPXggeSIsCisgICAgICAgICJ4LWZvbzsgYmFyPVwibWlzbWF0Y2ggcXVvdGUiLAorICAg
ICAgICAieC1mb287IGJhcj1cIlxcXCIiLAorICAgICAgICAieC1mb287IFwiYmFyXCI9YmF6IiwK
KyAgICAgICAgIngtZm9vIHgtYmFyIiwKKyAgICAgICAgIngtZm9vLCB4LWJheiIKKyAgICAgICAg
IngtZm9vLCAiLAorICAgIH07CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplb2YoaW5w
dXRzKSAvIHNpemVvZihpbnB1dHNbMF0pOyArK2kpIHsKKyAgICAgICAgbV9leHRlbnNpb25zLnJl
c2V0KCk7CisgICAgICAgIGFkZE1vY2tQcm9jZXNzb3IoIngtZm9vIik7CisgICAgICAgIGFkZE1v
Y2tQcm9jZXNzb3IoIngtYmFyIik7CisgICAgICAgIEVYUEVDVF9GQUxTRShtX2V4dGVuc2lvbnMu
cHJvY2Vzc0hlYWRlclZhbHVlKGlucHV0c1tpXSkpOworICAgIH0KK30KKworfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDE1
YjYwYWIzMWYzMWMwMDMyNGUyM2M0YzFjNTNiNTZhOTdmODEzYzUuLjhmYTUyYmNlNjg2YTUzZmIz
NGQ1Yzc0YWQyNjZiMWM4NmY2MjQzMmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wMi0w
OSAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRk
IFdlYlNvY2tldCBleHRlbnNpb24gc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgwNzkKKworICAgICAgICBOZWVkIGEgc2hvcnQgZGVzY3Jp
cHRpb24gYW5kIGJ1ZyBVUkwgKE9PUFMhKQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9oYW5k
c2hha2UtZmFpbC1ieS1leHRlbnNpb25zLWhlYWRlci1leHBlY3RlZC50eHQ6IFJlYmFzZWxpbmVk
LgorCiAyMDEyLTAyLTA4ICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1leHRl
bnNpb25zLWhlYWRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LWV4dGVuc2lvbnMtaGVhZGVyLWV4cGVj
dGVkLnR4dAppbmRleCBiMTQ2OTdjOWRiYzhhNzY5MDFkYzU4NWRlMTNlNGJjNTk0OTE1MDFiLi5h
ZGYwNmI2NTFkNmI0NzE1YjRhMWI5N2M4N2M5NjAyMzNhYWUxZmEwIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5
LWV4dGVuc2lvbnMtaGVhZGVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LWV4dGVuc2lvbnMtaGVh
ZGVyLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKLUNPTlNPTEUgTUVTU0FHRTogRXJyb3Ig
ZHVyaW5nIFdlYlNvY2tldCBoYW5kc2hha2U6IFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFk
ZXIgaXMgaW52YWxpZAorQ09OU09MRSBNRVNTQUdFOiBSZWNlaXZlZCB1bmV4cGVjdGVkIFNlYy1X
ZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIKIFRlc3Qgd2hldGhlciBXZWJTb2NrZXQgaGFuZHNo
YWtlIGZhaWxzIGlmIHRoZSBzZXJ2ZXIgc2VuZHMgU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhl
YWRlci4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126264</attachid>
            <date>2012-02-09 02:45:38 -0800</date>
            <delta_ts>2012-02-09 15:40:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78079-20120209194535.patch</filename>
            <type>text/plain</type>
            <size>45464</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3MTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRiMTBlMzY1YzkyMjE4
YzJlNTQ0ZTQyOTdmOTI4ODhlNTI2MzVjMi4uOTg4MzVhYmE5ZGJhMGExNjVlMTFmYjkxNDZmMzhm
NzdiZDUxOGNjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDEyLTAyLTA5ICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgV2ViU29j
a2V0IGV4dGVuc2lvbiBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03ODA3OQorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBXZWJT
b2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyIGNsYXNzLCB3aGljaCBjcmVhdGVzIGNsaWVudCdzCisg
ICAgICAgIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIgZmllbGQgYW5kIHBhcnNlcyB0
aGUgc2VydmVyIHJlc3BvbnNlLgorICAgICAgICBUaGlzIHBhdGNoIGRvZXNuJ3QgYWRkIGFueSBh
Y3R1YWwgZXh0ZW5zaW9uLCBzbyBubyBjaGFuZ2VzIGluIGJlaGF2aW9yLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBleGNlcHQg
Zm9yIGNocm9taXVtIHBvcnQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkZWQgV2Vi
U29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci4oY3BwfGgpIGFuZCBXZWJTb2NrZXRFeHRlbnNpb25Q
cm9jZXNzb3IuaC4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBEaXR0by4KKyAgICAg
ICAgKiBUYXJnZXQucHJpOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6IERpdHRvLgor
ICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOiBEaXR0by4KKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorICAgICAgICAqIHdl
YnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChFeHRlbnNpb25QYXJzZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uUGFyc2VyOjpFeHRlbnNpb25QYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uUGFyc2VyOjpjdXJyZW50VG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uUGFyc2VyOjpmaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25QYXJzZXI6
OnBhcnNlZFN1Y2Nlc3NmdWxseSk6CisgICAgICAgIChXZWJDb3JlOjppc1Rva2VuQ2hhcmFjdGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OmlzU2VwYXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvblBhcnNlcjo6c2tpcFNwYWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25Q
YXJzZXI6OmNvbnN1bWVUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25QYXJzZXI6
OmNvbnN1bWVRdW90ZWRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uUGFyc2Vy
Ojpjb25zdW1lUXVvdGVkU3RyaW5nT3JUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25QYXJzZXI6OmNvbnN1bWVDaGFyYWN0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
RXh0ZW5zaW9uRGlzcGF0Y2hlcjo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
RXh0ZW5zaW9uRGlzcGF0Y2hlcjo6YWRkUHJvY2Vzc29yKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXI6OmNyZWF0ZUhlYWRlclZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXI6OnByb2Nlc3NIZWFkZXJWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyOjpmYWls
dXJlUmVhc29uKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3Bh
dGNoZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYlNvY2tldEV4
dGVuc2lvbkRpc3BhdGNoZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9u
RGlzcGF0Y2hlcjo6V2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlcik6CisgICAgICAgICogd2Vi
c29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I6On5XZWJTb2NrZXRFeHRlbnNp
b25Qcm9jZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vz
c29yOjpleHRlbnNpb25Ub2tlbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNp
b25Qcm9jZXNzb3I6OmZhaWx1cmVSZWFzb24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
RXh0ZW5zaW9uUHJvY2Vzc29yOjpXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IpOgorICAgICAg
ICAqIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldEhhbmRzaGFrZTo6Y2xpZW50SGFuZHNoYWtlTWVzc2FnZSk6IEFkZHMgZXh0ZW5z
aW9uIGhlYWRlciB2YWx1ZSBpZiBleGlzdHMuCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRI
YW5kc2hha2U6OmNsaWVudEhhbmRzaGFrZVJlcXVlc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldEhhbmRzaGFrZTo6cmVzZXQpOiBSZXNldHMgV2ViU29ja2V0RXh0ZW5zaW9u
RGlzcGF0Y2hlciBvYmplY3QuCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6
OnNlcnZlckhhbmRzaGFrZVJlc3BvbnNlKTogUmVtb3ZlZC4KKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldEhhbmRzaGFrZTo6YWRkRXh0ZW5zaW9uUHJvY2Vzc29yKTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRIVFRQSGVhZGVycyk6IFBhcnNlcyBh
bmQgY2hlY2tzIGV2ZXJ5IHRpbWUgU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlciBhcHBl
YXJzLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpjaGVja1Jlc3BvbnNl
SGVhZGVycyk6IFJlbW92ZWQgdGhlIGNoZWNrIG9mIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucy4K
KyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oOiBSZW1vdmVkIHNlcnZl
ckhhbmRzaGFrZVJlc3BvbnNlKCkuCisKIDIwMTItMDItMDggIEtlbnRhcm8gSGFyYSAgPGhhcmFr
ZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSBbQ3VzdG9tSGVhZGVyXSBmcm9tIENh
bnZhc1BpeGVsQXJyYXkgYW5kIHJlbmFtZSBbQ3VzdG9tSGVhZGVyXSB0byBbSlNDdXN0b21IZWFk
ZXJdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGFjZWRiYWQ0ZjBlZGRhN2ZjZWY3NDE2
MDVkMDA1OGIzZWY4ZmIwYmYuLjMyODlhMjJkYzFjMDBiM2U0ODNiOGM3Nzk1OGMxZDQwZjIwMWZi
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTItMDIt
MDkgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFk
ZCBXZWJTb2NrZXQgZXh0ZW5zaW9uIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc4MDc5CisKKyAgICAgICAgQWRkIHNvbWUgdGVzdHMgd2hp
Y2ggY2hlY2sgV2ViU29ja2V0RXh0ZW5zaW9uczo6cHJvY2Vzc0hlYWRlclZhbHVlKCkKKyAgICAg
ICAgcGFyc2VzIHRoZSBnaXZlbiByZXNwb25zZSBjb3JyZWN0bHkuCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAg
KiB0ZXN0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyVGVzdC5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChNb2NrV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29y
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I6Ok1v
Y2tXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IpOgorICAgICAgICAoV2ViU29ja2V0RXh0ZW5z
aW9uRGlzcGF0Y2hlclRlc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9u
RGlzcGF0Y2hlclRlc3Q6OldlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXJUZXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXJUZXN0OjpTZXRVcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyVGVzdDo6VGVhckRv
d24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlclRlc3Q6
OmFkZE1vY2tQcm9jZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9u
RGlzcGF0Y2hlclRlc3Q6OmFwcGVuZFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrV2Vi
U29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yOjpwcm9jZXNzUmVzcG9uc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6VEVTVF9GKToKKwogMjAxMi0wMi0wOCAgU2hhd24gU2luZ2ggIDxzaGF3bnNpbmdoQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFJlbW92ZSBpbmNvcnJlY3QgZWFybHkg
ZXhpdCBpbiBDQ0RhbWFnZVRyYWNrZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMTEwZjg3YmM1
YmRkYjAxNDczNGNjYzExNzZhNDQ5ZmM0ZGVkNjc2My4uOTY3ZjA4ODU4YjAwOWNkNzVlNDA2MDE3
ZWI4YzRhNGI4MTMyNDQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIwMzgsNiArMjAzOCw3
IEBAIElGIChFTkFCTEVfV0VCX1NPQ0tFVFMpCiAgICAgICAgIHdlYnNvY2tldHMvVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcAogICAgICAgICB3ZWJzb2NrZXRzL1dl
YlNvY2tldC5jcHAKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorICAg
ICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwCiAgICAgICAg
IHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAogICAgICAgICB3ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0
SGFuZHNoYWtlUmVzcG9uc2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBh
ZDllMmY2MDgyNDhhNTQ2YWJhYzJhZjIwOWM2MDc5NDUzZmM4ZjA3Li4yYzk5ZjMzMDg5NTY5ZTBl
MWM4MzM2NTM2NDdiYWI3M2VmNWU5ZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
QEAgLTQzMDcsNiArNDMwNyw5IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuaCBcCisJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNw
YXRjaGVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNp
b25EaXNwYXRjaGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0
ZW5zaW9uUHJvY2Vzc29yLmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
SGFuZHNoYWtlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5k
c2hha2UuaCBcCiAJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VS
ZXF1ZXN0LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCBhZjFlYjU4ZGI4MzZjZDllZTJmYWY0YWJiZmFl
NDI0NmRkOWIzY2FjLi4wMmExMzU5MDUzMzU4NzE1YmQzMmZjMTFjMGE2ZGE3YWU4YTRhZTMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkKQEAgLTM2NTYsNiArMzY1Niw4IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJM
RV9XRUJfU09DS0VUUz0xKSB7CiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0LmggXAogICAg
ICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCBcCiAgICAgICAgIHdlYnNvY2tldHMv
V2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIFwKKyAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRF
eHRlbnNpb25EaXNwYXRjaGVyLmggXAorICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVu
c2lvblByb2Nlc3Nvci5oIFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2Uu
aCBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oIFwKICAg
ICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oIFwKQEAgLTM2NjQs
NiArMzY2Niw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XRUJfU09DS0VUUz0xKSB7CiAg
ICAgU09VUkNFUyArPSBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBcCiAgICAg
ICAgIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgXAorICAgICAgICB3ZWJzb2NrZXRz
L1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwIFwKICAgICAgICAgd2Vic29ja2V0cy9X
ZWJTb2NrZXRIYW5kc2hha2UuY3BwIFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5k
c2hha2VSZXF1ZXN0LmNwcCBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtl
UmVzcG9uc2UuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAzYWI5MzMxZDlhZTczOTE5NWExNTRh
YzdhOTY0Y2ZhMTIwYjc3OGE4Li5hYjUyYmI4MzYwMWFjZDA4NGY1Y2M5Zjk3NDAxZmU4NmVlZGIz
ZDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC00Nzg5LDYgKzQ3ODksOSBAQAogICAgICAgICAgICAg
J3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAnLAogICAgICAgICAgICAgJ3dlYnNvY2tl
dHMvV2ViU29ja2V0Q2hhbm5lbC5oJywKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tl
dENoYW5uZWxDbGllbnQuaCcsCisgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRl
bnNpb25EaXNwYXRjaGVyLmNwcCcsCisgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRF
eHRlbnNpb25EaXNwYXRjaGVyLmgnLAorICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0
RXh0ZW5zaW9uUHJvY2Vzc29yLmgnLAogICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0
SGFuZHNoYWtlLmNwcCcsCiAgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hh
a2UuaCcsCiAgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0
LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmlu
ZGV4IGZjNGEyMTgzYjA2YWJjMTE2NjcwNWFjZTdjODQ5ODAzZmJjOTI3YjUuLmM2Y2U4NmM5ZTMz
Y2YzNWFlNzNhN2Y2NmVmNmJkYmU2Mzc2MDkyMzggMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC03Mjg5OCw2ICs3Mjg5OCwxOCBAQAogCQkJCT4K
IAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFdl
YlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxG
aWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFdlYlNvY2tldEV4dGVuc2lvbkRp
c3BhdGNoZXIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5cd2Vic29ja2V0c1xXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCIKKwkJCQk+CisJ
CQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cd2Vic29ja2V0c1xXZWJT
b2NrZXRIYW5kc2hha2UuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5NjU0NGU1ZmQ1OTVj
YTgwODRiYjJiMjFmYWJhY2YzOThlNjcxNjg1Li43M2MxNTU3NWQ0OTljNGMwM2E2OGUwZjVkMDQy
YjU0OTdiZWFkMDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xMzY2LDYgKzEzNjYsOCBAQAogCQk0QTZFOUZDNzEzQzE3RDU3
MDA0NkE3RjggLyogRm9udEZlYXR1cmVTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTZFOUZDNTEzQzE3RDU3MDA0NkE3RjggLyogRm9u
dEZlYXR1cmVTZXR0aW5ncy5jcHAgKi87IH07CiAJCTRBNkU5RkM4MTNDMTdENTcwMDQ2QTdGOCAv
KiBGb250RmVhdHVyZVNldHRpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0QTZFOUZDNjEzQzE3RDU3MDA0NkE3RjggLyogRm9udEZlYXR1cmVTZXR0
aW5ncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTRBOEM5NkVCMEJFNjkwMzIwMDRFRUZGMCAvKiBGcmFtZVNlbGVjdGlvbk1hYy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBOEM5NkVBMEJFNjkwMzIw
MDRFRUZGMCAvKiBGcmFtZVNlbGVjdGlvbk1hYy5tbSAqLzsgfTsKKwkJNEE5NTdGMDYxNEUyNDEy
QTAwNDlEQkZCIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE5NTdGMDMxNEUyNDExMDAwNDlE
QkZCIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwICovOyB9OworCQk0QTk1N0Yw
NzE0RTI0MTMwMDA0OURCRkIgLyogV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE5NTdGMDQxNEUyNDEx
MDAwNDlEQkZCIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCAqLzsgfTsKIAkJNEFC
REZGMEIxNERCRTM4NTAwNEQxMTdEIC8qIEhUTUxTaGFkb3dFbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBQkRGRjA3MTREQkUzMTIwMDRE
MTE3RCAvKiBIVE1MU2hhZG93RWxlbWVudC5jcHAgKi87IH07CiAJCTRBQkRGRjBDMTREQkUzODUw
MDREMTE3RCAvKiBIVE1MU2hhZG93RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNEFCREZGMDgxNERCRTMxMjAwNEQxMTdEIC8qIEhUTUxTaGFk
b3dFbGVtZW50LmggKi87IH07CiAJCTRBQ0JDMEJFMTI3MTNDQkQwMDk0RjlCMiAvKiBDbGFzc0xp
c3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEFD
QkMwQkMxMjcxM0NCRDAwOTRGOUIyIC8qIENsYXNzTGlzdC5jcHAgKi87IH07CkBAIC0xMzc5LDYg
KzEzODEsNyBAQAogCQk0QUQwMTAwOTEyN0U2NDJBMDAxNTAzNUYgLyogSFRNTE91dHB1dEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBRDAx
MDA2MTI3RTY0MkEwMDE1MDM1RiAvKiBIVE1MT3V0cHV0RWxlbWVudC5oICovOyB9OwogCQk0QUQw
MTczQzEyN0U4Mjg2MDAxNTAzNUYgLyogSlNIVE1MT3V0cHV0RWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QUQwMTczQTEyN0U4Mjg2MDAx
NTAzNUYgLyogSlNIVE1MT3V0cHV0RWxlbWVudC5jcHAgKi87IH07CiAJCTRBRDAxNzNEMTI3RTgy
ODYwMDE1MDM1RiAvKiBKU0hUTUxPdXRwdXRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QUQwMTczQjEyN0U4Mjg2MDAxNTAzNUYgLyogSlNI
VE1MT3V0cHV0RWxlbWVudC5oICovOyB9OworCQk0QURFMjVGQTE0RTNCQjRDMDA0QzIyMTMgLyog
V2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0QURFMjVGOTE0RTNCQjRDMDA0QzIyMTMgLyogV2ViU29ja2V0
RXh0ZW5zaW9uUHJvY2Vzc29yLmggKi87IH07CiAJCTRBRjFBRDNFMTNGRDIzQTQwMEFBOTU5MCAv
KiBFdmVudERpc3BhdGNoTWVkaWF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNEFGMUFEM0MxM0ZEMjNBNDAwQUE5NTkwIC8qIEV2ZW50RGlzcGF0
Y2hNZWRpYXRvci5jcHAgKi87IH07CiAJCTRBRjFBRDNGMTNGRDIzQTQwMEFBOTU5MCAvKiBFdmVu
dERpc3BhdGNoTWVkaWF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDRBRjFBRDNEMTNGRDIzQTQwMEFBOTU5MCAvKiBFdmVudERpc3BhdGNoTWVkaWF0
b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
QjI3MDhDNzBBRjE5RUU0MDA2NTEyN0YgLyogUGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEIyNzA4QzUwQUYxOUVFNDAwNjUxMjdGIC8q
IFBhc3RlYm9hcmQuaCAqLzsgfTsKQEAgLTgyMDQsNiArODIwNyw4IEBACiAJCTRBNkU5RkM1MTND
MTdENTcwMDQ2QTdGOCAvKiBGb250RmVhdHVyZVNldHRpbmdzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRGZWF0dXJlU2V0dGluZ3MuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0QTZFOUZDNjEzQzE3RDU3MDA0NkE3RjggLyogRm9udEZlYXR1
cmVTZXR0aW5ncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgZmlsZUVuY29kaW5nID0gNDsgcGF0aCA9IEZvbnRGZWF0dXJl
U2V0dGluZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE4Qzk2RUEwQkU2OTAz
MjAwNEVFRkYwIC8qIEZyYW1lU2VsZWN0aW9uTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgbmFtZSA9IEZyYW1lU2VsZWN0aW9uTWFjLm1tOyBwYXRoID0gbWFjL0ZyYW1l
U2VsZWN0aW9uTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QTk1N0YwMzE0
RTI0MTEwMDA0OURCRkIgLyogV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRj
aGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEE5NTdGMDQxNEUyNDExMDAw
NDlEQkZCIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0QUJERkYwNzE0REJFMzEyMDA0RDExN0QgLyogSFRNTFNo
YWRvd0VsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRN
TFNoYWRvd0VsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QUJERkYw
ODE0REJFMzEyMDA0RDExN0QgLyogSFRNTFNoYWRvd0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSFRNTFNoYWRvd0VsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNEFCREZGMDkxNERCRTMxMjAwNEQxMTdEIC8qIEhUTUxTaGFkb3dFbGVtZW50
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MU2hhZG93RWxlbWVudC5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MjIwLDYgKzgyMjUsNyBAQAogCQk0QUQwMTAwNzEy
N0U2NDJBMDAxNTAzNUYgLyogSFRNTE91dHB1dEVsZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IEhUTUxPdXRwdXRFbGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNEFEMDE3M0ExMjdFODI4NjAwMTUwMzVGIC8qIEpTSFRNTE91dHB1dEVsZW1lbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MT3V0cHV0RWxlbWVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBRDAxNzNCMTI3RTgyODYwMDE1MDM1
RiAvKiBKU0hUTUxPdXRwdXRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTSFRNTE91dHB1dEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NEFERTI1RjkxNEUzQkI0QzAwNEMyMjEzIC8qIFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTb2NrZXRFeHRlbnNpb25Qcm9j
ZXNzb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEFGMUFEM0MxM0ZEMjNBNDAw
QUE5NTkwIC8qIEV2ZW50RGlzcGF0Y2hNZWRpYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBFdmVudERpc3BhdGNoTWVkaWF0b3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0QUYxQUQzRDEzRkQyM0E0MDBBQTk1OTAgLyogRXZlbnREaXNwYXRj
aE1lZGlhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV2ZW50RGlzcGF0
Y2hNZWRpYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QjI3MDhDNTBBRjE5
RUU0MDA2NTEyN0YgLyogUGFzdGVib2FyZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQYXN0ZWJvYXJkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDc0Niw2
ICsxNDc1Miw3IEBACiAJCTUxOEEzNEJEMTAyNkM4MzEwMDFCNjg5NiAvKiB3ZWJzb2NrZXRzICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0QURFMjVGOTE0
RTNCQjRDMDA0QzIyMTMgLyogV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmggKi8sCiAJCQkJ
NTFGQjU0RjQxMTNFMzY0MjAwODIxMTc2IC8qIENsb3NlRXZlbnQuaCAqLywKIAkJCQk1MUZCNTRG
NjExM0UzNjU5MDA4MjExNzYgLyogQ2xvc2VFdmVudC5pZGwgKi8sCiAJCQkJNTExMjI0NzExMENG
QjhDNjAwODA5OUQ3IC8qIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCAqLywKQEAgLTE0
NzU4LDYgKzE0NzY1LDggQEAKIAkJCQk1MTBENEE0NzEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29j
a2V0Q2hhbm5lbC5jcHAgKi8sCiAJCQkJNTEwRDRBNDgxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNv
Y2tldENoYW5uZWwuaCAqLywKIAkJCQk1MTBENEE0OTEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29j
a2V0Q2hhbm5lbENsaWVudC5oICovLAorCQkJCTRBOTU3RjAzMTRFMjQxMTAwMDQ5REJGQiAvKiBX
ZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcCAqLywKKwkJCQk0QTk1N0YwNDE0RTI0MTEw
MDA0OURCRkIgLyogV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5oICovLAogCQkJCTUxQUJB
RTQyMTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2UuY3BwICovLAogCQkJCTUx
QUJBRTQzMTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2UuaCAqLywKIAkJCQk3
NjM3QzU0MDExMkU3Qjc0MDAzRDZDREMgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAg
Ki8sCkBAIC0yNDE2Miw2ICsyNDE3MSw4IEBACiAJCQkJMUFBQURERTkxNERDOERGODAwQUY2NEIz
IC8qIFNjcm9sbGluZ1RyZWVOb2RlTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQkxMEZCMDg0QjE0
RTE1QzdFMDBBM0RCOTggLyogUHVibGljVVJMTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
N0E1NDg1ODAxNEUwMkQ1MTAwNkFFMDVBIC8qIEluc3BlY3Rvckhpc3RvcnkuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTRBOTU3RjA3MTRFMjQxMzAwMDQ5REJGQiAvKiBXZWJTb2NrZXRFeHRlbnNpb25E
aXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0QURFMjVGQTE0RTNCQjRDMDA0QzIyMTMg
LyogV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI3MTAw
LDYgKzI3MTExLDcgQEAKIAkJCQkxQUFBRERFODE0REM4REY4MDBBRjY0QjMgLyogU2Nyb2xsaW5n
VHJlZU5vZGVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QTU0ODU3RjE0RTAyRDUxMDA2QUUw
NUEgLyogSW5zcGVjdG9ySGlzdG9yeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREFBOEQwQTE0
RDcxQjJFMDA2MUVBNjAgLyogUGxhdGZvcm1DbG9ja0NNLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJ
NEE5NTdGMDYxNEUyNDEyQTAwNDlEQkZCIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kODUwOTJh
YTg3YmE2MmQ3NDJlMzllMjgxNmMyMDgyMmNjNDQ4MDEwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcApA
QCAtMCwwICsxLDI0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX1NP
Q0tFVFMpCisKKyNpbmNsdWRlICJXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmgiCisKKyNp
bmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nSGFzaC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEV4dGVuc2lvblBh
cnNlciB7CitwdWJsaWM6CisgICAgRXh0ZW5zaW9uUGFyc2VyKGNvbnN0IGNoYXIqIHN0YXJ0LCBj
b25zdCBjaGFyKiBlbmQpCisgICAgICAgIDogbV9jdXJyZW50KHN0YXJ0KQorICAgICAgICAsIG1f
ZW5kKGVuZCkKKyAgICB7CisgICAgfQorICAgIGJvb2wgZmluaXNoZWQoKTsKKyAgICBib29sIHBh
cnNlZFN1Y2Nlc3NmdWxseSgpOworICAgIGNvbnN0IFN0cmluZyYgY3VycmVudFRva2VuKCkgeyBy
ZXR1cm4gbV9jdXJyZW50VG9rZW47IH0KKworICAgIC8vIFRoZSBmb2xsb3dpbmcgbWVtYmVyIGZ1
bmN0aW9ucyBiYXNpY2FsbHkgZm9sbG93IHRoZSBncmFtbWVyIGRlZmluZWQKKyAgICAvLyBpbiBT
ZWN0aW9uIDIuMiBvZiBSRkMgMjYxNi4KKyAgICBib29sIGNvbnN1bWVUb2tlbigpOworICAgIGJv
b2wgY29uc3VtZVF1b3RlZFN0cmluZygpOworICAgIGJvb2wgY29uc3VtZVF1b3RlZFN0cmluZ09y
VG9rZW4oKTsKKyAgICBib29sIGNvbnN1bWVDaGFyYWN0ZXIoY2hhcik7CisKK3ByaXZhdGU6Cisg
ICAgdm9pZCBza2lwU3BhY2VzKCk7CisKKyAgICBjb25zdCBjaGFyKiBtX2N1cnJlbnQ7CisgICAg
Y29uc3QgY2hhciogbV9lbmQ7CisgICAgU3RyaW5nIG1fY3VycmVudFRva2VuOworfTsKKworYm9v
bCBFeHRlbnNpb25QYXJzZXI6OmZpbmlzaGVkKCkKK3sKKyAgICByZXR1cm4gbV9jdXJyZW50ID49
IG1fZW5kOworfQorCitib29sIEV4dGVuc2lvblBhcnNlcjo6cGFyc2VkU3VjY2Vzc2Z1bGx5KCkK
K3sKKyAgICByZXR1cm4gbV9jdXJyZW50ID09IG1fZW5kOworfQorCitzdGF0aWMgYm9vbCBpc1Nl
cGFyYXRvcihjaGFyIGNoYXJhY3RlcikKK3sKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc2VwYXJh
dG9yQ2hhcmFjdGVycyA9ICIoKTw+QCw7OlxcXCIvW10/PXt9IFx0IjsKKyAgICBjb25zdCBjaGFy
KiBwID0gc3RyY2hyKHNlcGFyYXRvckNoYXJhY3RlcnMsIGNoYXJhY3Rlcik7CisgICAgcmV0dXJu
IHAgJiYgKnA7Cit9CisKK3ZvaWQgRXh0ZW5zaW9uUGFyc2VyOjpza2lwU3BhY2VzKCkKK3sKKyAg
ICB3aGlsZSAobV9jdXJyZW50IDwgbV9lbmQgJiYgKCptX2N1cnJlbnQgPT0gJyAnIHx8ICptX2N1
cnJlbnQgPT0gJ1x0JykpCisgICAgICAgICsrbV9jdXJyZW50OworfQorCitib29sIEV4dGVuc2lv
blBhcnNlcjo6Y29uc3VtZVRva2VuKCkKK3sKKyAgICBza2lwU3BhY2VzKCk7CisgICAgY29uc3Qg
Y2hhciogc3RhcnQgPSBtX2N1cnJlbnQ7CisgICAgd2hpbGUgKG1fY3VycmVudCA8IG1fZW5kICYm
IGlzQVNDSUlQcmludGFibGUoKm1fY3VycmVudCkgJiYgIWlzU2VwYXJhdG9yKCptX2N1cnJlbnQp
KQorICAgICAgICArK21fY3VycmVudDsKKyAgICBpZiAoc3RhcnQgPCBtX2N1cnJlbnQpIHsKKyAg
ICAgICAgbV9jdXJyZW50VG9rZW4gPSBTdHJpbmcoc3RhcnQsIG1fY3VycmVudCAtIHN0YXJ0KTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBFeHRlbnNpb25QYXJzZXI6OmNvbnN1bWVRdW90ZWRTdHJpbmcoKQoreworICAgIHNraXBTcGFj
ZXMoKTsKKyAgICBpZiAobV9jdXJyZW50ID49IG1fZW5kIHx8ICptX2N1cnJlbnQgIT0gJyInKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyOworICAgICsr
bV9jdXJyZW50OworICAgIHdoaWxlIChtX2N1cnJlbnQgPCBtX2VuZCAmJiAqbV9jdXJyZW50ICE9
ICciJykgeworICAgICAgICBpZiAoKm1fY3VycmVudCA9PSAnXFwnICYmICsrbV9jdXJyZW50ID49
IG1fZW5kKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBidWZmZXIuYXBwZW5k
KCptX2N1cnJlbnQpOworICAgICAgICArK21fY3VycmVudDsKKyAgICB9CisgICAgaWYgKG1fY3Vy
cmVudCA+PSBtX2VuZCB8fCAqbV9jdXJyZW50ICE9ICciJykKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIG1fY3VycmVudFRva2VuID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXIuZGF0YSgpLCBi
dWZmZXIuc2l6ZSgpKTsKKyAgICArK21fY3VycmVudDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Ym9vbCBFeHRlbnNpb25QYXJzZXI6OmNvbnN1bWVRdW90ZWRTdHJpbmdPclRva2VuKCkKK3sKKyAg
ICAvLyBUaGlzIGlzIG9rIGJlY2F1c2UgY29uc3VtZVF1b3RlZFN0cmluZygpIGRvZXNuJ3QgdXBk
YXRlIG1fY3VycmVudCBvcgorICAgIC8vIG1ha2VzIGl0IHNhbWUgYXMgbV9lbmQgb24gZmFpbHVy
ZS4KKyAgICByZXR1cm4gY29uc3VtZVF1b3RlZFN0cmluZygpIHx8IGNvbnN1bWVUb2tlbigpOwor
fQorCitib29sIEV4dGVuc2lvblBhcnNlcjo6Y29uc3VtZUNoYXJhY3RlcihjaGFyIGNoYXJhY3Rl
cikKK3sKKyAgICBza2lwU3BhY2VzKCk7CisgICAgaWYgKG1fY3VycmVudCA8IG1fZW5kICYmICpt
X2N1cnJlbnQgPT0gY2hhcmFjdGVyKSB7CisgICAgICAgICsrbV9jdXJyZW50OworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFdlYlNvY2tl
dEV4dGVuc2lvbkRpc3BhdGNoZXI6OnJlc2V0KCkKK3sKKyAgICBtX3Byb2Nlc3NvcnMuY2xlYXIo
KTsKK30KKwordm9pZCBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyOjphZGRQcm9jZXNzb3Io
UGFzc093blB0cjxXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I+IHByb2Nlc3NvcikKK3sKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcHJvY2Vzc29ycy5zaXplKCk7ICsraSkgeworICAg
ICAgICBpZiAobV9wcm9jZXNzb3JzW2ldLT5leHRlbnNpb25Ub2tlbigpID09IHByb2Nlc3Nvci0+
ZXh0ZW5zaW9uVG9rZW4oKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJU
KHByb2Nlc3Nvci0+aGFuZHNoYWtlU3RyaW5nKCkubGVuZ3RoKCkpOworICAgIEFTU0VSVCghcHJv
Y2Vzc29yLT5oYW5kc2hha2VTdHJpbmcoKS5jb250YWlucygnXG4nKSk7CisgICAgQVNTRVJUKCFw
cm9jZXNzb3ItPmhhbmRzaGFrZVN0cmluZygpLmNvbnRhaW5zKHN0YXRpY19jYXN0PFVDaGFyPign
XDAnKSkpOworICAgIG1fcHJvY2Vzc29ycy5hcHBlbmQocHJvY2Vzc29yKTsKK30KKworY29uc3Qg
U3RyaW5nIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXI6OmNyZWF0ZUhlYWRlclZhbHVlKCkg
Y29uc3QKK3sKKyAgICBzaXplX3QgbnVtUHJvY2Vzc29ycyA9IG1fcHJvY2Vzc29ycy5zaXplKCk7
CisgICAgaWYgKCFudW1Qcm9jZXNzb3JzKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAg
ICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQobV9wcm9jZXNzb3Jz
WzBdLT5oYW5kc2hha2VTdHJpbmcoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBudW1Q
cm9jZXNzb3JzOyArK2kpIHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIiwgIik7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKG1fcHJvY2Vzc29yc1tpXS0+aGFuZHNoYWtlU3RyaW5nKCkpOworICAg
IH0KKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCitib29sIFdlYlNvY2tldEV4
dGVuc2lvbkRpc3BhdGNoZXI6OnByb2Nlc3NIZWFkZXJWYWx1ZShjb25zdCBTdHJpbmcmIGhlYWRl
clZhbHVlKQoreworICAgIGlmICghaGVhZGVyVmFsdWUubGVuZ3RoKCkpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgLy8gSWYgd2UgZG9uJ3Qgc2VuZCBTZWMtV2ViU29ja2V0LUV4dGVuc2lv
bnMgaGVhZGVyLCB0aGUgc2VydmVyIHNob3VsZCBub3QgcmV0dXJuIHRoZSBoZWFkZXIuCisgICAg
aWYgKCFtX3Byb2Nlc3NvcnMuc2l6ZSgpKSB7CisgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJS
ZWNlaXZlZCB1bmV4cGVjdGVkIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIiOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY29uc3QgQ1N0cmluZyBoZWFkZXJWYWx1
ZURhdGEgPSBoZWFkZXJWYWx1ZS51dGY4KCk7CisgICAgRXh0ZW5zaW9uUGFyc2VyIHBhcnNlciho
ZWFkZXJWYWx1ZURhdGEuZGF0YSgpLCBoZWFkZXJWYWx1ZURhdGEuZGF0YSgpICsgaGVhZGVyVmFs
dWVEYXRhLmxlbmd0aCgpKTsKKworICAgIHdoaWxlICghcGFyc2VyLmZpbmlzaGVkKCkpIHsKKyAg
ICAgICAgLy8gUGFyc2UgZXh0ZW5zaW9uLXRva2VuLgorICAgICAgICBpZiAoIXBhcnNlci5jb25z
dW1lVG9rZW4oKSkgeworICAgICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gIlNlYy1XZWJTb2Nr
ZXQtRXh0ZW5zaW9ucyBoZWFkZXIgaXMgaW52YWxpZCI7CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyAgICAgICAgU3RyaW5nIGV4dGVuc2lvblRva2VuID0gcGFyc2VyLmN1
cnJlbnRUb2tlbigpOworCisgICAgICAgIC8vIFBhcnNlIGV4dGVuc2lvbi1wYXJhbWV0ZXJzIGlm
IGV4aXN0cy4KKyAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gZXh0ZW5zaW9uUGFyYW1l
dGVyczsKKyAgICAgICAgd2hpbGUgKHBhcnNlci5jb25zdW1lQ2hhcmFjdGVyKCc7JykpIHsKKyAg
ICAgICAgICAgIGlmICghcGFyc2VyLmNvbnN1bWVUb2tlbigpKSB7CisgICAgICAgICAgICAgICAg
bV9mYWlsdXJlUmVhc29uID0gIlNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIgaXMgaW52
YWxpZCI7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBTdHJpbmcgcGFyYW1ldGVyVG9rZW4gPSBwYXJzZXIuY3VycmVudFRva2VuKCk7
CisgICAgICAgICAgICBpZiAocGFyc2VyLmNvbnN1bWVDaGFyYWN0ZXIoJz0nKSkgeworICAgICAg
ICAgICAgICAgIGlmIChwYXJzZXIuY29uc3VtZVF1b3RlZFN0cmluZ09yVG9rZW4oKSkKKyAgICAg
ICAgICAgICAgICAgICAgZXh0ZW5zaW9uUGFyYW1ldGVycy5hZGQocGFyYW1ldGVyVG9rZW4sIHBh
cnNlci5jdXJyZW50VG9rZW4oKSk7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgaGVh
ZGVyIGlzIGludmFsaWQiOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgZXh0ZW5z
aW9uUGFyYW1ldGVycy5hZGQocGFyYW1ldGVyVG9rZW4sIFN0cmluZygpKTsKKyAgICAgICAgfQor
ICAgICAgICBpZiAoIXBhcnNlci5maW5pc2hlZCgpICYmICFwYXJzZXIuY29uc3VtZUNoYXJhY3Rl
cignLCcpKSB7CisgICAgICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiU2VjLVdlYlNvY2tldC1F
eHRlbnNpb25zIGhlYWRlciBpcyBpbnZhbGlkIjsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorCisgICAgICAgIHNpemVfdCBpbmRleDsKKyAgICAgICAgZm9yIChpbmRleCA9
IDA7IGluZGV4IDwgbV9wcm9jZXNzb3JzLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICAgICAg
V2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yKiBwcm9jZXNzb3IgPSBtX3Byb2Nlc3NvcnNbaW5k
ZXhdLmdldCgpOworICAgICAgICAgICAgaWYgKGV4dGVuc2lvblRva2VuID09IHByb2Nlc3Nvci0+
ZXh0ZW5zaW9uVG9rZW4oKSkgeworICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzb3ItPnByb2Nl
c3NSZXNwb25zZShleHRlbnNpb25QYXJhbWV0ZXJzKSkKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gcHJvY2Vzc29yLT5mYWlsdXJl
UmVhc29uKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIC8vIFRoZXJlIGlzIG5vIGV4dGVuc2lvbiB3aGljaCBjYW4gcHJv
Y2VzcyB0aGUgcmVzcG9uc2UuCisgICAgICAgIGlmIChpbmRleCA9PSBtX3Byb2Nlc3NvcnMuc2l6
ZSgpKSB7CisgICAgICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiUmVjZWl2ZWQgdW5leHBlY3Rl
ZCBleHRlbnNpb246ICIgKyBleHRlbnNpb25Ub2tlbjsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcGFyc2VyLnBhcnNlZFN1Y2Nlc3NmdWxs
eSgpOworfQorCitTdHJpbmcgV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlcjo6ZmFpbHVyZVJl
YXNvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZmFpbHVyZVJlYXNvbjsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRj
aGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3Bh
dGNoZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mODgyYmI5ZDA4MmE0NmM3ZWVmNjI3ODhhZmU2ZDI0NTQyZTA2
YjYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRFeHRlbnNpb25EaXNwYXRjaGVyLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNvY2tl
dEV4dGVuc2lvbkRpc3BhdGNoZXJfaAorI2RlZmluZSBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRj
aGVyX2gKKworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKworI2luY2x1ZGUgIldlYlNvY2tldEV4
dGVuc2lvblByb2Nlc3Nvci5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXZWJTb2Nr
ZXRFeHRlbnNpb25EaXNwYXRjaGVyIHsKK3B1YmxpYzoKKyAgICBXZWJTb2NrZXRFeHRlbnNpb25E
aXNwYXRjaGVyKCkgeyB9CisKKyAgICB2b2lkIHJlc2V0KCk7CisgICAgdm9pZCBhZGRQcm9jZXNz
b3IoUGFzc093blB0cjxXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I+KTsKKyAgICBjb25zdCBT
dHJpbmcgY3JlYXRlSGVhZGVyVmFsdWUoKSBjb25zdDsKKworICAgIGJvb2wgcHJvY2Vzc0hlYWRl
clZhbHVlKGNvbnN0IFN0cmluZyYpOworICAgIFN0cmluZyBmYWlsdXJlUmVhc29uKCkgY29uc3Q7
CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPE93blB0cjxXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNz
b3I+ID4gbV9wcm9jZXNzb3JzOworICAgIFN0cmluZyBtX2ZhaWx1cmVSZWFzb247Cit9OworCit9
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNlbmRpZiAvLyBXZWJTb2NrZXRF
eHRlbnNpb25EaXNwYXRjaGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlM2Q1M2Q0MWM1
NTM2ZTA2YzdkNjM1ODE0MGQ2YzNkMTZjYjE2NzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvci5oCkBAIC0wLDAg
KzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3JfaAorI2RlZmluZSBX
ZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3JfaAorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQor
CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXZWJTb2NrZXRFeHRlbnNpb25Qcm9j
ZXNzb3IgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nv
cigpIHsgfQorCisgICAgU3RyaW5nIGV4dGVuc2lvblRva2VuKCkgY29uc3QgeyByZXR1cm4gbV9l
eHRlbnNpb25Ub2tlbjsgfQorCisgICAgLy8gVGhlIHJldHVybiB2YWx1ZSBvZiB0aGlzIG1ldGhv
ZCB3aWxsIGJlIGEgcGFydCBvZiB0aGUgdmFsdWUgb2YKKyAgICAvLyBTZWMtV2ViU29ja2V0LUV4
dGVuc2lvbnMuCisgICAgdmlydHVhbCBTdHJpbmcgaGFuZHNoYWtlU3RyaW5nKCkgPSAwOworCisg
ICAgLy8gVGhpcyBzaG91bGQgdmFsaWRhdGUgdGhlIHNlcnZlcidzIHJlc3BvbnNlIHBhcmFtZXRl
cnMgd2hpY2ggYXJlIHBhc3NlZAorICAgIC8vIGFzIEhhc2hNYXA8a2V5LCB2YWx1ZT4uIFRoaXMg
bWF5IGFsc28gZG8gc29tZXRoaW5nIGZvciB0aGUgZXh0ZW5zaW9uLgorICAgIC8vIE5vdGUgdGhh
dCB0aGlzIG1ldGhvZCBtYXkgYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmNlIHdoZW4gdGhlIHNlcnZl
cgorICAgIC8vIHJlc3BvbnNlIGNvbnRhaW5zIGR1cGxpY2F0ZSBleHRlbnNpb24gdG9rZW4gdGhh
dCBtYXRjaGVzIGV4dGVuc2lvblRva2VuKCkuCisgICAgdmlydHVhbCBib29sIHByb2Nlc3NSZXNw
b25zZShjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYpID0gMDsKKworICAgIC8vIElmIHBy
b2NlY3NzUmVzcG9uc2UoKSByZXR1cm5zIGZhbHNlLCB0aGlzIHNob3VsZCBwcm92aWRlIHRoZSBy
ZWFzb24uCisgICAgdmlydHVhbCBTdHJpbmcgZmFpbHVyZVJlYXNvbigpIHsgcmV0dXJuICJFeHRl
bnNpb24gIiArIG1fZXh0ZW5zaW9uVG9rZW4gKyAiIGZhaWxlZCI7IH0KKworcHJvdGVjdGVkOgor
ICAgIFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvcihjb25zdCBTdHJpbmcmIGV4dGVuc2lvblRv
a2VuKQorICAgICAgICA6IG1fZXh0ZW5zaW9uVG9rZW4oZXh0ZW5zaW9uVG9rZW4pCisgICAgewor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBTdHJpbmcgbV9leHRlbnNpb25Ub2tlbjsKK307CisKK30K
KworI2VuZGlmIC8vIEVOQUJMRShXRUJfU09DS0VUUykKKworI2VuZGlmIC8vIFdlYlNvY2tldEV4
dGVuc2lvblByb2Nlc3Nvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldEhhbmRzaGFrZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldEhhbmRzaGFrZS5jcHAKaW5kZXggODkwOWVmYWYxODQ0ZjFmYWNhZGI3ZjFiNWUyMTMyZDJi
YmRkZThlZi4uYjI2MTU1NzM4NGZjNThjZWNiM2Q0Y2M3OGRmNjZjYjViZjhmMmJmZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcApAQCAt
Mjg3LDYgKzI4Nyw5IEBAIENTdHJpbmcgV2ViU29ja2V0SGFuZHNoYWtlOjpjbGllbnRIYW5kc2hh
a2VNZXNzYWdlKCkgY29uc3QKICAgICB9IGVsc2UgewogICAgICAgICBmaWVsZHMuYXBwZW5kKCJT
ZWMtV2ViU29ja2V0LUtleTogIiArIG1fc2VjV2ViU29ja2V0S2V5KTsKICAgICAgICAgZmllbGRz
LmFwcGVuZCgiU2VjLVdlYlNvY2tldC1WZXJzaW9uOiAxMyIpOworICAgICAgICBjb25zdCBTdHJp
bmcgZXh0ZW5zaW9uVmFsdWUgPSBtX2V4dGVuc2lvbkRpc3BhdGNoZXIuY3JlYXRlSGVhZGVyVmFs
dWUoKTsKKyAgICAgICAgaWYgKGV4dGVuc2lvblZhbHVlLmxlbmd0aCgpKQorICAgICAgICAgICAg
ZmllbGRzLmFwcGVuZCgiU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zOiAiICsgZXh0ZW5zaW9uVmFs
dWUpOwogICAgIH0KIAogICAgIC8vIEZpZWxkcyBpbiB0aGUgaGFuZHNoYWtlIGFyZSBzZW50IGJ5
IHRoZSBjbGllbnQgaW4gYSByYW5kb20gb3JkZXI7IHRoZQpAQCAtMzQ0LDYgKzM0Nyw5IEBAIFdl
YlNvY2tldEhhbmRzaGFrZVJlcXVlc3QgV2ViU29ja2V0SGFuZHNoYWtlOjpjbGllbnRIYW5kc2hh
a2VSZXF1ZXN0KCkgY29uc3QKICAgICB9IGVsc2UgewogICAgICAgICByZXF1ZXN0LmFkZEhlYWRl
ckZpZWxkKCJTZWMtV2ViU29ja2V0LUtleSIsIG1fc2VjV2ViU29ja2V0S2V5KTsKICAgICAgICAg
cmVxdWVzdC5hZGRIZWFkZXJGaWVsZCgiU2VjLVdlYlNvY2tldC1WZXJzaW9uIiwgIjEzIik7Cisg
ICAgICAgIGNvbnN0IFN0cmluZyBleHRlbnNpb25WYWx1ZSA9IG1fZXh0ZW5zaW9uRGlzcGF0Y2hl
ci5jcmVhdGVIZWFkZXJWYWx1ZSgpOworICAgICAgICBpZiAoZXh0ZW5zaW9uVmFsdWUubGVuZ3Ro
KCkpCisgICAgICAgICAgICByZXF1ZXN0LmFkZEhlYWRlckZpZWxkKCJTZWMtV2ViU29ja2V0LUV4
dGVuc2lvbnMiLCBleHRlbnNpb25WYWx1ZSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHJlcXVlc3Q7
CkBAIC0zNTIsNiArMzU4LDcgQEAgV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdCBXZWJTb2NrZXRI
YW5kc2hha2U6OmNsaWVudEhhbmRzaGFrZVJlcXVlc3QoKSBjb25zdAogdm9pZCBXZWJTb2NrZXRI
YW5kc2hha2U6OnJlc2V0KCkKIHsKICAgICBtX21vZGUgPSBJbmNvbXBsZXRlOworICAgIG1fZXh0
ZW5zaW9uRGlzcGF0Y2hlci5yZXNldCgpOwogfQogCiB2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6
Y2xlYXJTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkKQEAgLTQ2OSwxNCArNDc2LDE0IEBAIFN0cmlu
ZyBXZWJTb2NrZXRIYW5kc2hha2U6OnNlcnZlcldlYlNvY2tldEFjY2VwdCgpIGNvbnN0CiAgICAg
cmV0dXJuIG1fcmVzcG9uc2UuaGVhZGVyRmllbGRzKCkuZ2V0KCJzZWMtd2Vic29ja2V0LWFjY2Vw
dCIpOwogfQogCi1TdHJpbmcgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXJ2ZXJXZWJTb2NrZXRFeHRl
bnNpb25zKCkgY29uc3QKK2NvbnN0IFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlJiBXZWJTb2Nr
ZXRIYW5kc2hha2U6OnNlcnZlckhhbmRzaGFrZVJlc3BvbnNlKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbV9yZXNwb25zZS5oZWFkZXJGaWVsZHMoKS5nZXQoInNlYy13ZWJzb2NrZXQtZXh0ZW5zaW9u
cyIpOworICAgIHJldHVybiBtX3Jlc3BvbnNlOwogfQogCi1jb25zdCBXZWJTb2NrZXRIYW5kc2hh
a2VSZXNwb25zZSYgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXJ2ZXJIYW5kc2hha2VSZXNwb25zZSgp
IGNvbnN0Cit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6YWRkRXh0ZW5zaW9uUHJvY2Vzc29yKFBh
c3NPd25QdHI8V2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yPiBwcm9jZXNzb3IpCiB7Ci0gICAg
cmV0dXJuIG1fcmVzcG9uc2U7CisgICAgbV9leHRlbnNpb25EaXNwYXRjaGVyLmFkZFByb2Nlc3Nv
cihwcm9jZXNzb3IpOwogfQogCiBLVVJMIFdlYlNvY2tldEhhbmRzaGFrZTo6aHR0cFVSTEZvckF1
dGhlbnRpY2F0aW9uQW5kQ29va2llcygpIGNvbnN0CkBAIC02MjUsNyArNjMyLDE1IEBAIGNvbnN0
IGNoYXIqIFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZEhUVFBIZWFkZXJzKGNvbnN0IGNoYXIqIHN0
YXJ0LCBjb25zdCBjaGFyKiBlCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAg
ICAgICBMT0coTmV0d29yaywgIm5hbWU9JXMgdmFsdWU9JXMiLCBuYW1lU3RyLnN0cmluZygpLnV0
ZjgoKS5kYXRhKCksIHZhbHVlU3RyLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBtX3Jlc3BvbnNl
LmFkZEhlYWRlckZpZWxkKG5hbWVTdHIsIHZhbHVlU3RyKTsKKyAgICAgICAgLy8gU2VjLVdlYlNv
Y2tldC1FeHRlbnNpb25zIG1heSBiZSBzcGxpdC4gV2UgcGFyc2UgYW5kIGNoZWNrIHRoZQorICAg
ICAgICAvLyBoZWFkZXIgdmFsdWUgZXZlcnkgdGltZSB0aGUgaGVhZGVyIGFwcGVhcnMuCisgICAg
ICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSgic2VjLXdlYnNvY2tldC1leHRlbnNpb25zIiwgbmFt
ZVN0cikpIHsKKyAgICAgICAgICAgIGlmICghbV9leHRlbnNpb25EaXNwYXRjaGVyLnByb2Nlc3NI
ZWFkZXJWYWx1ZSh2YWx1ZVN0cikpIHsKKyAgICAgICAgICAgICAgICBtX2ZhaWx1cmVSZWFzb24g
PSBtX2V4dGVuc2lvbkRpc3BhdGNoZXIuZmFpbHVyZVJlYXNvbigpOworICAgICAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1f
cmVzcG9uc2UuYWRkSGVhZGVyRmllbGQobmFtZVN0ciwgdmFsdWVTdHIpOwogICAgIH0KICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gMDsKQEAgLTYzOSw3ICs2NTQsNiBAQCBi
b29sIFdlYlNvY2tldEhhbmRzaGFrZTo6Y2hlY2tSZXNwb25zZUhlYWRlcnMoKQogICAgIGNvbnN0
IFN0cmluZyYgc2VydmVyVXBncmFkZSA9IHRoaXMtPnNlcnZlclVwZ3JhZGUoKTsKICAgICBjb25z
dCBTdHJpbmcmIHNlcnZlckNvbm5lY3Rpb24gPSB0aGlzLT5zZXJ2ZXJDb25uZWN0aW9uKCk7CiAg
ICAgY29uc3QgU3RyaW5nJiBzZXJ2ZXJXZWJTb2NrZXRBY2NlcHQgPSB0aGlzLT5zZXJ2ZXJXZWJT
b2NrZXRBY2NlcHQoKTsKLSAgICBjb25zdCBTdHJpbmcmIHNlcnZlcldlYlNvY2tldEV4dGVuc2lv
bnMgPSB0aGlzLT5zZXJ2ZXJXZWJTb2NrZXRFeHRlbnNpb25zKCk7CiAKICAgICBpZiAoc2VydmVy
VXBncmFkZS5pc051bGwoKSkgewogICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiRXJyb3IgZHVy
aW5nIFdlYlNvY2tldCBoYW5kc2hha2U6ICdVcGdyYWRlJyBoZWFkZXIgaXMgbWlzc2luZyI7CkBA
IC02OTIsMTMgKzcwNiw2IEBAIGJvb2wgV2ViU29ja2V0SGFuZHNoYWtlOjpjaGVja1Jlc3BvbnNl
SGVhZGVycygpCiAgICAgICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiRXJyb3IgZHVyaW5nIFdl
YlNvY2tldCBoYW5kc2hha2U6IFNlYy1XZWJTb2NrZXQtQWNjZXB0IG1pc21hdGNoIjsKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAgICAgICBpZiAoIXNlcnZlcldlYlNv
Y2tldEV4dGVuc2lvbnMuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIC8vIFdlYlNvY2tldCBwcm90
b2NvbCBleHRlbnNpb25zIGFyZSBub3Qgc3VwcG9ydGVkIHlldC4KLSAgICAgICAgICAgIC8vIFdl
IGRvIG5vdCBzZW5kIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIgaW4gb3VyIHJlcXVl
c3QsIHRodXMKLSAgICAgICAgICAgIC8vIHNlcnZlcnMgc2hvdWxkIG5vdCByZXR1cm4gdGhpcyBo
ZWFkZXIsIGVpdGhlci4KLSAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJFcnJvciBkdXJp
bmcgV2ViU29ja2V0IGhhbmRzaGFrZTogU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlciBp
cyBpbnZhbGlkIjsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQogICAgIH0K
ICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0SGFuZHNoYWtlLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldEhhbmRzaGFrZS5oCmluZGV4IDEyYzE4NDAxOWMyY2FjNjdkYTlmZjM0OTJjNDdiOWI3MDJh
Y2VhYjcuLjk3NzdmYjk0ZGFlNWJiZjcyY2Y1ZDY5NWU4Y2ZhMGUwOWE5MTU4NGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaApAQCAtMzUsOCAr
MzUsMTEgQEAKIAogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5o
IgorI2luY2x1ZGUgIldlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCIKKyNpbmNsdWRlICJX
ZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hh
a2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCIKKyNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTgx
LDEwICs4NCwxMSBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHNlcnZlclVwZ3JhZGUoKSBjb25zdDsK
ICAgICBTdHJpbmcgc2VydmVyQ29ubmVjdGlvbigpIGNvbnN0OwogICAgIFN0cmluZyBzZXJ2ZXJX
ZWJTb2NrZXRBY2NlcHQoKSBjb25zdDsgLy8gT25seSBmb3IgaHliaS0xMCBoYW5kc2hha2UuCi0g
ICAgU3RyaW5nIHNlcnZlcldlYlNvY2tldEV4dGVuc2lvbnMoKSBjb25zdDsgLy8gT25seSBmb3Ig
aHliaS0xMCBoYW5kc2hha2UuCiAKICAgICBjb25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25z
ZSYgc2VydmVySGFuZHNoYWtlUmVzcG9uc2UoKSBjb25zdDsKIAorICAgIHZvaWQgYWRkRXh0ZW5z
aW9uUHJvY2Vzc29yKFBhc3NPd25QdHI8V2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yPik7CisK
IHByaXZhdGU6CiAgICAgS1VSTCBodHRwVVJMRm9yQXV0aGVudGljYXRpb25BbmRDb29raWVzKCkg
Y29uc3Q7CiAKQEAgLTExNiw2ICsxMjAsOCBAQCBwcml2YXRlOgogICAgIC8vIEZvciBoeWJpLTEw
IGhhbmRzaGFrZS4KICAgICBTdHJpbmcgbV9zZWNXZWJTb2NrZXRLZXk7CiAgICAgU3RyaW5nIG1f
ZXhwZWN0ZWRBY2NlcHQ7CisKKyAgICBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyIG1fZXh0
ZW5zaW9uRGlzcGF0Y2hlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXBpCmluZGV4IGM4NTAyZjU3M2M0NTE3MDE3MzU0ODVhZjQ3NTIzZTc1
MTI5NGM4M2QuLjM1ZjJiMTk5MDc3OWQ2NjllZjgwNDAyZmIwMGYyYTU1NjE0N2MzMjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQpAQCAtMTE4LDYgKzExOCw3IEBACiAgICAgICAgICAg
ICAndGVzdHMvV2ViTGF5ZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvV2ViUGFnZU5l
d1NlcmlhbGl6ZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvV2ViUGFnZVNlcmlhbGl6
ZXJUZXN0LmNwcCcsCisgICAgICAgICAgICAndGVzdHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0
Y2hlclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9XZWJVUkxSZXF1ZXN0VGVzdC5jcHAn
LAogICAgICAgICAgICAgJ3Rlc3RzL1dlYlZpZXdUZXN0LmNwcCcsCiAgICAgICAgIF0sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlNvY2tldEV4dGVuc2lvbkRp
c3BhdGNoZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViU29ja2V0
RXh0ZW5zaW9uRGlzcGF0Y2hlclRlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhMGI3ZDdkZGE4YTZkZmY2
OTU4Y2UyZTg0MTU0YmEzMjcwNjUxNGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXJUZXN0LmNwcApAQCAt
MCwwICsxLDE3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIldl
YlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCIKKworI2luY2x1ZGUgIldlYlNvY2tldEV4dGVu
c2lvblByb2Nlc3Nvci5oIgorCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1l
c3BhY2UgeworCitjbGFzcyBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyVGVzdDsKKworY2xh
c3MgTW9ja1dlYlNvY2tldEV4dGVuc2lvblByb2Nlc3NvciA6IHB1YmxpYyBXZWJTb2NrZXRFeHRl
bnNpb25Qcm9jZXNzb3IgeworcHVibGljOgorICAgIE1vY2tXZWJTb2NrZXRFeHRlbnNpb25Qcm9j
ZXNzb3IoY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyVGVz
dCogdGVzdCkKKyAgICAgICAgOiBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IobmFtZSkKKyAg
ICAgICAgLCBtX3Rlc3QodGVzdCkKKyAgICB7CisgICAgfQorICAgIHZpcnR1YWwgU3RyaW5nIGhh
bmRzaGFrZVN0cmluZygpIE9WRVJSSURFIHsgcmV0dXJuIGV4dGVuc2lvblRva2VuKCk7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgcHJvY2Vzc1Jlc3BvbnNlKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJp
bmc+JikgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0
Y2hlclRlc3QqIG1fdGVzdDsKK307CisKK2NsYXNzIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNo
ZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworcHVibGljOgorICAgIFdlYlNvY2tldEV4
dGVuc2lvbkRpc3BhdGNoZXJUZXN0KCkgeyB9CisKKyAgICB2b2lkIFNldFVwKCkgeyB9CisKKyAg
ICB2b2lkIFRlYXJEb3duKCkgeyB9CisKKyAgICB2b2lkIGFkZE1vY2tQcm9jZXNzb3IoY29uc3Qg
U3RyaW5nJiBleHRlbnNpb25Ub2tlbikKKyAgICB7CisgICAgICAgIG1fZXh0ZW5zaW9ucy5hZGRQ
cm9jZXNzb3IoYWRvcHRQdHIobmV3IE1vY2tXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IoZXh0
ZW5zaW9uVG9rZW4sIHRoaXMpKSk7CisKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZFJlc3VsdChj
b25zdCBTdHJpbmcmIGV4dGVuc2lvblRva2VuLCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5n
PiYgcGFyYW1ldGVycykKKyAgICB7CisgICAgICAgIG1fcGFyc2VkRXh0ZW5zaW9uVG9rZW5zLmFw
cGVuZChleHRlbnNpb25Ub2tlbik7CisgICAgICAgIG1fcGFyc2VkUGFyYW1ldGVycy5hcHBlbmQo
cGFyYW1ldGVycyk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgV2ViU29ja2V0RXh0ZW5zaW9u
RGlzcGF0Y2hlciBtX2V4dGVuc2lvbnM7CisgICAgVmVjdG9yPFN0cmluZz4gbV9wYXJzZWRFeHRl
bnNpb25Ub2tlbnM7CisgICAgVmVjdG9yPEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+ID4gbV9wYXJz
ZWRQYXJhbWV0ZXJzOworfTsKKworYm9vbCBNb2NrV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29y
Ojpwcm9jZXNzUmVzcG9uc2UoY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIHBhcmFtZXRl
cnMpCit7CisgICAgbV90ZXN0LT5hcHBlbmRSZXN1bHQoZXh0ZW5zaW9uVG9rZW4oKSwgcGFyYW1l
dGVycyk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1RFU1RfRihXZWJTb2NrZXRFeHRlbnNpb25E
aXNwYXRjaGVyVGVzdCwgVGVzdFNpbmdsZSkKK3sKKyAgICBhZGRNb2NrUHJvY2Vzc29yKCJkZWZs
YXRlLWZyYW1lIik7CisgICAgRVhQRUNUX1RSVUUobV9leHRlbnNpb25zLnByb2Nlc3NIZWFkZXJW
YWx1ZSgiZGVmbGF0ZS1mcmFtZSIpKTsKKyAgICBFWFBFQ1RfRVEoMVVMLCBtX3BhcnNlZEV4dGVu
c2lvblRva2Vucy5zaXplKCkpOworICAgIEVYUEVDVF9FUSgiZGVmbGF0ZS1mcmFtZSIsIG1fcGFy
c2VkRXh0ZW5zaW9uVG9rZW5zWzBdKTsKKyAgICBFWFBFQ1RfRVEoMCwgbV9wYXJzZWRQYXJhbWV0
ZXJzWzBdLnNpemUoKSk7Cit9CisKK1RFU1RfRihXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVy
VGVzdCwgVGVzdFBhcmFtZXRlcnMpCit7CisgICAgYWRkTW9ja1Byb2Nlc3NvcigibXV4Iik7Cisg
ICAgRVhQRUNUX1RSVUUobV9leHRlbnNpb25zLnByb2Nlc3NIZWFkZXJWYWx1ZSgibXV4OyBtYXgt
Y2hhbm5lbHM9NDsgZmxvdy1jb250cm9sICAiKSk7CisgICAgRVhQRUNUX0VRKDFVTCwgbV9wYXJz
ZWRFeHRlbnNpb25Ub2tlbnMuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoIm11eCIsIG1fcGFyc2Vk
RXh0ZW5zaW9uVG9rZW5zWzBdKTsKKyAgICBFWFBFQ1RfRVEoMiwgbV9wYXJzZWRQYXJhbWV0ZXJz
WzBdLnNpemUoKSk7CisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46Oml0ZXJhdG9yIHBhcmFt
ZXRlciA9IG1fcGFyc2VkUGFyYW1ldGVyc1swXS5maW5kKCJtYXgtY2hhbm5lbHMiKTsKKyAgICBF
WFBFQ1RfVFJVRShwYXJhbWV0ZXIgIT0gbV9wYXJzZWRQYXJhbWV0ZXJzWzBdLmVuZCgpKTsKKyAg
ICBFWFBFQ1RfRVEoIjQiLCBwYXJhbWV0ZXItPnNlY29uZCk7CisgICAgcGFyYW1ldGVyID0gbV9w
YXJzZWRQYXJhbWV0ZXJzWzBdLmZpbmQoImZsb3ctY29udHJvbCIpOworICAgIEVYUEVDVF9UUlVF
KHBhcmFtZXRlciAhPSBtX3BhcnNlZFBhcmFtZXRlcnNbMF0uZW5kKCkpOworICAgIEVYUEVDVF9U
UlVFKHBhcmFtZXRlci0+c2Vjb25kLmlzTnVsbCgpKTsKK30KKworVEVTVF9GKFdlYlNvY2tldEV4
dGVuc2lvbkRpc3BhdGNoZXJUZXN0LCBUZXN0TXVsdGlwbGUpCit7CisgICAgc3RydWN0IHsKKyAg
ICAgICAgU3RyaW5nIHRva2VuOworICAgICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBwYXJh
bWV0ZXJzOworICAgIH0gZXhwZWN0ZWRbMl07CisgICAgZXhwZWN0ZWRbMF0udG9rZW4gPSAibXV4
IjsKKyAgICBleHBlY3RlZFswXS5wYXJhbWV0ZXJzLmFkZCgibWF4LWNoYW5uZWxzIiwgIjQiKTsK
KyAgICBleHBlY3RlZFswXS5wYXJhbWV0ZXJzLmFkZCgiZmxvdy1jb250cm9sIiwgU3RyaW5nKCkp
OworICAgIGV4cGVjdGVkWzFdLnRva2VuID0gImRlZmxhdGUtZnJhbWUiOworCisgICAgYWRkTW9j
a1Byb2Nlc3NvcigibXV4Iik7CisgICAgYWRkTW9ja1Byb2Nlc3NvcigiZGVmbGF0ZS1mcmFtZSIp
OworICAgIEVYUEVDVF9UUlVFKG1fZXh0ZW5zaW9ucy5wcm9jZXNzSGVhZGVyVmFsdWUoIm11eCA7
ICBtYXgtY2hhbm5lbHMgPTQ7Zmxvdy1jb250cm9sLCBkZWZsYXRlLWZyYW1lICAiKSk7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplb2YoZXhwZWN0ZWQpIC8gc2l6ZW9mKGV4cGVjdGVk
WzBdKTsgKytpKSB7CisgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZFtpXS50b2tlbiwgbV9wYXJz
ZWRFeHRlbnNpb25Ub2tlbnNbaV0pOworICAgICAgICBjb25zdCBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiYgZXhwZWN0ZWRQYXJhbWV0ZXJzID0gZXhwZWN0ZWRbaV0ucGFyYW1ldGVyczsKKyAgICAg
ICAgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIHBhcnNlZFBhcmFtZXRlcnMgPSBtX3Bh
cnNlZFBhcmFtZXRlcnNbaV07CisgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZFtpXS5wYXJhbWV0
ZXJzLnNpemUoKSwgbV9wYXJzZWRQYXJhbWV0ZXJzW2ldLnNpemUoKSk7CisgICAgICAgIGZvciAo
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ZXJhdG9yID0gZXhwZWN0
ZWRQYXJhbWV0ZXJzLmJlZ2luKCk7IGl0ZXJhdG9yICE9IGV4cGVjdGVkUGFyYW1ldGVycy5lbmQo
KTsgKytpdGVyYXRvcikgeworICAgICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNv
bnN0X2l0ZXJhdG9yIHBhcnNlZCA9IHBhcnNlZFBhcmFtZXRlcnMuZmluZChpdGVyYXRvci0+Zmly
c3QpOworICAgICAgICAgICAgRVhQRUNUX1RSVUUocGFyc2VkICE9IHBhcnNlZFBhcmFtZXRlcnMu
ZW5kKCkpOworICAgICAgICAgICAgaWYgKGl0ZXJhdG9yLT5zZWNvbmQuaXNOdWxsKCkpCisgICAg
ICAgICAgICAgICAgRVhQRUNUX1RSVUUocGFyc2VkLT5zZWNvbmQuaXNOdWxsKCkpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIEVYUEVDVF9FUShpdGVyYXRvci0+c2Vjb25kLCBw
YXJzZWQtPnNlY29uZCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK1RFU1RfRihXZWJTb2NrZXRF
eHRlbnNpb25EaXNwYXRjaGVyVGVzdCwgVGVzdFF1b3RlZFN0cmluZykKK3sKKyAgICBhZGRNb2Nr
UHJvY2Vzc29yKCJ4LWZvbyIpOworICAgIEVYUEVDVF9UUlVFKG1fZXh0ZW5zaW9ucy5wcm9jZXNz
SGVhZGVyVmFsdWUoIngtZm9vOyBwYXJhbTE9XCJxdW90ZWQgc3RyaW5nXCI7IHBhcmFtMj1cIlxc
XCJxdW90ZWRcXFwiIHN0cmluZ1xcXFxcIiIpKTsKKyAgICBFWFBFQ1RfRVEoMiwgbV9wYXJzZWRQ
YXJhbWV0ZXJzWzBdLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKCJxdW90ZWQgc3RyaW5nIiwgbV9w
YXJzZWRQYXJhbWV0ZXJzWzBdLmdldCgicGFyYW0xIikpOworICAgIEVYUEVDVF9FUSgiXCJxdW90
ZWRcIiBzdHJpbmdcXCIsIG1fcGFyc2VkUGFyYW1ldGVyc1swXS5nZXQoInBhcmFtMiIpKTsKK30K
KworVEVTVF9GKFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXJUZXN0LCBUZXN0SW52YWxpZCkK
K3sKKyAgICBjb25zdCBjaGFyKiBpbnB1dHNbXSA9IHsKKyAgICAgICAgIlwieC1mb29cIiIsCisg
ICAgICAgICJ4LWJheiIsCisgICAgICAgICJ4LWZvb1xcIiwKKyAgICAgICAgIngtKGZvbykiLAor
ICAgICAgICAieC1mb287ICIsCisgICAgICAgICJ4LWZvbzsgYmFyPSIsCisgICAgICAgICJ4LWZv
bzsgYmFyPXggeSIsCisgICAgICAgICJ4LWZvbzsgYmFyPVwibWlzbWF0Y2ggcXVvdGUiLAorICAg
ICAgICAieC1mb287IGJhcj1cIlxcXCIiLAorICAgICAgICAieC1mb287IFwiYmFyXCI9YmF6IiwK
KyAgICAgICAgIngtZm9vIHgtYmFyIiwKKyAgICAgICAgIngtZm9vLCB4LWJheiIKKyAgICAgICAg
IngtZm9vLCAiLAorICAgIH07CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplb2YoaW5w
dXRzKSAvIHNpemVvZihpbnB1dHNbMF0pOyArK2kpIHsKKyAgICAgICAgbV9leHRlbnNpb25zLnJl
c2V0KCk7CisgICAgICAgIGFkZE1vY2tQcm9jZXNzb3IoIngtZm9vIik7CisgICAgICAgIGFkZE1v
Y2tQcm9jZXNzb3IoIngtYmFyIik7CisgICAgICAgIEVYUEVDVF9GQUxTRShtX2V4dGVuc2lvbnMu
cHJvY2Vzc0hlYWRlclZhbHVlKGlucHV0c1tpXSkpOworICAgIH0KK30KKworfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDE1
YjYwYWIzMWYzMWMwMDMyNGUyM2M0YzFjNTNiNTZhOTdmODEzYzUuLjhmYTUyYmNlNjg2YTUzZmIz
NGQ1Yzc0YWQyNjZiMWM4NmY2MjQzMmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wMi0w
OSAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRk
IFdlYlNvY2tldCBleHRlbnNpb24gc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgwNzkKKworICAgICAgICBOZWVkIGEgc2hvcnQgZGVzY3Jp
cHRpb24gYW5kIGJ1ZyBVUkwgKE9PUFMhKQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9oYW5k
c2hha2UtZmFpbC1ieS1leHRlbnNpb25zLWhlYWRlci1leHBlY3RlZC50eHQ6IFJlYmFzZWxpbmVk
LgorCiAyMDEyLTAyLTA4ICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1leHRl
bnNpb25zLWhlYWRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LWV4dGVuc2lvbnMtaGVhZGVyLWV4cGVj
dGVkLnR4dAppbmRleCBiMTQ2OTdjOWRiYzhhNzY5MDFkYzU4NWRlMTNlNGJjNTk0OTE1MDFiLi5h
ZGYwNmI2NTFkNmI0NzE1YjRhMWI5N2M4N2M5NjAyMzNhYWUxZmEwIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5
LWV4dGVuc2lvbnMtaGVhZGVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LWV4dGVuc2lvbnMtaGVh
ZGVyLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKLUNPTlNPTEUgTUVTU0FHRTogRXJyb3Ig
ZHVyaW5nIFdlYlNvY2tldCBoYW5kc2hha2U6IFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFk
ZXIgaXMgaW52YWxpZAorQ09OU09MRSBNRVNTQUdFOiBSZWNlaXZlZCB1bmV4cGVjdGVkIFNlYy1X
ZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIKIFRlc3Qgd2hldGhlciBXZWJTb2NrZXQgaGFuZHNo
YWtlIGZhaWxzIGlmIHRoZSBzZXJ2ZXIgc2VuZHMgU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhl
YWRlci4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126391</attachid>
            <date>2012-02-09 15:40:55 -0800</date>
            <delta_ts>2012-02-09 22:44:46 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-78079-20120210084054.patch</filename>
            <type>text/plain</type>
            <size>45380</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3Mjk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjQyNzVkNGUwNjE1YTQ2
MDg3YzA3ZGU4NDI2NDU2MTI5N2M2ZmY1OC4uMTliZTNiYWNhMDExNjMxM2IxOGZlNjRlNTM3MmIy
MGY1NTk5ODVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDEyLTAyLTA5ICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgV2ViU29j
a2V0IGV4dGVuc2lvbiBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03ODA3OQorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBXZWJT
b2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyIGNsYXNzLCB3aGljaCBjcmVhdGVzIGNsaWVudCdzCisg
ICAgICAgIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIgZmllbGQgYW5kIHBhcnNlcyB0
aGUgc2VydmVyIHJlc3BvbnNlLgorICAgICAgICBUaGlzIHBhdGNoIGRvZXNuJ3QgYWRkIGFueSBh
Y3R1YWwgZXh0ZW5zaW9uLCBzbyBubyBjaGFuZ2VzIGluIGJlaGF2aW9yLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEtlbnQgVGFtdXJhLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBleGNlcHQgZm9y
IGNocm9taXVtIHBvcnQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkZWQgV2ViU29j
a2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci4oY3BwfGgpIGFuZCBXZWJTb2NrZXRFeHRlbnNpb25Qcm9j
ZXNzb3IuaC4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBEaXR0by4KKyAgICAgICAg
KiBUYXJnZXQucHJpOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6IERpdHRvLgorICAg
ICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOiBEaXR0by4KKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorICAgICAgICAqIHdlYnNv
Y2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChFeHRlbnNpb25QYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uUGFyc2VyOjpFeHRlbnNpb25QYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uUGFyc2VyOjpjdXJyZW50VG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
UGFyc2VyOjpmaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25QYXJzZXI6OnBh
cnNlZFN1Y2Nlc3NmdWxseSk6CisgICAgICAgIChXZWJDb3JlOjppc1Rva2VuQ2hhcmFjdGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OmlzU2VwYXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVu
c2lvblBhcnNlcjo6c2tpcFNwYWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25QYXJz
ZXI6OmNvbnN1bWVUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25QYXJzZXI6OmNv
bnN1bWVRdW90ZWRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uUGFyc2VyOjpj
b25zdW1lUXVvdGVkU3RyaW5nT3JUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25Q
YXJzZXI6OmNvbnN1bWVDaGFyYWN0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0
ZW5zaW9uRGlzcGF0Y2hlcjo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0
ZW5zaW9uRGlzcGF0Y2hlcjo6YWRkUHJvY2Vzc29yKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNv
Y2tldEV4dGVuc2lvbkRpc3BhdGNoZXI6OmNyZWF0ZUhlYWRlclZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXI6OnByb2Nlc3NIZWFkZXJWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyOjpmYWlsdXJl
UmVhc29uKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNo
ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYlNvY2tldEV4dGVu
c2lvbkRpc3BhdGNoZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9uRGlz
cGF0Y2hlcjo6V2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlcik6CisgICAgICAgICogd2Vic29j
a2V0cy9XZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvcik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I6On5XZWJTb2NrZXRFeHRlbnNpb25Q
cm9jZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29y
OjpleHRlbnNpb25Ub2tlbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25Q
cm9jZXNzb3I6OmZhaWx1cmVSZWFzb24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0
ZW5zaW9uUHJvY2Vzc29yOjpXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IpOgorICAgICAgICAq
IHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldEhhbmRzaGFrZTo6Y2xpZW50SGFuZHNoYWtlTWVzc2FnZSk6IEFkZHMgZXh0ZW5zaW9u
IGhlYWRlciB2YWx1ZSBpZiBleGlzdHMuCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5k
c2hha2U6OmNsaWVudEhhbmRzaGFrZVJlcXVlc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldEhhbmRzaGFrZTo6cmVzZXQpOiBSZXNldHMgV2ViU29ja2V0RXh0ZW5zaW9uRGlz
cGF0Y2hlciBvYmplY3QuCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6OnNl
cnZlckhhbmRzaGFrZVJlc3BvbnNlKTogUmVtb3ZlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYlNv
Y2tldEhhbmRzaGFrZTo6YWRkRXh0ZW5zaW9uUHJvY2Vzc29yKTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRIVFRQSGVhZGVycyk6IFBhcnNlcyBhbmQg
Y2hlY2tzIGV2ZXJ5IHRpbWUgU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlciBhcHBlYXJz
LgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpjaGVja1Jlc3BvbnNlSGVh
ZGVycyk6IFJlbW92ZWQgdGhlIGNoZWNrIG9mIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucy4KKyAg
ICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oOiBSZW1vdmVkIHNlcnZlckhh
bmRzaGFrZVJlc3BvbnNlKCkuCisKIDIwMTItMDItMDkgIExldmkgV2VpbnRyYXViICA8bGV2aXdA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFkZCByb3VuZGVkSW50UG9pbnQgbWV0aG9kIGZvciBM
YXlvdXRQb2ludHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYzRjYTRjMGVlYWJmNDI0
MDc1YWY5NmQxYjA5YmE4ZjJiNGM3MjA4Yy4uNzdjMTc3Mjk2YjhmY2EwZTFjYzE2YzFkNWM2YTMz
NDA2ZjRlMDM3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAor
MjAxMi0wMi0wOSAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgQWRkIFdlYlNvY2tldCBleHRlbnNpb24gc3VwcG9ydAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgwNzkKKworICAgICAgICBBZGQgc29tZSB0
ZXN0cyB3aGljaCBjaGVjayBXZWJTb2NrZXRFeHRlbnNpb25zOjpwcm9jZXNzSGVhZGVyVmFsdWUo
KQorICAgICAgICBwYXJzZXMgdGhlIGdpdmVuIHJlc3BvbnNlIGNvcnJlY3RseS4KKworICAgICAg
ICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KKworICAgICAgICAqIFdlYktpdC5neXBpOgorICAg
ICAgICAqIHRlc3RzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXJUZXN0LmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKE1vY2tXZWJTb2NrZXRFeHRlbnNpb25Qcm9j
ZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1dlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nv
cjo6TW9ja1dlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvcik6CisgICAgICAgIChXZWJTb2NrZXRF
eHRlbnNpb25EaXNwYXRjaGVyVGVzdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRl
bnNpb25EaXNwYXRjaGVyVGVzdDo6V2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlclRlc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlclRlc3Q6OlNldFVw
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXJUZXN0OjpU
ZWFyRG93bik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVy
VGVzdDo6YWRkTW9ja1Byb2Nlc3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRl
bnNpb25EaXNwYXRjaGVyVGVzdDo6YXBwZW5kUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I6OnByb2Nlc3NSZXNwb25zZSk6CisgICAgICAg
IChXZWJDb3JlOjpURVNUX0YpOgorCiAyMDEyLTAyLTA5ICBKb2huIEJhdGVzICA8amJhdGVzQGdv
b2dsZS5jb20+CiAKICAgICAgICAgW0Nocm9taXVtXSBBZGQgY2hyb21pdW0tc3R5bGUgdHJhY2lu
ZyBzdXBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDQzYTdmMjEyMTA3MGJiZTkwYTQwMGY0
MzNjNjNiYWUyMzliYjY2ODkuLjhjMzE1ZDYyNzMxNzgwNzAyOWY1MzQ4MGI1NzA1NmQxYzNlZjEy
M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMDM5LDYgKzIwMzksNyBAQCBJRiAoRU5BQkxF
X1dFQl9TT0NLRVRTKQogICAgICAgICB3ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlci5jcHAKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCiAg
ICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKyAgICAgICAgd2Vic29ja2V0
cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcAogICAgICAgICB3ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZS5jcHAKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hh
a2VSZXF1ZXN0LmNwcAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3Bv
bnNlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggNThkOWU5YTRlYTAwMTRm
NDE4MDZmYzRlODRhNzhkMzIzZTU3ZGJhMC4uODQ0OGIzYWM5NjY4MmFlNWNkY2JhYmMzMDUzNDQz
ZmQ2NzBkYWViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC00MzA3LDYgKzQz
MDcsOSBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0Q2hhbm5lbC5oIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tl
dC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmggXAorCVNvdXJj
ZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAgXAor
CVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5o
IFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nv
ci5oIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmggXAogCVNv
dXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAgXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkKaW5kZXggYTcyYTE4ZGFhYzZmYjkzNjY1ZTIzZTcwYmRmMjdiNWM3MGQxM2U4Ny4u
MTQzZjc4Y2VkNzBjYWY5ZTU1YWYyMWIwZmMyNTI3NzM1MTc1MDkyNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBA
IC0zNjU4LDYgKzM2NTgsOCBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV0VCX1NPQ0tFVFM9
MSkgewogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldC5oIFwKICAgICAgICAgd2Vic29ja2V0
cy9XZWJTb2NrZXRDaGFubmVsLmggXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWxDbGllbnQuaCBcCisgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0
Y2hlci5oIFwKKyAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3Iu
aCBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmggXAogICAgICAgICB3
ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaCBcCiAgICAgICAgIHdlYnNvY2tl
dHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCBcCkBAIC0zNjY2LDYgKzM2NjgsNyBAQCBj
b250YWlucyhERUZJTkVTLCBFTkFCTEVfV0VCX1NPQ0tFVFM9MSkgewogICAgIFNPVVJDRVMgKz0g
XAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgXAogICAgICAgICB3ZWJzb2NrZXRz
L1dlYlNvY2tldENoYW5uZWwuY3BwIFwKKyAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRl
bnNpb25EaXNwYXRjaGVyLmNwcCBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNo
YWtlLmNwcCBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5j
cHAgXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKaW5kZXggOTBjZDhlMTQ4ZTY2OWFlZmMzYTI1ZTE4OGNlZTQ2YmRhZThm
NjVmMS4uNzhhODVjMGQzMWUwOTFkODlmYmM4MGIxMjk2MjM3NWU1NWFjM2U3OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQpAQCAtNDc5Miw2ICs0NzkyLDkgQEAKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuY3BwJywKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWwuaCcsCiAgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsQ2xpZW50
LmgnLAorICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hl
ci5jcHAnLAorICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0
Y2hlci5oJywKKyAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvblByb2Nl
c3Nvci5oJywKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAn
LAogICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgnLAogICAgICAg
ICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAnLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA1N2ExMTc1MTYy
NjE0OTBiZmI4ZDVkYjkyMjhiNTc1OGZkNGFlMTFkLi5kM2VjNzdhOGFmYWI2ODMwOTFiOGVmMDk3
MTIzMzFlMDY5OTY4NTYyIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagpAQCAtNzI5MDIsNiArNzI5MDIsMTggQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJ
CQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cd2Vic29ja2V0c1xXZWJTb2NrZXRFeHRlbnNp
b25EaXNwYXRjaGVyLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5cd2Vic29ja2V0c1xXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmgiCisJ
CQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHdlYnNvY2tl
dHNcV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJ
PEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHdlYnNvY2tldHNcV2ViU29ja2V0SGFuZHNoYWtl
LmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDIwNDIyMjA0NTJhMmVjNWNlNDM1MGVhNThk
YmNiNGE0NjBlYzM2NS4uYmNjMWU0YWU5YmMxZGI4YjY5YTVhN2QxOGM3ZDgyN2RiYmUxZmRhMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTM2Niw2ICsxMzY2LDggQEAKIAkJNEE2RTlGQzcxM0MxN0Q1NzAwNDZBN0Y4IC8qIEZv
bnRGZWF0dXJlU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEE2RTlGQzUxM0MxN0Q1NzAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlU2V0dGlu
Z3MuY3BwICovOyB9OwogCQk0QTZFOUZDODEzQzE3RDU3MDA0NkE3RjggLyogRm9udEZlYXR1cmVT
ZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NEE2RTlGQzYxM0MxN0Q1NzAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlU2V0dGluZ3MuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QThDOTZFQjBCRTY5
MDMyMDA0RUVGRjAgLyogRnJhbWVTZWxlY3Rpb25NYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QThDOTZFQTBCRTY5MDMyMDA0RUVGRjAgLyogRnJh
bWVTZWxlY3Rpb25NYWMubW0gKi87IH07CisJCTRBOTU3RjA2MTRFMjQxMkEwMDQ5REJGQiAvKiBX
ZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBOTU3RjAzMTRFMjQxMTAwMDQ5REJGQiAvKiBXZWJTb2Nr
ZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcCAqLzsgfTsKKwkJNEE5NTdGMDcxNEUyNDEzMDAwNDlE
QkZCIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBOTU3RjA0MTRFMjQxMTAwMDQ5REJGQiAvKiBX
ZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmggKi87IH07CiAJCTRBQkRGRjBCMTREQkUzODUw
MDREMTE3RCAvKiBIVE1MU2hhZG93RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QUJERkYwNzE0REJFMzEyMDA0RDExN0QgLyogSFRNTFNo
YWRvd0VsZW1lbnQuY3BwICovOyB9OwogCQk0QUJERkYwQzE0REJFMzg1MDA0RDExN0QgLyogSFRN
TFNoYWRvd0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDRBQkRGRjA4MTREQkUzMTIwMDREMTE3RCAvKiBIVE1MU2hhZG93RWxlbWVudC5oICov
OyB9OwogCQk0QUNCQzBCRTEyNzEzQ0JEMDA5NEY5QjIgLyogQ2xhc3NMaXN0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBQ0JDMEJDMTI3MTNDQkQw
MDk0RjlCMiAvKiBDbGFzc0xpc3QuY3BwICovOyB9OwpAQCAtMTM3OSw2ICsxMzgxLDcgQEAKIAkJ
NEFEMDEwMDkxMjdFNjQyQTAwMTUwMzVGIC8qIEhUTUxPdXRwdXRFbGVtZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QUQwMTAwNjEyN0U2NDJBMDAx
NTAzNUYgLyogSFRNTE91dHB1dEVsZW1lbnQuaCAqLzsgfTsKIAkJNEFEMDE3M0MxMjdFODI4NjAw
MTUwMzVGIC8qIEpTSFRNTE91dHB1dEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEFEMDE3M0ExMjdFODI4NjAwMTUwMzVGIC8qIEpTSFRN
TE91dHB1dEVsZW1lbnQuY3BwICovOyB9OwogCQk0QUQwMTczRDEyN0U4Mjg2MDAxNTAzNUYgLyog
SlNIVE1MT3V0cHV0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEFEMDE3M0IxMjdFODI4NjAwMTUwMzVGIC8qIEpTSFRNTE91dHB1dEVsZW1l
bnQuaCAqLzsgfTsKKwkJNEFERTI1RkExNEUzQkI0QzAwNEMyMjEzIC8qIFdlYlNvY2tldEV4dGVu
c2lvblByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNEFERTI1RjkxNEUzQkI0QzAwNEMyMjEzIC8qIFdlYlNvY2tldEV4dGVuc2lvblByb2Nl
c3Nvci5oICovOyB9OwogCQk0QUYxQUQzRTEzRkQyM0E0MDBBQTk1OTAgLyogRXZlbnREaXNwYXRj
aE1lZGlhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDRBRjFBRDNDMTNGRDIzQTQwMEFBOTU5MCAvKiBFdmVudERpc3BhdGNoTWVkaWF0b3IuY3Bw
ICovOyB9OwogCQk0QUYxQUQzRjEzRkQyM0E0MDBBQTk1OTAgLyogRXZlbnREaXNwYXRjaE1lZGlh
dG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QUYx
QUQzRDEzRkQyM0E0MDBBQTk1OTAgLyogRXZlbnREaXNwYXRjaE1lZGlhdG9yLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEIyNzA4QzcwQUYxOUVF
NDAwNjUxMjdGIC8qIFBhc3RlYm9hcmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDRCMjcwOEM1MEFGMTlFRTQwMDY1MTI3RiAvKiBQYXN0ZWJvYXJkLmgg
Ki87IH07CkBAIC04MjA0LDYgKzgyMDcsOCBAQAogCQk0QTZFOUZDNTEzQzE3RDU3MDA0NkE3Rjgg
LyogRm9udEZlYXR1cmVTZXR0aW5ncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBGb250RmVhdHVyZVNldHRpbmdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNEE2RTlGQzYxM0MxN0Q1NzAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlU2V0dGluZ3MuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGggPSBGb250RmVhdHVyZVNldHRpbmdzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBOEM5NkVBMEJFNjkwMzIwMDRFRUZGMCAvKiBG
cmFtZVNlbGVjdGlvbk1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5h
bWUgPSBGcmFtZVNlbGVjdGlvbk1hYy5tbTsgcGF0aCA9IG1hYy9GcmFtZVNlbGVjdGlvbk1hYy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEE5NTdGMDMxNEUyNDExMDAwNDlEQkZC
IC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRBOTU3RjA0MTRFMjQxMTAwMDQ5REJGQiAvKiBXZWJT
b2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNEFCREZGMDcxNERCRTMxMjAwNEQxMTdEIC8qIEhUTUxTaGFkb3dFbGVtZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxTaGFkb3dFbGVtZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEFCREZGMDgxNERCRTMxMjAwNEQx
MTdEIC8qIEhUTUxTaGFkb3dFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEhUTUxTaGFkb3dFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRB
QkRGRjA5MTREQkUzMTIwMDREMTE3RCAvKiBIVE1MU2hhZG93RWxlbWVudC5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gSFRNTFNoYWRvd0VsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtODIyMCw2ICs4MjI1LDcgQEAKIAkJNEFEMDEwMDcxMjdFNjQyQTAwMTUwMzVG
IC8qIEhUTUxPdXRwdXRFbGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MT3V0
cHV0RWxlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBRDAxNzNBMTI3
RTgyODYwMDE1MDM1RiAvKiBKU0hUTUxPdXRwdXRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTE91dHB1dEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0QUQwMTczQjEyN0U4Mjg2MDAxNTAzNUYgLyogSlNIVE1MT3V0
cHV0RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0hUTUxPdXRw
dXRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRBREUyNUY5MTRFM0JC
NEMwMDRDMjIxMyAvKiBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBRjFBRDNDMTNGRDIzQTQwMEFBOTU5MCAvKiBFdmVu
dERpc3BhdGNoTWVkaWF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRXZlbnREaXNwYXRjaE1lZGlhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNEFGMUFEM0QxM0ZEMjNBNDAwQUE5NTkwIC8qIEV2ZW50RGlzcGF0Y2hNZWRpYXRvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFdmVudERpc3BhdGNoTWVkaWF0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEIyNzA4QzUwQUYxOUVFNDAwNjUxMjdGIC8q
IFBhc3RlYm9hcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFzdGVib2Fy
ZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ3NDgsNiArMTQ3NTQsNyBAQAog
CQk1MThBMzRCRDEwMjZDODMxMDAxQjY4OTYgLyogd2Vic29ja2V0cyAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNEFERTI1RjkxNEUzQkI0QzAwNEMyMjEz
IC8qIFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvci5oICovLAogCQkJCTUxRkI1NEY0MTEzRTM2
NDIwMDgyMTE3NiAvKiBDbG9zZUV2ZW50LmggKi8sCiAJCQkJNTFGQjU0RjYxMTNFMzY1OTAwODIx
MTc2IC8qIENsb3NlRXZlbnQuaWRsICovLAogCQkJCTUxMTIyNDcxMTBDRkI4QzYwMDgwOTlENyAv
KiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgKi8sCkBAIC0xNDc2MCw2ICsxNDc2Nyw4
IEBACiAJCQkJNTEwRDRBNDcxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuY3Bw
ICovLAogCQkJCTUxMEQ0QTQ4MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmgg
Ki8sCiAJCQkJNTEwRDRBNDkxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWxDbGll
bnQuaCAqLywKKwkJCQk0QTk1N0YwMzE0RTI0MTEwMDA0OURCRkIgLyogV2ViU29ja2V0RXh0ZW5z
aW9uRGlzcGF0Y2hlci5jcHAgKi8sCisJCQkJNEE5NTdGMDQxNEUyNDExMDAwNDlEQkZCIC8qIFdl
YlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCAqLywKIAkJCQk1MUFCQUU0MjEwNDNBQjRBMDA4
QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmNwcCAqLywKIAkJCQk1MUFCQUU0MzEwNDNBQjRB
MDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmggKi8sCiAJCQkJNzYzN0M1NDAxMTJFN0I3
NDAwM0Q2Q0RDIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwICovLApAQCAtMjQxNjIs
NiArMjQxNzEsOCBAQAogCQkJCTEwRkIwODRCMTRFMTVDN0UwMEEzREI5OCAvKiBQdWJsaWNVUkxN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTU0ODU4MDE0RTAyRDUxMDA2QUUwNUEgLyog
SW5zcGVjdG9ySGlzdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0E1NDg4MTcxNEU0MzJBMTAw
NkFFMDVBIC8qIERPTVBhdGNoU3VwcG9ydC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNEE5NTdGMDcx
NEUyNDEzMDAwNDlEQkZCIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTRBREUyNUZBMTRFM0JCNEMwMDRDMjIxMyAvKiBXZWJTb2NrZXRFeHRlbnNp
b25Qcm9jZXNzb3IuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjcxMDAsNiArMjcxMTEsNyBAQAogCQkJ
CTdBNTQ4NTdGMTRFMDJENTEwMDZBRTA1QSAvKiBJbnNwZWN0b3JIaXN0b3J5LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUNEQUE4RDBBMTRENzFCMkUwMDYxRUE2MCAvKiBQbGF0Zm9ybUNsb2NrQ00u
bW0gaW4gU291cmNlcyAqLywKIAkJCQk3QTU0ODgxODE0RTQzMkExMDA2QUUwNUEgLyogRE9NUGF0
Y2hTdXBwb3J0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTRBOTU3RjA2MTRFMjQxMkEwMDQ5REJG
QiAvKiBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNw
YXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9u
RGlzcGF0Y2hlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDg1MDkyYWE4N2JhNjJkNzQyZTM5ZTI4MTZjMjA4
MjJjYzQ0ODAxMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAKQEAgLTAsMCArMSwyNDggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjaW5jbHVkZSAiV2Vi
U29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5oIgorCisjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBFeHRlbnNpb25QYXJzZXIgeworcHVibGljOgorICAgIEV4
dGVuc2lvblBhcnNlcihjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogZW5kKQorICAgICAg
ICA6IG1fY3VycmVudChzdGFydCkKKyAgICAgICAgLCBtX2VuZChlbmQpCisgICAgeworICAgIH0K
KyAgICBib29sIGZpbmlzaGVkKCk7CisgICAgYm9vbCBwYXJzZWRTdWNjZXNzZnVsbHkoKTsKKyAg
ICBjb25zdCBTdHJpbmcmIGN1cnJlbnRUb2tlbigpIHsgcmV0dXJuIG1fY3VycmVudFRva2VuOyB9
CisKKyAgICAvLyBUaGUgZm9sbG93aW5nIG1lbWJlciBmdW5jdGlvbnMgYmFzaWNhbGx5IGZvbGxv
dyB0aGUgZ3JhbW1lciBkZWZpbmVkCisgICAgLy8gaW4gU2VjdGlvbiAyLjIgb2YgUkZDIDI2MTYu
CisgICAgYm9vbCBjb25zdW1lVG9rZW4oKTsKKyAgICBib29sIGNvbnN1bWVRdW90ZWRTdHJpbmco
KTsKKyAgICBib29sIGNvbnN1bWVRdW90ZWRTdHJpbmdPclRva2VuKCk7CisgICAgYm9vbCBjb25z
dW1lQ2hhcmFjdGVyKGNoYXIpOworCitwcml2YXRlOgorICAgIHZvaWQgc2tpcFNwYWNlcygpOwor
CisgICAgY29uc3QgY2hhciogbV9jdXJyZW50OworICAgIGNvbnN0IGNoYXIqIG1fZW5kOworICAg
IFN0cmluZyBtX2N1cnJlbnRUb2tlbjsKK307CisKK2Jvb2wgRXh0ZW5zaW9uUGFyc2VyOjpmaW5p
c2hlZCgpCit7CisgICAgcmV0dXJuIG1fY3VycmVudCA+PSBtX2VuZDsKK30KKworYm9vbCBFeHRl
bnNpb25QYXJzZXI6OnBhcnNlZFN1Y2Nlc3NmdWxseSgpCit7CisgICAgcmV0dXJuIG1fY3VycmVu
dCA9PSBtX2VuZDsKK30KKworc3RhdGljIGJvb2wgaXNTZXBhcmF0b3IoY2hhciBjaGFyYWN0ZXIp
Cit7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHNlcGFyYXRvckNoYXJhY3RlcnMgPSAiKCk8PkAs
OzpcXFwiL1tdPz17fSBcdCI7CisgICAgY29uc3QgY2hhciogcCA9IHN0cmNocihzZXBhcmF0b3JD
aGFyYWN0ZXJzLCBjaGFyYWN0ZXIpOworICAgIHJldHVybiBwICYmICpwOworfQorCit2b2lkIEV4
dGVuc2lvblBhcnNlcjo6c2tpcFNwYWNlcygpCit7CisgICAgd2hpbGUgKG1fY3VycmVudCA8IG1f
ZW5kICYmICgqbV9jdXJyZW50ID09ICcgJyB8fCAqbV9jdXJyZW50ID09ICdcdCcpKQorICAgICAg
ICArK21fY3VycmVudDsKK30KKworYm9vbCBFeHRlbnNpb25QYXJzZXI6OmNvbnN1bWVUb2tlbigp
Cit7CisgICAgc2tpcFNwYWNlcygpOworICAgIGNvbnN0IGNoYXIqIHN0YXJ0ID0gbV9jdXJyZW50
OworICAgIHdoaWxlIChtX2N1cnJlbnQgPCBtX2VuZCAmJiBpc0FTQ0lJUHJpbnRhYmxlKCptX2N1
cnJlbnQpICYmICFpc1NlcGFyYXRvcigqbV9jdXJyZW50KSkKKyAgICAgICAgKyttX2N1cnJlbnQ7
CisgICAgaWYgKHN0YXJ0IDwgbV9jdXJyZW50KSB7CisgICAgICAgIG1fY3VycmVudFRva2VuID0g
U3RyaW5nKHN0YXJ0LCBtX2N1cnJlbnQgLSBzdGFydCk7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRXh0ZW5zaW9uUGFyc2VyOjpjb25z
dW1lUXVvdGVkU3RyaW5nKCkKK3sKKyAgICBza2lwU3BhY2VzKCk7CisgICAgaWYgKG1fY3VycmVu
dCA+PSBtX2VuZCB8fCAqbV9jdXJyZW50ICE9ICciJykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcjsKKyAgICArK21fY3VycmVudDsKKyAgICB3aGlsZSAo
bV9jdXJyZW50IDwgbV9lbmQgJiYgKm1fY3VycmVudCAhPSAnIicpIHsKKyAgICAgICAgaWYgKCpt
X2N1cnJlbnQgPT0gJ1xcJyAmJiArK21fY3VycmVudCA+PSBtX2VuZCkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgYnVmZmVyLmFwcGVuZCgqbV9jdXJyZW50KTsKKyAgICAgICAg
KyttX2N1cnJlbnQ7CisgICAgfQorICAgIGlmIChtX2N1cnJlbnQgPj0gbV9lbmQgfHwgKm1fY3Vy
cmVudCAhPSAnIicpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBtX2N1cnJlbnRUb2tlbiA9
IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgKytt
X2N1cnJlbnQ7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRXh0ZW5zaW9uUGFyc2VyOjpj
b25zdW1lUXVvdGVkU3RyaW5nT3JUb2tlbigpCit7CisgICAgLy8gVGhpcyBpcyBvayBiZWNhdXNl
IGNvbnN1bWVRdW90ZWRTdHJpbmcoKSBkb2Vzbid0IHVwZGF0ZSBtX2N1cnJlbnQgb3IKKyAgICAv
LyBtYWtlcyBpdCBzYW1lIGFzIG1fZW5kIG9uIGZhaWx1cmUuCisgICAgcmV0dXJuIGNvbnN1bWVR
dW90ZWRTdHJpbmcoKSB8fCBjb25zdW1lVG9rZW4oKTsKK30KKworYm9vbCBFeHRlbnNpb25QYXJz
ZXI6OmNvbnN1bWVDaGFyYWN0ZXIoY2hhciBjaGFyYWN0ZXIpCit7CisgICAgc2tpcFNwYWNlcygp
OworICAgIGlmIChtX2N1cnJlbnQgPCBtX2VuZCAmJiAqbV9jdXJyZW50ID09IGNoYXJhY3Rlcikg
eworICAgICAgICArK21fY3VycmVudDsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAg
IHJldHVybiBmYWxzZTsKK30KKwordm9pZCBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyOjpy
ZXNldCgpCit7CisgICAgbV9wcm9jZXNzb3JzLmNsZWFyKCk7Cit9CisKK3ZvaWQgV2ViU29ja2V0
RXh0ZW5zaW9uRGlzcGF0Y2hlcjo6YWRkUHJvY2Vzc29yKFBhc3NPd25QdHI8V2ViU29ja2V0RXh0
ZW5zaW9uUHJvY2Vzc29yPiBwcm9jZXNzb3IpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX3Byb2Nlc3NvcnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1fcHJvY2Vzc29yc1tp
XS0+ZXh0ZW5zaW9uVG9rZW4oKSA9PSBwcm9jZXNzb3ItPmV4dGVuc2lvblRva2VuKCkpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIEFTU0VSVChwcm9jZXNzb3ItPmhhbmRzaGFrZVN0
cmluZygpLmxlbmd0aCgpKTsKKyAgICBBU1NFUlQoIXByb2Nlc3Nvci0+aGFuZHNoYWtlU3RyaW5n
KCkuY29udGFpbnMoJ1xuJykpOworICAgIEFTU0VSVCghcHJvY2Vzc29yLT5oYW5kc2hha2VTdHJp
bmcoKS5jb250YWlucyhzdGF0aWNfY2FzdDxVQ2hhcj4oJ1wwJykpKTsKKyAgICBtX3Byb2Nlc3Nv
cnMuYXBwZW5kKHByb2Nlc3Nvcik7Cit9CisKK2NvbnN0IFN0cmluZyBXZWJTb2NrZXRFeHRlbnNp
b25EaXNwYXRjaGVyOjpjcmVhdGVIZWFkZXJWYWx1ZSgpIGNvbnN0Cit7CisgICAgc2l6ZV90IG51
bVByb2Nlc3NvcnMgPSBtX3Byb2Nlc3NvcnMuc2l6ZSgpOworICAgIGlmICghbnVtUHJvY2Vzc29y
cykKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVy
OworICAgIGJ1aWxkZXIuYXBwZW5kKG1fcHJvY2Vzc29yc1swXS0+aGFuZHNoYWtlU3RyaW5nKCkp
OworICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgbnVtUHJvY2Vzc29yczsgKytpKSB7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCIsICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZChtX3Byb2Nl
c3NvcnNbaV0tPmhhbmRzaGFrZVN0cmluZygpKTsKKyAgICB9CisgICAgcmV0dXJuIGJ1aWxkZXIu
dG9TdHJpbmcoKTsKK30KKworYm9vbCBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyOjpwcm9j
ZXNzSGVhZGVyVmFsdWUoY29uc3QgU3RyaW5nJiBoZWFkZXJWYWx1ZSkKK3sKKyAgICBpZiAoIWhl
YWRlclZhbHVlLmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIElmIHdl
IGRvbid0IHNlbmQgU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlciwgdGhlIHNlcnZlciBz
aG91bGQgbm90IHJldHVybiB0aGUgaGVhZGVyLgorICAgIGlmICghbV9wcm9jZXNzb3JzLnNpemUo
KSkgeworICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiUmVjZWl2ZWQgdW5leHBlY3RlZCBTZWMt
V2ViU29ja2V0LUV4dGVuc2lvbnMgaGVhZGVyIjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIGNvbnN0IENTdHJpbmcgaGVhZGVyVmFsdWVEYXRhID0gaGVhZGVyVmFsdWUudXRm
OCgpOworICAgIEV4dGVuc2lvblBhcnNlciBwYXJzZXIoaGVhZGVyVmFsdWVEYXRhLmRhdGEoKSwg
aGVhZGVyVmFsdWVEYXRhLmRhdGEoKSArIGhlYWRlclZhbHVlRGF0YS5sZW5ndGgoKSk7CisKKyAg
ICB3aGlsZSAoIXBhcnNlci5maW5pc2hlZCgpKSB7CisgICAgICAgIC8vIFBhcnNlIGV4dGVuc2lv
bi10b2tlbi4KKyAgICAgICAgaWYgKCFwYXJzZXIuY29uc3VtZVRva2VuKCkpIHsKKyAgICAgICAg
ICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgaGVhZGVyIGlz
IGludmFsaWQiOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAg
IFN0cmluZyBleHRlbnNpb25Ub2tlbiA9IHBhcnNlci5jdXJyZW50VG9rZW4oKTsKKworICAgICAg
ICAvLyBQYXJzZSBleHRlbnNpb24tcGFyYW1ldGVycyBpZiBleGlzdHMuCisgICAgICAgIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IGV4dGVuc2lvblBhcmFtZXRlcnM7CisgICAgICAgIHdoaWxlIChw
YXJzZXIuY29uc3VtZUNoYXJhY3RlcignOycpKSB7CisgICAgICAgICAgICBpZiAoIXBhcnNlci5j
b25zdW1lVG9rZW4oKSkgeworICAgICAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJTZWMt
V2ViU29ja2V0LUV4dGVuc2lvbnMgaGVhZGVyIGlzIGludmFsaWQiOworICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgU3RyaW5nIHBhcmFt
ZXRlclRva2VuID0gcGFyc2VyLmN1cnJlbnRUb2tlbigpOworICAgICAgICAgICAgaWYgKHBhcnNl
ci5jb25zdW1lQ2hhcmFjdGVyKCc9JykpIHsKKyAgICAgICAgICAgICAgICBpZiAocGFyc2VyLmNv
bnN1bWVRdW90ZWRTdHJpbmdPclRva2VuKCkpCisgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lv
blBhcmFtZXRlcnMuYWRkKHBhcmFtZXRlclRva2VuLCBwYXJzZXIuY3VycmVudFRva2VuKCkpOwor
ICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBtX2ZhaWx1cmVSZWFz
b24gPSAiU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlciBpcyBpbnZhbGlkIjsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGV4dGVuc2lvblBhcmFtZXRlcnMuYWRkKHBhcmFt
ZXRlclRva2VuLCBTdHJpbmcoKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFwYXJzZXIuZmlu
aXNoZWQoKSAmJiAhcGFyc2VyLmNvbnN1bWVDaGFyYWN0ZXIoJywnKSkgeworICAgICAgICAgICAg
bV9mYWlsdXJlUmVhc29uID0gIlNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIgaXMgaW52
YWxpZCI7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBz
aXplX3QgaW5kZXg7CisgICAgICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IG1fcHJvY2Vzc29y
cy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgICAgIFdlYlNvY2tldEV4dGVuc2lvblByb2Nl
c3NvciogcHJvY2Vzc29yID0gbV9wcm9jZXNzb3JzW2luZGV4XS5nZXQoKTsKKyAgICAgICAgICAg
IGlmIChleHRlbnNpb25Ub2tlbiA9PSBwcm9jZXNzb3ItPmV4dGVuc2lvblRva2VuKCkpIHsKKyAg
ICAgICAgICAgICAgICBpZiAocHJvY2Vzc29yLT5wcm9jZXNzUmVzcG9uc2UoZXh0ZW5zaW9uUGFy
YW1ldGVycykpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIG1f
ZmFpbHVyZVJlYXNvbiA9IHByb2Nlc3Nvci0+ZmFpbHVyZVJlYXNvbigpOworICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAvLyBU
aGVyZSBpcyBubyBleHRlbnNpb24gd2hpY2ggY2FuIHByb2Nlc3MgdGhlIHJlc3BvbnNlLgorICAg
ICAgICBpZiAoaW5kZXggPT0gbV9wcm9jZXNzb3JzLnNpemUoKSkgeworICAgICAgICAgICAgbV9m
YWlsdXJlUmVhc29uID0gIlJlY2VpdmVkIHVuZXhwZWN0ZWQgZXh0ZW5zaW9uOiAiICsgZXh0ZW5z
aW9uVG9rZW47CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgcmV0dXJuIHBhcnNlci5wYXJzZWRTdWNjZXNzZnVsbHkoKTsKK30KKworU3RyaW5nIFdlYlNv
Y2tldEV4dGVuc2lvbkRpc3BhdGNoZXI6OmZhaWx1cmVSZWFzb24oKSBjb25zdAoreworICAgIHJl
dHVybiBtX2ZhaWx1cmVSZWFzb247Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShXRUJfU09DS0VUUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dl
YnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5oIGIvU291cmNlL1dlYkNvcmUv
d2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjg4
MmJiOWQwODJhNDZjN2VlZjYyNzg4YWZlNmQyNDU0MmUwNmI2MgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5o
CkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyX2gK
KyNkZWZpbmUgV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlcl9oCisKKyNpZiBFTkFCTEUoV0VC
X1NPQ0tFVFMpCisKKyNpbmNsdWRlICJXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCIKKyNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlciB7
CitwdWJsaWM6CisgICAgV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlcigpIHsgfQorCisgICAg
dm9pZCByZXNldCgpOworICAgIHZvaWQgYWRkUHJvY2Vzc29yKFBhc3NPd25QdHI8V2ViU29ja2V0
RXh0ZW5zaW9uUHJvY2Vzc29yPik7CisgICAgY29uc3QgU3RyaW5nIGNyZWF0ZUhlYWRlclZhbHVl
KCkgY29uc3Q7CisKKyAgICBib29sIHByb2Nlc3NIZWFkZXJWYWx1ZShjb25zdCBTdHJpbmcmKTsK
KyAgICBTdHJpbmcgZmFpbHVyZVJlYXNvbigpIGNvbnN0OworCitwcml2YXRlOgorICAgIFZlY3Rv
cjxPd25QdHI8V2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yPiA+IG1fcHJvY2Vzc29yczsKKyAg
ICBTdHJpbmcgbV9mYWlsdXJlUmVhc29uOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFdF
Ql9TT0NLRVRTKQorCisjZW5kaWYgLy8gV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlcl9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvblBy
b2Nlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25Q
cm9jZXNzb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZTNkNTNkNDFjNTUzNmUwNmM3ZDYzNTgxNDBkNmMzZDE2
Y2IxNjc1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU29j
a2V0RXh0ZW5zaW9uUHJvY2Vzc29yX2gKKyNkZWZpbmUgV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vz
c29yX2gKKworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yIHsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIH5XZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IoKSB7IH0KKworICAgIFN0cmluZyBl
eHRlbnNpb25Ub2tlbigpIGNvbnN0IHsgcmV0dXJuIG1fZXh0ZW5zaW9uVG9rZW47IH0KKworICAg
IC8vIFRoZSByZXR1cm4gdmFsdWUgb2YgdGhpcyBtZXRob2Qgd2lsbCBiZSBhIHBhcnQgb2YgdGhl
IHZhbHVlIG9mCisgICAgLy8gU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zLgorICAgIHZpcnR1YWwg
U3RyaW5nIGhhbmRzaGFrZVN0cmluZygpID0gMDsKKworICAgIC8vIFRoaXMgc2hvdWxkIHZhbGlk
YXRlIHRoZSBzZXJ2ZXIncyByZXNwb25zZSBwYXJhbWV0ZXJzIHdoaWNoIGFyZSBwYXNzZWQKKyAg
ICAvLyBhcyBIYXNoTWFwPGtleSwgdmFsdWU+LiBUaGlzIG1heSBhbHNvIGRvIHNvbWV0aGluZyBm
b3IgdGhlIGV4dGVuc2lvbi4KKyAgICAvLyBOb3RlIHRoYXQgdGhpcyBtZXRob2QgbWF5IGJlIGNh
bGxlZCBtb3JlIHRoYW4gb25jZSB3aGVuIHRoZSBzZXJ2ZXIKKyAgICAvLyByZXNwb25zZSBjb250
YWlucyBkdXBsaWNhdGUgZXh0ZW5zaW9uIHRva2VuIHRoYXQgbWF0Y2hlcyBleHRlbnNpb25Ub2tl
bigpLgorICAgIHZpcnR1YWwgYm9vbCBwcm9jZXNzUmVzcG9uc2UoY29uc3QgSGFzaE1hcDxTdHJp
bmcsIFN0cmluZz4mKSA9IDA7CisKKyAgICAvLyBJZiBwcm9jZWNzc1Jlc3BvbnNlKCkgcmV0dXJu
cyBmYWxzZSwgdGhpcyBzaG91bGQgcHJvdmlkZSB0aGUgcmVhc29uLgorICAgIHZpcnR1YWwgU3Ry
aW5nIGZhaWx1cmVSZWFzb24oKSB7IHJldHVybiAiRXh0ZW5zaW9uICIgKyBtX2V4dGVuc2lvblRv
a2VuICsgIiBmYWlsZWQiOyB9CisKK3Byb3RlY3RlZDoKKyAgICBXZWJTb2NrZXRFeHRlbnNpb25Q
cm9jZXNzb3IoY29uc3QgU3RyaW5nJiBleHRlbnNpb25Ub2tlbikKKyAgICAgICAgOiBtX2V4dGVu
c2lvblRva2VuKGV4dGVuc2lvblRva2VuKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
U3RyaW5nIG1fZXh0ZW5zaW9uVG9rZW47Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VC
X1NPQ0tFVFMpCisKKyNlbmRpZiAvLyBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3JfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCmluZGV4
IDg5MDllZmFmMTg0NGYxZmFjYWRiN2YxYjVlMjEzMmQyYmJkZGU4ZWYuLmIyNjE1NTczODRmYzU4
Y2VjYjNkNGNjNzhkZjY2Y2I1YmY4ZjJiZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dl
YnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKQEAgLTI4Nyw2ICsyODcsOSBAQCBDU3RyaW5n
IFdlYlNvY2tldEhhbmRzaGFrZTo6Y2xpZW50SGFuZHNoYWtlTWVzc2FnZSgpIGNvbnN0CiAgICAg
fSBlbHNlIHsKICAgICAgICAgZmllbGRzLmFwcGVuZCgiU2VjLVdlYlNvY2tldC1LZXk6ICIgKyBt
X3NlY1dlYlNvY2tldEtleSk7CiAgICAgICAgIGZpZWxkcy5hcHBlbmQoIlNlYy1XZWJTb2NrZXQt
VmVyc2lvbjogMTMiKTsKKyAgICAgICAgY29uc3QgU3RyaW5nIGV4dGVuc2lvblZhbHVlID0gbV9l
eHRlbnNpb25EaXNwYXRjaGVyLmNyZWF0ZUhlYWRlclZhbHVlKCk7CisgICAgICAgIGlmIChleHRl
bnNpb25WYWx1ZS5sZW5ndGgoKSkKKyAgICAgICAgICAgIGZpZWxkcy5hcHBlbmQoIlNlYy1XZWJT
b2NrZXQtRXh0ZW5zaW9uczogIiArIGV4dGVuc2lvblZhbHVlKTsKICAgICB9CiAKICAgICAvLyBG
aWVsZHMgaW4gdGhlIGhhbmRzaGFrZSBhcmUgc2VudCBieSB0aGUgY2xpZW50IGluIGEgcmFuZG9t
IG9yZGVyOyB0aGUKQEAgLTM0NCw2ICszNDcsOSBAQCBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0
IFdlYlNvY2tldEhhbmRzaGFrZTo6Y2xpZW50SGFuZHNoYWtlUmVxdWVzdCgpIGNvbnN0CiAgICAg
fSBlbHNlIHsKICAgICAgICAgcmVxdWVzdC5hZGRIZWFkZXJGaWVsZCgiU2VjLVdlYlNvY2tldC1L
ZXkiLCBtX3NlY1dlYlNvY2tldEtleSk7CiAgICAgICAgIHJlcXVlc3QuYWRkSGVhZGVyRmllbGQo
IlNlYy1XZWJTb2NrZXQtVmVyc2lvbiIsICIxMyIpOworICAgICAgICBjb25zdCBTdHJpbmcgZXh0
ZW5zaW9uVmFsdWUgPSBtX2V4dGVuc2lvbkRpc3BhdGNoZXIuY3JlYXRlSGVhZGVyVmFsdWUoKTsK
KyAgICAgICAgaWYgKGV4dGVuc2lvblZhbHVlLmxlbmd0aCgpKQorICAgICAgICAgICAgcmVxdWVz
dC5hZGRIZWFkZXJGaWVsZCgiU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIiwgZXh0ZW5zaW9uVmFs
dWUpOwogICAgIH0KIAogICAgIHJldHVybiByZXF1ZXN0OwpAQCAtMzUyLDYgKzM1OCw3IEBAIFdl
YlNvY2tldEhhbmRzaGFrZVJlcXVlc3QgV2ViU29ja2V0SGFuZHNoYWtlOjpjbGllbnRIYW5kc2hh
a2VSZXF1ZXN0KCkgY29uc3QKIHZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjpyZXNldCgpCiB7CiAg
ICAgbV9tb2RlID0gSW5jb21wbGV0ZTsKKyAgICBtX2V4dGVuc2lvbkRpc3BhdGNoZXIucmVzZXQo
KTsKIH0KIAogdm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OmNsZWFyU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpCkBAIC00NjksMTQgKzQ3NiwxNCBAQCBTdHJpbmcgV2ViU29ja2V0SGFuZHNoYWtlOjpz
ZXJ2ZXJXZWJTb2NrZXRBY2NlcHQoKSBjb25zdAogICAgIHJldHVybiBtX3Jlc3BvbnNlLmhlYWRl
ckZpZWxkcygpLmdldCgic2VjLXdlYnNvY2tldC1hY2NlcHQiKTsKIH0KIAotU3RyaW5nIFdlYlNv
Y2tldEhhbmRzaGFrZTo6c2VydmVyV2ViU29ja2V0RXh0ZW5zaW9ucygpIGNvbnN0Citjb25zdCBX
ZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSYgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXJ2ZXJIYW5k
c2hha2VSZXNwb25zZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcmVzcG9uc2UuaGVhZGVyRmll
bGRzKCkuZ2V0KCJzZWMtd2Vic29ja2V0LWV4dGVuc2lvbnMiKTsKKyAgICByZXR1cm4gbV9yZXNw
b25zZTsKIH0KIAotY29uc3QgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UmIFdlYlNvY2tldEhh
bmRzaGFrZTo6c2VydmVySGFuZHNoYWtlUmVzcG9uc2UoKSBjb25zdAordm9pZCBXZWJTb2NrZXRI
YW5kc2hha2U6OmFkZEV4dGVuc2lvblByb2Nlc3NvcihQYXNzT3duUHRyPFdlYlNvY2tldEV4dGVu
c2lvblByb2Nlc3Nvcj4gcHJvY2Vzc29yKQogewotICAgIHJldHVybiBtX3Jlc3BvbnNlOworICAg
IG1fZXh0ZW5zaW9uRGlzcGF0Y2hlci5hZGRQcm9jZXNzb3IocHJvY2Vzc29yKTsKIH0KIAogS1VS
TCBXZWJTb2NrZXRIYW5kc2hha2U6Omh0dHBVUkxGb3JBdXRoZW50aWNhdGlvbkFuZENvb2tpZXMo
KSBjb25zdApAQCAtNjI1LDcgKzYzMiwxNSBAQCBjb25zdCBjaGFyKiBXZWJTb2NrZXRIYW5kc2hh
a2U6OnJlYWRIVFRQSGVhZGVycyhjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogZQogICAg
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICAgICAgTE9HKE5ldHdvcmssICJuYW1l
PSVzIHZhbHVlPSVzIiwgbmFtZVN0ci5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB2YWx1ZVN0ci51
dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgbV9yZXNwb25zZS5hZGRIZWFkZXJGaWVsZChuYW1lU3Ry
LCB2YWx1ZVN0cik7CisgICAgICAgIC8vIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBtYXkgYmUg
c3BsaXQuIFdlIHBhcnNlIGFuZCBjaGVjayB0aGUKKyAgICAgICAgLy8gaGVhZGVyIHZhbHVlIGV2
ZXJ5IHRpbWUgdGhlIGhlYWRlciBhcHBlYXJzLgorICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UoInNlYy13ZWJzb2NrZXQtZXh0ZW5zaW9ucyIsIG5hbWVTdHIpKSB7CisgICAgICAgICAgICBp
ZiAoIW1fZXh0ZW5zaW9uRGlzcGF0Y2hlci5wcm9jZXNzSGVhZGVyVmFsdWUodmFsdWVTdHIpKSB7
CisgICAgICAgICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gbV9leHRlbnNpb25EaXNwYXRjaGVy
LmZhaWx1cmVSZWFzb24oKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX3Jlc3BvbnNlLmFkZEhlYWRlckZpZWxk
KG5hbWVTdHIsIHZhbHVlU3RyKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgcmV0dXJuIDA7CkBAIC02MzksNyArNjU0LDYgQEAgYm9vbCBXZWJTb2NrZXRIYW5kc2hha2U6
OmNoZWNrUmVzcG9uc2VIZWFkZXJzKCkKICAgICBjb25zdCBTdHJpbmcmIHNlcnZlclVwZ3JhZGUg
PSB0aGlzLT5zZXJ2ZXJVcGdyYWRlKCk7CiAgICAgY29uc3QgU3RyaW5nJiBzZXJ2ZXJDb25uZWN0
aW9uID0gdGhpcy0+c2VydmVyQ29ubmVjdGlvbigpOwogICAgIGNvbnN0IFN0cmluZyYgc2VydmVy
V2ViU29ja2V0QWNjZXB0ID0gdGhpcy0+c2VydmVyV2ViU29ja2V0QWNjZXB0KCk7Ci0gICAgY29u
c3QgU3RyaW5nJiBzZXJ2ZXJXZWJTb2NrZXRFeHRlbnNpb25zID0gdGhpcy0+c2VydmVyV2ViU29j
a2V0RXh0ZW5zaW9ucygpOwogCiAgICAgaWYgKHNlcnZlclVwZ3JhZGUuaXNOdWxsKCkpIHsKICAg
ICAgICAgbV9mYWlsdXJlUmVhc29uID0gIkVycm9yIGR1cmluZyBXZWJTb2NrZXQgaGFuZHNoYWtl
OiAnVXBncmFkZScgaGVhZGVyIGlzIG1pc3NpbmciOwpAQCAtNjkyLDEzICs3MDYsNiBAQCBib29s
IFdlYlNvY2tldEhhbmRzaGFrZTo6Y2hlY2tSZXNwb25zZUhlYWRlcnMoKQogICAgICAgICAgICAg
bV9mYWlsdXJlUmVhc29uID0gIkVycm9yIGR1cmluZyBXZWJTb2NrZXQgaGFuZHNoYWtlOiBTZWMt
V2ViU29ja2V0LUFjY2VwdCBtaXNtYXRjaCI7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KLSAgICAgICAgaWYgKCFzZXJ2ZXJXZWJTb2NrZXRFeHRlbnNpb25zLmlzTnVsbCgp
KSB7Ci0gICAgICAgICAgICAvLyBXZWJTb2NrZXQgcHJvdG9jb2wgZXh0ZW5zaW9ucyBhcmUgbm90
IHN1cHBvcnRlZCB5ZXQuCi0gICAgICAgICAgICAvLyBXZSBkbyBub3Qgc2VuZCBTZWMtV2ViU29j
a2V0LUV4dGVuc2lvbnMgaGVhZGVyIGluIG91ciByZXF1ZXN0LCB0aHVzCi0gICAgICAgICAgICAv
LyBzZXJ2ZXJzIHNob3VsZCBub3QgcmV0dXJuIHRoaXMgaGVhZGVyLCBlaXRoZXIuCi0gICAgICAg
ICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiRXJyb3IgZHVyaW5nIFdlYlNvY2tldCBoYW5kc2hha2U6
IFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIgaXMgaW52YWxpZCI7Ci0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5o
IGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaAppbmRleCAx
MmMxODQwMTljMmNhYzY3ZGE5ZmYzNDkyYzQ3YjliNzAyYWNlYWI3Li45Nzc3ZmI5NGRhZTViYmY3
MmNmNWQ2OTVlOGNmYTBlMDlhOTE1ODRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKQEAgLTM1LDggKzM1LDExIEBACiAKICNpbmNsdWRlICJL
VVJMLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRF
eHRlbnNpb25EaXNwYXRjaGVyLmgiCisjaW5jbHVkZSAiV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vz
c29yLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oIgogI2luY2x1ZGUg
IldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04MSwxMCArODQsMTEgQEAgcHVibGljOgog
ICAgIFN0cmluZyBzZXJ2ZXJVcGdyYWRlKCkgY29uc3Q7CiAgICAgU3RyaW5nIHNlcnZlckNvbm5l
Y3Rpb24oKSBjb25zdDsKICAgICBTdHJpbmcgc2VydmVyV2ViU29ja2V0QWNjZXB0KCkgY29uc3Q7
IC8vIE9ubHkgZm9yIGh5YmktMTAgaGFuZHNoYWtlLgotICAgIFN0cmluZyBzZXJ2ZXJXZWJTb2Nr
ZXRFeHRlbnNpb25zKCkgY29uc3Q7IC8vIE9ubHkgZm9yIGh5YmktMTAgaGFuZHNoYWtlLgogCiAg
ICAgY29uc3QgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UmIHNlcnZlckhhbmRzaGFrZVJlc3Bv
bnNlKCkgY29uc3Q7CiAKKyAgICB2b2lkIGFkZEV4dGVuc2lvblByb2Nlc3NvcihQYXNzT3duUHRy
PFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvcj4pOworCiBwcml2YXRlOgogICAgIEtVUkwgaHR0
cFVSTEZvckF1dGhlbnRpY2F0aW9uQW5kQ29va2llcygpIGNvbnN0OwogCkBAIC0xMTYsNiArMTIw
LDggQEAgcHJpdmF0ZToKICAgICAvLyBGb3IgaHliaS0xMCBoYW5kc2hha2UuCiAgICAgU3RyaW5n
IG1fc2VjV2ViU29ja2V0S2V5OwogICAgIFN0cmluZyBtX2V4cGVjdGVkQWNjZXB0OworCisgICAg
V2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlciBtX2V4dGVuc2lvbkRpc3BhdGNoZXI7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXBpIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQppbmRl
eCBjODUwMmY1NzNjNDUxNzAxNzM1NDg1YWY0NzUyM2U3NTEyOTRjODNkLi4zNWYyYjE5OTA3Nzlk
NjY5ZWY4MDQwMmZiMDBmMmE1NTYxNDdjMzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXBpCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cGkKQEAgLTExOCw2ICsxMTgsNyBAQAogICAgICAgICAgICAgJ3Rlc3RzL1dlYkxheWVyVGVzdC5j
cHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1dlYlBhZ2VOZXdTZXJpYWxpemVyVGVzdC5jcHAnLAog
ICAgICAgICAgICAgJ3Rlc3RzL1dlYlBhZ2VTZXJpYWxpemVyVGVzdC5jcHAnLAorICAgICAgICAg
ICAgJ3Rlc3RzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXJUZXN0LmNwcCcsCiAgICAgICAg
ICAgICAndGVzdHMvV2ViVVJMUmVxdWVzdFRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9X
ZWJWaWV3VGVzdC5jcHAnLAogICAgICAgICBdLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyVGVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXJUZXN0
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mYTBiN2Q3ZGRhOGE2ZGZmNjk1OGNlMmU4NDE1NGJhMzI3MDY1MTRk
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJTb2Nr
ZXRFeHRlbnNpb25EaXNwYXRjaGVyVGVzdC5jcHAKQEAgLTAsMCArMSwxNzUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRj
aGVyLmgiCisKKyNpbmNsdWRlICJXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCIKKworI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgor
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIHsKKworY2xhc3MgV2ViU29j
a2V0RXh0ZW5zaW9uRGlzcGF0Y2hlclRlc3Q7CisKK2NsYXNzIE1vY2tXZWJTb2NrZXRFeHRlbnNp
b25Qcm9jZXNzb3IgOiBwdWJsaWMgV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yIHsKK3B1Ymxp
YzoKKyAgICBNb2NrV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yKGNvbnN0IFN0cmluZyYgbmFt
ZSwgV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlclRlc3QqIHRlc3QpCisgICAgICAgIDogV2Vi
U29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yKG5hbWUpCisgICAgICAgICwgbV90ZXN0KHRlc3QpCisg
ICAgeworICAgIH0KKyAgICB2aXJ0dWFsIFN0cmluZyBoYW5kc2hha2VTdHJpbmcoKSBPVkVSUklE
RSB7IHJldHVybiBleHRlbnNpb25Ub2tlbigpOyB9CisgICAgdmlydHVhbCBib29sIHByb2Nlc3NS
ZXNwb25zZShjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYpIE9WRVJSSURFOworCitwcml2
YXRlOgorICAgIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXJUZXN0KiBtX3Rlc3Q7Cit9Owor
CitjbGFzcyBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5n
OjpUZXN0IHsKK3B1YmxpYzoKKyAgICBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyVGVzdCgp
IHsgfQorCisgICAgdm9pZCBTZXRVcCgpIHsgfQorCisgICAgdm9pZCBUZWFyRG93bigpIHsgfQor
CisgICAgdm9pZCBhZGRNb2NrUHJvY2Vzc29yKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uVG9rZW4p
CisgICAgeworICAgICAgICBtX2V4dGVuc2lvbnMuYWRkUHJvY2Vzc29yKGFkb3B0UHRyKG5ldyBN
b2NrV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yKGV4dGVuc2lvblRva2VuLCB0aGlzKSkpOwor
CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRSZXN1bHQoY29uc3QgU3RyaW5nJiBleHRlbnNpb25U
b2tlbiwgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIHBhcmFtZXRlcnMpCisgICAgewor
ICAgICAgICBtX3BhcnNlZEV4dGVuc2lvblRva2Vucy5hcHBlbmQoZXh0ZW5zaW9uVG9rZW4pOwor
ICAgICAgICBtX3BhcnNlZFBhcmFtZXRlcnMuYXBwZW5kKHBhcmFtZXRlcnMpOworICAgIH0KKwor
cHJvdGVjdGVkOgorICAgIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIgbV9leHRlbnNpb25z
OworICAgIFZlY3RvcjxTdHJpbmc+IG1fcGFyc2VkRXh0ZW5zaW9uVG9rZW5zOworICAgIFZlY3Rv
cjxIYXNoTWFwPFN0cmluZywgU3RyaW5nPiA+IG1fcGFyc2VkUGFyYW1ldGVyczsKK307CisKK2Jv
b2wgTW9ja1dlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvcjo6cHJvY2Vzc1Jlc3BvbnNlKGNvbnN0
IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBwYXJhbWV0ZXJzKQoreworICAgIG1fdGVzdC0+YXBw
ZW5kUmVzdWx0KGV4dGVuc2lvblRva2VuKCksIHBhcmFtZXRlcnMpOworICAgIHJldHVybiB0cnVl
OworfQorCitURVNUX0YoV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlclRlc3QsIFRlc3RTaW5n
bGUpCit7CisgICAgYWRkTW9ja1Byb2Nlc3NvcigiZGVmbGF0ZS1mcmFtZSIpOworICAgIEVYUEVD
VF9UUlVFKG1fZXh0ZW5zaW9ucy5wcm9jZXNzSGVhZGVyVmFsdWUoImRlZmxhdGUtZnJhbWUiKSk7
CisgICAgRVhQRUNUX0VRKDFVTCwgbV9wYXJzZWRFeHRlbnNpb25Ub2tlbnMuc2l6ZSgpKTsKKyAg
ICBFWFBFQ1RfRVEoImRlZmxhdGUtZnJhbWUiLCBtX3BhcnNlZEV4dGVuc2lvblRva2Vuc1swXSk7
CisgICAgRVhQRUNUX0VRKDAsIG1fcGFyc2VkUGFyYW1ldGVyc1swXS5zaXplKCkpOworfQorCitU
RVNUX0YoV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlclRlc3QsIFRlc3RQYXJhbWV0ZXJzKQor
eworICAgIGFkZE1vY2tQcm9jZXNzb3IoIm11eCIpOworICAgIEVYUEVDVF9UUlVFKG1fZXh0ZW5z
aW9ucy5wcm9jZXNzSGVhZGVyVmFsdWUoIm11eDsgbWF4LWNoYW5uZWxzPTQ7IGZsb3ctY29udHJv
bCAgIikpOworICAgIEVYUEVDVF9FUSgxVUwsIG1fcGFyc2VkRXh0ZW5zaW9uVG9rZW5zLnNpemUo
KSk7CisgICAgRVhQRUNUX0VRKCJtdXgiLCBtX3BhcnNlZEV4dGVuc2lvblRva2Vuc1swXSk7Cisg
ICAgRVhQRUNUX0VRKDIsIG1fcGFyc2VkUGFyYW1ldGVyc1swXS5zaXplKCkpOworICAgIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+OjppdGVyYXRvciBwYXJhbWV0ZXIgPSBtX3BhcnNlZFBhcmFtZXRl
cnNbMF0uZmluZCgibWF4LWNoYW5uZWxzIik7CisgICAgRVhQRUNUX1RSVUUocGFyYW1ldGVyICE9
IG1fcGFyc2VkUGFyYW1ldGVyc1swXS5lbmQoKSk7CisgICAgRVhQRUNUX0VRKCI0IiwgcGFyYW1l
dGVyLT5zZWNvbmQpOworICAgIHBhcmFtZXRlciA9IG1fcGFyc2VkUGFyYW1ldGVyc1swXS5maW5k
KCJmbG93LWNvbnRyb2wiKTsKKyAgICBFWFBFQ1RfVFJVRShwYXJhbWV0ZXIgIT0gbV9wYXJzZWRQ
YXJhbWV0ZXJzWzBdLmVuZCgpKTsKKyAgICBFWFBFQ1RfVFJVRShwYXJhbWV0ZXItPnNlY29uZC5p
c051bGwoKSk7Cit9CisKK1RFU1RfRihXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyVGVzdCwg
VGVzdE11bHRpcGxlKQoreworICAgIHN0cnVjdCB7CisgICAgICAgIFN0cmluZyB0b2tlbjsKKyAg
ICAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gcGFyYW1ldGVyczsKKyAgICB9IGV4cGVjdGVk
WzJdOworICAgIGV4cGVjdGVkWzBdLnRva2VuID0gIm11eCI7CisgICAgZXhwZWN0ZWRbMF0ucGFy
YW1ldGVycy5hZGQoIm1heC1jaGFubmVscyIsICI0Iik7CisgICAgZXhwZWN0ZWRbMF0ucGFyYW1l
dGVycy5hZGQoImZsb3ctY29udHJvbCIsIFN0cmluZygpKTsKKyAgICBleHBlY3RlZFsxXS50b2tl
biA9ICJkZWZsYXRlLWZyYW1lIjsKKworICAgIGFkZE1vY2tQcm9jZXNzb3IoIm11eCIpOworICAg
IGFkZE1vY2tQcm9jZXNzb3IoImRlZmxhdGUtZnJhbWUiKTsKKyAgICBFWFBFQ1RfVFJVRShtX2V4
dGVuc2lvbnMucHJvY2Vzc0hlYWRlclZhbHVlKCJtdXggOyAgbWF4LWNoYW5uZWxzID00O2Zsb3ct
Y29udHJvbCwgZGVmbGF0ZS1mcmFtZSAgIikpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c2l6ZW9mKGV4cGVjdGVkKSAvIHNpemVvZihleHBlY3RlZFswXSk7ICsraSkgeworICAgICAgICBF
WFBFQ1RfRVEoZXhwZWN0ZWRbaV0udG9rZW4sIG1fcGFyc2VkRXh0ZW5zaW9uVG9rZW5zW2ldKTsK
KyAgICAgICAgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGV4cGVjdGVkUGFyYW1ldGVy
cyA9IGV4cGVjdGVkW2ldLnBhcmFtZXRlcnM7CisgICAgICAgIGNvbnN0IEhhc2hNYXA8U3RyaW5n
LCBTdHJpbmc+JiBwYXJzZWRQYXJhbWV0ZXJzID0gbV9wYXJzZWRQYXJhbWV0ZXJzW2ldOworICAg
ICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRbaV0ucGFyYW1ldGVycy5zaXplKCksIG1fcGFyc2VkUGFy
YW1ldGVyc1tpXS5zaXplKCkpOworICAgICAgICBmb3IgKEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+
Ojpjb25zdF9pdGVyYXRvciBpdGVyYXRvciA9IGV4cGVjdGVkUGFyYW1ldGVycy5iZWdpbigpOyBp
dGVyYXRvciAhPSBleHBlY3RlZFBhcmFtZXRlcnMuZW5kKCk7ICsraXRlcmF0b3IpIHsKKyAgICAg
ICAgICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBwYXJzZWQgPSBw
YXJzZWRQYXJhbWV0ZXJzLmZpbmQoaXRlcmF0b3ItPmZpcnN0KTsKKyAgICAgICAgICAgIEVYUEVD
VF9UUlVFKHBhcnNlZCAhPSBwYXJzZWRQYXJhbWV0ZXJzLmVuZCgpKTsKKyAgICAgICAgICAgIGlm
IChpdGVyYXRvci0+c2Vjb25kLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVF
KHBhcnNlZC0+c2Vjb25kLmlzTnVsbCgpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICBFWFBFQ1RfRVEoaXRlcmF0b3ItPnNlY29uZCwgcGFyc2VkLT5zZWNvbmQpOworICAgICAg
ICB9CisgICAgfQorfQorCitURVNUX0YoV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlclRlc3Qs
IFRlc3RRdW90ZWRTdHJpbmcpCit7CisgICAgYWRkTW9ja1Byb2Nlc3NvcigieC1mb28iKTsKKyAg
ICBFWFBFQ1RfVFJVRShtX2V4dGVuc2lvbnMucHJvY2Vzc0hlYWRlclZhbHVlKCJ4LWZvbzsgcGFy
YW0xPVwicXVvdGVkIHN0cmluZ1wiOyBwYXJhbTI9XCJcXFwicXVvdGVkXFxcIiBzdHJpbmdcXFxc
XCIiKSk7CisgICAgRVhQRUNUX0VRKDIsIG1fcGFyc2VkUGFyYW1ldGVyc1swXS5zaXplKCkpOwor
ICAgIEVYUEVDVF9FUSgicXVvdGVkIHN0cmluZyIsIG1fcGFyc2VkUGFyYW1ldGVyc1swXS5nZXQo
InBhcmFtMSIpKTsKKyAgICBFWFBFQ1RfRVEoIlwicXVvdGVkXCIgc3RyaW5nXFwiLCBtX3BhcnNl
ZFBhcmFtZXRlcnNbMF0uZ2V0KCJwYXJhbTIiKSk7Cit9CisKK1RFU1RfRihXZWJTb2NrZXRFeHRl
bnNpb25EaXNwYXRjaGVyVGVzdCwgVGVzdEludmFsaWQpCit7CisgICAgY29uc3QgY2hhciogaW5w
dXRzW10gPSB7CisgICAgICAgICJcIngtZm9vXCIiLAorICAgICAgICAieC1iYXoiLAorICAgICAg
ICAieC1mb29cXCIsCisgICAgICAgICJ4LShmb28pIiwKKyAgICAgICAgIngtZm9vOyAiLAorICAg
ICAgICAieC1mb287IGJhcj0iLAorICAgICAgICAieC1mb287IGJhcj14IHkiLAorICAgICAgICAi
eC1mb287IGJhcj1cIm1pc21hdGNoIHF1b3RlIiwKKyAgICAgICAgIngtZm9vOyBiYXI9XCJcXFwi
IiwKKyAgICAgICAgIngtZm9vOyBcImJhclwiPWJheiIsCisgICAgICAgICJ4LWZvbyB4LWJhciIs
CisgICAgICAgICJ4LWZvbywgeC1iYXoiCisgICAgICAgICJ4LWZvbywgIiwKKyAgICB9OworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZW9mKGlucHV0cykgLyBzaXplb2YoaW5wdXRzWzBd
KTsgKytpKSB7CisgICAgICAgIG1fZXh0ZW5zaW9ucy5yZXNldCgpOworICAgICAgICBhZGRNb2Nr
UHJvY2Vzc29yKCJ4LWZvbyIpOworICAgICAgICBhZGRNb2NrUHJvY2Vzc29yKCJ4LWJhciIpOwor
ICAgICAgICBFWFBFQ1RfRkFMU0UobV9leHRlbnNpb25zLnByb2Nlc3NIZWFkZXJWYWx1ZShpbnB1
dHNbaV0pKTsKKyAgICB9Cit9CisKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2ODYxMjBjNGI0NzEwNjU4YjljNjFmYTdi
ODkzMzg3OGMzNDY0MTZkLi4zMGI0NDcwZGM1YjEzODllMjNmZDU3NDRhNGZkYWU1MTlmYzI1YTk0
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDItMDkgIEtlbmljaGkgSXNoaWJhc2hpICA8
YmFzaGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBXZWJTb2NrZXQgZXh0ZW5zaW9uIHN1
cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4
MDc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCisKKyAgICAgICAgKiBodHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LWV4dGVuc2lvbnMt
aGVhZGVyLWV4cGVjdGVkLnR4dDogUmViYXNlbGluZWQuCisKIDIwMTItMDItMDkgIEphbWVzIFJv
Ymluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFVwZGF0
ZSBiYXNlbGluZXMgZm9yIGNvbXBvc2l0aW5nL2lmcmFtZXMvaWZyYW1lLWNvbnRlbnQtZmxpcHBp
bmcuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1leHRlbnNpb25zLWhlYWRlci1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1m
YWlsLWJ5LWV4dGVuc2lvbnMtaGVhZGVyLWV4cGVjdGVkLnR4dAppbmRleCBiMTQ2OTdjOWRiYzhh
NzY5MDFkYzU4NWRlMTNlNGJjNTk0OTE1MDFiLi5hZGYwNmI2NTFkNmI0NzE1YjRhMWI5N2M4N2M5
NjAyMzNhYWUxZmEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LWV4dGVuc2lvbnMtaGVhZGVyLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hh
bmRzaGFrZS1mYWlsLWJ5LWV4dGVuc2lvbnMtaGVhZGVyLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsx
LDQgQEAKLUNPTlNPTEUgTUVTU0FHRTogRXJyb3IgZHVyaW5nIFdlYlNvY2tldCBoYW5kc2hha2U6
IFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIgaXMgaW52YWxpZAorQ09OU09MRSBNRVNT
QUdFOiBSZWNlaXZlZCB1bmV4cGVjdGVkIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIK
IFRlc3Qgd2hldGhlciBXZWJTb2NrZXQgaGFuZHNoYWtlIGZhaWxzIGlmIHRoZSBzZXJ2ZXIgc2Vu
ZHMgU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlci4KIAogT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>