<?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>34994</bug_id>
          
          <creation_ts>2010-02-16 13:55:49 -0800</creation_ts>
          <short_desc>Add sync bindings for Worker access to DB</short_desc>
          <delta_ts>2010-05-10 23:31:12 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P4</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>34990</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric U.">ericu</reporter>
          <assigned_to name="Dumitru Daniliuc">dumi</assigned_to>
          <cc>abarth</cc>
    
    <cc>aroben</cc>
    
    <cc>beidson</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dimich</cc>
    
    <cc>dumi</cc>
    
    <cc>ericu</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>jorlow</cc>
    
    <cc>michaeln</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>190734</commentid>
    <comment_count>0</comment_count>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-02-16 13:55:49 -0800</bug_when>
    <thetext>This will take a bit more code than the async bindings, as the underlying objects need to be implemented [they don&apos;t exist in the page dom either].  This may be worth breaking up into multiple patches.

Umbrella bug 34990 depends on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216624</commentid>
    <comment_count>1</comment_count>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-04-23 16:43:56 -0700</bug_when>
    <thetext>*** Bug 38061 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216678</commentid>
    <comment_count>2</comment_count>
      <attachid>54212</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-04-23 20:19:48 -0700</bug_when>
    <thetext>Created attachment 54212
patch #1: stubs for storage classes

JSC and V8 bindings are coming next, followed by IDL files which will connect the bindings to the respective class methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216679</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-23 20:24:13 -0700</bug_when>
    <thetext>Attachment 54212 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/storage/DatabaseSync.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/storage/SQLTransactionSync.h:35:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216682</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-23 20:29:02 -0700</bug_when>
    <thetext>Attachment 54212 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/1901002</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216685</commentid>
    <comment_count>5</comment_count>
      <attachid>54213</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-04-23 20:37:10 -0700</bug_when>
    <thetext>Created attachment 54213
patch #1: stubs for storage classes

Same patch. Should fix Chromium and style problems.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217126</commentid>
    <comment_count>6</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-04-26 08:59:28 -0700</bug_when>
    <thetext>Started doing reviewing.  Haven&apos;t found anything that&apos;s for sure a bug yet, but I&apos;m VERY concerned by your use of TheadSafeShared here.  If something is ThreadSafeShared and owns any Strings, for example, you must be sure to only return copies to anything that even might take a ref to them for example.  There&apos;s just a lot of ways to mess this stuff up.  Is there any way to simplify the design so that objects can be created/refed/derefed on the same thread for simplicity?  Maybe objects can be split up based on what thread they operate on?

I know we already have a bunch of stuff on database that exists on multiple threads, but I&apos;d really like to see us find ways to simplify this stuff.  WebCore/WTF is just not designed very well for threadsafe programming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217134</commentid>
    <comment_count>7</comment_count>
      <attachid>54213</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-26 09:25:23 -0700</bug_when>
    <thetext>Comment on attachment 54213
patch #1: stubs for storage classes

good to see this coming in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217135</commentid>
    <comment_count>8</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-26 09:26:15 -0700</bug_when>
    <thetext>Hey, the fancy review didn&apos;t take my comments :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217137</commentid>
    <comment_count>9</comment_count>
      <attachid>54213</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-26 09:26:53 -0700</bug_when>
    <thetext>Comment on attachment 54213
patch #1: stubs for storage classes

Since Jerermy&apos;s reviewing and has concerns, I&apos;ll leave it to him.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217138</commentid>
    <comment_count>10</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-04-26 09:28:10 -0700</bug_when>
    <thetext>I read Jeremy&apos;s review - which shows a lot of concern for thread safety and makes suggestions for refinement, then I see Dimitri r+ without further comment on the matter or Dumitri&apos;s response.

I share Jeremy&apos;s concerns...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217139</commentid>
    <comment_count>11</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-04-26 09:28:58 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 54213 [details])
&gt; Since Jerermy&apos;s reviewing and has concerns, I&apos;ll leave it to him.

Lol.  I wonder why it didn&apos;t give me a mid-air collision on my comment.

Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217147</commentid>
    <comment_count>12</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-26 09:36:57 -0700</bug_when>
    <thetext>I think the mid-air collision thing is broken! It didn&apos;t warn me about Jeremy&apos;s comment either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217220</commentid>
    <comment_count>13</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-04-26 12:23:01 -0700</bug_when>
    <thetext>I think we can get away with accessing the DatabaseSync and SQLTransactionSyncCallback objects only on the context thread. However, SQLTransactionSync needs to be created on the main thread (when DatabaseSync::transaction() called), and needs to be able to run stuff on the DB thread.

Would you be OK with making DatabaseSync and SQLTransactionSyncCallback not ThreadSafeShared, but leave SQLTransactionSync as it is?

Also, no matter what we do, I plan to add ASSERTs to almost every single method of these classes to make sure they&apos;re called on the correct thread, when I add the actual implementations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217224</commentid>
    <comment_count>14</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-04-26 12:42:07 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; I think we can get away with accessing the DatabaseSync and
&gt; SQLTransactionSyncCallback objects only on the context thread. However,
&gt; SQLTransactionSync needs to be created on the main thread (when
&gt; DatabaseSync::transaction() called), and needs to be able to run stuff on the
&gt; DB thread.
&gt; 
&gt; Would you be OK with making DatabaseSync and SQLTransactionSyncCallback not
&gt; ThreadSafeShared, but leave SQLTransactionSync as it is?

Is it possible for it to be created on the main thread and then be passed off to the background thread (which would hold all references to it)?  If so, then even that could be just RefCounted.

If not, then you&apos;ll need to make sure that it gives up any refs it might hold to objects on the DB thread only on the DB thread (or ensure the DB thread is dead before giving up such a ref).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217249</commentid>
    <comment_count>15</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-04-26 13:27:37 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Is it possible for it to be created on the main thread and then be passed off
&gt; to the background thread (which would hold all references to it)?  If so, then
&gt; even that could be just RefCounted.

I don&apos;t think this is possible. We need to run the transaction callback on the main/context thread, so calls to SQLTransactionSync::executeSQL() will happen on the context thread.

&gt; If not, then you&apos;ll need to make sure that it gives up any refs it might hold
&gt; to objects on the DB thread only on the DB thread (or ensure the DB thread is
&gt; dead before giving up such a ref).

That&apos;s the plan.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217280</commentid>
    <comment_count>16</comment_count>
      <attachid>54331</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-04-26 14:29:56 -0700</bug_when>
    <thetext>Created attachment 54331
patch #1: stubs for storage classes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217281</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-26 14:31:29 -0700</bug_when>
    <thetext>Attachment 54331 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/storage/SQLTransactionSync.cpp:38:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/WebCore.vcproj/WebCore.vcproj:42850:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
Suppressing further [whitespace/carriage_return] reports for this file.
Total errors found: 21 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217283</commentid>
    <comment_count>18</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-04-26 14:34:22 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Attachment 54331 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot;
&gt; exit_code: 1
&gt; WebCore/storage/SQLTransactionSync.cpp:38:  Alphabetical sorting problem. 
&gt; [build/include_order] [4]

Will fix in the next upload or on landing.

&gt; WebCore/WebCore.vcproj/WebCore.vcproj:42850:  One or more unexpected \r (^M)
&gt; found; better to use only a \n  [whitespace/carriage_return] [1]
&gt; Suppressing further [whitespace/carriage_return] reports for this file.
&gt; Total errors found: 21 in 11 files

This is a Windows file, it&apos;s supposed to have the ^Ms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217446</commentid>
    <comment_count>19</comment_count>
      <attachid>54371</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-04-26 19:30:35 -0700</bug_when>
    <thetext>Created attachment 54371
patch #1: stubs for storage classes

After talking to Michael and Eric about this, we decided that it would be best have a single-threaded sync API implementation (everything&apos;s done on the worker&apos;s context thread). So I made small changes to the patch to account for that.

In case you wonder why we don&apos;t want to use the DB thread:
-- no benefit: the main thread cannot do anything while the task is processed on the DB thread.
-- simpler code: no locks, thread-safe classes, tasks, thread switching, etc.
-- faster: no need to wait for the DB thread to run the async DB tasks that are in the queue before getting to the sync task.
-- fewer changes to the existing code: no need to modify DatabaseThread, for example, to support both types of databases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217450</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-26 19:36:07 -0700</bug_when>
    <thetext>Attachment 54371 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/WebCore.vcproj/WebCore.vcproj:42850:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
Suppressing further [whitespace/carriage_return] reports for this file.
Total errors found: 20 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217679</commentid>
    <comment_count>21</comment_count>
      <attachid>54371</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-04-27 06:50:17 -0700</bug_when>
    <thetext>Comment on attachment 54371
patch #1: stubs for storage classes

&gt; Index: WebCore/storage/DatabaseSync.cpp
&gt; ===================================================================
&gt; --- WebCore/storage/DatabaseSync.cpp	(revision 0)
&gt; +++ WebCore/storage/DatabaseSync.cpp	(revision 0)
&gt; @@ -0,0 +1,120 @@
&gt; +/*
&gt; + * Copyright (C) 2010 Google Inc. All rights reserved.
&gt; + *
&gt; + * Redistribution and use in source and binary forms, with or without
&gt; + * modification, are permitted provided that the following conditions
&gt; + * are met:
&gt; + *
&gt; + * 1.  Redistributions of source code must retain the above copyright
&gt; + *     notice, this list of conditions and the following disclaimer.
&gt; + * 2.  Redistributions in binary form must reproduce the above copyright
&gt; + *     notice, this list of conditions and the following disclaimer in the
&gt; + *     documentation and/or other materials provided with the distribution.
&gt; + * 3.  Neither the name of Apple Computer, Inc. (&quot;Apple&quot;) nor the names of
&gt; + *     its contributors may be used to endorse or promote products derived
&gt; + *     from this software without specific prior written permission.
&gt; + *
&gt; + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; AND ANY
&gt; + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
&gt; + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
&gt; + * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
&gt; + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
&gt; + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
&gt; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
&gt; + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
&gt; + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
&gt; + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
&gt; + */
&gt; +
&gt; +#include &quot;config.h&quot;
&gt; +#include &quot;DatabaseSync.h&quot;
&gt; +
&gt; +#include &lt;wtf/StdLibExtras.h&gt;

Move this inside the block below.

&gt; +
&gt; +#if ENABLE(DATABASE)
&gt; +#include &quot;DatabaseCallback.h&quot;
&gt; +#include &quot;ExceptionCode.h&quot;
&gt; +#include &quot;SQLTransactionSyncCallback.h&quot;
&gt; +#include &quot;ScriptExecutionContext.h&quot;
&gt; +#include &lt;wtf/PassRefPtr.h&gt;
&gt; +#include &lt;wtf/RefPtr.h&gt;
&gt; +
&gt; +#endif // ENABLE(DATABASE)

This is very confusing and ugly.  Please find a better way.  Ideally by not writing code that requires this function when database is not enabled.

&gt; +
&gt; +namespace WebCore {
&gt; +
&gt; +const String&amp; DatabaseSync::databaseInfoTableName()
&gt; +{
&gt; +    DEFINE_STATIC_LOCAL(String, name, (&quot;__WebKitDatabaseInfoTable__&quot;));
&gt; +    return name;
&gt; +}
&gt; +
&gt; +#if ENABLE(DATABASE)
&gt; +
&gt; +static bool isSyncDatabaseAvailable = true;
&gt; +
&gt; +void DatabaseSync::setIsAvailable(bool available)
&gt; +{
&gt; +    isSyncDatabaseAvailable = available;
&gt; +}
&gt; +
&gt; +bool DatabaseSync::isAvailable()
&gt; +{
&gt; +    return isSyncDatabaseAvailable;
&gt; +}
&gt; +
&gt; +PassRefPtr&lt;DatabaseSync&gt; DatabaseSync::openDatabaseSync(
&gt; +    ScriptExecutionContext* context, const String&amp; /*name*/, const String&amp; /*expectedVersion*/,
&gt; +    const String&amp; /*displayName*/, unsigned long /*estimatedSize*/,
&gt; +    PassRefPtr&lt;DatabaseCallback&gt; /*creationCallback*/, ExceptionCode&amp; e)

Is there any precedent for splitting up a line like this?  I can think of cases like below, but not like this.  Unless there&apos;s precent, please make this 1 or 2 lines, and if 2, align on the (.

&gt; +{
&gt; +    ASSERT(context-&gt;isContextThread());
&gt; +
&gt; +    e = SECURITY_ERR;
&gt; +    return 0;
&gt; +}
&gt; +
&gt; +DatabaseSync::DatabaseSync(ScriptExecutionContext* context, const String&amp; name,
&gt; +                           const String&amp; expectedVersion, const String&amp; displayName,
&gt; +                           unsigned long estimatedSize, PassRefPtr&lt;DatabaseCallback&gt; creationCallback)

This could be done in 2 (if not 1) line(s).

&gt; +    : m_scriptExecutionContext(context)
&gt; +    , m_name(name.crossThreadString())
&gt; +    , m_expectedVersion(expectedVersion.crossThreadString())
&gt; +    , m_displayName(displayName.crossThreadString())
&gt; +    , m_estimatedSize(estimatedSize)
&gt; +    , m_creationCallback(creationCallback)
&gt; +{
&gt; +    ASSERT(context);

Not needed.  You&apos;d segfault on the next line anyway.

Should you verify you got a callback tho?

&gt; +    ASSERT(context-&gt;isContextThread());
&gt; +}
&gt; +
&gt; +DatabaseSync::~DatabaseSync()
&gt; +{
&gt; +    ASSERT(m_scriptExecutionContext-&gt;isContextThread());
&gt; +}
&gt; +
&gt; +String DatabaseSync::version() const
&gt; +{
&gt; +    ASSERT(m_scriptExecutionContext-&gt;isContextThread());
&gt; +    return String();
&gt; +}
&gt; +
&gt; +void DatabaseSync::changeVersion(const String&amp; /*oldVersion*/, const String&amp; /*newVersion*/, PassRefPtr&lt;SQLTransactionSyncCallback&gt; /*callback*/)
&gt; +{
&gt; +    ASSERT(m_scriptExecutionContext-&gt;isContextThread());
&gt; +}
&gt; +
&gt; +void DatabaseSync::transaction(PassRefPtr&lt;SQLTransactionSyncCallback&gt; /*callback*/, bool /*readOnly*/)
&gt; +{
&gt; +    ASSERT(m_scriptExecutionContext-&gt;isContextThread());
&gt; +}
&gt; +
&gt; +ScriptExecutionContext* DatabaseSync::scriptExecutionContext() const
&gt; +{
&gt; +    ASSERT(m_scriptExecutionContext-&gt;isContextThread());
&gt; +    return m_scriptExecutionContext.get();
&gt; +}
&gt; +
&gt; +#endif // ENABLE(DATABASE)
&gt; +
&gt; +} // namespace WebCore
&gt; Index: WebCore/storage/DatabaseSync.h
&gt; ===================================================================
&gt; --- WebCore/storage/DatabaseSync.h	(revision 0)
&gt; +++ WebCore/storage/DatabaseSync.h	(revision 0)
&gt; @@ -0,0 +1,97 @@
&gt; +/*
&gt; + * Copyright (C) 2010 Google Inc. All rights reserved.
&gt; + *
&gt; + * Redistribution and use in source and binary forms, with or without
&gt; + * modification, are permitted provided that the following conditions
&gt; + * are met:
&gt; + *
&gt; + * 1.  Redistributions of source code must retain the above copyright
&gt; + *     notice, this list of conditions and the following disclaimer.
&gt; + * 2.  Redistributions in binary form must reproduce the above copyright
&gt; + *     notice, this list of conditions and the following disclaimer in the
&gt; + *     documentation and/or other materials provided with the distribution.
&gt; + * 3.  Neither the name of Apple Computer, Inc. (&quot;Apple&quot;) nor the names of
&gt; + *     its contributors may be used to endorse or promote products derived
&gt; + *     from this software without specific prior written permission.
&gt; + *
&gt; + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; AND ANY
&gt; + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
&gt; + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
&gt; + * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
&gt; + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
&gt; + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
&gt; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
&gt; + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
&gt; + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
&gt; + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
&gt; + */
&gt; +
&gt; +#ifndef DatabaseSync_h
&gt; +#define DatabaseSync_h
&gt; +
&gt; +#include &quot;PlatformString.h&quot;

Move inside the guard.

&gt; +
&gt; +#if ENABLE(DATABASE)
&gt; +#include &lt;wtf/Forward.h&gt;
&gt; +
&gt; +namespace WebCore {
&gt; +
&gt; +class DatabaseCallback;
&gt; +class ScriptExecutionContext;
&gt; +class SQLTransactionSyncCallback;
&gt; +
&gt; +typedef int ExceptionCode;
&gt; +
&gt; +// Instances of this class should be created and used only on the worker&apos;s context thread.
&gt; +class DatabaseSync : public RefCounted&lt;DatabaseSync&gt; {
&gt; +public:
&gt; +    static void setIsAvailable(bool);
&gt; +    static bool isAvailable();
&gt; +
&gt; +    ~DatabaseSync();
&gt; +
&gt; +// Direct support for the DOM API

Tab these comments in.

&gt; +    static PassRefPtr&lt;DatabaseSync&gt; openDatabaseSync(
&gt; +        ScriptExecutionContext* context, const String&amp; name, const String&amp; expectedVersion,

ScriptExecutionContext* doesn&apos;t need a name here

&gt; +        const String&amp; displayName, unsigned long estimatedSize,
&gt; +        PassRefPtr&lt;DatabaseCallback&gt; creationCallback, ExceptionCode&amp;);

This doesn&apos;t need to be split across so many lines.

&gt; +    String version() const;
&gt; +    void changeVersion(const String&amp; oldVersion, const String&amp; newVersion, PassRefPtr&lt;SQLTransactionSyncCallback&gt; callback);

Get rid of &apos;callback&apos;.

&gt; +    void transaction(PassRefPtr&lt;SQLTransactionSyncCallback&gt; callback, bool readOnly);

ditto

&gt; +
&gt; +// Internal engine support
&gt; +    ScriptExecutionContext* scriptExecutionContext() const;
&gt; +
&gt; +    static const String&amp; databaseInfoTableName();
&gt; +
&gt; +private:
&gt; +    DatabaseSync(ScriptExecutionContext* context, const String&amp; name,

get rid of context.

&gt; +                 const String&amp; expectedVersion, const String&amp; displayName,
&gt; +                 unsigned long estimatedSize, PassRefPtr&lt;DatabaseCallback&gt; creationCallback);

Probably can be split across less lines.

&gt; +
&gt; +    RefPtr&lt;ScriptExecutionContext&gt; m_scriptExecutionContext;
&gt; +    String m_name;
&gt; +    String m_expectedVersion;
&gt; +    String m_displayName;
&gt; +    unsigned long m_estimatedSize;
&gt; +    RefPtr&lt;DatabaseCallback&gt; m_creationCallback;
&gt; +
&gt; +#ifndef NDEBUG
&gt; +    String databaseDebugName() const { return String(); }
&gt; +#endif

Move this above the variable names.

&gt; +};
&gt; +
&gt; +} // namespace WebCore
&gt; +
&gt; +#else
&gt; +
&gt; +namespace WebCore {
&gt; +class DatabaseSync : public RefCounted&lt;DatabaseSync&gt; {
&gt; +public:
&gt; +    static const String&amp; databaseInfoTableName();
&gt; +};
&gt; +} // namespace WebCore

I don&apos;t like this.  See earlier comments.

&gt; +
&gt; +#endif // ENABLE(DATABASE)
&gt; +
&gt; +#endif // DatabaseSync_h
&gt; Index: WebCore/storage/SQLTransactionSync.cpp
&gt; ===================================================================
&gt; --- WebCore/storage/SQLTransactionSync.cpp	(revision 0)
&gt; +++ WebCore/storage/SQLTransactionSync.cpp	(revision 0)
&gt; @@ -0,0 +1,73 @@
&gt; +/*
&gt; + * Copyright (C) 2010 Google Inc. All rights reserved.
&gt; + *
&gt; + * Redistribution and use in source and binary forms, with or without
&gt; + * modification, are permitted provided that the following conditions
&gt; + * are met:
&gt; + *
&gt; + * 1.  Redistributions of source code must retain the above copyright
&gt; + *     notice, this list of conditions and the following disclaimer.
&gt; + * 2.  Redistributions in binary form must reproduce the above copyright
&gt; + *     notice, this list of conditions and the following disclaimer in the
&gt; + *     documentation and/or other materials provided with the distribution.
&gt; + * 3.  Neither the name of Apple Computer, Inc. (&quot;Apple&quot;) nor the names of
&gt; + *     its contributors may be used to endorse or promote products derived
&gt; + *     from this software without specific prior written permission.
&gt; + *
&gt; + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; AND ANY
&gt; + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
&gt; + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
&gt; + * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
&gt; + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
&gt; + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
&gt; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
&gt; + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
&gt; + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
&gt; + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
&gt; + */
&gt; +
&gt; +#include &quot;config.h&quot;
&gt; +#include &quot;SQLTransactionSync.h&quot;
&gt; +
&gt; +#if ENABLE(DATABASE)
&gt; +
&gt; +#include &quot;DatabaseSync.h&quot;
&gt; +#include &quot;ExceptionCode.h&quot;
&gt; +#include &quot;PlatformString.h&quot;
&gt; +#include &quot;SQLResultSet.h&quot;
&gt; +#include &quot;SQLTransactionSyncCallback.h&quot;
&gt; +#include &quot;SQLValue.h&quot;
&gt; +#include &quot;ScriptExecutionContext.h&quot;

Don&apos;t we do alphabetical order, not ASCII order?

&gt; +#include &lt;wtf/PassRefPtr.h&gt;
&gt; +#include &lt;wtf/RefPtr.h&gt;
&gt; +
&gt; +namespace WebCore {
&gt; +
&gt; +PassRefPtr&lt;SQLTransactionSync&gt; SQLTransactionSync::create(DatabaseSync* db, PassRefPtr&lt;SQLTransactionSyncCallback&gt; callback, bool readOnly)
&gt; +{
&gt; +    return adoptRef(new SQLTransactionSync(db, callback, readOnly));
&gt; +}
&gt; +
&gt; +SQLTransactionSync::SQLTransactionSync(DatabaseSync* db, PassRefPtr&lt;SQLTransactionSyncCallback&gt; callback, bool readOnly)
&gt; +    : m_database(db)
&gt; +    , m_callback(callback)
&gt; +    , m_readOnly(readOnly)
&gt; +{
&gt; +    ASSERT(m_database);

Not really needed since you&apos;d segfault on the next line anyway.

&gt; +    ASSERT(m_database-&gt;scriptExecutionContext()-&gt;isContextThread());

Is it worth asserting the callback as well?

&gt; +}
&gt; +
&gt; +SQLTransactionSync::~SQLTransactionSync()
&gt; +{
&gt; +    ASSERT(m_database-&gt;scriptExecutionContext()-&gt;isContextThread());
&gt; +}
&gt; +
&gt; +PassRefPtr&lt;SQLResultSet&gt; SQLTransactionSync::executeSQL(const String&amp; /*sqlStatement*/, const Vector&lt;SQLValue&gt;&amp; /*arguments*/, ExceptionCode&amp; /*e*/)

the /*arguments*/ and /*e*/ are not needed.  sqlStatement is fine as long as there&apos;s precedent for something like that (style wise) elsewhere in the code.  (I can&apos;t think of any, but there must be some convention for something like this.)

&gt; +{
&gt; +    ASSERT(m_database-&gt;scriptExecutionContext()-&gt;isContextThread());
&gt; +    return 0;
&gt; +}
&gt; +
&gt; +} // namespace WebCore
&gt; +
&gt; +#endif // ENABLE(DATABASE)
&gt; Index: WebCore/storage/SQLTransactionSync.h
&gt; ===================================================================
&gt; --- WebCore/storage/SQLTransactionSync.h	(revision 0)
&gt; +++ WebCore/storage/SQLTransactionSync.h	(revision 0)
&gt; @@ -0,0 +1,71 @@
&gt; +/*
&gt; + * Copyright (C) 2010 Google Inc. All rights reserved.
&gt; + *
&gt; + * Redistribution and use in source and binary forms, with or without
&gt; + * modification, are permitted provided that the following conditions
&gt; + * are met:
&gt; + *
&gt; + * 1.  Redistributions of source code must retain the above copyright
&gt; + *     notice, this list of conditions and the following disclaimer.
&gt; + * 2.  Redistributions in binary form must reproduce the above copyright
&gt; + *     notice, this list of conditions and the following disclaimer in the
&gt; + *     documentation and/or other materials provided with the distribution.
&gt; + * 3.  Neither the name of Apple Computer, Inc. (&quot;Apple&quot;) nor the names of
&gt; + *     its contributors may be used to endorse or promote products derived
&gt; + *     from this software without specific prior written permission.
&gt; + *
&gt; + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; AND ANY
&gt; + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
&gt; + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
&gt; + * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
&gt; + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
&gt; + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
&gt; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
&gt; + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
&gt; + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
&gt; + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
&gt; + */
&gt; +#ifndef SQLTransactionSync_h
&gt; +#define SQLTransactionSync_h
&gt; +
&gt; +#if ENABLE(DATABASE)
&gt; +
&gt; +#include &lt;wtf/Forward.h&gt;
&gt; +#include &lt;wtf/RefCounted.h&gt;
&gt; +#include &lt;wtf/Vector.h&gt;
&gt; +
&gt; +namespace WebCore {
&gt; +
&gt; +typedef int ExceptionCode;
&gt; +
&gt; +class DatabaseSync;
&gt; +class SQLResultSet;
&gt; +class SQLTransactionSyncCallback;
&gt; +class SQLValue;
&gt; +class String;
&gt; +
&gt; +// Instances of this class should be created and used only on the worker&apos;s context thread.
&gt; +class SQLTransactionSync : public RefCounted&lt;SQLTransactionSync&gt; {
&gt; +public:
&gt; +    static PassRefPtr&lt;SQLTransactionSync&gt; create(DatabaseSync*, PassRefPtr&lt;SQLTransactionSyncCallback&gt;, bool readOnly = false);
&gt; +
&gt; +    ~SQLTransactionSync();
&gt; +
&gt; +    PassRefPtr&lt;SQLResultSet&gt; executeSQL(const String&amp; sqlStatement, const Vector&lt;SQLValue&gt;&amp; arguments, ExceptionCode&amp; e);

delete &apos;e&apos;

&gt; +
&gt; +    DatabaseSync* database() { return m_database.get(); }
&gt; +    bool isReadOnly() { return m_readOnly; }

const</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218086</commentid>
    <comment_count>22</comment_count>
      <attachid>54485</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-04-27 17:37:11 -0700</bug_when>
    <thetext>Created attachment 54485
patch #1: stubs for storage classes

(In reply to comment #21)
&gt; &gt; Index: WebCore/storage/DatabaseSync.cpp
&gt; &gt; ===================================================================
&gt; &gt; +#include &quot;config.h&quot;
&gt; &gt; +#include &quot;DatabaseSync.h&quot;
&gt; &gt; +
&gt; &gt; +#include &lt;wtf/StdLibExtras.h&gt;
&gt; 
&gt; Move this inside the block below.

done.

&gt; &gt; +#if ENABLE(DATABASE)
&gt; &gt; +#include &quot;DatabaseCallback.h&quot;
&gt; &gt; +#include &quot;ExceptionCode.h&quot;
&gt; &gt; +#include &quot;SQLTransactionSyncCallback.h&quot;
&gt; &gt; +#include &quot;ScriptExecutionContext.h&quot;
&gt; &gt; +#include &lt;wtf/PassRefPtr.h&gt;
&gt; &gt; +#include &lt;wtf/RefPtr.h&gt;
&gt; &gt; +
&gt; &gt; +#endif // ENABLE(DATABASE)
&gt; 
&gt; This is very confusing and ugly.  Please find a better way.  Ideally by not
&gt; writing code that requires this function when database is not enabled.

i copy-pasted this function/style from Database.{h|cpp}. Removed this function for now; we can add it later if needed.

&gt; &gt; +PassRefPtr&lt;DatabaseSync&gt; DatabaseSync::openDatabaseSync(
&gt; &gt; +    ScriptExecutionContext* context, const String&amp; /*name*/, const String&amp; /*expectedVersion*/,
&gt; &gt; +    const String&amp; /*displayName*/, unsigned long /*estimatedSize*/,
&gt; &gt; +    PassRefPtr&lt;DatabaseCallback&gt; /*creationCallback*/, ExceptionCode&amp; e)
&gt; 
&gt; Is there any precedent for splitting up a line like this?  I can think of cases
&gt; like below, but not like this.  Unless there&apos;s precent, please make this 1 or 2
&gt; lines, and if 2, align on the (.

done... VERY reluctantly... i don&apos;t know if there&apos;s any precedent for splitting lines like this, and i know that no line is too long for WebKit. however, i believe that the intent of this rule is to save developers&apos; time by not making them count the exact number of characters on every line, not to encourage 188-char lines just to keep the list of all parameters on &lt;= 2 lines. what&apos;s wrong with 3+ shorter, easier to read lines of parameters?

&gt; &gt; +{
&gt; &gt; +    ASSERT(context-&gt;isContextThread());
&gt; &gt; +
&gt; &gt; +    e = SECURITY_ERR;
&gt; &gt; +    return 0;
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +DatabaseSync::DatabaseSync(ScriptExecutionContext* context, const String&amp; name,
&gt; &gt; +                           const String&amp; expectedVersion, const String&amp; displayName,
&gt; &gt; +                           unsigned long estimatedSize, PassRefPtr&lt;DatabaseCallback&gt; creationCallback)
&gt; 
&gt; This could be done in 2 (if not 1) line(s).

changed to 2 lines (but have the same objection).

&gt; &gt; +    : m_scriptExecutionContext(context)
&gt; &gt; +    , m_name(name.crossThreadString())
&gt; &gt; +    , m_expectedVersion(expectedVersion.crossThreadString())
&gt; &gt; +    , m_displayName(displayName.crossThreadString())
&gt; &gt; +    , m_estimatedSize(estimatedSize)
&gt; &gt; +    , m_creationCallback(creationCallback)
&gt; &gt; +{
&gt; &gt; +    ASSERT(context);
&gt; 
&gt; Not needed.  You&apos;d segfault on the next line anyway.

removed.

&gt; Should you verify you got a callback tho?

the callback is optional.

&gt; &gt; Index: WebCore/storage/DatabaseSync.h
&gt; &gt; ===================================================================
&gt; &gt; +#ifndef DatabaseSync_h
&gt; &gt; +#define DatabaseSync_h
&gt; &gt; +
&gt; &gt; +#include &quot;PlatformString.h&quot;
&gt; 
&gt; Move inside the guard.

done.

&gt; &gt; +class DatabaseSync : public RefCounted&lt;DatabaseSync&gt; {
&gt; &gt; +public:
&gt; &gt; +    static void setIsAvailable(bool);
&gt; &gt; +    static bool isAvailable();
&gt; &gt; +
&gt; &gt; +    ~DatabaseSync();
&gt; &gt; +
&gt; &gt; +// Direct support for the DOM API
&gt; 
&gt; Tab these comments in.

done. and fixed this in Database.h too.

&gt; &gt; +    static PassRefPtr&lt;DatabaseSync&gt; openDatabaseSync(
&gt; &gt; +        ScriptExecutionContext* context, const String&amp; name, const String&amp; expectedVersion,
&gt; 
&gt; ScriptExecutionContext* doesn&apos;t need a name here

removed here and everywhere else.

&gt; &gt; +        const String&amp; displayName, unsigned long estimatedSize,
&gt; &gt; +        PassRefPtr&lt;DatabaseCallback&gt; creationCallback, ExceptionCode&amp;);
&gt; 
&gt; This doesn&apos;t need to be split across so many lines.

changed to 2-lines. again, same objection.

&gt; &gt; +    String version() const;
&gt; &gt; +    void changeVersion(const String&amp; oldVersion, const String&amp; newVersion, PassRefPtr&lt;SQLTransactionSyncCallback&gt; callback);
&gt; 
&gt; Get rid of &apos;callback&apos;.

removed here and everywhere else.

&gt; &gt; +    void transaction(PassRefPtr&lt;SQLTransactionSyncCallback&gt; callback, bool readOnly);
&gt; 
&gt; ditto

done.

&gt; &gt; +private:
&gt; &gt; +    DatabaseSync(ScriptExecutionContext* context, const String&amp; name,
&gt; 
&gt; get rid of context.

done.

&gt; &gt; +                 const String&amp; expectedVersion, const String&amp; displayName,
&gt; &gt; +                 unsigned long estimatedSize, PassRefPtr&lt;DatabaseCallback&gt; creationCallback);
&gt; 
&gt; Probably can be split across less lines.

done... same objection.

&gt; &gt; +    RefPtr&lt;ScriptExecutionContext&gt; m_scriptExecutionContext;
&gt; &gt; +    String m_name;
&gt; &gt; +    String m_expectedVersion;
&gt; &gt; +    String m_displayName;
&gt; &gt; +    unsigned long m_estimatedSize;
&gt; &gt; +    RefPtr&lt;DatabaseCallback&gt; m_creationCallback;
&gt; &gt; +
&gt; &gt; +#ifndef NDEBUG
&gt; &gt; +    String databaseDebugName() const { return String(); }
&gt; &gt; +#endif
&gt; 
&gt; Move this above the variable names.

not done. this location for this method is consistent with Database.h.

&gt; &gt; +#else
&gt; &gt; +
&gt; &gt; +namespace WebCore {
&gt; &gt; +class DatabaseSync : public RefCounted&lt;DatabaseSync&gt; {
&gt; &gt; +public:
&gt; &gt; +    static const String&amp; databaseInfoTableName();
&gt; &gt; +};
&gt; &gt; +} // namespace WebCore
&gt; 
&gt; I don&apos;t like this.  See earlier comments.

removed. we can add this later if needed. i was just trying to stay as close as possible to Database.h.

&gt; &gt; Index: WebCore/storage/SQLTransactionSync.cpp
&gt; &gt; ===================================================================
&gt; &gt; +#include &quot;DatabaseSync.h&quot;
&gt; &gt; +#include &quot;ExceptionCode.h&quot;
&gt; &gt; +#include &quot;PlatformString.h&quot;
&gt; &gt; +#include &quot;SQLResultSet.h&quot;
&gt; &gt; +#include &quot;SQLTransactionSyncCallback.h&quot;
&gt; &gt; +#include &quot;SQLValue.h&quot;
&gt; &gt; +#include &quot;ScriptExecutionContext.h&quot;
&gt; 
&gt; Don&apos;t we do alphabetical order, not ASCII order?

that&apos;s what i thought too, but check-webkit-style disagreed.

&gt; &gt; +SQLTransactionSync::SQLTransactionSync(DatabaseSync* db, PassRefPtr&lt;SQLTransactionSyncCallback&gt; callback, bool readOnly)
&gt; &gt; +    : m_database(db)
&gt; &gt; +    , m_callback(callback)
&gt; &gt; +    , m_readOnly(readOnly)
&gt; &gt; +{
&gt; &gt; +    ASSERT(m_database);
&gt; 
&gt; Not really needed since you&apos;d segfault on the next line anyway.

removed.

&gt; &gt; +    ASSERT(m_database-&gt;scriptExecutionContext()-&gt;isContextThread());
&gt; 
&gt; Is it worth asserting the callback as well?

added.

&gt; &gt; +PassRefPtr&lt;SQLResultSet&gt; SQLTransactionSync::executeSQL(const String&amp; /*sqlStatement*/, const Vector&lt;SQLValue&gt;&amp; /*arguments*/, ExceptionCode&amp; /*e*/)
&gt; 
&gt; the /*arguments*/ and /*e*/ are not needed.  sqlStatement is fine as long as
&gt; there&apos;s precedent for something like that (style wise) elsewhere in the code. 
&gt; (I can&apos;t think of any, but there must be some convention for something like
&gt; this.)

removed for now, even though these arguments will be needed once i get to implementing this method.

&gt; &gt; Index: WebCore/storage/SQLTransactionSync.h
&gt; &gt; ===================================================================
&gt; &gt; +    PassRefPtr&lt;SQLResultSet&gt; executeSQL(const String&amp; sqlStatement, const Vector&lt;SQLValue&gt;&amp; arguments, ExceptionCode&amp; e);
&gt; 
&gt; delete &apos;e&apos;

done.

&gt; &gt; +    bool isReadOnly() { return m_readOnly; }
&gt; 
&gt; const

done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218091</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-27 17:43:01 -0700</bug_when>
    <thetext>Attachment 54485 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/WebCore.vcproj/WebCore.vcproj:42850:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
Suppressing further [whitespace/carriage_return] reports for this file.
Total errors found: 20 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218279</commentid>
    <comment_count>24</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-04-28 02:11:06 -0700</bug_when>
    <thetext>+ eric for the final question about check-webkit-style


&gt; &gt; &gt; +PassRefPtr&lt;DatabaseSync&gt; DatabaseSync::openDatabaseSync(
&gt; &gt; &gt; +    ScriptExecutionContext* context, const String&amp; /*name*/, const String&amp; /*expectedVersion*/,
&gt; &gt; &gt; +    const String&amp; /*displayName*/, unsigned long /*estimatedSize*/,
&gt; &gt; &gt; +    PassRefPtr&lt;DatabaseCallback&gt; /*creationCallback*/, ExceptionCode&amp; e)
&gt; &gt; 
&gt; &gt; Is there any precedent for splitting up a line like this?  I can think of cases
&gt; &gt; like below, but not like this.  Unless there&apos;s precent, please make this 1 or 2
&gt; &gt; lines, and if 2, align on the (.
&gt; 
&gt; done... VERY reluctantly... i don&apos;t know if there&apos;s any precedent for splitting
&gt; lines like this, and i know that no line is too long for WebKit. however, i
&gt; believe that the intent of this rule is to save developers&apos; time by not making
&gt; them count the exact number of characters on every line, not to encourage
&gt; 188-char lines just to keep the list of all parameters on &lt;= 2 lines. what&apos;s
&gt; wrong with 3+ shorter, easier to read lines of parameters?

I think some reviewers would have asked for it all to be on 1, but that would have been a really long line, so I figured 2 was kind of a compromise.

I don&apos;t like super long lines either, but a style guide is about consistency, not appealing to your (or my) sense of aesthetics.


&gt; &gt; Don&apos;t we do alphabetical order, not ASCII order?
&gt; 
&gt; that&apos;s what i thought too, but check-webkit-style disagreed.

Really?

Well, either all instances of SQLblah followed by SecurBlah need to be changed or we need to fix check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218284</commentid>
    <comment_count>25</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-28 02:27:12 -0700</bug_when>
    <thetext>Chris and Hamaji are the father&apos;s of check-webkit-style.  We should make it match our style guidelines, whatever those are in this case. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218287</commentid>
    <comment_count>26</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-04-28 02:37:45 -0700</bug_when>
    <thetext>+ Chris And Hamaji for the check-webkit-style question

I don&apos;t see anything in http://webkit.org/coding/coding-style.html  Requiring ASCII order just seems a little weird, but I guess I&apos;m OK either way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218318</commentid>
    <comment_count>27</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-04-28 04:12:23 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; + Chris And Hamaji for the check-webkit-style question
&gt; 
&gt; I don&apos;t see anything in http://webkit.org/coding/coding-style.html  Requiring
&gt; ASCII order just seems a little weird, but I guess I&apos;m OK either way.

http://webkit.org/coding/coding-style.html

I think we have the rule for this?

&quot;3. Other #include statements should be in sorted order (case sensitive, as done by the command-line sort tool or the Xcode sort selection command). Don&apos;t bother to organize them in a logical order.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218340</commentid>
    <comment_count>28</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-04-28 05:20:15 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; (In reply to comment #26)
&gt; &gt; + Chris And Hamaji for the check-webkit-style question
&gt; &gt; 
&gt; &gt; I don&apos;t see anything in http://webkit.org/coding/coding-style.html  Requiring
&gt; &gt; ASCII order just seems a little weird, but I guess I&apos;m OK either way.
&gt; 
&gt; http://webkit.org/coding/coding-style.html
&gt; 
&gt; I think we have the rule for this?
&gt; 
&gt; &quot;3. Other #include statements should be in sorted order (case sensitive, as
&gt; done by the command-line sort tool or the Xcode sort selection command). Don&apos;t
&gt; bother to organize them in a logical order.&quot;

You&apos;re right.

Dumi, please change all the orderings (including class declarations) over to ASCII order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218560</commentid>
    <comment_count>29</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-04-28 12:26:42 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; Dumi, please change all the orderings (including class declarations) over to
&gt; ASCII order.

All includes are in the ASCII order. check-webkit-style is happy with them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218579</commentid>
    <comment_count>30</comment_count>
      <attachid>54485</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-04-28 13:04:08 -0700</bug_when>
    <thetext>Comment on attachment 54485
patch #1: stubs for storage classes

WebCore/storage/DatabaseSync.h:39
 +  class ScriptExecutionContext;
not ascii order...I know it&apos;s not in the coding style, but might as well match #includes

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218642</commentid>
    <comment_count>31</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-04-28 14:38:36 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; (From update of attachment 54485 [details])
&gt; WebCore/storage/DatabaseSync.h:39
&gt;  +  class ScriptExecutionContext;
&gt; not ascii order...I know it&apos;s not in the coding style, but might as well match
&gt; #includes

Oops, sorry, missed this one. Will fix on landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218663</commentid>
    <comment_count>32</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-04-28 15:18:25 -0700</bug_when>
    <thetext>patch #1 landed as r58437.

JSC and V8 bindings are coming next.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218763</commentid>
    <comment_count>33</comment_count>
      <attachid>54661</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-04-28 18:57:00 -0700</bug_when>
    <thetext>Created attachment 54661
patch #2: IDL files + JSC bindings</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218765</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-28 18:59:47 -0700</bug_when>
    <thetext>Attachment 54661 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/bindings/js/JSWorkerContextCustom.cpp:34:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/bindings/js/JSSQLTransactionSyncCustom.cpp:37:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 30 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218766</commentid>
    <comment_count>35</comment_count>
      <attachid>54661</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-28 19:07:20 -0700</bug_when>
    <thetext>Comment on attachment 54661
patch #2: IDL files + JSC bindings

WebCore/bindings/js/JSCustomSQLTransactionSyncCallback.cpp:30
 +  #include &quot;JSCustomSQLTransactionSyncCallback.h&quot;
I think this file is misnamed.  We usually put the custom at the end of the file name.

WebCore/bindings/js/JSCustomSQLTransactionSyncCallback.cpp:54
 +  void JSCustomSQLTransactionSyncCallback::handleEvent(ScriptExecutionContext* context, SQLTransactionSync* transaction, bool&amp; raisedException)
This code is all copy/paste from somewhere else.  We need to abstract this code and not have duplication.

WebCore/bindings/js/JSDatabaseSyncCustom.cpp:48
 +      String newVersion = ustringToString(args.at(1).toString(exec));
What about exceptions generated here?

WebCore/bindings/js/JSDatabaseSyncCustom.cpp:45
 +  JSValue JSDatabaseSync::changeVersion(ExecState* exec, const ArgList&amp; args)
It&apos;s lame that we can&apos;t autogenerate this code, but I&apos;ll work on that in a separate bug.

WebCore/bindings/js/JSDatabaseSyncCustom.cpp:51
 +      if (!(object = args.at(2).getObject())) {
Can we do the assignment and the test separate statements?  This is hard to read.

WebCore/bindings/js/JSSQLTransactionSyncCustom.cpp:47
 +          setDOMException(exec, SYNTAX_ERR);
Are you sure this is the right exception to throw here?

WebCore/bindings/js/JSSQLTransactionSyncCustom.cpp:76
 +              if (value.isNull())
Why Null and not Undefined?

WebCore/bindings/js/JSSQLTransactionSyncCustom.cpp:78
 +              else if (value.isNumber())
Do we need to call valueOf?

WebCore/bindings/js/JSWorkerContextCustom.cpp:152
 +      if (args.size() &lt; 4)
Why do we need check the args.size() here?

WebCore/bindings/js/JSWorkerContextCustom.cpp:159
 +      unsigned long estimatedSize = args.at(3).toInt32(exec);
Exception handling?

WebCore/bindings/js/JSWorkerContextCustom.cpp:150
 +  JSValue JSWorkerContext::openDatabaseSync(ExecState* exec, const ArgList&amp; args)
It&apos;s lame that we can&apos;t autogenerate this code.  It&apos;s not doing anything complicated.

Where&apos;s the V8 implementation of the custom bindings?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218925</commentid>
    <comment_count>36</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-04-29 03:12:33 -0700</bug_when>
    <thetext>- People I added for the style questions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218928</commentid>
    <comment_count>37</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-04-29 03:16:54 -0700</bug_when>
    <thetext>(In reply to comment #35)
&gt; (From update of attachment 54661 [details])
&gt; WebCore/bindings/js/JSCustomSQLTransactionSyncCallback.cpp:30
&gt;  +  #include &quot;JSCustomSQLTransactionSyncCallback.h&quot;
&gt; I think this file is misnamed.  We usually put the custom at the end of the
&gt; file name.

Custom comes first when it&apos;s 100% custom and last when it&apos;s custom components of something partially generated.  I believe his use of custom is correct here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219052</commentid>
    <comment_count>38</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-29 08:48:18 -0700</bug_when>
    <thetext>(In reply to comment #37)
&gt; (In reply to comment #35)
&gt; &gt; (From update of attachment 54661 [details] [details])
&gt; &gt; WebCore/bindings/js/JSCustomSQLTransactionSyncCallback.cpp:30
&gt; &gt;  +  #include &quot;JSCustomSQLTransactionSyncCallback.h&quot;
&gt; &gt; I think this file is misnamed.  We usually put the custom at the end of the
&gt; &gt; file name.
&gt; 
&gt; Custom comes first when it&apos;s 100% custom and last when it&apos;s custom components
&gt; of something partially generated.  I believe his use of custom is correct here.

Yep.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219060</commentid>
    <comment_count>39</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-29 09:14:34 -0700</bug_when>
    <thetext>&gt; Custom comes first when it&apos;s 100% custom and last when it&apos;s custom components
&gt; of something partially generated.  I believe his use of custom is correct here.

Ah.  I see there are other examples of this naming pattern.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221044</commentid>
    <comment_count>40</comment_count>
      <attachid>55104</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-05-05 04:05:42 -0700</bug_when>
    <thetext>Created attachment 55104
patch #2: IDL files + JSC and V8 bindings

tested the patch on webkit/win, webkit/mac and chromium/win.

(In reply to comment #35)
&gt; WebCore/bindings/js/JSCustomSQLTransactionSyncCallback.cpp:30
&gt;  +  #include &quot;JSCustomSQLTransactionSyncCallback.h&quot;
&gt; I think this file is misnamed.  We usually put the custom at the end of the
&gt; file name.

all these callbacks are auto-generated now.

&gt; WebCore/bindings/js/JSCustomSQLTransactionSyncCallback.cpp:54
&gt;  +  void
&gt; JSCustomSQLTransactionSyncCallback::handleEvent(ScriptExecutionContext*
&gt; context, SQLTransactionSync* transaction, bool&amp; raisedException)
&gt; This code is all copy/paste from somewhere else.  We need to abstract this code
&gt; and not have duplication.

done. this code is auto-generated.

&gt; WebCore/bindings/js/JSDatabaseSyncCustom.cpp:48
&gt;  +      String newVersion = ustringToString(args.at(1).toString(exec));
&gt; What about exceptions generated here?

done.

&gt; WebCore/bindings/js/JSDatabaseSyncCustom.cpp:45
&gt;  +  JSValue JSDatabaseSync::changeVersion(ExecState* exec, const ArgList&amp; args)
&gt; It&apos;s lame that we can&apos;t autogenerate this code, but I&apos;ll work on that in a
&gt; separate bug.

this is on my to-do list too.

&gt; WebCore/bindings/js/JSDatabaseSyncCustom.cpp:51
&gt;  +      if (!(object = args.at(2).getObject())) {
&gt; Can we do the assignment and the test separate statements?  This is hard to
&gt; read.

fixed in all DB bindings.

&gt; WebCore/bindings/js/JSSQLTransactionSyncCustom.cpp:47
&gt;  +          setDOMException(exec, SYNTAX_ERR);
&gt; Are you sure this is the right exception to throw here?

yes, executeSQL() takes at least one mandatory argument.

&gt; WebCore/bindings/js/JSSQLTransactionSyncCustom.cpp:76
&gt;  +              if (value.isNull())
&gt; Why Null and not Undefined?

changed to isUndefinedOrNull().

&gt; WebCore/bindings/js/JSSQLTransactionSyncCustom.cpp:78
&gt;  +              else if (value.isNumber())
&gt; Do we need to call valueOf?

i don&apos;t think so. isNumber() makes sure it&apos;s a number, and uncheckedGetNumber() gets it.

&gt; WebCore/bindings/js/JSWorkerContextCustom.cpp:152
&gt;  +      if (args.size() &lt; 4)
&gt; Why do we need check the args.size() here?

yes, openDatabaseSync() has 4 mandatory arguments.

&gt; WebCore/bindings/js/JSWorkerContextCustom.cpp:159
&gt;  +      unsigned long estimatedSize = args.at(3).toInt32(exec);
&gt; Exception handling?

done.

&gt; WebCore/bindings/js/JSWorkerContextCustom.cpp:150
&gt;  +  JSValue JSWorkerContext::openDatabaseSync(ExecState* exec, const ArgList&amp;
&gt; args)
&gt; It&apos;s lame that we can&apos;t autogenerate this code.  It&apos;s not doing anything
&gt; complicated.

agree, will work on this in parallel to implementing the rest of the sync DB API.

&gt; Where&apos;s the V8 implementation of the custom bindings?

added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221045</commentid>
    <comment_count>41</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-05 04:09:11 -0700</bug_when>
    <thetext>Attachment 55104 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/bindings/v8/custom/V8SQLTransactionSyncCustom.cpp:52:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebCore/bindings/v8/custom/V8DatabaseSyncCustom.cpp:39:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 36 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221046</commentid>
    <comment_count>42</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-05 04:19:38 -0700</bug_when>
    <thetext>Attachment 55104 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/2141036</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221050</commentid>
    <comment_count>43</comment_count>
      <attachid>55105</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-05-05 04:35:50 -0700</bug_when>
    <thetext>Created attachment 55105
patch #2: IDL files + JSC and V8 bindings

Same patch, should make the GTK bot happy and the style bot almost happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221054</commentid>
    <comment_count>44</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-05 04:42:04 -0700</bug_when>
    <thetext>Attachment 55105 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/bindings/v8/custom/V8SQLTransactionSyncCustom.cpp:52:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1 in 36 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221059</commentid>
    <comment_count>45</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-05 04:56:13 -0700</bug_when>
    <thetext>Attachment 55105 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/2153035</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221061</commentid>
    <comment_count>46</comment_count>
      <attachid>55110</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-05-05 05:17:39 -0700</bug_when>
    <thetext>Created attachment 55110
patch #2: IDL files + JSC and V8 bindings

Copy-paste error in the GNUMakefile.am file. One more try to make the GTK bot happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221062</commentid>
    <comment_count>47</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-05 05:19:53 -0700</bug_when>
    <thetext>Attachment 55110 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/bindings/v8/custom/V8SQLTransactionSyncCustom.cpp:52:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1 in 36 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221146</commentid>
    <comment_count>48</comment_count>
      <attachid>55110</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-05 09:34:31 -0700</bug_when>
    <thetext>Comment on attachment 55110
patch #2: IDL files + JSC and V8 bindings

No ChangeLog.  No tests!  There&apos;s tons of stuff you should be testing here.

WebCore/bindings/js/JSDOMWindowCustom.cpp:977
 +        setDOMException(exec, TYPE_MISMATCH_ERR);
Wrong indent

WebCore/bindings/js/JSDatabaseSyncCustom.cpp:65
 +      RefPtr&lt;SQLTransactionSyncCallback&gt; callback(JSSQLTransactionSyncCallback::create(object, static_cast&lt;JSDOMGlobalObject*&gt;(exec-&gt;dynamicGlobalObject())));
Why the dynamic global object?

WebCore/bindings/js/JSDatabaseSyncCustom.cpp:93
 +      return createTransaction(exec, args, m_impl.get(), static_cast&lt;JSDOMGlobalObject*&gt;(exec-&gt;dynamicGlobalObject()), false);
It seems more likely that we want the global object associated with the JSDatabaseSync object.

WebCore/bindings/js/JSWorkerContextCustom.cpp:164
 +      const UString&amp; name = args.at(0).toString(exec);
Exceptions?

WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp:722
 +          return throwError(&quot;openDatabaseSync() must be called with at least 4 parameters.&quot;, V8Proxy::SyntaxError);
These exception messages aren&apos;t localized.  Also, they differ from the JSC versions.  I think we should just throw without a message.

WebCore/bindings/v8/custom/V8WorkerContextCustom.cpp:157
 +      String name = toWebCoreString(args[0]);
Again, no exception handling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221931</commentid>
    <comment_count>49</comment_count>
      <attachid>55292</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-05-06 13:37:47 -0700</bug_when>
    <thetext>Created attachment 55292
patch #2: IDL files + JSC and V8 bindings

(In reply to comment #48)
&gt; No ChangeLog.

oops, sorry about that. fixed.

&gt; No tests!  There&apos;s tons of stuff you should be testing here.

added a test to test the parameters passed to openDatabaseSync(). i&apos;m not sure what else we can test at this point. once we have some implementation in place, i&apos;ll add a similar test for db.{read}transaction(), as well as more functional tests.

&gt; WebCore/bindings/js/JSDOMWindowCustom.cpp:977
&gt;  +        setDOMException(exec, TYPE_MISMATCH_ERR);
&gt; Wrong indent

fixed.

&gt; WebCore/bindings/js/JSDatabaseSyncCustom.cpp:65
&gt;  +      RefPtr&lt;SQLTransactionSyncCallback&gt;
&gt; callback(JSSQLTransactionSyncCallback::create(object,
&gt; static_cast&lt;JSDOMGlobalObject*&gt;(exec-&gt;dynamicGlobalObject())));
&gt; Why the dynamic global object?

i copy-pasted this code from another class. fixed in all DB bindings.

&gt; WebCore/bindings/js/JSDatabaseSyncCustom.cpp:93
&gt;  +      return createTransaction(exec, args, m_impl.get(),
&gt; static_cast&lt;JSDOMGlobalObject*&gt;(exec-&gt;dynamicGlobalObject()), false);
&gt; It seems more likely that we want the global object associated with the
&gt; JSDatabaseSync object.

fixed.

&gt; WebCore/bindings/js/JSWorkerContextCustom.cpp:164
&gt;  +      const UString&amp; name = args.at(0).toString(exec);
&gt; Exceptions?

handled.

&gt; WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp:722
&gt;  +          return throwError(&quot;openDatabaseSync() must be called with at least
&gt; 4 parameters.&quot;, V8Proxy::SyntaxError);
&gt; These exception messages aren&apos;t localized.  Also, they differ from the JSC
&gt; versions.  I think we should just throw without a message.

removed the exception messages from all V8 DB bindings.

&gt; WebCore/bindings/v8/custom/V8WorkerContextCustom.cpp:157
&gt;  +      String name = toWebCoreString(args[0]);
&gt; Again, no exception handling.

done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221946</commentid>
    <comment_count>50</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-06 13:45:36 -0700</bug_when>
    <thetext>Attachment 55292 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/bindings/v8/custom/V8SQLTransactionSyncCustom.cpp:52:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebCore/bindings/js/JSWorkerContextCustom.cpp:190:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 2 in 43 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222051</commentid>
    <comment_count>51</comment_count>
      <attachid>55292</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-06 16:41:06 -0700</bug_when>
    <thetext>Comment on attachment 55292
patch #2: IDL files + JSC and V8 bindings

Sorry for nit picking this patch to death, but writing custom bindings correctly is nigh unto impossible.  Mostly r- for the lack of a toString call in the V8 bindings.  You can test this with an object that has a toString function that actually returns a string.

WebCore/bindings/js/JSSQLTransactionSyncCustom.cpp:54
 +          setDOMException(exec, TYPE_MISMATCH_ERR);
It&apos;s unclear to me whether its better to magically transmute the exception to TYPE_MISMATCH_ERR or whether it&apos;s better to re-throw the same exception.

WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp:724
 +      if (!args[0]-&gt;IsString() || !args[1]-&gt;IsString() || !args[2]-&gt;IsString() || !args[3]-&gt;IsUint32())
Why don&apos;t we call toString() on these args like we do in the JSC version?

WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp:732
 +      String name = toWebCoreString(args[0]);
I think you want to skip the check above and check for an exception here instead.

WebCore/bindings/v8/custom/V8DatabaseSyncCustom.cpp:50
 +      if (!(args[0]-&gt;IsString() &amp;&amp; args[1]-&gt;IsString()))
Same comment here about calling toString()

WebCore/bindings/v8/custom/V8SQLTransactionSyncCustom.cpp:63
 +              v8::Local&lt;v8::Value&gt; lengthGetter;
Is this the getter or the gotten value?

WebCore/bindings/v8/custom/V8SQLTransactionSyncCustom.cpp:80
 +                      v8::TryCatch block;
Can we condense this somehow?  It&apos;s going to be a lot of code everywhere otherwise.

WebCore/bindings/v8/custom/V8SQLTransactionSyncCustom.cpp:89
 +                      sqlValues.append(SQLValue(value-&gt;NumberValue()));
Does this call valueOf?  If so, what if there&apos;s an exception?

WebCore/bindings/v8/custom/V8SQLTransactionSyncCustom.cpp:91
 +                      sqlValues.append(SQLValue(toWebCoreString(value)));
Exception?

WebCore/bindings/v8/custom/V8WorkerContextCustom.cpp:150
 +      if (!args[0]-&gt;IsString() || !args[1]-&gt;IsString() || !args[2]-&gt;IsString() || !args[3]-&gt;IsUint32())
String comment.

WebCore/bindings/v8/custom/V8WorkerContextCustom.cpp:159
 +      unsigned long estimatedSize = args[3]-&gt;Uint32Value();
Does this call valueOf?  Should we be calling valueOf?  Does this match JSC?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222261</commentid>
    <comment_count>52</comment_count>
      <attachid>55358</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-05-07 04:05:25 -0700</bug_when>
    <thetext>Created attachment 55358
patch #2: IDL files + JSC and V8 bindings

(In reply to comment #51)
&gt; WebCore/bindings/js/JSSQLTransactionSyncCustom.cpp:54
&gt;  +          setDOMException(exec, TYPE_MISMATCH_ERR);
&gt; It&apos;s unclear to me whether its better to magically transmute the exception to
&gt; TYPE_MISMATCH_ERR or whether it&apos;s better to re-throw the same exception.

reverted, keeping the original exception around.

&gt; WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp:724
&gt;  +      if (!args[0]-&gt;IsString() || !args[1]-&gt;IsString() ||
&gt; !args[2]-&gt;IsString() || !args[3]-&gt;IsUint32())
&gt; Why don&apos;t we call toString() on these args like we do in the JSC version?

i believe toString() is automatically called when needed.

&gt; WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp:732
&gt;  +      String name = toWebCoreString(args[0]);
&gt; I think you want to skip the check above and check for an exception here
&gt; instead.

done here and everywhere else.

&gt; WebCore/bindings/v8/custom/V8DatabaseSyncCustom.cpp:50
&gt;  +      if (!(args[0]-&gt;IsString() &amp;&amp; args[1]-&gt;IsString()))
&gt; Same comment here about calling toString()

done.

&gt; WebCore/bindings/v8/custom/V8SQLTransactionSyncCustom.cpp:63
&gt;  +              v8::Local&lt;v8::Value&gt; lengthGetter;
&gt; Is this the getter or the gotten value?

changed to &apos;length&apos;.

&gt; WebCore/bindings/v8/custom/V8SQLTransactionSyncCustom.cpp:80
&gt;  +                      v8::TryCatch block;
&gt; Can we condense this somehow?  It&apos;s going to be a lot of code everywhere
&gt; otherwise.

added a macro to V8BindingMacros.h.

&gt; WebCore/bindings/v8/custom/V8SQLTransactionSyncCustom.cpp:89
&gt;  +                      sqlValues.append(SQLValue(value-&gt;NumberValue()));
&gt; Does this call valueOf?  If so, what if there&apos;s an exception?

wrapped in an EXCEPTION_BLOCK.

&gt; WebCore/bindings/v8/custom/V8SQLTransactionSyncCustom.cpp:91
&gt;  +                      sqlValues.append(SQLValue(toWebCoreString(value)));
&gt; Exception?

handled.

&gt; WebCore/bindings/v8/custom/V8WorkerContextCustom.cpp:150
&gt;  +      if (!args[0]-&gt;IsString() || !args[1]-&gt;IsString() ||
&gt; !args[2]-&gt;IsString() || !args[3]-&gt;IsUint32())
&gt; String comment.
&gt; 
&gt; WebCore/bindings/v8/custom/V8WorkerContextCustom.cpp:159
&gt;  +      unsigned long estimatedSize = args[3]-&gt;Uint32Value();
&gt; Does this call valueOf?  Should we be calling valueOf?  Does this match JSC?

potential exceptions should be handled. JSC was changed to return a uint32 too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222263</commentid>
    <comment_count>53</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-07 04:13:17 -0700</bug_when>
    <thetext>Attachment 55358 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/bindings/v8/custom/V8BindingMacros.h:1:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
Suppressing further [whitespace/carriage_return] reports for this file.
Total errors found: 38 in 44 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222264</commentid>
    <comment_count>54</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-05-07 04:15:08 -0700</bug_when>
    <thetext>(In reply to comment #53)
&gt; WebCore/bindings/v8/custom/V8BindingMacros.h:1:  One or more unexpected \r (^M)
&gt; found; better to use only a \n  [whitespace/carriage_return] [1]
&gt; Suppressing further [whitespace/carriage_return] reports for this file.
&gt; Total errors found: 38 in 44 files

i guess i didn&apos;t fix this before uploading the patch... fixed now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222477</commentid>
    <comment_count>55</comment_count>
      <attachid>55358</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-07 10:52:01 -0700</bug_when>
    <thetext>Comment on attachment 55358
patch #2: IDL files + JSC and V8 bindings

There are still a few more bugs, but this is vastly better than the rest of the custom bindings.  Thanks so much for iterating on this patch.  Please address the comments below before landing.

WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp:725
 +      EXCEPTION_BLOCK(String, name, toWebCoreString(args[0]));
Nice.

WebCore/bindings/v8/custom/V8DatabaseSyncCustom.cpp:52
 +      EXCEPTION_BLOCK(String, newVersion, toWebCoreString(args[0]));
Are these both supposed to be args[0]?

WebCore/bindings/v8/custom/V8DatabaseSyncCustom.cpp:65
 +      database-&gt;changeVersion(toWebCoreString(args[0]), toWebCoreString(args[1]), callback.release(), ec);
We probably shouldn&apos;t call toString again.  Why not use oldVersion and newVersion above?

WebCore/bindings/v8/custom/V8SQLTransactionCustom.cpp:72
 +              sqlArgsLength = length-&gt;Uint32Value();
This doesn&apos;t call valueOf, right?

WebCore/bindings/v8/custom/V8SQLTransactionCustom.cpp:78
 +                  v8::TryCatch block;
Why not use our fancy macro here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222524</commentid>
    <comment_count>56</comment_count>
      <attachid>55358</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-05-07 12:06:35 -0700</bug_when>
    <thetext>Comment on attachment 55358
patch #2: IDL files + JSC and V8 bindings

I&apos;d actually prefer a little more explanation and focus here before it lands (yes, it&apos;s much better, and thanks for sticking to it)

The empty ChangeLog is not helpful.  New files might be self explanatory, but I&apos;d like to see comments on changes to existing code.

&gt; -    RefPtr&lt;SQLTransactionCallback&gt; callback(JSSQLTransactionCallback::create(object, static_cast&lt;JSDOMGlobalObject*&gt;(exec-&gt;dynamicGlobalObject())));
&gt; -    
&gt; +
&gt; +    RefPtr&lt;SQLTransactionCallback&gt; callback(JSSQLTransactionCallback::create(object, static_cast&lt;JSDOMGlobalObject*&gt;(globalObject())));

This replacement is done a lot in this patch.  Why this change?  There&apos;s no comment in the ChangeLog explaining why it&apos;s necessary.  

If it&apos;s just a style cleanup because we have some new helper-y way of doing this, that should be in a separate patch because it is unrelated to this task.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222560</commentid>
    <comment_count>57</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-07 12:39:37 -0700</bug_when>
    <thetext>&gt; This replacement is done a lot in this patch.  Why this change?  There&apos;s no
&gt; comment in the ChangeLog explaining why it&apos;s necessary.  

Yeah, I sort of pushed dumi into making this into an omnibus &quot;fix the world&quot; patch.  Virtually every time you see dynamicGlobalObject in the bindings its a bug.  In this case, we need to use the global object of the &quot;this&quot; object to get the prototype chain to lead to the correct place.  We&apos;ve been working on fixing pervasive bug in the bindings for about a year.  We&apos;ve got 90% of it fixed, but the last 10% is taking a long time.

&gt; If it&apos;s just a style cleanup because we have some new helper-y way of doing
&gt; this, that should be in a separate patch because it is unrelated to this task.

It&apos;s not a style cleanup.  The old code is wrong.  This patch could be broken up into about six smaller patches if necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222583</commentid>
    <comment_count>58</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-05-07 13:20:30 -0700</bug_when>
    <thetext>(In reply to comment #57)

&gt; &gt; If it&apos;s just a style cleanup because we have some new helper-y way of doing
&gt; &gt; this, that should be in a separate patch because it is unrelated to this task.
&gt; 
&gt; It&apos;s not a style cleanup.  The old code is wrong.  This patch could be broken
&gt; up into about six smaller patches if necessary.

With those kind of changes intertwined, I&apos;d personally prefer that.

Dumi might prefer it as well.  It&apos;s *a lot* easier to get a few 10+k patches solidified, reviewed, and landed than it is one 90k patch, as he&apos;s probably discovered by this point.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222592</commentid>
    <comment_count>59</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-05-07 13:36:06 -0700</bug_when>
    <thetext>(In reply to comment #58)
&gt; &gt; It&apos;s not a style cleanup.  The old code is wrong.  This patch could be broken
&gt; &gt; up into about six smaller patches if necessary.
&gt; 
&gt; With those kind of changes intertwined, I&apos;d personally prefer that.
&gt; 
&gt; Dumi might prefer it as well.  It&apos;s *a lot* easier to get a few 10+k patches
&gt; solidified, reviewed, and landed than it is one 90k patch, as he&apos;s probably
&gt; discovered by this point.  :)

10K patches are impossible when adding a new binding. It requires changes to 9 files:

DerivedSources.cpp
DerivedSources.make
GNUmakefile.am
WebCore.gypi
WebCore.pri
WebCore.pro
WebCore.vcproj/WebCore.vcproj
WebCore.xcodeproj/project.pbxproj
bindings/js/JSBindingsAllInOne.cpp

which already adds up to a 20K+ patch. On top of that, you have two copies of the new bindings themselves (JSC and V8).

I&apos;ll try to break this patch into two:
1. Add the new IDL files and the new bindings, while keeping the existing code as unchanged as possible.
2. Clean up the existing code.

Adam: I&apos;ve addressed your comments. Uint32Value() doesn&apos;t seem to call valueOf(), but I&apos;m not 100% sure. What&apos;s so special about that method? Does it matter if we have that inside an EXCEPTION_BLOCK?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222601</commentid>
    <comment_count>60</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-05-07 13:59:18 -0700</bug_when>
    <thetext>(In reply to comment #59)

&gt; 10K patches are impossible when adding a new binding. 

I was just pulling 10k out of thin air as an example.

I&apos;ve added new bindings myself - such as all of the original database case.  This can easily be split up.

&gt; I&apos;ll try to break this patch into two:
&gt; 1. Add the new IDL files and the new bindings, while keeping the existing code
&gt; as unchanged as possible.
&gt; 2. Clean up the existing code.

You&apos;re not being visionary enough  ;)

When faced with large tasks like this, both myself and many others have followed a pattern of patches similar to the following:

1 - Land all of the new files, and their additions into the various build systems, with empty implementations of the idl interface itself.  This is mechanical and non-controversial, and can help shave *many* k of the size of the patch.
2 - Land the actual code that implements the new bindings, making trivial changes to existing core code where needed to keep the build working.
3 - Land the more complex changes to existing core code required to support the new feature along with the layout tests.

Even if you decided to combine steps 2 and 3, having step 1 be separate can be a huge help.

These are just ideas, and I&apos;m not going to be a hardass and make you do it like that, but I hope they illustrate how things could be broken up.

Landing the cleanups to existing code that need to happen, but aren&apos;t actually directly related to the task at hand, *should* be a separate patch and I will insist on that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222652</commentid>
    <comment_count>61</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-07 15:13:01 -0700</bug_when>
    <thetext>It&apos;s important to distinguish process for the sake of process and process for some useful goal.  It sounds like the useful goal you have in mind is higher quality code review.  IMHO, this change to the custom bindings is substantially more correct than the rest of the custom bindings.  For all the process used in the original custom database code, it&apos;s full of the kinds of errors I&apos;ve been pushing to have fixed in this patch.

That said, if you&apos;d be interested in reviewing this change broken into small pieces, I&apos;d also encourage dumi to break up the patch because custom bindings are essentially impossible to write correctly.  The more review the better.  :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222676</commentid>
    <comment_count>62</comment_count>
      <attachid>55426</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-05-07 15:58:19 -0700</bug_when>
    <thetext>Created attachment 55426
patch #2: IDL files + JSC and V8 bindings stubs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222702</commentid>
    <comment_count>63</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-05-07 16:57:05 -0700</bug_when>
    <thetext>(In reply to comment #61)
&gt; It&apos;s important to distinguish process for the sake of process and process for
&gt; some useful goal.  It sounds like the useful goal you have in mind is higher
&gt; quality code review.  

Indeed.

&gt; IMHO, this change to the custom bindings is substantially
&gt; more correct than the rest of the custom bindings.  For all the process used in
&gt; the original custom database code, it&apos;s full of the kinds of errors I&apos;ve been
&gt; pushing to have fixed in this patch.

The process has gotten better over time, allowing these errors to be caught now

&gt; That said, if you&apos;d be interested in reviewing this change broken into small
&gt; pieces, I&apos;d also encourage dumi to break up the patch because custom bindings
&gt; are essentially impossible to write correctly.  The more review the better. 
&gt; :-)

That is why I&apos;m interested.

I&apos;m not trying to enforce some arbitrary process.

This is a 90k patch that:
- Adds code for a new feature
- Changes previous code to support the new feature
- Corrects previous code that was incorrect, unrelated to the new feature
- Is littered with little style cleanups (such as the many corrections of trailing whitespace)

There&apos;s a handful of people on the project who are totally capable of giving such patches a effective review.

I am admittedly not one of them.

And for a patch like this that has been a struggle to iterate over multiple works...  I just wish I&apos;d stepped in and made the suggestions sooner</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222708</commentid>
    <comment_count>64</comment_count>
      <attachid>55426</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-05-07 17:02:10 -0700</bug_when>
    <thetext>Comment on attachment 55426
patch #2: IDL files + JSC and V8 bindings stubs

Dumi, I really appreciate you breaking off this chunk.  50k of non-controversial, mechanical work is much easier for me to review.

r+, baring any V8-ey, macro-ey changes Adam requested (which I didn&apos;t double check whether they apply here or not)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222717</commentid>
    <comment_count>65</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-07 17:17:07 -0700</bug_when>
    <thetext>&gt; The process has gotten better over time, allowing these errors to be caught now

At some point, I should go through can correct a wide swath of these errors now that we have the tools to fix them.  My plan was to try to get more of the bindings autogenerated so that the task would be smaller.  We&apos;ve made a lot of progress there, but there&apos;s still more to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222744</commentid>
    <comment_count>66</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-05-07 18:28:20 -0700</bug_when>
    <thetext>(In reply to comment #64)
&gt; Dumi, I really appreciate you breaking off this chunk.  50k of
&gt; non-controversial, mechanical work is much easier for me to review.

No problem. The easier it is for you to review my patches, the sooner I can land them. :)

Landed patch #2 as r58989.

A bunch of small patches will follow once the bots pick up r58989 and stay green:
patch #3: JSC bindings implementation
patch #4: V8 bindings implementation
patch #5: A test that calls openDatabaseSync() with invalid inputs
patch #6: A clean-up of the existing JSC bindings
patch #7: A clean-up of the existing V8 bindings

All these patches should be independent, except for patch #5 which will be blocked on patches #3 and #4.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222752</commentid>
    <comment_count>67</comment_count>
      <attachid>55448</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-05-07 18:54:17 -0700</bug_when>
    <thetext>Created attachment 55448
patch #3: JSC bindings implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222770</commentid>
    <comment_count>68</comment_count>
      <attachid>55453</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-05-07 19:57:58 -0700</bug_when>
    <thetext>Created attachment 55453
patch #4: V8 bindings implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222771</commentid>
    <comment_count>69</comment_count>
      <attachid>55454</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-05-07 19:59:15 -0700</bug_when>
    <thetext>Created attachment 55454
patch #5: openDatabaseSync() inputs test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222773</commentid>
    <comment_count>70</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-07 20:12:44 -0700</bug_when>
    <thetext>Attachment 55453 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/2221054</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222775</commentid>
    <comment_count>71</comment_count>
      <attachid>55455</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-05-07 20:17:48 -0700</bug_when>
    <thetext>Created attachment 55455
patch #4: V8 bindings implementation

Fixing V8DatabaseSyncCustom.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222777</commentid>
    <comment_count>72</comment_count>
      <attachid>55456</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-05-07 20:32:31 -0700</bug_when>
    <thetext>Created attachment 55456
patch #4: V8 bindings implementation

Forgot to add the implementation for V8WorkerContextCustom::openDatabaseSyncCallback().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222779</commentid>
    <comment_count>73</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-07 20:47:21 -0700</bug_when>
    <thetext>Attachment 55456 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/2173054</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222786</commentid>
    <comment_count>74</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-07 21:44:34 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/58989 might have broken GTK Linux 32-bit Debug
The following changes are on the blame list:
http://trac.webkit.org/changeset/58987
http://trac.webkit.org/changeset/58988
http://trac.webkit.org/changeset/58989</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222846</commentid>
    <comment_count>75</comment_count>
      <attachid>55466</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-05-08 00:34:12 -0700</bug_when>
    <thetext>Created attachment 55466
patch #3: JSC bindings implementation

Forgot to add the JSWorkerContextCustom::openDatabaseSync() implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222847</commentid>
    <comment_count>76</comment_count>
      <attachid>55467</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-05-08 00:35:07 -0700</bug_when>
    <thetext>Created attachment 55467
patch #4: V8 bindings implementation

Should make the Chromium bot happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222848</commentid>
    <comment_count>77</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-08 00:44:19 -0700</bug_when>
    <thetext>Attachment 55466 did not build on mac:
Build output: http://webkit-commit-queue.appspot.com/results/2174056</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222851</commentid>
    <comment_count>78</comment_count>
      <attachid>55469</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-05-08 01:06:00 -0700</bug_when>
    <thetext>Created attachment 55469
patch #3: JSC bindings implementation

Should make the Mac bot happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222852</commentid>
    <comment_count>79</comment_count>
      <attachid>55470</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-05-08 01:07:36 -0700</bug_when>
    <thetext>Created attachment 55470
patch #6: clean up of JSC DB bindings</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222853</commentid>
    <comment_count>80</comment_count>
      <attachid>55471</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-05-08 01:08:44 -0700</bug_when>
    <thetext>Created attachment 55471
patch #7: clean up of V8 DB bindings</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222855</commentid>
    <comment_count>81</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-08 01:16:47 -0700</bug_when>
    <thetext>Attachment 55467 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/2197062</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222859</commentid>
    <comment_count>82</comment_count>
      <attachid>55472</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-05-08 01:45:51 -0700</bug_when>
    <thetext>Created attachment 55472
patch #4: V8 bindings implementation

Typo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223048</commentid>
    <comment_count>83</comment_count>
      <attachid>55471</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-09 10:55:58 -0700</bug_when>
    <thetext>Comment on attachment 55471
patch #7: clean up of V8 DB bindings

Thanks.  Presumably bradee-oh isn&apos;t interested in reviewing V8 bindings changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223049</commentid>
    <comment_count>84</comment_count>
      <attachid>55472</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-09 10:58:22 -0700</bug_when>
    <thetext>Comment on attachment 55472
patch #4: V8 bindings implementation

Thanks!  Please consider the comment below before landing.  Again, assuming bradee-oh isn&apos;t interested in reviewing V8 bindings.

WebCore/bindings/v8/custom/V8SQLTransactionSyncCustom.cpp:66
 +          EXCEPTION_BLOCK(v8::Local&lt;v8::Value&gt;, length, sqlArgsObject-&gt;Get(v8::String::New(&quot;length&quot;)));
This code looks very similar to the code for the async case.  Can we call some common routine instead of copy/pasting the code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223350</commentid>
    <comment_count>85</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-05-10 09:17:07 -0700</bug_when>
    <thetext>(I am not)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223494</commentid>
    <comment_count>86</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-05-10 13:47:28 -0700</bug_when>
    <thetext>patch #7 landed as r59095.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223519</commentid>
    <comment_count>87</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-05-10 14:35:21 -0700</bug_when>
    <thetext>patch #4 landed as r59096.

Waiting on Brady&apos;s review for patches 3, 5 and 6.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223556</commentid>
    <comment_count>88</comment_count>
      <attachid>55470</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-05-10 15:51:35 -0700</bug_when>
    <thetext>Comment on attachment 55470
patch #6: clean up of JSC DB bindings

All 3 reviewed.  Thanks for breaking this up to individual commits!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223641</commentid>
    <comment_count>89</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-05-10 18:19:20 -0700</bug_when>
    <thetext>Landed patch #3 as r59113.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223673</commentid>
    <comment_count>90</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-05-10 19:07:38 -0700</bug_when>
    <thetext>Landed patch #6 (+ minor fix to a test, related to these changes) as r59118.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223699</commentid>
    <comment_count>91</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-10 20:04:57 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/59118 might have broken Qt Linux Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223706</commentid>
    <comment_count>92</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-05-10 20:35:49 -0700</bug_when>
    <thetext>(In reply to comment #91)
&gt; http://trac.webkit.org/changeset/59118 might have broken Qt Linux Release

Updating Qt&apos;s expectations for a test fixed the problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223770</commentid>
    <comment_count>93</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-10 23:15:54 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/59136 might have broken SnowLeopard Intel Release (Tests)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223771</commentid>
    <comment_count>94</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-05-10 23:17:47 -0700</bug_when>
    <thetext>Landed patch #5 as r59135.

All patches are landed, closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223779</commentid>
    <comment_count>95</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-10 23:31:12 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/59135 might have broken GTK Linux 32-bit Debug
The following changes are on the blame list:
http://trac.webkit.org/changeset/59137
http://trac.webkit.org/changeset/59138
http://trac.webkit.org/changeset/59131
http://trac.webkit.org/changeset/59132
http://trac.webkit.org/changeset/59133
http://trac.webkit.org/changeset/59134
http://trac.webkit.org/changeset/59135</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54212</attachid>
            <date>2010-04-23 20:19:48 -0700</date>
            <delta_ts>2010-04-23 20:37:10 -0700</delta_ts>
            <desc>patch #1: stubs for storage classes</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>28085</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1ODIwNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzggQEAKKzIwMTAtMDQtMjMgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRpbmcgc29tZSByZXF1aXJlZCBjbGFzc2VzIGZvciB0aGUgc3luYyBXZWJTUUxEYXRhYmFz
ZXMgQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzQ5OTQKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lw
aToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogc3RvcmFnZS9EYXRhYmFzZVN5bmMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlU3luYzo6ZGF0YWJhc2VJbmZvVGFibGVOYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlU3luYzo6c2V0SXNBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YWJhc2VTeW5jOjppc0F2YWlsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVN5
bmM6Om9wZW5EYXRhYmFzZVN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VTeW5jOjpE
YXRhYmFzZVN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VTeW5jOjp+RGF0YWJhc2VT
eW5jKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlU3luYzo6dmVyc2lvbik6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhYmFzZVN5bmM6OmNoYW5nZVZlcnNpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2VTeW5jOjp0cmFuc2FjdGlvbik6CisgICAgICAgICogc3RvcmFnZS9EYXRhYmFz
ZVN5bmMuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVN5bmM6OmRhdGFiYXNl
RGVidWdOYW1lKToKKyAgICAgICAgKiBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luYy5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25TeW5jOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25TeW5jOjpTUUxUcmFuc2FjdGlvblN5bmMpOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25TeW5jOjp+U1FMVHJhbnNhY3Rpb25TeW5j
KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uU3luYzo6ZXhlY3V0ZVNRTCk6Cisg
ICAgICAgICogc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmMuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTUUxUcmFuc2FjdGlvblN5bmM6OmRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNRTFRyYW5zYWN0aW9uU3luYzo6aXNSZWFkT25seSk6CisgICAgICAgICogc3RvcmFnZS9TUUxU
cmFuc2FjdGlvblN5bmNDYWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNRTFRy
YW5zYWN0aW9uU3luY0NhbGxiYWNrOjp+U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2spOgorCiAy
MDEwLTA0LTIzICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGF2aWQgTGV2aW4uCkluZGV4OiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDU4MjA2KQorKysgV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMjM0NCw2ICsyMzQ0LDggQEAgd2Vi
Y29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VBdXRob3JpemVyLmgg
XAogCVdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZUNhbGxiYWNrLmggXAogCVdlYkNvcmUvc3RvcmFn
ZS9EYXRhYmFzZURldGFpbHMuaCBcCisJV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlU3luYy5jcHAg
XAorCVdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVN5bmMuaCBcCiAJV2ViQ29yZS9zdG9yYWdlL0Rh
dGFiYXNlVGFzay5jcHAgXAogCVdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRhc2suaCBcCiAJV2Vi
Q29yZS9zdG9yYWdlL0RhdGFiYXNlVGhyZWFkLmNwcCBcCkBAIC0yMzcxLDcgKzIzNzMsMTAgQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DbGll
bnQuaCBcCiAJV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCBcCiAJ
V2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwIFwKLQlXZWJDb3Jl
L3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmgKKwlXZWJDb3JlL3N0b3JhZ2Uv
U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmggXAorCVdlYkNvcmUvc3RvcmFnZS9TUUxUcmFu
c2FjdGlvblN5bmMuY3BwIFwKKwlXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5jLmgg
XAorCVdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5oCiAKIGVsc2UK
IHdlYmNvcmVfY3BwZmxhZ3MgKz0gLURFTkFCTEVfREFUQUJBU0U9MApJbmRleDogV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9u
IDU4MjA2KQorKysgV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTMzMDEs
NiArMzMwMSw4IEBACiAgICAgICAgICAgICAnc3RvcmFnZS9EYXRhYmFzZUF1dGhvcml6ZXIuaCcs
CiAgICAgICAgICAgICAnc3RvcmFnZS9EYXRhYmFzZUNhbGxiYWNrLmgnLAogICAgICAgICAgICAg
J3N0b3JhZ2UvRGF0YWJhc2VEZXRhaWxzLmgnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvRGF0YWJh
c2VTeW5jLmNwcCcsCisgICAgICAgICAgICAnc3RvcmFnZS9EYXRhYmFzZVN5bmMuaCcsCiAgICAg
ICAgICAgICAnc3RvcmFnZS9EYXRhYmFzZVRhc2suY3BwJywKICAgICAgICAgICAgICdzdG9yYWdl
L0RhdGFiYXNlVGFzay5oJywKICAgICAgICAgICAgICdzdG9yYWdlL0RhdGFiYXNlVGhyZWFkLmNw
cCcsCkBAIC0zMzQ2LDYgKzMzNDgsOSBAQAogICAgICAgICAgICAgJ3N0b3JhZ2UvU1FMVHJhbnNh
Y3Rpb25Db29yZGluYXRvci5oJywKICAgICAgICAgICAgICdzdG9yYWdlL1NRTFRyYW5zYWN0aW9u
Q29vcmRpbmF0b3IuY3BwJywKICAgICAgICAgICAgICdzdG9yYWdlL1NRTFRyYW5zYWN0aW9uRXJy
b3JDYWxsYmFjay5oJywKKyAgICAgICAgICAgICdzdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luYy5j
cHAnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5jLmgnLAorICAgICAg
ICAgICAgJ3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaCcsCiAgICAgICAgICAg
ICAnc3RvcmFnZS9TdG9yYWdlLmNwcCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9TdG9yYWdlLmgn
LAogICAgICAgICAgICAgJ3N0b3JhZ2UvU3RvcmFnZUFyZWEuaCcsCkluZGV4OiBXZWJDb3JlL1dl
YkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDU4
MjA2KQorKysgV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtMjI2NSw3ICsy
MjY1LDggQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1NRTElURT0xKSB7CiAgICAgICAgIHBs
YXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5jcHAgXAogICAgICAgICBwbGF0Zm9ybS9zcWwv
U1FMVmFsdWUuY3BwIFwKICAgICAgICAgc3RvcmFnZS9EYXRhYmFzZS5jcHAgXAotICAgICAgICBz
dG9yYWdlL0RhdGFiYXNlQXV0aG9yaXplci5jcHAKKyAgICAgICAgc3RvcmFnZS9EYXRhYmFzZUF1
dGhvcml6ZXIuY3BwIFwKKyAgICAgICAgc3RvcmFnZS9EYXRhYmFzZVN5bmMuY3BwCiB9CiAKIApA
QCAtMjI4Myw2ICsyMjg0LDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0RBVEFCQVNFPTEp
IHsKICAgICAgICAgc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5jcHAgXAogICAgICAgICBzdG9yYWdl
L1NRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcCBcCiAgICAgICAgIHN0b3JhZ2UvU1FMVHJhbnNhY3Rp
b25Db29yZGluYXRvci5jcHAgXAorICAgICAgICBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luYy5j
cHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFN0YXRlbWVudENhbGxiYWNrLmNw
cCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFj
ay5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFRyYW5zYWN0aW9uQ2FsbGJh
Y2suY3BwIFwKQEAgLTIyOTksNiArMjMwMSw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9E
T01fU1RPUkFHRT0xKSAKICAgICAgICAgc3RvcmFnZS9EYXRhYmFzZUF1dGhvcml6ZXIuaCBcCiAg
ICAgICAgIHN0b3JhZ2UvRGF0YWJhc2UuaCBcCiAgICAgICAgIHN0b3JhZ2UvRGF0YWJhc2VDYWxs
YmFjay5oIFwKKyAgICAgICAgc3RvcmFnZS9EYXRhYmFzZVN5bmMuaCBcCiAgICAgICAgIHN0b3Jh
Z2UvRGF0YWJhc2VUYXNrLmggXAogICAgICAgICBzdG9yYWdlL0RhdGFiYXNlVGhyZWFkLmggXAog
ICAgICAgICBzdG9yYWdlL0RhdGFiYXNlVHJhY2tlci5oIFwKQEAgLTIzMTIsNiArMjMxNSw3IEBA
IGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9ET01fU1RPUkFHRT0xKSAKICAgICAgICAgc3RvcmFn
ZS9TUUxUcmFuc2FjdGlvbi5oIFwKICAgICAgICAgc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNsaWVu
dC5oIFwKICAgICAgICAgc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmggXAorICAg
ICAgICBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luYy5oIFwKICAgICAgICAgc3RvcmFnZS9TdG9y
YWdlQXJlYS5oIFwKICAgICAgICAgc3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaCBcCiAgICAgICAg
IHN0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmggXApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCShyZXZpc2lvbiA1ODIwNikKKysrIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTQyODU1LDYgKzQyODU1LDE0IEBACiAJ
CQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN0b3Jh
Z2VcRGF0YWJhc2VTeW5jLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHN0b3JhZ2VcRGF0YWJhc2VTeW5jLmgiDQorCQkJCT4NCisJCQk8
L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdlXERhdGFiYXNl
VGFzay5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KQEAgLTQyOTc5LDYgKzQyOTg3LDE4IEBACiAJ
CQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN0b3Jh
Z2VcU1FMVHJhbnNhY3Rpb25TeW5jLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8Rmls
ZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN0b3JhZ2VcU1FMVHJhbnNhY3Rpb25TeW5jLmgiDQor
CQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9y
YWdlXFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQor
CQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdlXFN0b3JhZ2UuY3BwIg0KIAkJ
CQk+DQogCQkJPC9GaWxlPg0KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiA1ODIwNikKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MTYzLDYgKzQxNjMsMTEgQEAKIAkJ
QjUxQkY2RjExMDJDOUU1OTAwMDJDMTVBIC8qIFNRTFRyYW5zYWN0aW9uQ2xpZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNTFCRjZFRjEwMkM5RTU5
MDAwMkMxNUEgLyogU1FMVHJhbnNhY3Rpb25DbGllbnQuaCAqLzsgfTsKIAkJQjVBNjg0MjIwRkZB
QkU5ODAwRDI0Njg5IC8qIFNRTGl0ZUZpbGVTeXN0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1QTY4NDIxMEZGQUJFOTgwMEQyNDY4OSAvKiBTUUxp
dGVGaWxlU3lzdGVtLmggKi87IH07CiAJCUI1QTY4NDI0MEZGQUJFQUEwMEQyNDY4OSAvKiBTUUxp
dGVGaWxlU3lzdGVtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEI1QTY4NDIzMEZGQUJFQUEwMEQyNDY4OSAvKiBTUUxpdGVGaWxlU3lzdGVtLmNwcCAq
LzsgfTsKKwkJQjUyM0NGMDYxMTgyNjc1NDAwRUJCMjlDIC8qIFNRTFRyYW5zYWN0aW9uU3luY0Nh
bGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
NTIzQ0VGRjExODI2NzU0MDBFQkIyOUMgLyogU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaCAq
LzsgfTsKKwkJQjUyM0NGMDgxMTgyNjc1NDAwRUJCMjlDIC8qIFNRTFRyYW5zYWN0aW9uU3luYy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjUyM0NGMDEx
MTgyNjc1NDAwRUJCMjlDIC8qIFNRTFRyYW5zYWN0aW9uU3luYy5oICovOyB9OworCQlCNTIzQ0Yw
OTExODI2NzU0MDBFQkIyOUMgLyogU1FMVHJhbnNhY3Rpb25TeW5jLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1MjNDRjAyMTE4MjY3NTQwMEVCQjI5
QyAvKiBTUUxUcmFuc2FjdGlvblN5bmMuY3BwICovOyB9OworCQlCNTIzQ0YwQTExODI2NzU0MDBF
QkIyOUMgLyogRGF0YWJhc2VTeW5jLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEI1MjNDRjAzMTE4MjY3NTQwMEVCQjI5QyAvKiBEYXRhYmFzZVN5bmMu
Y3BwICovOyB9OworCQlCNTIzQ0YwQjExODI2NzU0MDBFQkIyOUMgLyogRGF0YWJhc2VTeW5jLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNTIzQ0YwNDEx
ODI2NzU0MDBFQkIyOUMgLyogRGF0YWJhc2VTeW5jLmggKi87IH07CiAJCUI1QzExMjNCMTAyQjZD
NDYwMDA5NjU3OCAvKiBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1QzExMjM5MTAyQjZDNDYwMDA5NjU3
OCAvKiBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcCAqLzsgfTsKIAkJQjVDMTEyM0MxMDJC
NkM0NjAwMDk2NTc4IC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1QzExMjNBMTAyQjZDNDYwMDA5NjU3
OCAvKiBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmggKi87IH07CiAJCUI1RDM2MDFBMTEyRjhC
NTYwMDQ4REVBOCAvKiBEYXRhYmFzZUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNUQzNjAxOTExMkY4QjU2MDA0OERFQTggLyogRGF0YWJh
c2VDYWxsYmFjay5oICovOyB9OwpAQCAtOTUwNyw2ICs5NTEyLDExIEBACiAJCUI1MEY1QjgwMEU5
NkNEOTkwMEFENzFBNiAvKiBXZWJDb3JlT2JqQ0V4dHJhcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvcmVPYmpDRXh0cmFzLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCNTFCRjZFRTEwMkM5RTU5MDAwMkMxNUEgLyogU1FMVHJhbnNhY3Rp
b25DbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1FMVHJh
bnNhY3Rpb25DbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNTFCRjZF
RjEwMkM5RTU5MDAwMkMxNUEgLyogU1FMVHJhbnNhY3Rpb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU1FMVHJhbnNhY3Rpb25DbGllbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQjUyM0NFRkYxMTgyNjc1NDAwRUJCMjlDIC8qIFNRTFRyYW5zYWN0
aW9uU3luY0NhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNRTFRy
YW5zYWN0aW9uU3luY0NhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI1
MjNDRjAxMTE4MjY3NTQwMEVCQjI5QyAvKiBTUUxUcmFuc2FjdGlvblN5bmMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1FMVHJhbnNhY3Rpb25TeW5jLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUI1MjNDRjAyMTE4MjY3NTQwMEVCQjI5QyAvKiBTUUxUcmFuc2Fj
dGlvblN5bmMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1FMVHJh
bnNhY3Rpb25TeW5jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjUyM0NGMDMx
MTgyNjc1NDAwRUJCMjlDIC8qIERhdGFiYXNlU3luYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBEYXRhYmFzZVN5bmMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlCNTIzQ0YwNDExODI2NzU0MDBFQkIyOUMgLyogRGF0YWJhc2VTeW5jLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFiYXNlU3luYy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCNUE2ODQyMTBGRkFCRTk4MDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5
c3RlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTUUxpdGVGaWxlU3lzdGVt
Lmg7IHBhdGggPSBzcWwvU1FMaXRlRmlsZVN5c3RlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCNUE2ODQyMzBGRkFCRUFBMDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5c3RlbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTUUxpdGVGaWxlU3lzdGVtLmNw
cDsgcGF0aCA9IHNxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQjVDMTEyMzkxMDJCNkM0NjAwMDk2NTc4IC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRp
bmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1FMVHJhbnNh
Y3Rpb25Db29yZGluYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDcz
OCw2ICsxMDc0OCw4IEBACiAJCQkJNTFBNDVCNTQwQ0FEN0ZENzAwMEQyQkU5IC8qIERhdGFiYXNl
QXV0aG9yaXplci5oICovLAogCQkJCUI1RDM2MDE5MTEyRjhCNTYwMDQ4REVBOCAvKiBEYXRhYmFz
ZUNhbGxiYWNrLmggKi8sCiAJCQkJNTExNkQ5NzUwQ0YxNzdCRDAwQzJCODREIC8qIERhdGFiYXNl
RGV0YWlscy5oICovLAorCQkJCUI1MjNDRjAzMTE4MjY3NTQwMEVCQjI5QyAvKiBEYXRhYmFzZVN5
bmMuY3BwICovLAorCQkJCUI1MjNDRjA0MTE4MjY3NTQwMEVCQjI5QyAvKiBEYXRhYmFzZVN5bmMu
aCAqLywKIAkJCQk1MTk2MTFFOTBDQUM3NDlDMDAxMEE4MEMgLyogRGF0YWJhc2VUYXNrLmNwcCAq
LywKIAkJCQk1MTk2MTFFODBDQUM3NDlDMDAxMEE4MEMgLyogRGF0YWJhc2VUYXNrLmggKi8sCiAJ
CQkJNTE5NjExNjEwQ0FDNTY1NzAwMTBBODBDIC8qIERhdGFiYXNlVGhyZWFkLmNwcCAqLywKQEAg
LTEwNzc0LDYgKzEwNzg2LDkgQEAKIAkJCQlCNUMxMTIzOTEwMkI2QzQ2MDAwOTY1NzggLyogU1FM
VHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAgKi8sCiAJCQkJQjVDMTEyM0ExMDJCNkM0NjAwMDk2
NTc4IC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCAqLywKIAkJCQkxQTdDQ0IxODBDRDk0
NjlBMDBCN0I2NEUgLyogU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmggKi8sCisJCQkJQjUy
M0NFRkYxMTgyNjc1NDAwRUJCMjlDIC8qIFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmggKi8s
CisJCQkJQjUyM0NGMDExMTgyNjc1NDAwRUJCMjlDIC8qIFNRTFRyYW5zYWN0aW9uU3luYy5oICov
LAorCQkJCUI1MjNDRjAyMTE4MjY3NTQwMEVCQjI5QyAvKiBTUUxUcmFuc2FjdGlvblN5bmMuY3Bw
ICovLAogCQkJCTUxRTNGOUM1MERBMDU5REMwMDI1MDkxMSAvKiBTdG9yYWdlLmNwcCAqLywKIAkJ
CQk1MUUzRjlDNDBEQTA1OURDMDAyNTA5MTEgLyogU3RvcmFnZS5oICovLAogCQkJCTUxRTNGOUQx
MERBMDVENzEwMDI1MDkxMSAvKiBTdG9yYWdlLmlkbCAqLywKQEAgLTE4ODkwLDYgKzE4OTA1LDkg
QEAKIAkJCQkyRTNCQzBDQjExN0QzRTA4MDBCOTQwOUEgLyogSlNGaWxlRXJyb3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTJFM0JDMTA4MTE3RDQ3OTgwMEI5NDA5QSAvKiBET01GaWxlRXJyb3IuaCBp
biBIZWFkZXJzICovLAogCQkJCTJFM0JDMTBCMTE3RDQ3QzgwMEI5NDA5QSAvKiBET01GaWxlRXJy
b3JJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjUyM0NGMDYxMTgyNjc1NDAwRUJCMjlD
IC8qIFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQlCNTIz
Q0YwODExODI2NzU0MDBFQkIyOUMgLyogU1FMVHJhbnNhY3Rpb25TeW5jLmggaW4gSGVhZGVycyAq
LywKKwkJCQlCNTIzQ0YwQjExODI2NzU0MDBFQkIyOUMgLyogRGF0YWJhc2VTeW5jLmggaW4gSGVh
ZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKQEAgLTIxMTI3LDYgKzIxMTQ1LDggQEAKIAkJCQkwOEE3RTkyRjExODA1RUZEMDBE
MEI4NzAgLyogU1ZHUmVzb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkUzQkMwQ0ExMTdE
M0UwODAwQjk0MDlBIC8qIEpTRmlsZUVycm9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFM0JD
MTA5MTE3RDQ3OTgwMEI5NDA5QSAvKiBET01GaWxlRXJyb3IubW0gaW4gU291cmNlcyAqLywKKwkJ
CQlCNTIzQ0YwOTExODI2NzU0MDBFQkIyOUMgLyogU1FMVHJhbnNhY3Rpb25TeW5jLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUI1MjNDRjBBMTE4MjY3NTQwMEVCQjI5QyAvKiBEYXRhYmFzZVN5bmMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VTeW5jLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VTeW5jLmNwcAkocmV2aXNp
b24gMCkKKysrIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVN5bmMuY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YK
KyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEYXRhYmFz
ZVN5bmMuaCIKKworI2lmIEVOQUJMRShEQVRBQkFTRSkKKyNpbmNsdWRlICJEYXRhYmFzZUNhbGxi
YWNrLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5oIgor
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCisj
ZW5kaWYgLy8gRU5BQkxFKERBVEFCQVNFKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0
IFN0cmluZyYgRGF0YWJhc2VTeW5jOjpkYXRhYmFzZUluZm9UYWJsZU5hbWUoKQoreworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBuYW1lLCAoIl9fV2ViS2l0RGF0YWJhc2VJbmZvVGFi
bGVfXyIpKTsKKyAgICByZXR1cm4gbmFtZTsKK30KKworI2lmIEVOQUJMRShEQVRBQkFTRSkKKwor
c3RhdGljIGJvb2wgaXNTeW5jRGF0YWJhc2VBdmFpbGFibGUgPSB0cnVlOworCit2b2lkIERhdGFi
YXNlU3luYzo6c2V0SXNBdmFpbGFibGUoYm9vbCBhdmFpbGFibGUpCit7CisgICAgaXNTeW5jRGF0
YWJhc2VBdmFpbGFibGUgPSBhdmFpbGFibGU7Cit9CisKK2Jvb2wgRGF0YWJhc2VTeW5jOjppc0F2
YWlsYWJsZSgpCit7CisgICAgcmV0dXJuIGlzU3luY0RhdGFiYXNlQXZhaWxhYmxlOworfQorCitQ
YXNzUmVmUHRyPERhdGFiYXNlU3luYz4gRGF0YWJhc2VTeW5jOjpvcGVuRGF0YWJhc2VTeW5jKAor
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIC8qY29udGV4dCovLCBjb25zdCBTdHJpbmcmIC8q
bmFtZSovLCBjb25zdCBTdHJpbmcmIC8qZXhwZWN0ZWRWZXJzaW9uKi8sCisgICAgY29uc3QgU3Ry
aW5nJiAvKmRpc3BsYXlOYW1lKi8sIHVuc2lnbmVkIGxvbmcgLyplc3RpbWF0ZWRTaXplKi8sCisg
ICAgUGFzc1JlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiAvKmNyZWF0aW9uQ2FsbGJhY2sqLywgRXhj
ZXB0aW9uQ29kZSYgZSkKK3sKKyAgICBlID0gU0VDVVJJVFlfRVJSOworICAgIHJldHVybiAwOwor
fQorCitEYXRhYmFzZVN5bmM6OkRhdGFiYXNlU3luYyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiAv
KmNvbnRleHQqLywgY29uc3QgU3RyaW5nJiBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5h
bWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNp
emUsIFBhc3NSZWZQdHI8RGF0YWJhc2VDYWxsYmFjaz4gY3JlYXRpb25DYWxsYmFjaykKKyAgICA6
IG1fbmFtZShuYW1lLmNyb3NzVGhyZWFkU3RyaW5nKCkpCisgICAgLCBtX2V4cGVjdGVkVmVyc2lv
bihleHBlY3RlZFZlcnNpb24uY3Jvc3NUaHJlYWRTdHJpbmcoKSkKKyAgICAsIG1fZGlzcGxheU5h
bWUoZGlzcGxheU5hbWUuY3Jvc3NUaHJlYWRTdHJpbmcoKSkKKyAgICAsIG1fZXN0aW1hdGVkU2l6
ZShlc3RpbWF0ZWRTaXplKQorICAgICwgbV9jcmVhdGlvbkNhbGxiYWNrKGNyZWF0aW9uQ2FsbGJh
Y2spCit7Cit9CisKK0RhdGFiYXNlU3luYzo6fkRhdGFiYXNlU3luYygpCit7Cit9CisKK1N0cmlu
ZyBEYXRhYmFzZVN5bmM6OnZlcnNpb24oKSBjb25zdAoreworICAgIHJldHVybiBTdHJpbmcoKTsK
K30KKwordm9pZCBEYXRhYmFzZVN5bmM6OmNoYW5nZVZlcnNpb24oY29uc3QgU3RyaW5nJiAvKm9s
ZFZlcnNpb24qLywgY29uc3QgU3RyaW5nJiAvKm5ld1ZlcnNpb24qLywgUGFzc1JlZlB0cjxTUUxU
cmFuc2FjdGlvblN5bmNDYWxsYmFjaz4gLypjYWxsYmFjayovKQoreworfQorCit2b2lkIERhdGFi
YXNlU3luYzo6dHJhbnNhY3Rpb24oUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFj
az4gLypjYWxsYmFjayovLCBib29sIC8qcmVhZE9ubHkqLykKK3sKK30KKworI2VuZGlmIC8vIEVO
QUJMRShEQVRBQkFTRSkKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9z
dG9yYWdlL0RhdGFiYXNlU3luYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9EYXRh
YmFzZVN5bmMuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVN5bmMu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICog
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRGF0YWJhc2VTeW5jX2gK
KyNkZWZpbmUgRGF0YWJhc2VTeW5jX2gKKworI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisK
KyNpZiBFTkFCTEUoREFUQUJBU0UpCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBEYXRhYmFzZUNhbGxiYWNrOworY2xhc3MgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDsKK2NsYXNzIFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrOworCit0eXBl
ZGVmIGludCBFeGNlcHRpb25Db2RlOworCitjbGFzcyBEYXRhYmFzZVN5bmMgOiBwdWJsaWMgVGhy
ZWFkU2FmZVNoYXJlZDxEYXRhYmFzZVN5bmM+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBz
ZXRJc0F2YWlsYWJsZShib29sKTsKKyAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOworCisg
ICAgfkRhdGFiYXNlU3luYygpOworCisvLyBEaXJlY3Qgc3VwcG9ydCBmb3IgdGhlIERPTSBBUEkK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxEYXRhYmFzZVN5bmM+IG9wZW5EYXRhYmFzZVN5bmMoCisg
ICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sCisgICAgICAgIGNvbnN0IFN0cmluZyYg
ZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwKKyAgICAgICAgUGFzc1Jl
ZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiBjcmVhdGlvbkNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7
CisgICAgU3RyaW5nIHZlcnNpb24oKSBjb25zdDsKKyAgICB2b2lkIGNoYW5nZVZlcnNpb24oY29u
c3QgU3RyaW5nJiBvbGRWZXJzaW9uLCBjb25zdCBTdHJpbmcmIG5ld1ZlcnNpb24sIFBhc3NSZWZQ
dHI8U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+IGNhbGxiYWNrKTsKKyAgICB2b2lkIHRyYW5z
YWN0aW9uKFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+IGNhbGxiYWNrLCBi
b29sIHJlYWRPbmx5KTsKKworLy8gSW50ZXJuYWwgZW5naW5lIHN1cHBvcnQKKyAgICBzdGF0aWMg
Y29uc3QgU3RyaW5nJiBkYXRhYmFzZUluZm9UYWJsZU5hbWUoKTsKKworcHJpdmF0ZToKKyAgICBE
YXRhYmFzZVN5bmMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5n
JiBuYW1lLAorICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwg
Y29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwKKyAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9u
ZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+IGNyZWF0aW9uQ2Fs
bGJhY2spOworCisgICAgU3RyaW5nIG1fbmFtZTsKKyAgICBTdHJpbmcgbV9leHBlY3RlZFZlcnNp
b247CisgICAgU3RyaW5nIG1fZGlzcGxheU5hbWU7CisgICAgdW5zaWduZWQgbG9uZyBtX2VzdGlt
YXRlZFNpemU7CisgICAgUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+IG1fY3JlYXRpb25DYWxsYmFj
azsKKworI2lmbmRlZiBOREVCVUcKKyAgICBTdHJpbmcgZGF0YWJhc2VEZWJ1Z05hbWUoKSBjb25z
dCB7IHJldHVybiBTdHJpbmcoKTsgfQorI2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbHNlCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIERhdGFiYXNlU3luYyA6
IHB1YmxpYyBUaHJlYWRTYWZlU2hhcmVkPERhdGFiYXNlU3luYz4geworcHVibGljOgorICAgIHN0
YXRpYyBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSW5mb1RhYmxlTmFtZSgpOworfTsKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShEQVRBQkFTRSkKKworI2VuZGlmIC8v
IERhdGFiYXNlU3luY19oCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5j
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5jLmNw
cAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmMuY3Bw
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAz
LiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlNRTFRyYW5zYWN0aW9uU3luYy5oIgorCisjaWYgRU5BQkxFKERBVEFCQVNFKQorCisj
aW5jbHVkZSAiRGF0YWJhc2VTeW5jLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiU1FMUmVzdWx0U2V0LmgiCisjaW5j
bHVkZSAiU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJTUUxWYWx1ZS5o
IgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5jPiBT
UUxUcmFuc2FjdGlvblN5bmM6OmNyZWF0ZShEYXRhYmFzZVN5bmMqIGRiLCBQYXNzUmVmUHRyPFNR
TFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrPiBjYWxsYmFjaywgYm9vbCByZWFkT25seSkKK3sKKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFNRTFRyYW5zYWN0aW9uU3luYyhkYiwgY2FsbGJhY2ssIHJl
YWRPbmx5KSk7Cit9CisKK1NRTFRyYW5zYWN0aW9uU3luYzo6U1FMVHJhbnNhY3Rpb25TeW5jKERh
dGFiYXNlU3luYyogZGIsIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+IGNh
bGxiYWNrLCBib29sIHJlYWRPbmx5KQorICAgIDogbV9kYXRhYmFzZShkYikKKyAgICAsIG1fY2Fs
bGJhY2soY2FsbGJhY2spCisgICAgLCBtX3JlYWRPbmx5KHJlYWRPbmx5KQoreworICAgIEFTU0VS
VChtX2RhdGFiYXNlKTsKK30KKworU1FMVHJhbnNhY3Rpb25TeW5jOjp+U1FMVHJhbnNhY3Rpb25T
eW5jKCkKK3sKK30KKworUGFzc1JlZlB0cjxTUUxSZXN1bHRTZXQ+IFNRTFRyYW5zYWN0aW9uU3lu
Yzo6ZXhlY3V0ZVNRTChjb25zdCBTdHJpbmcmIC8qc3FsU3RhdGVtZW50Ki8sIGNvbnN0IFZlY3Rv
cjxTUUxWYWx1ZT4mIC8qYXJndW1lbnRzKi8sIEV4Y2VwdGlvbkNvZGUmIC8qZSovKQoreworICAg
IHJldHVybiAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoREFUQUJBU0UpCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5jLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luYy5oCShyZXZp
c2lvbiAwKQorKysgV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luYy5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhl
ciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1l
cyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpZm5kZWYgU1FMVHJhbnNhY3Rpb25TeW5jX2gKKyNkZWZp
bmUgU1FMVHJhbnNhY3Rpb25TeW5jX2gKKworI2lmIEVOQUJMRShEQVRBQkFTRSkKKworI2luY2x1
ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3R5cGVkZWYgaW50IEV4
Y2VwdGlvbkNvZGU7CisKK2NsYXNzIERhdGFiYXNlU3luYzsKK2NsYXNzIFNRTFJlc3VsdFNldDsK
K2NsYXNzIFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrOworY2xhc3MgU1FMVmFsdWU7CitjbGFz
cyBTdHJpbmc7CisKK2NsYXNzIFNRTFRyYW5zYWN0aW9uU3luYyA6IHB1YmxpYyBUaHJlYWRTYWZl
U2hhcmVkPFNRTFRyYW5zYWN0aW9uU3luYz4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFNRTFRyYW5zYWN0aW9uU3luYz4gY3JlYXRlKERhdGFiYXNlU3luYyosIFBhc3NSZWZQdHI8
U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+LCBib29sIHJlYWRPbmx5ID0gZmFsc2UpOworCisg
ICAgflNRTFRyYW5zYWN0aW9uU3luYygpOworCisgICAgUGFzc1JlZlB0cjxTUUxSZXN1bHRTZXQ+
IGV4ZWN1dGVTUUwoY29uc3QgU3RyaW5nJiBzcWxTdGF0ZW1lbnQsIGNvbnN0IFZlY3RvcjxTUUxW
YWx1ZT4mIGFyZ3VtZW50cywgRXhjZXB0aW9uQ29kZSYgZSk7CisKKyAgICBEYXRhYmFzZVN5bmMq
IGRhdGFiYXNlKCkgeyByZXR1cm4gbV9kYXRhYmFzZS5nZXQoKTsgfQorICAgIGJvb2wgaXNSZWFk
T25seSgpIHsgcmV0dXJuIG1fcmVhZE9ubHk7IH0KKworcHJpdmF0ZToKKyAgICBTUUxUcmFuc2Fj
dGlvblN5bmMoRGF0YWJhc2VTeW5jKiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvblN5bmNDYWxs
YmFjaz4sIGJvb2wgcmVhZE9ubHkpOworCisgICAgUmVmUHRyPERhdGFiYXNlU3luYz4gbV9kYXRh
YmFzZTsKKyAgICBSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+IG1fY2FsbGJhY2s7
CisgICAgYm9vbCBtX3JlYWRPbmx5OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYKKworI2VuZGlmIC8vIFNRTFRyYW5zYWN0aW9uU3luY19oCkluZGV4OiBXZWJDb3JlL3N0
b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaAkocmV2aXNpb24gMCkKKysrIFdl
YkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKlRyYW5zYWN0aW9uCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhl
IG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNRTFRyYW5zYWN0aW9uU3luY0Nh
bGxiYWNrX2gKKyNkZWZpbmUgU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2tfaAorCisjaWYgRU5B
QkxFKERBVEFCQVNFKQorCisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CitjbGFzcyBTUUxUcmFu
c2FjdGlvblN5bmM7CisKK2NsYXNzIFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrIDogcHVibGlj
IFRocmVhZFNhZmVTaGFyZWQ8U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+IHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIH5TUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjaygpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgU1FMVHJhbnNhY3Rp
b25TeW5jKiwgYm9vbCYgcmFpc2VkRXhjZXB0aW9uKSA9IDA7Cit9OworCit9CisKKyNlbmRpZgor
CisjZW5kaWYgLy8gU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2tfaAo=
</data>
<flag name="commit-queue"
          id="38123"
          type_id="3"
          status="-"
          setter="dumi"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54213</attachid>
            <date>2010-04-23 20:37:10 -0700</date>
            <delta_ts>2010-04-26 14:29:56 -0700</delta_ts>
            <desc>patch #1: stubs for storage classes</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>28116</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1ODIwNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzggQEAKKzIwMTAtMDQtMjMgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRpbmcgc29tZSByZXF1aXJlZCBjbGFzc2VzIGZvciB0aGUgc3luYyBXZWJTUUxEYXRhYmFz
ZXMgQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzQ5OTQKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lw
aToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogc3RvcmFnZS9EYXRhYmFzZVN5bmMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlU3luYzo6ZGF0YWJhc2VJbmZvVGFibGVOYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlU3luYzo6c2V0SXNBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YWJhc2VTeW5jOjppc0F2YWlsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVN5
bmM6Om9wZW5EYXRhYmFzZVN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VTeW5jOjpE
YXRhYmFzZVN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VTeW5jOjp+RGF0YWJhc2VT
eW5jKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlU3luYzo6dmVyc2lvbik6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhYmFzZVN5bmM6OmNoYW5nZVZlcnNpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2VTeW5jOjp0cmFuc2FjdGlvbik6CisgICAgICAgICogc3RvcmFnZS9EYXRhYmFz
ZVN5bmMuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVN5bmM6OmRhdGFiYXNl
RGVidWdOYW1lKToKKyAgICAgICAgKiBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luYy5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25TeW5jOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25TeW5jOjpTUUxUcmFuc2FjdGlvblN5bmMpOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25TeW5jOjp+U1FMVHJhbnNhY3Rpb25TeW5j
KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uU3luYzo6ZXhlY3V0ZVNRTCk6Cisg
ICAgICAgICogc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmMuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTUUxUcmFuc2FjdGlvblN5bmM6OmRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNRTFRyYW5zYWN0aW9uU3luYzo6aXNSZWFkT25seSk6CisgICAgICAgICogc3RvcmFnZS9TUUxU
cmFuc2FjdGlvblN5bmNDYWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNRTFRy
YW5zYWN0aW9uU3luY0NhbGxiYWNrOjp+U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2spOgorCiAy
MDEwLTA0LTIzICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGF2aWQgTGV2aW4uCkluZGV4OiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDU4MjA2KQorKysgV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMjM0NCw2ICsyMzQ0LDggQEAgd2Vi
Y29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VBdXRob3JpemVyLmgg
XAogCVdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZUNhbGxiYWNrLmggXAogCVdlYkNvcmUvc3RvcmFn
ZS9EYXRhYmFzZURldGFpbHMuaCBcCisJV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlU3luYy5jcHAg
XAorCVdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVN5bmMuaCBcCiAJV2ViQ29yZS9zdG9yYWdlL0Rh
dGFiYXNlVGFzay5jcHAgXAogCVdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRhc2suaCBcCiAJV2Vi
Q29yZS9zdG9yYWdlL0RhdGFiYXNlVGhyZWFkLmNwcCBcCkBAIC0yMzcxLDcgKzIzNzMsMTAgQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DbGll
bnQuaCBcCiAJV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCBcCiAJ
V2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwIFwKLQlXZWJDb3Jl
L3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmgKKwlXZWJDb3JlL3N0b3JhZ2Uv
U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmggXAorCVdlYkNvcmUvc3RvcmFnZS9TUUxUcmFu
c2FjdGlvblN5bmMuY3BwIFwKKwlXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5jLmgg
XAorCVdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5oCiAKIGVsc2UK
IHdlYmNvcmVfY3BwZmxhZ3MgKz0gLURFTkFCTEVfREFUQUJBU0U9MApJbmRleDogV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9u
IDU4MjA2KQorKysgV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTMzMDEs
NiArMzMwMSw4IEBACiAgICAgICAgICAgICAnc3RvcmFnZS9EYXRhYmFzZUF1dGhvcml6ZXIuaCcs
CiAgICAgICAgICAgICAnc3RvcmFnZS9EYXRhYmFzZUNhbGxiYWNrLmgnLAogICAgICAgICAgICAg
J3N0b3JhZ2UvRGF0YWJhc2VEZXRhaWxzLmgnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvRGF0YWJh
c2VTeW5jLmNwcCcsCisgICAgICAgICAgICAnc3RvcmFnZS9EYXRhYmFzZVN5bmMuaCcsCiAgICAg
ICAgICAgICAnc3RvcmFnZS9EYXRhYmFzZVRhc2suY3BwJywKICAgICAgICAgICAgICdzdG9yYWdl
L0RhdGFiYXNlVGFzay5oJywKICAgICAgICAgICAgICdzdG9yYWdlL0RhdGFiYXNlVGhyZWFkLmNw
cCcsCkBAIC0zMzQ2LDYgKzMzNDgsOSBAQAogICAgICAgICAgICAgJ3N0b3JhZ2UvU1FMVHJhbnNh
Y3Rpb25Db29yZGluYXRvci5oJywKICAgICAgICAgICAgICdzdG9yYWdlL1NRTFRyYW5zYWN0aW9u
Q29vcmRpbmF0b3IuY3BwJywKICAgICAgICAgICAgICdzdG9yYWdlL1NRTFRyYW5zYWN0aW9uRXJy
b3JDYWxsYmFjay5oJywKKyAgICAgICAgICAgICdzdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luYy5j
cHAnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5jLmgnLAorICAgICAg
ICAgICAgJ3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaCcsCiAgICAgICAgICAg
ICAnc3RvcmFnZS9TdG9yYWdlLmNwcCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9TdG9yYWdlLmgn
LAogICAgICAgICAgICAgJ3N0b3JhZ2UvU3RvcmFnZUFyZWEuaCcsCkluZGV4OiBXZWJDb3JlL1dl
YkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDU4
MjA2KQorKysgV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtMjI2NSw3ICsy
MjY1LDggQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1NRTElURT0xKSB7CiAgICAgICAgIHBs
YXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5jcHAgXAogICAgICAgICBwbGF0Zm9ybS9zcWwv
U1FMVmFsdWUuY3BwIFwKICAgICAgICAgc3RvcmFnZS9EYXRhYmFzZS5jcHAgXAotICAgICAgICBz
dG9yYWdlL0RhdGFiYXNlQXV0aG9yaXplci5jcHAKKyAgICAgICAgc3RvcmFnZS9EYXRhYmFzZUF1
dGhvcml6ZXIuY3BwIFwKKyAgICAgICAgc3RvcmFnZS9EYXRhYmFzZVN5bmMuY3BwCiB9CiAKIApA
QCAtMjI4Myw2ICsyMjg0LDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0RBVEFCQVNFPTEp
IHsKICAgICAgICAgc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5jcHAgXAogICAgICAgICBzdG9yYWdl
L1NRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcCBcCiAgICAgICAgIHN0b3JhZ2UvU1FMVHJhbnNhY3Rp
b25Db29yZGluYXRvci5jcHAgXAorICAgICAgICBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luYy5j
cHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFN0YXRlbWVudENhbGxiYWNrLmNw
cCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFj
ay5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFRyYW5zYWN0aW9uQ2FsbGJh
Y2suY3BwIFwKQEAgLTIyOTksNiArMjMwMSw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9E
T01fU1RPUkFHRT0xKSAKICAgICAgICAgc3RvcmFnZS9EYXRhYmFzZUF1dGhvcml6ZXIuaCBcCiAg
ICAgICAgIHN0b3JhZ2UvRGF0YWJhc2UuaCBcCiAgICAgICAgIHN0b3JhZ2UvRGF0YWJhc2VDYWxs
YmFjay5oIFwKKyAgICAgICAgc3RvcmFnZS9EYXRhYmFzZVN5bmMuaCBcCiAgICAgICAgIHN0b3Jh
Z2UvRGF0YWJhc2VUYXNrLmggXAogICAgICAgICBzdG9yYWdlL0RhdGFiYXNlVGhyZWFkLmggXAog
ICAgICAgICBzdG9yYWdlL0RhdGFiYXNlVHJhY2tlci5oIFwKQEAgLTIzMTIsNiArMjMxNSw3IEBA
IGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9ET01fU1RPUkFHRT0xKSAKICAgICAgICAgc3RvcmFn
ZS9TUUxUcmFuc2FjdGlvbi5oIFwKICAgICAgICAgc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNsaWVu
dC5oIFwKICAgICAgICAgc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmggXAorICAg
ICAgICBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luYy5oIFwKICAgICAgICAgc3RvcmFnZS9TdG9y
YWdlQXJlYS5oIFwKICAgICAgICAgc3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaCBcCiAgICAgICAg
IHN0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmggXApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCShyZXZpc2lvbiA1ODIwNikKKysrIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTQyODU1LDYgKzQyODU1LDE0IEBACiAJ
CQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN0b3Jh
Z2VcRGF0YWJhc2VTeW5jLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHN0b3JhZ2VcRGF0YWJhc2VTeW5jLmgiDQorCQkJCT4NCisJCQk8
L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdlXERhdGFiYXNl
VGFzay5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KQEAgLTQyOTc5LDYgKzQyOTg3LDE4IEBACiAJ
CQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN0b3Jh
Z2VcU1FMVHJhbnNhY3Rpb25TeW5jLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8Rmls
ZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN0b3JhZ2VcU1FMVHJhbnNhY3Rpb25TeW5jLmgiDQor
CQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9y
YWdlXFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQor
CQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdlXFN0b3JhZ2UuY3BwIg0KIAkJ
CQk+DQogCQkJPC9GaWxlPg0KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiA1ODIwNikKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MTYzLDYgKzQxNjMsMTEgQEAKIAkJ
QjUxQkY2RjExMDJDOUU1OTAwMDJDMTVBIC8qIFNRTFRyYW5zYWN0aW9uQ2xpZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNTFCRjZFRjEwMkM5RTU5
MDAwMkMxNUEgLyogU1FMVHJhbnNhY3Rpb25DbGllbnQuaCAqLzsgfTsKIAkJQjVBNjg0MjIwRkZB
QkU5ODAwRDI0Njg5IC8qIFNRTGl0ZUZpbGVTeXN0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1QTY4NDIxMEZGQUJFOTgwMEQyNDY4OSAvKiBTUUxp
dGVGaWxlU3lzdGVtLmggKi87IH07CiAJCUI1QTY4NDI0MEZGQUJFQUEwMEQyNDY4OSAvKiBTUUxp
dGVGaWxlU3lzdGVtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEI1QTY4NDIzMEZGQUJFQUEwMEQyNDY4OSAvKiBTUUxpdGVGaWxlU3lzdGVtLmNwcCAq
LzsgfTsKKwkJQjUyM0NGMDYxMTgyNjc1NDAwRUJCMjlDIC8qIFNRTFRyYW5zYWN0aW9uU3luY0Nh
bGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
NTIzQ0VGRjExODI2NzU0MDBFQkIyOUMgLyogU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaCAq
LzsgfTsKKwkJQjUyM0NGMDgxMTgyNjc1NDAwRUJCMjlDIC8qIFNRTFRyYW5zYWN0aW9uU3luYy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjUyM0NGMDEx
MTgyNjc1NDAwRUJCMjlDIC8qIFNRTFRyYW5zYWN0aW9uU3luYy5oICovOyB9OworCQlCNTIzQ0Yw
OTExODI2NzU0MDBFQkIyOUMgLyogU1FMVHJhbnNhY3Rpb25TeW5jLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1MjNDRjAyMTE4MjY3NTQwMEVCQjI5
QyAvKiBTUUxUcmFuc2FjdGlvblN5bmMuY3BwICovOyB9OworCQlCNTIzQ0YwQTExODI2NzU0MDBF
QkIyOUMgLyogRGF0YWJhc2VTeW5jLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEI1MjNDRjAzMTE4MjY3NTQwMEVCQjI5QyAvKiBEYXRhYmFzZVN5bmMu
Y3BwICovOyB9OworCQlCNTIzQ0YwQjExODI2NzU0MDBFQkIyOUMgLyogRGF0YWJhc2VTeW5jLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNTIzQ0YwNDEx
ODI2NzU0MDBFQkIyOUMgLyogRGF0YWJhc2VTeW5jLmggKi87IH07CiAJCUI1QzExMjNCMTAyQjZD
NDYwMDA5NjU3OCAvKiBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1QzExMjM5MTAyQjZDNDYwMDA5NjU3
OCAvKiBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcCAqLzsgfTsKIAkJQjVDMTEyM0MxMDJC
NkM0NjAwMDk2NTc4IC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1QzExMjNBMTAyQjZDNDYwMDA5NjU3
OCAvKiBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmggKi87IH07CiAJCUI1RDM2MDFBMTEyRjhC
NTYwMDQ4REVBOCAvKiBEYXRhYmFzZUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNUQzNjAxOTExMkY4QjU2MDA0OERFQTggLyogRGF0YWJh
c2VDYWxsYmFjay5oICovOyB9OwpAQCAtOTUwNyw2ICs5NTEyLDExIEBACiAJCUI1MEY1QjgwMEU5
NkNEOTkwMEFENzFBNiAvKiBXZWJDb3JlT2JqQ0V4dHJhcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvcmVPYmpDRXh0cmFzLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCNTFCRjZFRTEwMkM5RTU5MDAwMkMxNUEgLyogU1FMVHJhbnNhY3Rp
b25DbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1FMVHJh
bnNhY3Rpb25DbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNTFCRjZF
RjEwMkM5RTU5MDAwMkMxNUEgLyogU1FMVHJhbnNhY3Rpb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU1FMVHJhbnNhY3Rpb25DbGllbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQjUyM0NFRkYxMTgyNjc1NDAwRUJCMjlDIC8qIFNRTFRyYW5zYWN0
aW9uU3luY0NhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNRTFRy
YW5zYWN0aW9uU3luY0NhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI1
MjNDRjAxMTE4MjY3NTQwMEVCQjI5QyAvKiBTUUxUcmFuc2FjdGlvblN5bmMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1FMVHJhbnNhY3Rpb25TeW5jLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUI1MjNDRjAyMTE4MjY3NTQwMEVCQjI5QyAvKiBTUUxUcmFuc2Fj
dGlvblN5bmMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1FMVHJh
bnNhY3Rpb25TeW5jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjUyM0NGMDMx
MTgyNjc1NDAwRUJCMjlDIC8qIERhdGFiYXNlU3luYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBEYXRhYmFzZVN5bmMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlCNTIzQ0YwNDExODI2NzU0MDBFQkIyOUMgLyogRGF0YWJhc2VTeW5jLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFiYXNlU3luYy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCNUE2ODQyMTBGRkFCRTk4MDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5
c3RlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTUUxpdGVGaWxlU3lzdGVt
Lmg7IHBhdGggPSBzcWwvU1FMaXRlRmlsZVN5c3RlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCNUE2ODQyMzBGRkFCRUFBMDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5c3RlbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTUUxpdGVGaWxlU3lzdGVtLmNw
cDsgcGF0aCA9IHNxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQjVDMTEyMzkxMDJCNkM0NjAwMDk2NTc4IC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRp
bmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1FMVHJhbnNh
Y3Rpb25Db29yZGluYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDcz
OCw2ICsxMDc0OCw4IEBACiAJCQkJNTFBNDVCNTQwQ0FEN0ZENzAwMEQyQkU5IC8qIERhdGFiYXNl
QXV0aG9yaXplci5oICovLAogCQkJCUI1RDM2MDE5MTEyRjhCNTYwMDQ4REVBOCAvKiBEYXRhYmFz
ZUNhbGxiYWNrLmggKi8sCiAJCQkJNTExNkQ5NzUwQ0YxNzdCRDAwQzJCODREIC8qIERhdGFiYXNl
RGV0YWlscy5oICovLAorCQkJCUI1MjNDRjAzMTE4MjY3NTQwMEVCQjI5QyAvKiBEYXRhYmFzZVN5
bmMuY3BwICovLAorCQkJCUI1MjNDRjA0MTE4MjY3NTQwMEVCQjI5QyAvKiBEYXRhYmFzZVN5bmMu
aCAqLywKIAkJCQk1MTk2MTFFOTBDQUM3NDlDMDAxMEE4MEMgLyogRGF0YWJhc2VUYXNrLmNwcCAq
LywKIAkJCQk1MTk2MTFFODBDQUM3NDlDMDAxMEE4MEMgLyogRGF0YWJhc2VUYXNrLmggKi8sCiAJ
CQkJNTE5NjExNjEwQ0FDNTY1NzAwMTBBODBDIC8qIERhdGFiYXNlVGhyZWFkLmNwcCAqLywKQEAg
LTEwNzc0LDYgKzEwNzg2LDkgQEAKIAkJCQlCNUMxMTIzOTEwMkI2QzQ2MDAwOTY1NzggLyogU1FM
VHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAgKi8sCiAJCQkJQjVDMTEyM0ExMDJCNkM0NjAwMDk2
NTc4IC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCAqLywKIAkJCQkxQTdDQ0IxODBDRDk0
NjlBMDBCN0I2NEUgLyogU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmggKi8sCisJCQkJQjUy
M0NFRkYxMTgyNjc1NDAwRUJCMjlDIC8qIFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmggKi8s
CisJCQkJQjUyM0NGMDExMTgyNjc1NDAwRUJCMjlDIC8qIFNRTFRyYW5zYWN0aW9uU3luYy5oICov
LAorCQkJCUI1MjNDRjAyMTE4MjY3NTQwMEVCQjI5QyAvKiBTUUxUcmFuc2FjdGlvblN5bmMuY3Bw
ICovLAogCQkJCTUxRTNGOUM1MERBMDU5REMwMDI1MDkxMSAvKiBTdG9yYWdlLmNwcCAqLywKIAkJ
CQk1MUUzRjlDNDBEQTA1OURDMDAyNTA5MTEgLyogU3RvcmFnZS5oICovLAogCQkJCTUxRTNGOUQx
MERBMDVENzEwMDI1MDkxMSAvKiBTdG9yYWdlLmlkbCAqLywKQEAgLTE4ODkwLDYgKzE4OTA1LDkg
QEAKIAkJCQkyRTNCQzBDQjExN0QzRTA4MDBCOTQwOUEgLyogSlNGaWxlRXJyb3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTJFM0JDMTA4MTE3RDQ3OTgwMEI5NDA5QSAvKiBET01GaWxlRXJyb3IuaCBp
biBIZWFkZXJzICovLAogCQkJCTJFM0JDMTBCMTE3RDQ3QzgwMEI5NDA5QSAvKiBET01GaWxlRXJy
b3JJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjUyM0NGMDYxMTgyNjc1NDAwRUJCMjlD
IC8qIFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQlCNTIz
Q0YwODExODI2NzU0MDBFQkIyOUMgLyogU1FMVHJhbnNhY3Rpb25TeW5jLmggaW4gSGVhZGVycyAq
LywKKwkJCQlCNTIzQ0YwQjExODI2NzU0MDBFQkIyOUMgLyogRGF0YWJhc2VTeW5jLmggaW4gSGVh
ZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKQEAgLTIxMTI3LDYgKzIxMTQ1LDggQEAKIAkJCQkwOEE3RTkyRjExODA1RUZEMDBE
MEI4NzAgLyogU1ZHUmVzb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkUzQkMwQ0ExMTdE
M0UwODAwQjk0MDlBIC8qIEpTRmlsZUVycm9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFM0JD
MTA5MTE3RDQ3OTgwMEI5NDA5QSAvKiBET01GaWxlRXJyb3IubW0gaW4gU291cmNlcyAqLywKKwkJ
CQlCNTIzQ0YwOTExODI2NzU0MDBFQkIyOUMgLyogU1FMVHJhbnNhY3Rpb25TeW5jLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUI1MjNDRjBBMTE4MjY3NTQwMEVCQjI5QyAvKiBEYXRhYmFzZVN5bmMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VTeW5jLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VTeW5jLmNwcAkocmV2aXNp
b24gMCkKKysrIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVN5bmMuY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YK
KyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEYXRhYmFz
ZVN5bmMuaCIKKworI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworI2lmIEVOQUJMRShE
QVRBQkFTRSkKKyNpbmNsdWRlICJEYXRhYmFzZUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiRXhjZXB0
aW9uQ29kZS5oIgorI2luY2x1ZGUgIlNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmgiCisjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCisjZW5kaWYgLy8gRU5BQkxFKERBVEFCQVNF
KQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IFN0cmluZyYgRGF0YWJhc2VTeW5jOjpk
YXRhYmFzZUluZm9UYWJsZU5hbWUoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5n
LCBuYW1lLCAoIl9fV2ViS2l0RGF0YWJhc2VJbmZvVGFibGVfXyIpKTsKKyAgICByZXR1cm4gbmFt
ZTsKK30KKworI2lmIEVOQUJMRShEQVRBQkFTRSkKKworc3RhdGljIGJvb2wgaXNTeW5jRGF0YWJh
c2VBdmFpbGFibGUgPSB0cnVlOworCit2b2lkIERhdGFiYXNlU3luYzo6c2V0SXNBdmFpbGFibGUo
Ym9vbCBhdmFpbGFibGUpCit7CisgICAgaXNTeW5jRGF0YWJhc2VBdmFpbGFibGUgPSBhdmFpbGFi
bGU7Cit9CisKK2Jvb2wgRGF0YWJhc2VTeW5jOjppc0F2YWlsYWJsZSgpCit7CisgICAgcmV0dXJu
IGlzU3luY0RhdGFiYXNlQXZhaWxhYmxlOworfQorCitQYXNzUmVmUHRyPERhdGFiYXNlU3luYz4g
RGF0YWJhc2VTeW5jOjpvcGVuRGF0YWJhc2VTeW5jKAorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIC8qY29udGV4dCovLCBjb25zdCBTdHJpbmcmIC8qbmFtZSovLCBjb25zdCBTdHJpbmcmIC8q
ZXhwZWN0ZWRWZXJzaW9uKi8sCisgICAgY29uc3QgU3RyaW5nJiAvKmRpc3BsYXlOYW1lKi8sIHVu
c2lnbmVkIGxvbmcgLyplc3RpbWF0ZWRTaXplKi8sCisgICAgUGFzc1JlZlB0cjxEYXRhYmFzZUNh
bGxiYWNrPiAvKmNyZWF0aW9uQ2FsbGJhY2sqLywgRXhjZXB0aW9uQ29kZSYgZSkKK3sKKyAgICBl
ID0gU0VDVVJJVFlfRVJSOworICAgIHJldHVybiAwOworfQorCitEYXRhYmFzZVN5bmM6OkRhdGFi
YXNlU3luYyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiAvKmNvbnRleHQqLywgY29uc3QgU3RyaW5n
JiBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBleHBlY3Rl
ZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUsIFBhc3NSZWZQdHI8RGF0YWJhc2VD
YWxsYmFjaz4gY3JlYXRpb25DYWxsYmFjaykKKyAgICA6IG1fbmFtZShuYW1lLmNyb3NzVGhyZWFk
U3RyaW5nKCkpCisgICAgLCBtX2V4cGVjdGVkVmVyc2lvbihleHBlY3RlZFZlcnNpb24uY3Jvc3NU
aHJlYWRTdHJpbmcoKSkKKyAgICAsIG1fZGlzcGxheU5hbWUoZGlzcGxheU5hbWUuY3Jvc3NUaHJl
YWRTdHJpbmcoKSkKKyAgICAsIG1fZXN0aW1hdGVkU2l6ZShlc3RpbWF0ZWRTaXplKQorICAgICwg
bV9jcmVhdGlvbkNhbGxiYWNrKGNyZWF0aW9uQ2FsbGJhY2spCit7Cit9CisKK0RhdGFiYXNlU3lu
Yzo6fkRhdGFiYXNlU3luYygpCit7Cit9CisKK1N0cmluZyBEYXRhYmFzZVN5bmM6OnZlcnNpb24o
KSBjb25zdAoreworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKwordm9pZCBEYXRhYmFzZVN5bmM6
OmNoYW5nZVZlcnNpb24oY29uc3QgU3RyaW5nJiAvKm9sZFZlcnNpb24qLywgY29uc3QgU3RyaW5n
JiAvKm5ld1ZlcnNpb24qLywgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjaz4g
LypjYWxsYmFjayovKQoreworfQorCit2b2lkIERhdGFiYXNlU3luYzo6dHJhbnNhY3Rpb24oUGFz
c1JlZlB0cjxTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjaz4gLypjYWxsYmFjayovLCBib29sIC8q
cmVhZE9ubHkqLykKK3sKK30KKworI2VuZGlmIC8vIEVOQUJMRShEQVRBQkFTRSkKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlU3luYy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVN5bmMuaAkocmV2aXNpb24gMCkK
KysrIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVN5bmMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBp
dHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgRGF0YWJhc2VTeW5jX2gKKyNkZWZpbmUgRGF0YWJhc2VTeW5jX2gK
KworI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisKKyNpZiBFTkFCTEUoREFUQUJBU0UpCisj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBE
YXRhYmFzZUNhbGxiYWNrOworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK2NsYXNzIFNR
TFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrOworCit0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwor
CitjbGFzcyBEYXRhYmFzZVN5bmMgOiBwdWJsaWMgVGhyZWFkU2FmZVNoYXJlZDxEYXRhYmFzZVN5
bmM+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBzZXRJc0F2YWlsYWJsZShib29sKTsKKyAg
ICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOworCisgICAgfkRhdGFiYXNlU3luYygpOworCisv
LyBEaXJlY3Qgc3VwcG9ydCBmb3IgdGhlIERPTSBBUEkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxE
YXRhYmFzZVN5bmM+IG9wZW5EYXRhYmFzZVN5bmMoCisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3Rl
ZFZlcnNpb24sCisgICAgICAgIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxv
bmcgZXN0aW1hdGVkU2l6ZSwKKyAgICAgICAgUGFzc1JlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiBj
cmVhdGlvbkNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7CisgICAgU3RyaW5nIHZlcnNpb24oKSBj
b25zdDsKKyAgICB2b2lkIGNoYW5nZVZlcnNpb24oY29uc3QgU3RyaW5nJiBvbGRWZXJzaW9uLCBj
b25zdCBTdHJpbmcmIG5ld1ZlcnNpb24sIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5jQ2Fs
bGJhY2s+IGNhbGxiYWNrKTsKKyAgICB2b2lkIHRyYW5zYWN0aW9uKFBhc3NSZWZQdHI8U1FMVHJh
bnNhY3Rpb25TeW5jQ2FsbGJhY2s+IGNhbGxiYWNrLCBib29sIHJlYWRPbmx5KTsKKworLy8gSW50
ZXJuYWwgZW5naW5lIHN1cHBvcnQKKyAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlu
Zm9UYWJsZU5hbWUoKTsKKworcHJpdmF0ZToKKyAgICBEYXRhYmFzZVN5bmMoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLAorICAgICAgICAgICAgICAg
ICBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFt
ZSwKKyAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVm
UHRyPERhdGFiYXNlQ2FsbGJhY2s+IGNyZWF0aW9uQ2FsbGJhY2spOworCisgICAgU3RyaW5nIG1f
bmFtZTsKKyAgICBTdHJpbmcgbV9leHBlY3RlZFZlcnNpb247CisgICAgU3RyaW5nIG1fZGlzcGxh
eU5hbWU7CisgICAgdW5zaWduZWQgbG9uZyBtX2VzdGltYXRlZFNpemU7CisgICAgUmVmUHRyPERh
dGFiYXNlQ2FsbGJhY2s+IG1fY3JlYXRpb25DYWxsYmFjazsKKworI2lmbmRlZiBOREVCVUcKKyAg
ICBTdHJpbmcgZGF0YWJhc2VEZWJ1Z05hbWUoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQor
I2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbHNlCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK2NsYXNzIERhdGFiYXNlU3luYyA6IHB1YmxpYyBUaHJlYWRTYWZlU2hhcmVk
PERhdGFiYXNlU3luYz4geworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIGRhdGFi
YXNlSW5mb1RhYmxlTmFtZSgpOworfTsKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShEQVRBQkFTRSkKKworI2VuZGlmIC8vIERhdGFiYXNlU3luY19oCkluZGV4OiBX
ZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5jLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5jLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBB
cHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0
cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNRTFRyYW5zYWN0aW9uU3lu
Yy5oIgorCisjaWYgRU5BQkxFKERBVEFCQVNFKQorCisjaW5jbHVkZSAiRGF0YWJhc2VTeW5jLmgi
CisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgi
CisjaW5jbHVkZSAiU1FMUmVzdWx0U2V0LmgiCisjaW5jbHVkZSAiU1FMVHJhbnNhY3Rpb25TeW5j
Q2FsbGJhY2suaCIKKyNpbmNsdWRlICJTUUxWYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1Bhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5jPiBTUUxUcmFuc2FjdGlvblN5bmM6OmNyZWF0
ZShEYXRhYmFzZVN5bmMqIGRiLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNr
PiBjYWxsYmFjaywgYm9vbCByZWFkT25seSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNR
TFRyYW5zYWN0aW9uU3luYyhkYiwgY2FsbGJhY2ssIHJlYWRPbmx5KSk7Cit9CisKK1NRTFRyYW5z
YWN0aW9uU3luYzo6U1FMVHJhbnNhY3Rpb25TeW5jKERhdGFiYXNlU3luYyogZGIsIFBhc3NSZWZQ
dHI8U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+IGNhbGxiYWNrLCBib29sIHJlYWRPbmx5KQor
ICAgIDogbV9kYXRhYmFzZShkYikKKyAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2spCisgICAgLCBt
X3JlYWRPbmx5KHJlYWRPbmx5KQoreworICAgIEFTU0VSVChtX2RhdGFiYXNlKTsKK30KKworU1FM
VHJhbnNhY3Rpb25TeW5jOjp+U1FMVHJhbnNhY3Rpb25TeW5jKCkKK3sKK30KKworUGFzc1JlZlB0
cjxTUUxSZXN1bHRTZXQ+IFNRTFRyYW5zYWN0aW9uU3luYzo6ZXhlY3V0ZVNRTChjb25zdCBTdHJp
bmcmIC8qc3FsU3RhdGVtZW50Ki8sIGNvbnN0IFZlY3RvcjxTUUxWYWx1ZT4mIC8qYXJndW1lbnRz
Ki8sIEV4Y2VwdGlvbkNvZGUmIC8qZSovKQoreworICAgIHJldHVybiAwOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoREFUQUJBU0UpCkluZGV4OiBXZWJD
b3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5jLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luYy5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9zdG9y
YWdlL1NRTFRyYW5zYWN0aW9uU3luYy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21w
dXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQK
KyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNp
Zm5kZWYgU1FMVHJhbnNhY3Rpb25TeW5jX2gKKyNkZWZpbmUgU1FMVHJhbnNhY3Rpb25TeW5jX2gK
KworI2lmIEVOQUJMRShEQVRBQkFTRSkKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5j
bHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCit0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOworCitjbGFzcyBEYXRh
YmFzZVN5bmM7CitjbGFzcyBTUUxSZXN1bHRTZXQ7CitjbGFzcyBTUUxUcmFuc2FjdGlvblN5bmND
YWxsYmFjazsKK2NsYXNzIFNRTFZhbHVlOworY2xhc3MgU3RyaW5nOworCitjbGFzcyBTUUxUcmFu
c2FjdGlvblN5bmMgOiBwdWJsaWMgVGhyZWFkU2FmZVNoYXJlZDxTUUxUcmFuc2FjdGlvblN5bmM+
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvblN5bmM+IGNy
ZWF0ZShEYXRhYmFzZVN5bmMqLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNr
PiwgYm9vbCByZWFkT25seSA9IGZhbHNlKTsKKworICAgIH5TUUxUcmFuc2FjdGlvblN5bmMoKTsK
KworICAgIFBhc3NSZWZQdHI8U1FMUmVzdWx0U2V0PiBleGVjdXRlU1FMKGNvbnN0IFN0cmluZyYg
c3FsU3RhdGVtZW50LCBjb25zdCBWZWN0b3I8U1FMVmFsdWU+JiBhcmd1bWVudHMsIEV4Y2VwdGlv
bkNvZGUmIGUpOworCisgICAgRGF0YWJhc2VTeW5jKiBkYXRhYmFzZSgpIHsgcmV0dXJuIG1fZGF0
YWJhc2UuZ2V0KCk7IH0KKyAgICBib29sIGlzUmVhZE9ubHkoKSB7IHJldHVybiBtX3JlYWRPbmx5
OyB9CisKK3ByaXZhdGU6CisgICAgU1FMVHJhbnNhY3Rpb25TeW5jKERhdGFiYXNlU3luYyosIFBh
c3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+LCBib29sIHJlYWRPbmx5KTsKKwor
ICAgIFJlZlB0cjxEYXRhYmFzZVN5bmM+IG1fZGF0YWJhc2U7CisgICAgUmVmUHRyPFNRTFRyYW5z
YWN0aW9uU3luY0NhbGxiYWNrPiBtX2NhbGxiYWNrOworICAgIGJvb2wgbV9yZWFkT25seTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisKKyNlbmRpZiAvLyBTUUxUcmFu
c2FjdGlvblN5bmNfaApJbmRleDogV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luY0Nh
bGxiYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3lu
Y0NhbGxiYWNrLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rp
b25TeW5jQ2FsbGJhY2suaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICpUcmFuc2FjdGlvbgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBD
b21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFja19oCisjZGVmaW5lIFNRTFRyYW5z
YWN0aW9uU3luY0NhbGxiYWNrX2gKKworI2lmIEVOQUJMRShEQVRBQkFTRSkKKworI2luY2x1ZGUg
PHd0Zi9UaHJlYWRpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OworY2xhc3MgU1FMVHJhbnNhY3Rpb25TeW5jOworCitjbGFzcyBTUUxU
cmFuc2FjdGlvblN5bmNDYWxsYmFjayA6IHB1YmxpYyBUaHJlYWRTYWZlU2hhcmVkPFNRTFRyYW5z
YWN0aW9uU3luY0NhbGxiYWNrPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+U1FMVHJhbnNhY3Rp
b25TeW5jQ2FsbGJhY2soKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFNRTFRyYW5zYWN0aW9uU3luYyosIGJvb2wmIHJhaXNlZEV4Y2Vw
dGlvbikgPSAwOworfTsKKworfQorCisjZW5kaWYKKworI2VuZGlmIC8vIFNRTFRyYW5zYWN0aW9u
U3luY0NhbGxiYWNrX2gK
</data>
<flag name="commit-queue"
          id="38125"
          type_id="3"
          status="-"
          setter="dumi"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54331</attachid>
            <date>2010-04-26 14:29:56 -0700</date>
            <delta_ts>2010-04-26 19:30:35 -0700</delta_ts>
            <desc>patch #1: stubs for storage classes</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>29228</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1ODI2MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzggQEAKKzIwMTAtMDQtMjMgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRpbmcgc29tZSByZXF1aXJlZCBjbGFzc2VzIGZvciB0aGUgc3luYyBXZWJTUUxEYXRhYmFz
ZXMgQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzQ5OTQKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lw
aToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogc3RvcmFnZS9EYXRhYmFzZVN5bmMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlU3luYzo6ZGF0YWJhc2VJbmZvVGFibGVOYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlU3luYzo6c2V0SXNBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YWJhc2VTeW5jOjppc0F2YWlsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVN5
bmM6Om9wZW5EYXRhYmFzZVN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VTeW5jOjpE
YXRhYmFzZVN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VTeW5jOjp+RGF0YWJhc2VT
eW5jKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlU3luYzo6dmVyc2lvbik6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhYmFzZVN5bmM6OmNoYW5nZVZlcnNpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2VTeW5jOjp0cmFuc2FjdGlvbik6CisgICAgICAgICogc3RvcmFnZS9EYXRhYmFz
ZVN5bmMuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVN5bmM6OmRhdGFiYXNl
RGVidWdOYW1lKToKKyAgICAgICAgKiBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luYy5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25TeW5jOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25TeW5jOjpTUUxUcmFuc2FjdGlvblN5bmMpOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25TeW5jOjp+U1FMVHJhbnNhY3Rpb25TeW5j
KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uU3luYzo6ZXhlY3V0ZVNRTCk6Cisg
ICAgICAgICogc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmMuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTUUxUcmFuc2FjdGlvblN5bmM6OmRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNRTFRyYW5zYWN0aW9uU3luYzo6aXNSZWFkT25seSk6CisgICAgICAgICogc3RvcmFnZS9TUUxU
cmFuc2FjdGlvblN5bmNDYWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNRTFRy
YW5zYWN0aW9uU3luY0NhbGxiYWNrOjp+U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2spOgorCiAy
MDEwLTA0LTI2ICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lhLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KSW5kZXg6IFdlYkNvcmUvR05VbWFr
ZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24g
NTgyNjMpCisrKyBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0yMzQ1
LDYgKzIzNDUsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvc3RvcmFnZS9EYXRh
YmFzZUF1dGhvcml6ZXIuaCBcCiAJV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlQ2FsbGJhY2suaCBc
CiAJV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlRGV0YWlscy5oIFwKKwlXZWJDb3JlL3N0b3JhZ2Uv
RGF0YWJhc2VTeW5jLmNwcCBcCisJV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlU3luYy5oIFwKIAlX
ZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUYXNrLmNwcCBcCiAJV2ViQ29yZS9zdG9yYWdlL0RhdGFi
YXNlVGFzay5oIFwKIAlXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUaHJlYWQuY3BwIFwKQEAgLTIz
NzIsNyArMjM3NCwxMCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvc3RvcmFnZS9T
UUxUcmFuc2FjdGlvbkNsaWVudC5oIFwKIAlXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25D
b29yZGluYXRvci5oIFwKIAlXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25Db29yZGluYXRv
ci5jcHAgXAotCVdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suaAor
CVdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suaCBcCisJV2ViQ29y
ZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luYy5jcHAgXAorCVdlYkNvcmUvc3RvcmFnZS9TUUxU
cmFuc2FjdGlvblN5bmMuaCBcCisJV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luY0Nh
bGxiYWNrLmgKIAogZWxzZQogd2ViY29yZV9jcHBmbGFncyArPSAtREVOQUJMRV9EQVRBQkFTRT0w
CkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNv
cmUuZ3lwaQkocmV2aXNpb24gNTgyNjMpCisrKyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2lu
ZyBjb3B5KQpAQCAtMzMwMiw2ICszMzAyLDggQEAKICAgICAgICAgICAgICdzdG9yYWdlL0RhdGFi
YXNlQXV0aG9yaXplci5oJywKICAgICAgICAgICAgICdzdG9yYWdlL0RhdGFiYXNlQ2FsbGJhY2su
aCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9EYXRhYmFzZURldGFpbHMuaCcsCisgICAgICAgICAg
ICAnc3RvcmFnZS9EYXRhYmFzZVN5bmMuY3BwJywKKyAgICAgICAgICAgICdzdG9yYWdlL0RhdGFi
YXNlU3luYy5oJywKICAgICAgICAgICAgICdzdG9yYWdlL0RhdGFiYXNlVGFzay5jcHAnLAogICAg
ICAgICAgICAgJ3N0b3JhZ2UvRGF0YWJhc2VUYXNrLmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2Uv
RGF0YWJhc2VUaHJlYWQuY3BwJywKQEAgLTMzNDcsNiArMzM0OSw5IEBACiAgICAgICAgICAgICAn
c3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgnLAogICAgICAgICAgICAgJ3N0b3Jh
Z2UvU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAnLAogICAgICAgICAgICAgJ3N0b3JhZ2Uv
U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmgnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvU1FM
VHJhbnNhY3Rpb25TeW5jLmNwcCcsCisgICAgICAgICAgICAnc3RvcmFnZS9TUUxUcmFuc2FjdGlv
blN5bmMuaCcsCisgICAgICAgICAgICAnc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFj
ay5oJywKICAgICAgICAgICAgICdzdG9yYWdlL1N0b3JhZ2UuY3BwJywKICAgICAgICAgICAgICdz
dG9yYWdlL1N0b3JhZ2UuaCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9TdG9yYWdlQXJlYS5oJywK
SW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3Jl
LnBybwkocmV2aXNpb24gNTgyNjMpCisrKyBXZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5nIGNv
cHkpCkBAIC0yMjYxLDcgKzIyNjEsOCBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfU1FMSVRF
PTEpIHsKICAgICAgICAgcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcCBcCiAgICAg
ICAgIHBsYXRmb3JtL3NxbC9TUUxWYWx1ZS5jcHAgXAogICAgICAgICBzdG9yYWdlL0RhdGFiYXNl
LmNwcCBcCi0gICAgICAgIHN0b3JhZ2UvRGF0YWJhc2VBdXRob3JpemVyLmNwcAorICAgICAgICBz
dG9yYWdlL0RhdGFiYXNlQXV0aG9yaXplci5jcHAgXAorICAgICAgICBzdG9yYWdlL0RhdGFiYXNl
U3luYy5jcHAKIH0KIAogCkBAIC0yMjc5LDYgKzIyODAsNyBAQCBjb250YWlucyhERUZJTkVTLCBF
TkFCTEVfREFUQUJBU0U9MSkgewogICAgICAgICBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmNwcCBc
CiAgICAgICAgIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DbGllbnQuY3BwIFwKICAgICAgICAgc3Rv
cmFnZS9TUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcCBcCisgICAgICAgIHN0b3JhZ2UvU1FM
VHJhbnNhY3Rpb25TeW5jLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3Rh
dGVtZW50Q2FsbGJhY2suY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNDdXN0b21TUUxTdGF0
ZW1lbnRFcnJvckNhbGxiYWNrLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTQ3VzdG9tU1FM
VHJhbnNhY3Rpb25DYWxsYmFjay5jcHAgXApAQCAtMjI5NSw2ICsyMjk3LDcgQEAgY29udGFpbnMo
REVGSU5FUywgRU5BQkxFX0RPTV9TVE9SQUdFPTEpIAogICAgICAgICBzdG9yYWdlL0RhdGFiYXNl
QXV0aG9yaXplci5oIFwKICAgICAgICAgc3RvcmFnZS9EYXRhYmFzZS5oIFwKICAgICAgICAgc3Rv
cmFnZS9EYXRhYmFzZUNhbGxiYWNrLmggXAorICAgICAgICBzdG9yYWdlL0RhdGFiYXNlU3luYy5o
IFwKICAgICAgICAgc3RvcmFnZS9EYXRhYmFzZVRhc2suaCBcCiAgICAgICAgIHN0b3JhZ2UvRGF0
YWJhc2VUaHJlYWQuaCBcCiAgICAgICAgIHN0b3JhZ2UvRGF0YWJhc2VUcmFja2VyLmggXApAQCAt
MjMwOCw2ICsyMzExLDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0RPTV9TVE9SQUdFPTEp
IAogICAgICAgICBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmggXAogICAgICAgICBzdG9yYWdlL1NR
TFRyYW5zYWN0aW9uQ2xpZW50LmggXAogICAgICAgICBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ29v
cmRpbmF0b3IuaCBcCisgICAgICAgIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5jLmggXAogICAg
ICAgICBzdG9yYWdlL1N0b3JhZ2VBcmVhLmggXAogICAgICAgICBzdG9yYWdlL1N0b3JhZ2VBcmVh
SW1wbC5oIFwKICAgICAgICAgc3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuaCBcCkluZGV4OiBXZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDU4MjYzKQorKysgV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNDI4NDcs
NiArNDI4NDcsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5cc3RvcmFnZVxEYXRhYmFzZVN5bmMuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxl
Pg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3RvcmFnZVxEYXRhYmFzZVN5bmMu
aCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHN0b3JhZ2VcRGF0YWJhc2VUYXNrLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAtNDI5NzEs
NiArNDI5NzksMTggQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5cc3RvcmFnZVxTUUxUcmFuc2FjdGlvblN5bmMuY3BwIg0KKwkJCQk+DQorCQkJ
PC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3RvcmFnZVxTUUxUcmFu
c2FjdGlvblN5bmMuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXHN0b3JhZ2VcU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaCINCisJCQkJ
Pg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN0b3JhZ2Vc
U3RvcmFnZS5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpJbmRleDogV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDU4MjYzKQorKysgV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQxNjEs
NiArNDE2MSwxMSBAQAogCQlCNTFCRjZGMTEwMkM5RTU5MDAwMkMxNUEgLyogU1FMVHJhbnNhY3Rp
b25DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEI1MUJGNkVGMTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlvbkNsaWVudC5oICovOyB9
OwogCQlCNUE2ODQyMjBGRkFCRTk4MDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5c3RlbS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjVBNjg0MjEwRkZBQkU5
ODAwRDI0Njg5IC8qIFNRTGl0ZUZpbGVTeXN0ZW0uaCAqLzsgfTsKIAkJQjVBNjg0MjQwRkZBQkVB
QTAwRDI0Njg5IC8qIFNRTGl0ZUZpbGVTeXN0ZW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjVBNjg0MjMwRkZBQkVBQTAwRDI0Njg5IC8qIFNRTGl0
ZUZpbGVTeXN0ZW0uY3BwICovOyB9OworCQlCNTIzQ0YwNjExODI2NzU0MDBFQkIyOUMgLyogU1FM
VHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEI1MjNDRUZGMTE4MjY3NTQwMEVCQjI5QyAvKiBTUUxUcmFuc2FjdGlv
blN5bmNDYWxsYmFjay5oICovOyB9OworCQlCNTIzQ0YwODExODI2NzU0MDBFQkIyOUMgLyogU1FM
VHJhbnNhY3Rpb25TeW5jLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCNTIzQ0YwMTExODI2NzU0MDBFQkIyOUMgLyogU1FMVHJhbnNhY3Rpb25TeW5jLmgg
Ki87IH07CisJCUI1MjNDRjA5MTE4MjY3NTQwMEVCQjI5QyAvKiBTUUxUcmFuc2FjdGlvblN5bmMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjUyM0NG
MDIxMTgyNjc1NDAwRUJCMjlDIC8qIFNRTFRyYW5zYWN0aW9uU3luYy5jcHAgKi87IH07CisJCUI1
MjNDRjBBMTE4MjY3NTQwMEVCQjI5QyAvKiBEYXRhYmFzZVN5bmMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjUyM0NGMDMxMTgyNjc1NDAwRUJCMjlD
IC8qIERhdGFiYXNlU3luYy5jcHAgKi87IH07CisJCUI1MjNDRjBCMTE4MjY3NTQwMEVCQjI5QyAv
KiBEYXRhYmFzZVN5bmMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEI1MjNDRjA0MTE4MjY3NTQwMEVCQjI5QyAvKiBEYXRhYmFzZVN5bmMuaCAqLzsgfTsK
IAkJQjVDMTEyM0IxMDJCNkM0NjAwMDk2NTc4IC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjVDMTEy
MzkxMDJCNkM0NjAwMDk2NTc4IC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwICovOyB9
OwogCQlCNUMxMTIzQzEwMkI2QzQ2MDAwOTY1NzggLyogU1FMVHJhbnNhY3Rpb25Db29yZGluYXRv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjVDMTEy
M0ExMDJCNkM0NjAwMDk2NTc4IC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCAqLzsgfTsK
IAkJQjVEMzYwMUExMTJGOEI1NjAwNDhERUE4IC8qIERhdGFiYXNlQ2FsbGJhY2suaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1RDM2MDE5MTEyRjhCNTYw
MDQ4REVBOCAvKiBEYXRhYmFzZUNhbGxiYWNrLmggKi87IH07CkBAIC05NTAzLDYgKzk1MDgsMTEg
QEAKIAkJQjUwRjVCODAwRTk2Q0Q5OTAwQUQ3MUE2IC8qIFdlYkNvcmVPYmpDRXh0cmFzLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQ29yZU9iakNFeHRyYXMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI1MUJGNkVFMTAyQzlFNTkwMDAyQzE1
QSAvKiBTUUxUcmFuc2FjdGlvbkNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTUUxUcmFuc2FjdGlvbkNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUI1MUJGNkVGMTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlvbkNsaWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTUUxUcmFuc2FjdGlvbkNsaWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCNTIzQ0VGRjExODI2NzU0MDBFQkIy
OUMgLyogU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQjUyM0NGMDExMTgyNjc1NDAwRUJCMjlDIC8qIFNRTFRyYW5zYWN0aW9u
U3luYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTUUxUcmFuc2FjdGlvblN5
bmMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjUyM0NGMDIxMTgyNjc1NDAwRUJC
MjlDIC8qIFNRTFRyYW5zYWN0aW9uU3luYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTUUxUcmFuc2FjdGlvblN5bmMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlCNTIzQ0YwMzExODI2NzU0MDBFQkIyOUMgLyogRGF0YWJhc2VTeW5jLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGFiYXNlU3luYy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI1MjNDRjA0MTE4MjY3NTQwMEVCQjI5QyAvKiBEYXRh
YmFzZVN5bmMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YWJhc2VTeW5j
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI1QTY4NDIxMEZGQUJFOTgwMEQyNDY4
OSAvKiBTUUxpdGVGaWxlU3lzdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IFNRTGl0ZUZpbGVTeXN0ZW0uaDsgcGF0aCA9IHNxbC9TUUxpdGVGaWxlU3lzdGVtLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI1QTY4NDIzMEZGQUJFQUEwMEQyNDY4OSAvKiBTUUxp
dGVGaWxlU3lzdGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNR
TGl0ZUZpbGVTeXN0ZW0uY3BwOyBwYXRoID0gc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNUMxMTIzOTEwMkI2QzQ2MDAwOTY1NzggLyogU1FM
VHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTEwNzM0LDYgKzEwNzQ0LDggQEAKIAkJCQk1MUE0NUI1NDBDQUQ3RkQ3MDAw
RDJCRTkgLyogRGF0YWJhc2VBdXRob3JpemVyLmggKi8sCiAJCQkJQjVEMzYwMTkxMTJGOEI1NjAw
NDhERUE4IC8qIERhdGFiYXNlQ2FsbGJhY2suaCAqLywKIAkJCQk1MTE2RDk3NTBDRjE3N0JEMDBD
MkI4NEQgLyogRGF0YWJhc2VEZXRhaWxzLmggKi8sCisJCQkJQjUyM0NGMDMxMTgyNjc1NDAwRUJC
MjlDIC8qIERhdGFiYXNlU3luYy5jcHAgKi8sCisJCQkJQjUyM0NGMDQxMTgyNjc1NDAwRUJCMjlD
IC8qIERhdGFiYXNlU3luYy5oICovLAogCQkJCTUxOTYxMUU5MENBQzc0OUMwMDEwQTgwQyAvKiBE
YXRhYmFzZVRhc2suY3BwICovLAogCQkJCTUxOTYxMUU4MENBQzc0OUMwMDEwQTgwQyAvKiBEYXRh
YmFzZVRhc2suaCAqLywKIAkJCQk1MTk2MTE2MTBDQUM1NjU3MDAxMEE4MEMgLyogRGF0YWJhc2VU
aHJlYWQuY3BwICovLApAQCAtMTA3NzAsNiArMTA3ODIsOSBAQAogCQkJCUI1QzExMjM5MTAyQjZD
NDYwMDA5NjU3OCAvKiBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcCAqLywKIAkJCQlCNUMx
MTIzQTEwMkI2QzQ2MDAwOTY1NzggLyogU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5oICovLAog
CQkJCTFBN0NDQjE4MENEOTQ2OUEwMEI3QjY0RSAvKiBTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJh
Y2suaCAqLywKKwkJCQlCNTIzQ0VGRjExODI2NzU0MDBFQkIyOUMgLyogU1FMVHJhbnNhY3Rpb25T
eW5jQ2FsbGJhY2suaCAqLywKKwkJCQlCNTIzQ0YwMTExODI2NzU0MDBFQkIyOUMgLyogU1FMVHJh
bnNhY3Rpb25TeW5jLmggKi8sCisJCQkJQjUyM0NGMDIxMTgyNjc1NDAwRUJCMjlDIC8qIFNRTFRy
YW5zYWN0aW9uU3luYy5jcHAgKi8sCiAJCQkJNTFFM0Y5QzUwREEwNTlEQzAwMjUwOTExIC8qIFN0
b3JhZ2UuY3BwICovLAogCQkJCTUxRTNGOUM0MERBMDU5REMwMDI1MDkxMSAvKiBTdG9yYWdlLmgg
Ki8sCiAJCQkJNTFFM0Y5RDEwREEwNUQ3MTAwMjUwOTExIC8qIFN0b3JhZ2UuaWRsICovLApAQCAt
MTg4ODMsNiArMTg4OTgsOSBAQAogCQkJCTJFM0JDMTA4MTE3RDQ3OTgwMEI5NDA5QSAvKiBET01G
aWxlRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFM0JDMTBCMTE3RDQ3QzgwMEI5NDA5QSAv
KiBET01GaWxlRXJyb3JJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdGRDQyOTgxMTgz
Njg0NjAwOTNDMDI5IC8qIFRyZWVEZXB0aExpbWl0LmggaW4gSGVhZGVycyAqLywKKwkJCQlCNTIz
Q0YwNjExODI2NzU0MDBFQkIyOUMgLyogU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaCBpbiBI
ZWFkZXJzICovLAorCQkJCUI1MjNDRjA4MTE4MjY3NTQwMEVCQjI5QyAvKiBTUUxUcmFuc2FjdGlv
blN5bmMuaCBpbiBIZWFkZXJzICovLAorCQkJCUI1MjNDRjBCMTE4MjY3NTQwMEVCQjI5QyAvKiBE
YXRhYmFzZVN5bmMuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjExMTksNiArMjExMzcsOCBAQAogCQkJ
CTk3Mzg4OUEwMTE2RUE5REMwMEFERjMxMyAvKiBEb2N1bWVudFdyaXRlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkyRTNCQzBDQTExN0QzRTA4MDBCOTQwOUEgLyogSlNGaWxlRXJyb3IuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMkUzQkMxMDkxMTdENDc5ODAwQjk0MDlBIC8qIERPTUZpbGVFcnJv
ci5tbSBpbiBTb3VyY2VzICovLAorCQkJCUI1MjNDRjA5MTE4MjY3NTQwMEVCQjI5QyAvKiBTUUxU
cmFuc2FjdGlvblN5bmMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjUyM0NGMEExMTgyNjc1NDAw
RUJCMjlDIC8qIERhdGFiYXNlU3luYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUv
c3RvcmFnZS9EYXRhYmFzZVN5bmMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9E
YXRhYmFzZVN5bmMuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNl
U3luYy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFw
cGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkRhdGFiYXNlU3luYy5oIgorCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgorCisjaWYgRU5BQkxFKERBVEFCQVNFKQorI2luY2x1ZGUgIkRhdGFiYXNlQ2FsbGJh
Y2suaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiU1FMVHJhbnNhY3Rp
b25TeW5jQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKKyNl
bmRpZiAvLyBFTkFCTEUoREFUQUJBU0UpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3Qg
U3RyaW5nJiBEYXRhYmFzZVN5bmM6OmRhdGFiYXNlSW5mb1RhYmxlTmFtZSgpCit7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIG5hbWUsICgiX19XZWJLaXREYXRhYmFzZUluZm9UYWJs
ZV9fIikpOworICAgIHJldHVybiBuYW1lOworfQorCisjaWYgRU5BQkxFKERBVEFCQVNFKQorCitz
dGF0aWMgYm9vbCBpc1N5bmNEYXRhYmFzZUF2YWlsYWJsZSA9IHRydWU7CisKK3ZvaWQgRGF0YWJh
c2VTeW5jOjpzZXRJc0F2YWlsYWJsZShib29sIGF2YWlsYWJsZSkKK3sKKyAgICBpc1N5bmNEYXRh
YmFzZUF2YWlsYWJsZSA9IGF2YWlsYWJsZTsKK30KKworYm9vbCBEYXRhYmFzZVN5bmM6OmlzQXZh
aWxhYmxlKCkKK3sKKyAgICByZXR1cm4gaXNTeW5jRGF0YWJhc2VBdmFpbGFibGU7Cit9CisKK1Bh
c3NSZWZQdHI8RGF0YWJhc2VTeW5jPiBEYXRhYmFzZVN5bmM6Om9wZW5EYXRhYmFzZVN5bmMoCisg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiAvKm5hbWUq
LywgY29uc3QgU3RyaW5nJiAvKmV4cGVjdGVkVmVyc2lvbiovLAorICAgIGNvbnN0IFN0cmluZyYg
LypkaXNwbGF5TmFtZSovLCB1bnNpZ25lZCBsb25nIC8qZXN0aW1hdGVkU2l6ZSovLAorICAgIFBh
c3NSZWZQdHI8RGF0YWJhc2VDYWxsYmFjaz4gLypjcmVhdGlvbkNhbGxiYWNrKi8sIEV4Y2VwdGlv
bkNvZGUmIGUpCit7CisgICAgQVNTRVJUKGNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsKKwor
ICAgIGUgPSBTRUNVUklUWV9FUlI7CisgICAgcmV0dXJuIDA7Cit9CisKK0RhdGFiYXNlU3luYzo6
RGF0YWJhc2VTeW5jKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgZXhwZWN0
ZWRWZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNl
Q2FsbGJhY2s+IGNyZWF0aW9uQ2FsbGJhY2spCisgICAgOiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoY29udGV4dCkKKyAgICAsIG1fbmFtZShuYW1lLmNyb3NzVGhyZWFkU3RyaW5nKCkpCisgICAg
LCBtX2V4cGVjdGVkVmVyc2lvbihleHBlY3RlZFZlcnNpb24uY3Jvc3NUaHJlYWRTdHJpbmcoKSkK
KyAgICAsIG1fZGlzcGxheU5hbWUoZGlzcGxheU5hbWUuY3Jvc3NUaHJlYWRTdHJpbmcoKSkKKyAg
ICAsIG1fZXN0aW1hdGVkU2l6ZShlc3RpbWF0ZWRTaXplKQorICAgICwgbV9jcmVhdGlvbkNhbGxi
YWNrKGNyZWF0aW9uQ2FsbGJhY2spCit7CisgICAgQVNTRVJUKGNvbnRleHQpOworICAgIEFTU0VS
VChjb250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSk7Cit9CisKK0RhdGFiYXNlU3luYzo6fkRhdGFi
YXNlU3luYygpCit7CisgICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNDb250
ZXh0VGhyZWFkKCkpOworfQorCitTdHJpbmcgRGF0YWJhc2VTeW5jOjp2ZXJzaW9uKCkgY29uc3QK
K3sKKyAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRUaHJlYWQo
KSk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCit2b2lkIERhdGFiYXNlU3luYzo6Y2hhbmdl
VmVyc2lvbihjb25zdCBTdHJpbmcmIC8qb2xkVmVyc2lvbiovLCBjb25zdCBTdHJpbmcmIC8qbmV3
VmVyc2lvbiovLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrPiAvKmNhbGxi
YWNrKi8pCit7CisgICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNDb250ZXh0
VGhyZWFkKCkpOworfQorCit2b2lkIERhdGFiYXNlU3luYzo6dHJhbnNhY3Rpb24oUGFzc1JlZlB0
cjxTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjaz4gLypjYWxsYmFjayovLCBib29sIC8qcmVhZE9u
bHkqLykKK3sKKyAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRU
aHJlYWQoKSk7Cit9CisKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIERhdGFiYXNlU3luYzo6c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+aXNDb250ZXh0VGhyZWFkKCkpOworICAgIHJldHVybiBtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuZ2V0KCk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoREFUQUJBU0UpCisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVN5bmMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VTeW5jLmgJKHJldmlzaW9u
IDApCisrKyBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VTeW5jLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAg
ICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIERhdGFiYXNlU3luY19oCisjZGVmaW5lIERhdGFiYXNlU3lu
Y19oCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorCisjaWYgRU5BQkxFKERBVEFCQVNF
KQorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgRGF0YWJhc2VDYWxsYmFjazsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CitjbGFz
cyBTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjazsKKwordHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29k
ZTsKKworLy8gSW5zdGFuY2VzIG9mIHRoaXMgY2xhc3Mgc2hvdWxkIGJlIGNyZWF0ZWQgYW5kIHVz
ZWQgb25seSBvbiB0aGUgd29ya2VyJ3MgY29udGV4dCB0aHJlYWQuCitjbGFzcyBEYXRhYmFzZVN5
bmMgOiBwdWJsaWMgUmVmQ291bnRlZDxEYXRhYmFzZVN5bmM+IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgdm9pZCBzZXRJc0F2YWlsYWJsZShib29sKTsKKyAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJs
ZSgpOworCisgICAgfkRhdGFiYXNlU3luYygpOworCisvLyBEaXJlY3Qgc3VwcG9ydCBmb3IgdGhl
IERPTSBBUEkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxEYXRhYmFzZVN5bmM+IG9wZW5EYXRhYmFz
ZVN5bmMoCisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sCisgICAgICAgIGNvbnN0
IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwKKyAgICAg
ICAgUGFzc1JlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiBjcmVhdGlvbkNhbGxiYWNrLCBFeGNlcHRp
b25Db2RlJik7CisgICAgU3RyaW5nIHZlcnNpb24oKSBjb25zdDsKKyAgICB2b2lkIGNoYW5nZVZl
cnNpb24oY29uc3QgU3RyaW5nJiBvbGRWZXJzaW9uLCBjb25zdCBTdHJpbmcmIG5ld1ZlcnNpb24s
IFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+IGNhbGxiYWNrKTsKKyAgICB2
b2lkIHRyYW5zYWN0aW9uKFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+IGNh
bGxiYWNrLCBib29sIHJlYWRPbmx5KTsKKworLy8gSW50ZXJuYWwgZW5naW5lIHN1cHBvcnQKKyAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7
CisKKyAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUluZm9UYWJsZU5hbWUoKTsKKwor
cHJpdmF0ZToKKyAgICBEYXRhYmFzZVN5bmMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgY29uc3QgU3RyaW5nJiBuYW1lLAorICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGV4
cGVjdGVkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwKKyAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJh
Y2s+IGNyZWF0aW9uQ2FsbGJhY2spOworCisgICAgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ+IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKyAgICBTdHJpbmcgbV9uYW1lOworICAgIFN0
cmluZyBtX2V4cGVjdGVkVmVyc2lvbjsKKyAgICBTdHJpbmcgbV9kaXNwbGF5TmFtZTsKKyAgICB1
bnNpZ25lZCBsb25nIG1fZXN0aW1hdGVkU2l6ZTsKKyAgICBSZWZQdHI8RGF0YWJhc2VDYWxsYmFj
az4gbV9jcmVhdGlvbkNhbGxiYWNrOworCisjaWZuZGVmIE5ERUJVRworICAgIFN0cmluZyBkYXRh
YmFzZURlYnVnTmFtZSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CisjZW5kaWYKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vsc2UKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
Y2xhc3MgRGF0YWJhc2VTeW5jIDogcHVibGljIFJlZkNvdW50ZWQ8RGF0YWJhc2VTeW5jPiB7Citw
dWJsaWM6CisgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJbmZvVGFibGVOYW1lKCk7
Cit9OworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKERBVEFCQVNF
KQorCisjZW5kaWYgLy8gRGF0YWJhc2VTeW5jX2gKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9TUUxU
cmFuc2FjdGlvblN5bmMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFu
c2FjdGlvblN5bmMuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5z
YWN0aW9uU3luYy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMu
ICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiU1FMVHJhbnNhY3Rpb25TeW5jLmgiCisKKyNpZiBFTkFCTEUo
REFUQUJBU0UpCisKKyNpbmNsdWRlICJEYXRhYmFzZVN5bmMuaCIKKyNpbmNsdWRlICJFeGNlcHRp
b25Db2RlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiU1FMUmVzdWx0U2V0LmgiCisjaW5jbHVkZSAi
U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJTUUxWYWx1ZS5oIgorI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5jPiBTUUxUcmFu
c2FjdGlvblN5bmM6OmNyZWF0ZShEYXRhYmFzZVN5bmMqIGRiLCBQYXNzUmVmUHRyPFNRTFRyYW5z
YWN0aW9uU3luY0NhbGxiYWNrPiBjYWxsYmFjaywgYm9vbCByZWFkT25seSkKK3sKKyAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFNRTFRyYW5zYWN0aW9uU3luYyhkYiwgY2FsbGJhY2ssIHJlYWRPbmx5
KSk7Cit9CisKK1NRTFRyYW5zYWN0aW9uU3luYzo6U1FMVHJhbnNhY3Rpb25TeW5jKERhdGFiYXNl
U3luYyogZGIsIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+IGNhbGxiYWNr
LCBib29sIHJlYWRPbmx5KQorICAgIDogbV9kYXRhYmFzZShkYikKKyAgICAsIG1fY2FsbGJhY2so
Y2FsbGJhY2spCisgICAgLCBtX3JlYWRPbmx5KHJlYWRPbmx5KQoreworICAgIEFTU0VSVChtX2Rh
dGFiYXNlKTsKKyAgICBBU1NFUlQobV9kYXRhYmFzZS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5pc0NvbnRleHRUaHJlYWQoKSk7Cit9CisKK1NRTFRyYW5zYWN0aW9uU3luYzo6flNRTFRyYW5z
YWN0aW9uU3luYygpCit7CisgICAgQVNTRVJUKG1fZGF0YWJhc2UtPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+aXNDb250ZXh0VGhyZWFkKCkpOworfQorCitQYXNzUmVmUHRyPFNRTFJlc3VsdFNl
dD4gU1FMVHJhbnNhY3Rpb25TeW5jOjpleGVjdXRlU1FMKGNvbnN0IFN0cmluZyYgLypzcWxTdGF0
ZW1lbnQqLywgY29uc3QgVmVjdG9yPFNRTFZhbHVlPiYgLyphcmd1bWVudHMqLywgRXhjZXB0aW9u
Q29kZSYgLyplKi8pCit7CisgICAgQVNTRVJUKG1fZGF0YWJhc2UtPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+aXNDb250ZXh0VGhyZWFkKCkpOworICAgIHJldHVybiAwOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoREFUQUJBU0UpCkluZGV4OiBXZWJD
b3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5jLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luYy5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9zdG9y
YWdlL1NRTFRyYW5zYWN0aW9uU3luYy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21w
dXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQK
KyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNp
Zm5kZWYgU1FMVHJhbnNhY3Rpb25TeW5jX2gKKyNkZWZpbmUgU1FMVHJhbnNhY3Rpb25TeW5jX2gK
KworI2lmIEVOQUJMRShEQVRBQkFTRSkKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5j
bHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCit0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOworCitjbGFzcyBEYXRh
YmFzZVN5bmM7CitjbGFzcyBTUUxSZXN1bHRTZXQ7CitjbGFzcyBTUUxUcmFuc2FjdGlvblN5bmND
YWxsYmFjazsKK2NsYXNzIFNRTFZhbHVlOworY2xhc3MgU3RyaW5nOworCitjbGFzcyBTUUxUcmFu
c2FjdGlvblN5bmMgOiBwdWJsaWMgVGhyZWFkU2FmZVNoYXJlZDxTUUxUcmFuc2FjdGlvblN5bmM+
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvblN5bmM+IGNy
ZWF0ZShEYXRhYmFzZVN5bmMqLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNr
PiwgYm9vbCByZWFkT25seSA9IGZhbHNlKTsKKworICAgIH5TUUxUcmFuc2FjdGlvblN5bmMoKTsK
KworICAgIFBhc3NSZWZQdHI8U1FMUmVzdWx0U2V0PiBleGVjdXRlU1FMKGNvbnN0IFN0cmluZyYg
c3FsU3RhdGVtZW50LCBjb25zdCBWZWN0b3I8U1FMVmFsdWU+JiBhcmd1bWVudHMsIEV4Y2VwdGlv
bkNvZGUmIGUpOworCisgICAgRGF0YWJhc2VTeW5jKiBkYXRhYmFzZSgpIHsgcmV0dXJuIG1fZGF0
YWJhc2UuZ2V0KCk7IH0KKyAgICBib29sIGlzUmVhZE9ubHkoKSB7IHJldHVybiBtX3JlYWRPbmx5
OyB9CisKK3ByaXZhdGU6CisgICAgU1FMVHJhbnNhY3Rpb25TeW5jKERhdGFiYXNlU3luYyosIFBh
c3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+LCBib29sIHJlYWRPbmx5KTsKKwor
ICAgIFJlZlB0cjxEYXRhYmFzZVN5bmM+IG1fZGF0YWJhc2U7CisgICAgUmVmUHRyPFNRTFRyYW5z
YWN0aW9uU3luY0NhbGxiYWNrPiBtX2NhbGxiYWNrOworICAgIGJvb2wgbV9yZWFkT25seTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisKKyNlbmRpZiAvLyBTUUxUcmFu
c2FjdGlvblN5bmNfaApJbmRleDogV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luY0Nh
bGxiYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3lu
Y0NhbGxiYWNrLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rp
b25TeW5jQ2FsbGJhY2suaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICpUcmFuc2FjdGlvbgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBD
b21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFja19oCisjZGVmaW5lIFNRTFRyYW5z
YWN0aW9uU3luY0NhbGxiYWNrX2gKKworI2lmIEVOQUJMRShEQVRBQkFTRSkKKworI2luY2x1ZGUg
PHd0Zi9UaHJlYWRpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OworY2xhc3MgU1FMVHJhbnNhY3Rpb25TeW5jOworCisvLyBJbnN0YW5j
ZXMgb2YgdGhpcyBjbGFzcyBzaG91bGQgYmUgY3JlYXRlZCBhbmQgdXNlZCBvbmx5IG9uIHRoZSB3
b3JrZXIncyBjb250ZXh0IHRocmVhZC4KK2NsYXNzIFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNr
IDogcHVibGljIFJlZkNvdW50ZWQ8U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+IHsKK3B1Ymxp
YzoKKyAgICB2aXJ0dWFsIH5TUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjaygpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgU1FMVHJhbnNh
Y3Rpb25TeW5jKiwgYm9vbCYgcmFpc2VkRXhjZXB0aW9uKSA9IDA7Cit9OworCit9CisKKyNlbmRp
ZgorCisjZW5kaWYgLy8gU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2tfaAo=
</data>
<flag name="commit-queue"
          id="38269"
          type_id="3"
          status="-"
          setter="dumi"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54371</attachid>
            <date>2010-04-26 19:30:35 -0700</date>
            <delta_ts>2010-04-27 17:37:11 -0700</delta_ts>
            <desc>patch #1: stubs for storage classes</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>29315</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1ODI2MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzggQEAKKzIwMTAtMDQtMjMgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRpbmcgc29tZSByZXF1aXJlZCBjbGFzc2VzIGZvciB0aGUgc3luYyBXZWJTUUxEYXRhYmFz
ZXMgQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzQ5OTQKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lw
aToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogc3RvcmFnZS9EYXRhYmFzZVN5bmMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlU3luYzo6ZGF0YWJhc2VJbmZvVGFibGVOYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlU3luYzo6c2V0SXNBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YWJhc2VTeW5jOjppc0F2YWlsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVN5
bmM6Om9wZW5EYXRhYmFzZVN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VTeW5jOjpE
YXRhYmFzZVN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VTeW5jOjp+RGF0YWJhc2VT
eW5jKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlU3luYzo6dmVyc2lvbik6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhYmFzZVN5bmM6OmNoYW5nZVZlcnNpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2VTeW5jOjp0cmFuc2FjdGlvbik6CisgICAgICAgICogc3RvcmFnZS9EYXRhYmFz
ZVN5bmMuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVN5bmM6OmRhdGFiYXNl
RGVidWdOYW1lKToKKyAgICAgICAgKiBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luYy5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25TeW5jOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25TeW5jOjpTUUxUcmFuc2FjdGlvblN5bmMpOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25TeW5jOjp+U1FMVHJhbnNhY3Rpb25TeW5j
KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uU3luYzo6ZXhlY3V0ZVNRTCk6Cisg
ICAgICAgICogc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmMuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTUUxUcmFuc2FjdGlvblN5bmM6OmRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNRTFRyYW5zYWN0aW9uU3luYzo6aXNSZWFkT25seSk6CisgICAgICAgICogc3RvcmFnZS9TUUxU
cmFuc2FjdGlvblN5bmNDYWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNRTFRy
YW5zYWN0aW9uU3luY0NhbGxiYWNrOjp+U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2spOgorCiAy
MDEwLTA0LTI2ICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lhLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KSW5kZXg6IFdlYkNvcmUvR05VbWFr
ZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24g
NTgyNjMpCisrKyBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0yMzQ1
LDYgKzIzNDUsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvc3RvcmFnZS9EYXRh
YmFzZUF1dGhvcml6ZXIuaCBcCiAJV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlQ2FsbGJhY2suaCBc
CiAJV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlRGV0YWlscy5oIFwKKwlXZWJDb3JlL3N0b3JhZ2Uv
RGF0YWJhc2VTeW5jLmNwcCBcCisJV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlU3luYy5oIFwKIAlX
ZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUYXNrLmNwcCBcCiAJV2ViQ29yZS9zdG9yYWdlL0RhdGFi
YXNlVGFzay5oIFwKIAlXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUaHJlYWQuY3BwIFwKQEAgLTIz
NzIsNyArMjM3NCwxMCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvc3RvcmFnZS9T
UUxUcmFuc2FjdGlvbkNsaWVudC5oIFwKIAlXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25D
b29yZGluYXRvci5oIFwKIAlXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25Db29yZGluYXRv
ci5jcHAgXAotCVdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suaAor
CVdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suaCBcCisJV2ViQ29y
ZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luYy5jcHAgXAorCVdlYkNvcmUvc3RvcmFnZS9TUUxU
cmFuc2FjdGlvblN5bmMuaCBcCisJV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luY0Nh
bGxiYWNrLmgKIAogZWxzZQogd2ViY29yZV9jcHBmbGFncyArPSAtREVOQUJMRV9EQVRBQkFTRT0w
CkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNv
cmUuZ3lwaQkocmV2aXNpb24gNTgyNjMpCisrKyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2lu
ZyBjb3B5KQpAQCAtMzMwMiw2ICszMzAyLDggQEAKICAgICAgICAgICAgICdzdG9yYWdlL0RhdGFi
YXNlQXV0aG9yaXplci5oJywKICAgICAgICAgICAgICdzdG9yYWdlL0RhdGFiYXNlQ2FsbGJhY2su
aCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9EYXRhYmFzZURldGFpbHMuaCcsCisgICAgICAgICAg
ICAnc3RvcmFnZS9EYXRhYmFzZVN5bmMuY3BwJywKKyAgICAgICAgICAgICdzdG9yYWdlL0RhdGFi
YXNlU3luYy5oJywKICAgICAgICAgICAgICdzdG9yYWdlL0RhdGFiYXNlVGFzay5jcHAnLAogICAg
ICAgICAgICAgJ3N0b3JhZ2UvRGF0YWJhc2VUYXNrLmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2Uv
RGF0YWJhc2VUaHJlYWQuY3BwJywKQEAgLTMzNDcsNiArMzM0OSw5IEBACiAgICAgICAgICAgICAn
c3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgnLAogICAgICAgICAgICAgJ3N0b3Jh
Z2UvU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAnLAogICAgICAgICAgICAgJ3N0b3JhZ2Uv
U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmgnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvU1FM
VHJhbnNhY3Rpb25TeW5jLmNwcCcsCisgICAgICAgICAgICAnc3RvcmFnZS9TUUxUcmFuc2FjdGlv
blN5bmMuaCcsCisgICAgICAgICAgICAnc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFj
ay5oJywKICAgICAgICAgICAgICdzdG9yYWdlL1N0b3JhZ2UuY3BwJywKICAgICAgICAgICAgICdz
dG9yYWdlL1N0b3JhZ2UuaCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9TdG9yYWdlQXJlYS5oJywK
SW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3Jl
LnBybwkocmV2aXNpb24gNTgyNjMpCisrKyBXZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5nIGNv
cHkpCkBAIC0yMjYxLDcgKzIyNjEsOCBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfU1FMSVRF
PTEpIHsKICAgICAgICAgcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcCBcCiAgICAg
ICAgIHBsYXRmb3JtL3NxbC9TUUxWYWx1ZS5jcHAgXAogICAgICAgICBzdG9yYWdlL0RhdGFiYXNl
LmNwcCBcCi0gICAgICAgIHN0b3JhZ2UvRGF0YWJhc2VBdXRob3JpemVyLmNwcAorICAgICAgICBz
dG9yYWdlL0RhdGFiYXNlQXV0aG9yaXplci5jcHAgXAorICAgICAgICBzdG9yYWdlL0RhdGFiYXNl
U3luYy5jcHAKIH0KIAogCkBAIC0yMjc5LDYgKzIyODAsNyBAQCBjb250YWlucyhERUZJTkVTLCBF
TkFCTEVfREFUQUJBU0U9MSkgewogICAgICAgICBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmNwcCBc
CiAgICAgICAgIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DbGllbnQuY3BwIFwKICAgICAgICAgc3Rv
cmFnZS9TUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcCBcCisgICAgICAgIHN0b3JhZ2UvU1FM
VHJhbnNhY3Rpb25TeW5jLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3Rh
dGVtZW50Q2FsbGJhY2suY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNDdXN0b21TUUxTdGF0
ZW1lbnRFcnJvckNhbGxiYWNrLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTQ3VzdG9tU1FM
VHJhbnNhY3Rpb25DYWxsYmFjay5jcHAgXApAQCAtMjI5NSw2ICsyMjk3LDcgQEAgY29udGFpbnMo
REVGSU5FUywgRU5BQkxFX0RPTV9TVE9SQUdFPTEpIAogICAgICAgICBzdG9yYWdlL0RhdGFiYXNl
QXV0aG9yaXplci5oIFwKICAgICAgICAgc3RvcmFnZS9EYXRhYmFzZS5oIFwKICAgICAgICAgc3Rv
cmFnZS9EYXRhYmFzZUNhbGxiYWNrLmggXAorICAgICAgICBzdG9yYWdlL0RhdGFiYXNlU3luYy5o
IFwKICAgICAgICAgc3RvcmFnZS9EYXRhYmFzZVRhc2suaCBcCiAgICAgICAgIHN0b3JhZ2UvRGF0
YWJhc2VUaHJlYWQuaCBcCiAgICAgICAgIHN0b3JhZ2UvRGF0YWJhc2VUcmFja2VyLmggXApAQCAt
MjMwOCw2ICsyMzExLDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0RPTV9TVE9SQUdFPTEp
IAogICAgICAgICBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmggXAogICAgICAgICBzdG9yYWdlL1NR
TFRyYW5zYWN0aW9uQ2xpZW50LmggXAogICAgICAgICBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ29v
cmRpbmF0b3IuaCBcCisgICAgICAgIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5jLmggXAogICAg
ICAgICBzdG9yYWdlL1N0b3JhZ2VBcmVhLmggXAogICAgICAgICBzdG9yYWdlL1N0b3JhZ2VBcmVh
SW1wbC5oIFwKICAgICAgICAgc3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuaCBcCkluZGV4OiBXZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDU4MjYzKQorKysgV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNDI4NDcs
NiArNDI4NDcsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5cc3RvcmFnZVxEYXRhYmFzZVN5bmMuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxl
Pg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3RvcmFnZVxEYXRhYmFzZVN5bmMu
aCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHN0b3JhZ2VcRGF0YWJhc2VUYXNrLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAtNDI5NzEs
NiArNDI5NzksMTggQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5cc3RvcmFnZVxTUUxUcmFuc2FjdGlvblN5bmMuY3BwIg0KKwkJCQk+DQorCQkJ
PC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3RvcmFnZVxTUUxUcmFu
c2FjdGlvblN5bmMuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXHN0b3JhZ2VcU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaCINCisJCQkJ
Pg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN0b3JhZ2Vc
U3RvcmFnZS5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpJbmRleDogV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDU4MjYzKQorKysgV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQxNjEs
NiArNDE2MSwxMSBAQAogCQlCNTFCRjZGMTEwMkM5RTU5MDAwMkMxNUEgLyogU1FMVHJhbnNhY3Rp
b25DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEI1MUJGNkVGMTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlvbkNsaWVudC5oICovOyB9
OwogCQlCNUE2ODQyMjBGRkFCRTk4MDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5c3RlbS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjVBNjg0MjEwRkZBQkU5
ODAwRDI0Njg5IC8qIFNRTGl0ZUZpbGVTeXN0ZW0uaCAqLzsgfTsKIAkJQjVBNjg0MjQwRkZBQkVB
QTAwRDI0Njg5IC8qIFNRTGl0ZUZpbGVTeXN0ZW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjVBNjg0MjMwRkZBQkVBQTAwRDI0Njg5IC8qIFNRTGl0
ZUZpbGVTeXN0ZW0uY3BwICovOyB9OworCQlCNTIzQ0YwNjExODI2NzU0MDBFQkIyOUMgLyogU1FM
VHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEI1MjNDRUZGMTE4MjY3NTQwMEVCQjI5QyAvKiBTUUxUcmFuc2FjdGlv
blN5bmNDYWxsYmFjay5oICovOyB9OworCQlCNTIzQ0YwODExODI2NzU0MDBFQkIyOUMgLyogU1FM
VHJhbnNhY3Rpb25TeW5jLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCNTIzQ0YwMTExODI2NzU0MDBFQkIyOUMgLyogU1FMVHJhbnNhY3Rpb25TeW5jLmgg
Ki87IH07CisJCUI1MjNDRjA5MTE4MjY3NTQwMEVCQjI5QyAvKiBTUUxUcmFuc2FjdGlvblN5bmMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjUyM0NG
MDIxMTgyNjc1NDAwRUJCMjlDIC8qIFNRTFRyYW5zYWN0aW9uU3luYy5jcHAgKi87IH07CisJCUI1
MjNDRjBBMTE4MjY3NTQwMEVCQjI5QyAvKiBEYXRhYmFzZVN5bmMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjUyM0NGMDMxMTgyNjc1NDAwRUJCMjlD
IC8qIERhdGFiYXNlU3luYy5jcHAgKi87IH07CisJCUI1MjNDRjBCMTE4MjY3NTQwMEVCQjI5QyAv
KiBEYXRhYmFzZVN5bmMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEI1MjNDRjA0MTE4MjY3NTQwMEVCQjI5QyAvKiBEYXRhYmFzZVN5bmMuaCAqLzsgfTsK
IAkJQjVDMTEyM0IxMDJCNkM0NjAwMDk2NTc4IC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjVDMTEy
MzkxMDJCNkM0NjAwMDk2NTc4IC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwICovOyB9
OwogCQlCNUMxMTIzQzEwMkI2QzQ2MDAwOTY1NzggLyogU1FMVHJhbnNhY3Rpb25Db29yZGluYXRv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjVDMTEy
M0ExMDJCNkM0NjAwMDk2NTc4IC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCAqLzsgfTsK
IAkJQjVEMzYwMUExMTJGOEI1NjAwNDhERUE4IC8qIERhdGFiYXNlQ2FsbGJhY2suaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1RDM2MDE5MTEyRjhCNTYw
MDQ4REVBOCAvKiBEYXRhYmFzZUNhbGxiYWNrLmggKi87IH07CkBAIC05NTAzLDYgKzk1MDgsMTEg
QEAKIAkJQjUwRjVCODAwRTk2Q0Q5OTAwQUQ3MUE2IC8qIFdlYkNvcmVPYmpDRXh0cmFzLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQ29yZU9iakNFeHRyYXMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI1MUJGNkVFMTAyQzlFNTkwMDAyQzE1
QSAvKiBTUUxUcmFuc2FjdGlvbkNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTUUxUcmFuc2FjdGlvbkNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUI1MUJGNkVGMTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlvbkNsaWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTUUxUcmFuc2FjdGlvbkNsaWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCNTIzQ0VGRjExODI2NzU0MDBFQkIy
OUMgLyogU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQjUyM0NGMDExMTgyNjc1NDAwRUJCMjlDIC8qIFNRTFRyYW5zYWN0aW9u
U3luYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTUUxUcmFuc2FjdGlvblN5
bmMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjUyM0NGMDIxMTgyNjc1NDAwRUJC
MjlDIC8qIFNRTFRyYW5zYWN0aW9uU3luYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTUUxUcmFuc2FjdGlvblN5bmMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlCNTIzQ0YwMzExODI2NzU0MDBFQkIyOUMgLyogRGF0YWJhc2VTeW5jLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGFiYXNlU3luYy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI1MjNDRjA0MTE4MjY3NTQwMEVCQjI5QyAvKiBEYXRh
YmFzZVN5bmMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YWJhc2VTeW5j
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI1QTY4NDIxMEZGQUJFOTgwMEQyNDY4
OSAvKiBTUUxpdGVGaWxlU3lzdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IFNRTGl0ZUZpbGVTeXN0ZW0uaDsgcGF0aCA9IHNxbC9TUUxpdGVGaWxlU3lzdGVtLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI1QTY4NDIzMEZGQUJFQUEwMEQyNDY4OSAvKiBTUUxp
dGVGaWxlU3lzdGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNR
TGl0ZUZpbGVTeXN0ZW0uY3BwOyBwYXRoID0gc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNUMxMTIzOTEwMkI2QzQ2MDAwOTY1NzggLyogU1FM
VHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTEwNzM0LDYgKzEwNzQ0LDggQEAKIAkJCQk1MUE0NUI1NDBDQUQ3RkQ3MDAw
RDJCRTkgLyogRGF0YWJhc2VBdXRob3JpemVyLmggKi8sCiAJCQkJQjVEMzYwMTkxMTJGOEI1NjAw
NDhERUE4IC8qIERhdGFiYXNlQ2FsbGJhY2suaCAqLywKIAkJCQk1MTE2RDk3NTBDRjE3N0JEMDBD
MkI4NEQgLyogRGF0YWJhc2VEZXRhaWxzLmggKi8sCisJCQkJQjUyM0NGMDMxMTgyNjc1NDAwRUJC
MjlDIC8qIERhdGFiYXNlU3luYy5jcHAgKi8sCisJCQkJQjUyM0NGMDQxMTgyNjc1NDAwRUJCMjlD
IC8qIERhdGFiYXNlU3luYy5oICovLAogCQkJCTUxOTYxMUU5MENBQzc0OUMwMDEwQTgwQyAvKiBE
YXRhYmFzZVRhc2suY3BwICovLAogCQkJCTUxOTYxMUU4MENBQzc0OUMwMDEwQTgwQyAvKiBEYXRh
YmFzZVRhc2suaCAqLywKIAkJCQk1MTk2MTE2MTBDQUM1NjU3MDAxMEE4MEMgLyogRGF0YWJhc2VU
aHJlYWQuY3BwICovLApAQCAtMTA3NzAsNiArMTA3ODIsOSBAQAogCQkJCUI1QzExMjM5MTAyQjZD
NDYwMDA5NjU3OCAvKiBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcCAqLywKIAkJCQlCNUMx
MTIzQTEwMkI2QzQ2MDAwOTY1NzggLyogU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5oICovLAog
CQkJCTFBN0NDQjE4MENEOTQ2OUEwMEI3QjY0RSAvKiBTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJh
Y2suaCAqLywKKwkJCQlCNTIzQ0VGRjExODI2NzU0MDBFQkIyOUMgLyogU1FMVHJhbnNhY3Rpb25T
eW5jQ2FsbGJhY2suaCAqLywKKwkJCQlCNTIzQ0YwMTExODI2NzU0MDBFQkIyOUMgLyogU1FMVHJh
bnNhY3Rpb25TeW5jLmggKi8sCisJCQkJQjUyM0NGMDIxMTgyNjc1NDAwRUJCMjlDIC8qIFNRTFRy
YW5zYWN0aW9uU3luYy5jcHAgKi8sCiAJCQkJNTFFM0Y5QzUwREEwNTlEQzAwMjUwOTExIC8qIFN0
b3JhZ2UuY3BwICovLAogCQkJCTUxRTNGOUM0MERBMDU5REMwMDI1MDkxMSAvKiBTdG9yYWdlLmgg
Ki8sCiAJCQkJNTFFM0Y5RDEwREEwNUQ3MTAwMjUwOTExIC8qIFN0b3JhZ2UuaWRsICovLApAQCAt
MTg4ODMsNiArMTg4OTgsOSBAQAogCQkJCTJFM0JDMTA4MTE3RDQ3OTgwMEI5NDA5QSAvKiBET01G
aWxlRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFM0JDMTBCMTE3RDQ3QzgwMEI5NDA5QSAv
KiBET01GaWxlRXJyb3JJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdGRDQyOTgxMTgz
Njg0NjAwOTNDMDI5IC8qIFRyZWVEZXB0aExpbWl0LmggaW4gSGVhZGVycyAqLywKKwkJCQlCNTIz
Q0YwNjExODI2NzU0MDBFQkIyOUMgLyogU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaCBpbiBI
ZWFkZXJzICovLAorCQkJCUI1MjNDRjA4MTE4MjY3NTQwMEVCQjI5QyAvKiBTUUxUcmFuc2FjdGlv
blN5bmMuaCBpbiBIZWFkZXJzICovLAorCQkJCUI1MjNDRjBCMTE4MjY3NTQwMEVCQjI5QyAvKiBE
YXRhYmFzZVN5bmMuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjExMTksNiArMjExMzcsOCBAQAogCQkJ
CTk3Mzg4OUEwMTE2RUE5REMwMEFERjMxMyAvKiBEb2N1bWVudFdyaXRlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkyRTNCQzBDQTExN0QzRTA4MDBCOTQwOUEgLyogSlNGaWxlRXJyb3IuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMkUzQkMxMDkxMTdENDc5ODAwQjk0MDlBIC8qIERPTUZpbGVFcnJv
ci5tbSBpbiBTb3VyY2VzICovLAorCQkJCUI1MjNDRjA5MTE4MjY3NTQwMEVCQjI5QyAvKiBTUUxU
cmFuc2FjdGlvblN5bmMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjUyM0NGMEExMTgyNjc1NDAw
RUJCMjlDIC8qIERhdGFiYXNlU3luYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUv
c3RvcmFnZS9EYXRhYmFzZVN5bmMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9E
YXRhYmFzZVN5bmMuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNl
U3luYy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFw
cGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkRhdGFiYXNlU3luYy5oIgorCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgorCisjaWYgRU5BQkxFKERBVEFCQVNFKQorI2luY2x1ZGUgIkRhdGFiYXNlQ2FsbGJh
Y2suaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiU1FMVHJhbnNhY3Rp
b25TeW5jQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKKyNl
bmRpZiAvLyBFTkFCTEUoREFUQUJBU0UpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3Qg
U3RyaW5nJiBEYXRhYmFzZVN5bmM6OmRhdGFiYXNlSW5mb1RhYmxlTmFtZSgpCit7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIG5hbWUsICgiX19XZWJLaXREYXRhYmFzZUluZm9UYWJs
ZV9fIikpOworICAgIHJldHVybiBuYW1lOworfQorCisjaWYgRU5BQkxFKERBVEFCQVNFKQorCitz
dGF0aWMgYm9vbCBpc1N5bmNEYXRhYmFzZUF2YWlsYWJsZSA9IHRydWU7CisKK3ZvaWQgRGF0YWJh
c2VTeW5jOjpzZXRJc0F2YWlsYWJsZShib29sIGF2YWlsYWJsZSkKK3sKKyAgICBpc1N5bmNEYXRh
YmFzZUF2YWlsYWJsZSA9IGF2YWlsYWJsZTsKK30KKworYm9vbCBEYXRhYmFzZVN5bmM6OmlzQXZh
aWxhYmxlKCkKK3sKKyAgICByZXR1cm4gaXNTeW5jRGF0YWJhc2VBdmFpbGFibGU7Cit9CisKK1Bh
c3NSZWZQdHI8RGF0YWJhc2VTeW5jPiBEYXRhYmFzZVN5bmM6Om9wZW5EYXRhYmFzZVN5bmMoCisg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiAvKm5hbWUq
LywgY29uc3QgU3RyaW5nJiAvKmV4cGVjdGVkVmVyc2lvbiovLAorICAgIGNvbnN0IFN0cmluZyYg
LypkaXNwbGF5TmFtZSovLCB1bnNpZ25lZCBsb25nIC8qZXN0aW1hdGVkU2l6ZSovLAorICAgIFBh
c3NSZWZQdHI8RGF0YWJhc2VDYWxsYmFjaz4gLypjcmVhdGlvbkNhbGxiYWNrKi8sIEV4Y2VwdGlv
bkNvZGUmIGUpCit7CisgICAgQVNTRVJUKGNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsKKwor
ICAgIGUgPSBTRUNVUklUWV9FUlI7CisgICAgcmV0dXJuIDA7Cit9CisKK0RhdGFiYXNlU3luYzo6
RGF0YWJhc2VTeW5jKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgZXhwZWN0
ZWRWZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNl
Q2FsbGJhY2s+IGNyZWF0aW9uQ2FsbGJhY2spCisgICAgOiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoY29udGV4dCkKKyAgICAsIG1fbmFtZShuYW1lLmNyb3NzVGhyZWFkU3RyaW5nKCkpCisgICAg
LCBtX2V4cGVjdGVkVmVyc2lvbihleHBlY3RlZFZlcnNpb24uY3Jvc3NUaHJlYWRTdHJpbmcoKSkK
KyAgICAsIG1fZGlzcGxheU5hbWUoZGlzcGxheU5hbWUuY3Jvc3NUaHJlYWRTdHJpbmcoKSkKKyAg
ICAsIG1fZXN0aW1hdGVkU2l6ZShlc3RpbWF0ZWRTaXplKQorICAgICwgbV9jcmVhdGlvbkNhbGxi
YWNrKGNyZWF0aW9uQ2FsbGJhY2spCit7CisgICAgQVNTRVJUKGNvbnRleHQpOworICAgIEFTU0VS
VChjb250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSk7Cit9CisKK0RhdGFiYXNlU3luYzo6fkRhdGFi
YXNlU3luYygpCit7CisgICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNDb250
ZXh0VGhyZWFkKCkpOworfQorCitTdHJpbmcgRGF0YWJhc2VTeW5jOjp2ZXJzaW9uKCkgY29uc3QK
K3sKKyAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRUaHJlYWQo
KSk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCit2b2lkIERhdGFiYXNlU3luYzo6Y2hhbmdl
VmVyc2lvbihjb25zdCBTdHJpbmcmIC8qb2xkVmVyc2lvbiovLCBjb25zdCBTdHJpbmcmIC8qbmV3
VmVyc2lvbiovLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrPiAvKmNhbGxi
YWNrKi8pCit7CisgICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNDb250ZXh0
VGhyZWFkKCkpOworfQorCit2b2lkIERhdGFiYXNlU3luYzo6dHJhbnNhY3Rpb24oUGFzc1JlZlB0
cjxTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjaz4gLypjYWxsYmFjayovLCBib29sIC8qcmVhZE9u
bHkqLykKK3sKKyAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRU
aHJlYWQoKSk7Cit9CisKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIERhdGFiYXNlU3luYzo6c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+aXNDb250ZXh0VGhyZWFkKCkpOworICAgIHJldHVybiBtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuZ2V0KCk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoREFUQUJBU0UpCisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVN5bmMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VTeW5jLmgJKHJldmlzaW9u
IDApCisrKyBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VTeW5jLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAg
ICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIERhdGFiYXNlU3luY19oCisjZGVmaW5lIERhdGFiYXNlU3lu
Y19oCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorCisjaWYgRU5BQkxFKERBVEFCQVNF
KQorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgRGF0YWJhc2VDYWxsYmFjazsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CitjbGFz
cyBTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjazsKKwordHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29k
ZTsKKworLy8gSW5zdGFuY2VzIG9mIHRoaXMgY2xhc3Mgc2hvdWxkIGJlIGNyZWF0ZWQgYW5kIHVz
ZWQgb25seSBvbiB0aGUgd29ya2VyJ3MgY29udGV4dCB0aHJlYWQuCitjbGFzcyBEYXRhYmFzZVN5
bmMgOiBwdWJsaWMgUmVmQ291bnRlZDxEYXRhYmFzZVN5bmM+IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgdm9pZCBzZXRJc0F2YWlsYWJsZShib29sKTsKKyAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJs
ZSgpOworCisgICAgfkRhdGFiYXNlU3luYygpOworCisvLyBEaXJlY3Qgc3VwcG9ydCBmb3IgdGhl
IERPTSBBUEkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxEYXRhYmFzZVN5bmM+IG9wZW5EYXRhYmFz
ZVN5bmMoCisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sCisgICAgICAgIGNvbnN0
IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwKKyAgICAg
ICAgUGFzc1JlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiBjcmVhdGlvbkNhbGxiYWNrLCBFeGNlcHRp
b25Db2RlJik7CisgICAgU3RyaW5nIHZlcnNpb24oKSBjb25zdDsKKyAgICB2b2lkIGNoYW5nZVZl
cnNpb24oY29uc3QgU3RyaW5nJiBvbGRWZXJzaW9uLCBjb25zdCBTdHJpbmcmIG5ld1ZlcnNpb24s
IFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+IGNhbGxiYWNrKTsKKyAgICB2
b2lkIHRyYW5zYWN0aW9uKFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+IGNh
bGxiYWNrLCBib29sIHJlYWRPbmx5KTsKKworLy8gSW50ZXJuYWwgZW5naW5lIHN1cHBvcnQKKyAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7
CisKKyAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUluZm9UYWJsZU5hbWUoKTsKKwor
cHJpdmF0ZToKKyAgICBEYXRhYmFzZVN5bmMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgY29uc3QgU3RyaW5nJiBuYW1lLAorICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGV4
cGVjdGVkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwKKyAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJh
Y2s+IGNyZWF0aW9uQ2FsbGJhY2spOworCisgICAgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ+IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKyAgICBTdHJpbmcgbV9uYW1lOworICAgIFN0
cmluZyBtX2V4cGVjdGVkVmVyc2lvbjsKKyAgICBTdHJpbmcgbV9kaXNwbGF5TmFtZTsKKyAgICB1
bnNpZ25lZCBsb25nIG1fZXN0aW1hdGVkU2l6ZTsKKyAgICBSZWZQdHI8RGF0YWJhc2VDYWxsYmFj
az4gbV9jcmVhdGlvbkNhbGxiYWNrOworCisjaWZuZGVmIE5ERUJVRworICAgIFN0cmluZyBkYXRh
YmFzZURlYnVnTmFtZSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CisjZW5kaWYKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vsc2UKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
Y2xhc3MgRGF0YWJhc2VTeW5jIDogcHVibGljIFJlZkNvdW50ZWQ8RGF0YWJhc2VTeW5jPiB7Citw
dWJsaWM6CisgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJbmZvVGFibGVOYW1lKCk7
Cit9OworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKERBVEFCQVNF
KQorCisjZW5kaWYgLy8gRGF0YWJhc2VTeW5jX2gKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9TUUxU
cmFuc2FjdGlvblN5bmMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFu
c2FjdGlvblN5bmMuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5z
YWN0aW9uU3luYy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMu
ICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiU1FMVHJhbnNhY3Rpb25TeW5jLmgiCisKKyNpZiBFTkFCTEUo
REFUQUJBU0UpCisKKyNpbmNsdWRlICJEYXRhYmFzZVN5bmMuaCIKKyNpbmNsdWRlICJFeGNlcHRp
b25Db2RlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTUUxSZXN1
bHRTZXQuaCIKKyNpbmNsdWRlICJTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5oIgorI2luY2x1
ZGUgIlNRTFZhbHVlLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5jPiBTUUxUcmFu
c2FjdGlvblN5bmM6OmNyZWF0ZShEYXRhYmFzZVN5bmMqIGRiLCBQYXNzUmVmUHRyPFNRTFRyYW5z
YWN0aW9uU3luY0NhbGxiYWNrPiBjYWxsYmFjaywgYm9vbCByZWFkT25seSkKK3sKKyAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFNRTFRyYW5zYWN0aW9uU3luYyhkYiwgY2FsbGJhY2ssIHJlYWRPbmx5
KSk7Cit9CisKK1NRTFRyYW5zYWN0aW9uU3luYzo6U1FMVHJhbnNhY3Rpb25TeW5jKERhdGFiYXNl
U3luYyogZGIsIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+IGNhbGxiYWNr
LCBib29sIHJlYWRPbmx5KQorICAgIDogbV9kYXRhYmFzZShkYikKKyAgICAsIG1fY2FsbGJhY2so
Y2FsbGJhY2spCisgICAgLCBtX3JlYWRPbmx5KHJlYWRPbmx5KQoreworICAgIEFTU0VSVChtX2Rh
dGFiYXNlKTsKKyAgICBBU1NFUlQobV9kYXRhYmFzZS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5pc0NvbnRleHRUaHJlYWQoKSk7Cit9CisKK1NRTFRyYW5zYWN0aW9uU3luYzo6flNRTFRyYW5z
YWN0aW9uU3luYygpCit7CisgICAgQVNTRVJUKG1fZGF0YWJhc2UtPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+aXNDb250ZXh0VGhyZWFkKCkpOworfQorCitQYXNzUmVmUHRyPFNRTFJlc3VsdFNl
dD4gU1FMVHJhbnNhY3Rpb25TeW5jOjpleGVjdXRlU1FMKGNvbnN0IFN0cmluZyYgLypzcWxTdGF0
ZW1lbnQqLywgY29uc3QgVmVjdG9yPFNRTFZhbHVlPiYgLyphcmd1bWVudHMqLywgRXhjZXB0aW9u
Q29kZSYgLyplKi8pCit7CisgICAgQVNTRVJUKG1fZGF0YWJhc2UtPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+aXNDb250ZXh0VGhyZWFkKCkpOworICAgIHJldHVybiAwOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoREFUQUJBU0UpCkluZGV4OiBXZWJD
b3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5jLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luYy5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9zdG9y
YWdlL1NRTFRyYW5zYWN0aW9uU3luYy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21w
dXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQK
KyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNp
Zm5kZWYgU1FMVHJhbnNhY3Rpb25TeW5jX2gKKyNkZWZpbmUgU1FMVHJhbnNhY3Rpb25TeW5jX2gK
KworI2lmIEVOQUJMRShEQVRBQkFTRSkKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKwordHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKKworY2xhc3MgRGF0
YWJhc2VTeW5jOworY2xhc3MgU1FMUmVzdWx0U2V0OworY2xhc3MgU1FMVHJhbnNhY3Rpb25TeW5j
Q2FsbGJhY2s7CitjbGFzcyBTUUxWYWx1ZTsKK2NsYXNzIFN0cmluZzsKKworLy8gSW5zdGFuY2Vz
IG9mIHRoaXMgY2xhc3Mgc2hvdWxkIGJlIGNyZWF0ZWQgYW5kIHVzZWQgb25seSBvbiB0aGUgd29y
a2VyJ3MgY29udGV4dCB0aHJlYWQuCitjbGFzcyBTUUxUcmFuc2FjdGlvblN5bmMgOiBwdWJsaWMg
UmVmQ291bnRlZDxTUUxUcmFuc2FjdGlvblN5bmM+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTUUxUcmFuc2FjdGlvblN5bmM+IGNyZWF0ZShEYXRhYmFzZVN5bmMqLCBQYXNzUmVm
UHRyPFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrPiwgYm9vbCByZWFkT25seSA9IGZhbHNlKTsK
KworICAgIH5TUUxUcmFuc2FjdGlvblN5bmMoKTsKKworICAgIFBhc3NSZWZQdHI8U1FMUmVzdWx0
U2V0PiBleGVjdXRlU1FMKGNvbnN0IFN0cmluZyYgc3FsU3RhdGVtZW50LCBjb25zdCBWZWN0b3I8
U1FMVmFsdWU+JiBhcmd1bWVudHMsIEV4Y2VwdGlvbkNvZGUmIGUpOworCisgICAgRGF0YWJhc2VT
eW5jKiBkYXRhYmFzZSgpIHsgcmV0dXJuIG1fZGF0YWJhc2UuZ2V0KCk7IH0KKyAgICBib29sIGlz
UmVhZE9ubHkoKSB7IHJldHVybiBtX3JlYWRPbmx5OyB9CisKK3ByaXZhdGU6CisgICAgU1FMVHJh
bnNhY3Rpb25TeW5jKERhdGFiYXNlU3luYyosIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5j
Q2FsbGJhY2s+LCBib29sIHJlYWRPbmx5KTsKKworICAgIFJlZlB0cjxEYXRhYmFzZVN5bmM+IG1f
ZGF0YWJhc2U7CisgICAgUmVmUHRyPFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrPiBtX2NhbGxi
YWNrOworICAgIGJvb2wgbV9yZWFkT25seTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmCisKKyNlbmRpZiAvLyBTUUxUcmFuc2FjdGlvblN5bmNfaApJbmRleDogV2ViQ29y
ZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmgJKHJldmlzaW9uIDApCisr
KyBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICpUcmFuc2FjdGlvbgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAz
LiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTUUxUcmFuc2FjdGlvblN5
bmNDYWxsYmFja19oCisjZGVmaW5lIFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrX2gKKworI2lm
IEVOQUJMRShEQVRBQkFTRSkKKworI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworY2xhc3MgU1FM
VHJhbnNhY3Rpb25TeW5jOworCisvLyBJbnN0YW5jZXMgb2YgdGhpcyBjbGFzcyBzaG91bGQgYmUg
Y3JlYXRlZCBhbmQgdXNlZCBvbmx5IG9uIHRoZSB3b3JrZXIncyBjb250ZXh0IHRocmVhZC4KK2Ns
YXNzIFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8U1FMVHJh
bnNhY3Rpb25TeW5jQ2FsbGJhY2s+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5TUUxUcmFuc2Fj
dGlvblN5bmNDYWxsYmFjaygpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgU1FMVHJhbnNhY3Rpb25TeW5jKiwgYm9vbCYgcmFpc2VkRXhj
ZXB0aW9uKSA9IDA7Cit9OworCit9CisKKyNlbmRpZgorCisjZW5kaWYgLy8gU1FMVHJhbnNhY3Rp
b25TeW5jQ2FsbGJhY2tfaAo=
</data>
<flag name="review"
          id="38322"
          type_id="1"
          status="-"
          setter="jorlow"
    />
    <flag name="commit-queue"
          id="38323"
          type_id="3"
          status="-"
          setter="dumi"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54485</attachid>
            <date>2010-04-27 17:37:11 -0700</date>
            <delta_ts>2010-04-28 13:04:08 -0700</delta_ts>
            <desc>patch #1: stubs for storage classes</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>30210</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1ODM1NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzggQEAKKzIwMTAtMDQtMjMgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRpbmcgc29tZSByZXF1aXJlZCBjbGFzc2VzIGZvciB0aGUgc3luYyBXZWJTUUxEYXRhYmFz
ZXMgQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzQ5OTQKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lw
aToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogc3RvcmFnZS9EYXRhYmFzZVN5bmMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlU3luYzo6ZGF0YWJhc2VJbmZvVGFibGVOYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlU3luYzo6c2V0SXNBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YWJhc2VTeW5jOjppc0F2YWlsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVN5
bmM6Om9wZW5EYXRhYmFzZVN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VTeW5jOjpE
YXRhYmFzZVN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VTeW5jOjp+RGF0YWJhc2VT
eW5jKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlU3luYzo6dmVyc2lvbik6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhYmFzZVN5bmM6OmNoYW5nZVZlcnNpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2VTeW5jOjp0cmFuc2FjdGlvbik6CisgICAgICAgICogc3RvcmFnZS9EYXRhYmFz
ZVN5bmMuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVN5bmM6OmRhdGFiYXNl
RGVidWdOYW1lKToKKyAgICAgICAgKiBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luYy5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25TeW5jOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25TeW5jOjpTUUxUcmFuc2FjdGlvblN5bmMpOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25TeW5jOjp+U1FMVHJhbnNhY3Rpb25TeW5j
KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uU3luYzo6ZXhlY3V0ZVNRTCk6Cisg
ICAgICAgICogc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmMuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTUUxUcmFuc2FjdGlvblN5bmM6OmRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNRTFRyYW5zYWN0aW9uU3luYzo6aXNSZWFkT25seSk6CisgICAgICAgICogc3RvcmFnZS9TUUxU
cmFuc2FjdGlvblN5bmNDYWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNRTFRy
YW5zYWN0aW9uU3luY0NhbGxiYWNrOjp+U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2spOgorCiAy
MDEwLTA0LTI3ICBLaW51a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBKaWFuIExpLgpJbmRleDogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA1ODM1NCkKKysrIFdl
YkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTIzNDUsNiArMjM0NSw4IEBA
IHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlQXV0aG9yaXpl
ci5oIFwKIAlXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VDYWxsYmFjay5oIFwKIAlXZWJDb3JlL3N0
b3JhZ2UvRGF0YWJhc2VEZXRhaWxzLmggXAorCVdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVN5bmMu
Y3BwIFwKKwlXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VTeW5jLmggXAogCVdlYkNvcmUvc3RvcmFn
ZS9EYXRhYmFzZVRhc2suY3BwIFwKIAlXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUYXNrLmggXAog
CVdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRocmVhZC5jcHAgXApAQCAtMjM3Miw3ICsyMzc0LDEw
IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9u
Q2xpZW50LmggXAogCVdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgg
XAogCVdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcCBcCi0JV2Vi
Q29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5oCisJV2ViQ29yZS9zdG9y
YWdlL1NRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5oIFwKKwlXZWJDb3JlL3N0b3JhZ2UvU1FM
VHJhbnNhY3Rpb25TeW5jLmNwcCBcCisJV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3lu
Yy5oIFwKKwlXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaAogCiBl
bHNlCiB3ZWJjb3JlX2NwcGZsYWdzICs9IC1ERU5BQkxFX0RBVEFCQVNFPTAKSW5kZXg6IFdlYkNv
cmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZp
c2lvbiA1ODM1NCkKKysrIFdlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0z
MzAwLDYgKzMzMDAsOCBAQAogICAgICAgICAgICAgJ3N0b3JhZ2UvRGF0YWJhc2VBdXRob3JpemVy
LmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvRGF0YWJhc2VDYWxsYmFjay5oJywKICAgICAgICAg
ICAgICdzdG9yYWdlL0RhdGFiYXNlRGV0YWlscy5oJywKKyAgICAgICAgICAgICdzdG9yYWdlL0Rh
dGFiYXNlU3luYy5jcHAnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvRGF0YWJhc2VTeW5jLmgnLAog
ICAgICAgICAgICAgJ3N0b3JhZ2UvRGF0YWJhc2VUYXNrLmNwcCcsCiAgICAgICAgICAgICAnc3Rv
cmFnZS9EYXRhYmFzZVRhc2suaCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9EYXRhYmFzZVRocmVh
ZC5jcHAnLApAQCAtMzM0NSw2ICszMzQ3LDkgQEAKICAgICAgICAgICAgICdzdG9yYWdlL1NRTFRy
YW5zYWN0aW9uQ29vcmRpbmF0b3IuaCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9TUUxUcmFuc2Fj
dGlvbkNvb3JkaW5hdG9yLmNwcCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9TUUxUcmFuc2FjdGlv
bkVycm9yQ2FsbGJhY2suaCcsCisgICAgICAgICAgICAnc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5
bmMuY3BwJywKKyAgICAgICAgICAgICdzdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luYy5oJywKKyAg
ICAgICAgICAgICdzdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmgnLAogICAgICAg
ICAgICAgJ3N0b3JhZ2UvU3RvcmFnZS5jcHAnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvU3RvcmFn
ZS5oJywKICAgICAgICAgICAgICdzdG9yYWdlL1N0b3JhZ2VBcmVhLmgnLApJbmRleDogV2ViQ29y
ZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lv
biA1ODM1NCkKKysrIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTIyNjQs
NyArMjI2NCw4IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9TUUxJVEU9MSkgewogICAgICAg
ICBwbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uY3BwIFwKICAgICAgICAgcGxhdGZvcm0v
c3FsL1NRTFZhbHVlLmNwcCBcCiAgICAgICAgIHN0b3JhZ2UvRGF0YWJhc2UuY3BwIFwKLSAgICAg
ICAgc3RvcmFnZS9EYXRhYmFzZUF1dGhvcml6ZXIuY3BwCisgICAgICAgIHN0b3JhZ2UvRGF0YWJh
c2VBdXRob3JpemVyLmNwcCBcCisgICAgICAgIHN0b3JhZ2UvRGF0YWJhc2VTeW5jLmNwcAogfQog
CiAKQEAgLTIyODIsNiArMjI4Myw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9EQVRBQkFT
RT0xKSB7CiAgICAgICAgIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uY3BwIFwKICAgICAgICAgc3Rv
cmFnZS9TUUxUcmFuc2FjdGlvbkNsaWVudC5jcHAgXAogICAgICAgICBzdG9yYWdlL1NRTFRyYW5z
YWN0aW9uQ29vcmRpbmF0b3IuY3BwIFwKKyAgICAgICAgc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5
bmMuY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNDdXN0b21TUUxTdGF0ZW1lbnRDYWxsYmFj
ay5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2Fs
bGJhY2suY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNDdXN0b21TUUxUcmFuc2FjdGlvbkNh
bGxiYWNrLmNwcCBcCkBAIC0yMjk4LDYgKzIzMDAsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFC
TEVfRE9NX1NUT1JBR0U9MSkgCiAgICAgICAgIHN0b3JhZ2UvRGF0YWJhc2VBdXRob3JpemVyLmgg
XAogICAgICAgICBzdG9yYWdlL0RhdGFiYXNlLmggXAogICAgICAgICBzdG9yYWdlL0RhdGFiYXNl
Q2FsbGJhY2suaCBcCisgICAgICAgIHN0b3JhZ2UvRGF0YWJhc2VTeW5jLmggXAogICAgICAgICBz
dG9yYWdlL0RhdGFiYXNlVGFzay5oIFwKICAgICAgICAgc3RvcmFnZS9EYXRhYmFzZVRocmVhZC5o
IFwKICAgICAgICAgc3RvcmFnZS9EYXRhYmFzZVRyYWNrZXIuaCBcCkBAIC0yMzExLDYgKzIzMTQs
NyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfRE9NX1NUT1JBR0U9MSkgCiAgICAgICAgIHN0
b3JhZ2UvU1FMVHJhbnNhY3Rpb24uaCBcCiAgICAgICAgIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb25D
bGllbnQuaCBcCiAgICAgICAgIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5oIFwK
KyAgICAgICAgc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmMuaCBcCiAgICAgICAgIHN0b3JhZ2Uv
U3RvcmFnZUFyZWEuaCBcCiAgICAgICAgIHN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmggXAogICAg
ICAgICBzdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5oIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gNTgzNTQpCisrKyBXZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00Mjg0Nyw2ICs0Mjg0NywxNCBA
QAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxz
dG9yYWdlXERhdGFiYXNlU3luYy5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUN
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdlXERhdGFiYXNlU3luYy5oIg0KKwkJCQk+DQor
CQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3RvcmFnZVxEYXRh
YmFzZVRhc2suaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkBAIC00Mjk3MSw2ICs0Mjk3OSwxOCBA
QAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxz
dG9yYWdlXFNRTFRyYW5zYWN0aW9uU3luYy5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJ
PEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdlXFNRTFRyYW5zYWN0aW9uU3luYy5o
Ig0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
c3RvcmFnZVxTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5oIg0KKwkJCQk+DQorCQkJPC9GaWxl
Pg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3RvcmFnZVxTdG9yYWdlLmNwcCIN
CiAJCQkJPg0KIAkJCTwvRmlsZT4NCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gNTgzNTQpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDE2NSw2ICs0MTY1LDExIEBA
CiAJCUI1MUJGNkYxMTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlvbkNsaWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjUxQkY2RUYxMDJD
OUU1OTAwMDJDMTVBIC8qIFNRTFRyYW5zYWN0aW9uQ2xpZW50LmggKi87IH07CiAJCUI1QTY4NDIy
MEZGQUJFOTgwMEQyNDY4OSAvKiBTUUxpdGVGaWxlU3lzdGVtLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNUE2ODQyMTBGRkFCRTk4MDBEMjQ2ODkgLyog
U1FMaXRlRmlsZVN5c3RlbS5oICovOyB9OwogCQlCNUE2ODQyNDBGRkFCRUFBMDBEMjQ2ODkgLyog
U1FMaXRlRmlsZVN5c3RlbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCNUE2ODQyMzBGRkFCRUFBMDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5c3RlbS5j
cHAgKi87IH07CisJCUI1MjNDRjA2MTE4MjY3NTQwMEVCQjI5QyAvKiBTUUxUcmFuc2FjdGlvblN5
bmNDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQjUyM0NFRkYxMTgyNjc1NDAwRUJCMjlDIC8qIFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNr
LmggKi87IH07CisJCUI1MjNDRjA4MTE4MjY3NTQwMEVCQjI5QyAvKiBTUUxUcmFuc2FjdGlvblN5
bmMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1MjND
RjAxMTE4MjY3NTQwMEVCQjI5QyAvKiBTUUxUcmFuc2FjdGlvblN5bmMuaCAqLzsgfTsKKwkJQjUy
M0NGMDkxMTgyNjc1NDAwRUJCMjlDIC8qIFNRTFRyYW5zYWN0aW9uU3luYy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNTIzQ0YwMjExODI2NzU0MDBF
QkIyOUMgLyogU1FMVHJhbnNhY3Rpb25TeW5jLmNwcCAqLzsgfTsKKwkJQjUyM0NGMEExMTgyNjc1
NDAwRUJCMjlDIC8qIERhdGFiYXNlU3luYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCNTIzQ0YwMzExODI2NzU0MDBFQkIyOUMgLyogRGF0YWJhc2VT
eW5jLmNwcCAqLzsgfTsKKwkJQjUyM0NGMEIxMTgyNjc1NDAwRUJCMjlDIC8qIERhdGFiYXNlU3lu
Yy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjUyM0NG
MDQxMTgyNjc1NDAwRUJCMjlDIC8qIERhdGFiYXNlU3luYy5oICovOyB9OwogCQlCNUMxMTIzQjEw
MkI2QzQ2MDAwOTY1NzggLyogU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNUMxMTIzOTEwMkI2QzQ2MDAw
OTY1NzggLyogU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAgKi87IH07CiAJCUI1QzExMjND
MTAyQjZDNDYwMDA5NjU3OCAvKiBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNUMxMTIzQTEwMkI2QzQ2MDAw
OTY1NzggLyogU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5oICovOyB9OwogCQlCNUQzNjAxQTEx
MkY4QjU2MDA0OERFQTggLyogRGF0YWJhc2VDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjVEMzYwMTkxMTJGOEI1NjAwNDhERUE4IC8qIERh
dGFiYXNlQ2FsbGJhY2suaCAqLzsgfTsKQEAgLTk1MTEsNiArOTUxNiwxMSBAQAogCQlCNTBGNUI4
MDBFOTZDRDk5MDBBRDcxQTYgLyogV2ViQ29yZU9iakNFeHRyYXMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb3JlT2JqQ0V4dHJhcy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjUxQkY2RUUxMDJDOUU1OTAwMDJDMTVBIC8qIFNRTFRyYW5z
YWN0aW9uQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNR
TFRyYW5zYWN0aW9uQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjUx
QkY2RUYxMDJDOUU1OTAwMDJDMTVBIC8qIFNRTFRyYW5zYWN0aW9uQ2xpZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNRTFRyYW5zYWN0aW9uQ2xpZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUI1MjNDRUZGMTE4MjY3NTQwMEVCQjI5QyAvKiBTUUxUcmFu
c2FjdGlvblN5bmNDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
UUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlCNTIzQ0YwMTExODI2NzU0MDBFQkIyOUMgLyogU1FMVHJhbnNhY3Rpb25TeW5jLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNRTFRyYW5zYWN0aW9uU3luYy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlCNTIzQ0YwMjExODI2NzU0MDBFQkIyOUMgLyogU1FMVHJh
bnNhY3Rpb25TeW5jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNR
TFRyYW5zYWN0aW9uU3luYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI1MjND
RjAzMTE4MjY3NTQwMEVCQjI5QyAvKiBEYXRhYmFzZVN5bmMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRGF0YWJhc2VTeW5jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQjUyM0NGMDQxMTgyNjc1NDAwRUJCMjlDIC8qIERhdGFiYXNlU3luYy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhYmFzZVN5bmMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjVBNjg0MjEwRkZBQkU5ODAwRDI0Njg5IC8qIFNRTGl0ZUZp
bGVTeXN0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU1FMaXRlRmlsZVN5
c3RlbS5oOyBwYXRoID0gc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQjVBNjg0MjMwRkZBQkVBQTAwRDI0Njg5IC8qIFNRTGl0ZUZpbGVTeXN0ZW0u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU1FMaXRlRmlsZVN5c3Rl
bS5jcHA7IHBhdGggPSBzcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUI1QzExMjM5MTAyQjZDNDYwMDA5NjU3OCAvKiBTUUxUcmFuc2FjdGlvbkNv
b3JkaW5hdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNRTFRy
YW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTA3NDIsNiArMTA3NTIsOCBAQAogCQkJCTUxQTQ1QjU0MENBRDdGRDcwMDBEMkJFOSAvKiBEYXRh
YmFzZUF1dGhvcml6ZXIuaCAqLywKIAkJCQlCNUQzNjAxOTExMkY4QjU2MDA0OERFQTggLyogRGF0
YWJhc2VDYWxsYmFjay5oICovLAogCQkJCTUxMTZEOTc1MENGMTc3QkQwMEMyQjg0RCAvKiBEYXRh
YmFzZURldGFpbHMuaCAqLywKKwkJCQlCNTIzQ0YwMzExODI2NzU0MDBFQkIyOUMgLyogRGF0YWJh
c2VTeW5jLmNwcCAqLywKKwkJCQlCNTIzQ0YwNDExODI2NzU0MDBFQkIyOUMgLyogRGF0YWJhc2VT
eW5jLmggKi8sCiAJCQkJNTE5NjExRTkwQ0FDNzQ5QzAwMTBBODBDIC8qIERhdGFiYXNlVGFzay5j
cHAgKi8sCiAJCQkJNTE5NjExRTgwQ0FDNzQ5QzAwMTBBODBDIC8qIERhdGFiYXNlVGFzay5oICov
LAogCQkJCTUxOTYxMTYxMENBQzU2NTcwMDEwQTgwQyAvKiBEYXRhYmFzZVRocmVhZC5jcHAgKi8s
CkBAIC0xMDc3OCw2ICsxMDc5MCw5IEBACiAJCQkJQjVDMTEyMzkxMDJCNkM0NjAwMDk2NTc4IC8q
IFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwICovLAogCQkJCUI1QzExMjNBMTAyQjZDNDYw
MDA5NjU3OCAvKiBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmggKi8sCiAJCQkJMUE3Q0NCMTgw
Q0Q5NDY5QTAwQjdCNjRFIC8qIFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5oICovLAorCQkJ
CUI1MjNDRUZGMTE4MjY3NTQwMEVCQjI5QyAvKiBTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5o
ICovLAorCQkJCUI1MjNDRjAxMTE4MjY3NTQwMEVCQjI5QyAvKiBTUUxUcmFuc2FjdGlvblN5bmMu
aCAqLywKKwkJCQlCNTIzQ0YwMjExODI2NzU0MDBFQkIyOUMgLyogU1FMVHJhbnNhY3Rpb25TeW5j
LmNwcCAqLywKIAkJCQk1MUUzRjlDNTBEQTA1OURDMDAyNTA5MTEgLyogU3RvcmFnZS5jcHAgKi8s
CiAJCQkJNTFFM0Y5QzQwREEwNTlEQzAwMjUwOTExIC8qIFN0b3JhZ2UuaCAqLywKIAkJCQk1MUUz
RjlEMTBEQTA1RDcxMDAyNTA5MTEgLyogU3RvcmFnZS5pZGwgKi8sCkBAIC0xODg5Nyw2ICsxODkx
Miw5IEBACiAJCQkJMzdGRDQyOTgxMTgzNjg0NjAwOTNDMDI5IC8qIFRyZWVEZXB0aExpbWl0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkYyODU5MTExODY0MDUzMDA3QjdDRDYgLyogUmVuZGVyTWF0
aE1MUm9vdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGMjg1OTMxMTg2NDA1NTAwN0I3Q0Q2IC8q
IFJlbmRlck1hdGhNTFNxdWFyZVJvb3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUI1MjNDRjA2MTE4
MjY3NTQwMEVCQjI5QyAvKiBTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQjUyM0NGMDgxMTgyNjc1NDAwRUJCMjlDIC8qIFNRTFRyYW5zYWN0aW9uU3luYy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQjUyM0NGMEIxMTgyNjc1NDAwRUJCMjlDIC8qIERhdGFiYXNl
U3luYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yMTEzNSw2ICsyMTE1Myw4IEBACiAJCQkJMkUzQkMx
MDkxMTdENDc5ODAwQjk0MDlBIC8qIERPTUZpbGVFcnJvci5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTBGRjI4NTkwMTE4NjQwNTIwMDdCN0NENiAvKiBSZW5kZXJNYXRoTUxSb290LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGRjI4NTkyMTE4NjQwNTQwMDdCN0NENiAvKiBSZW5kZXJNYXRoTUxTcXVh
cmVSb290LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUI1MjNDRjA5MTE4MjY3NTQwMEVCQjI5QyAv
KiBTUUxUcmFuc2FjdGlvblN5bmMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjUyM0NGMEExMTgy
Njc1NDAwRUJCMjlDIC8qIERhdGFiYXNlU3luYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdl
YkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9E
YXRhYmFzZS5oCShyZXZpc2lvbiA1ODM1NCkKKysrIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKIAogICAgIH5EYXRhYmFz
ZSgpOwogCi0vLyBEaXJlY3Qgc3VwcG9ydCBmb3IgdGhlIERPTSBBUEkKKyAgICAvLyBEaXJlY3Qg
c3VwcG9ydCBmb3IgdGhlIERPTSBBUEkKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxEYXRhYmFzZT4g
b3BlbkRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9u
ZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+IGNyZWF0aW9uQ2Fs
bGJhY2ssCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHRyYW5zYWN0aW9uKFBh
c3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4gY2FsbGJhY2ssIFBhc3NSZWZQdHI8U1FM
VHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLAogICAgICAgICAgICAgICAg
ICAgICAgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgYm9vbCByZWFk
T25seSk7CiAKLS8vIEludGVybmFsIGVuZ2luZSBzdXBwb3J0CisgICAgLy8gSW50ZXJuYWwgZW5n
aW5lIHN1cHBvcnQKICAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUluZm9UYWJsZU5h
bWUoKTsKIAogICAgIHZvaWQgZGlzYWJsZUF1dGhvcml6ZXIoKTsKQEAgLTEyMSw3ICsxMjEsNyBA
QCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIGRhdGFiYXNlU2l6ZSgpIGNvbnN0Owog
ICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBtYXhpbXVtU2l6ZSgpIGNvbnN0OwogCi0vLyBDYWxsZWQg
ZnJvbSBEYXRhYmFzZVRocmVhZCwgbXVzdCBiZSBwcmVwYXJlZCB0byB3b3JrIG9uIHRoZSBiYWNr
Z3JvdW5kIHRocmVhZAorICAgIC8vIENhbGxlZCBmcm9tIERhdGFiYXNlVGhyZWFkLCBtdXN0IGJl
IHByZXBhcmVkIHRvIHdvcmsgb24gdGhlIGJhY2tncm91bmQgdGhyZWFkCiAgICAgdm9pZCByZXNl
dEF1dGhvcml6ZXIoKTsKICAgICB2b2lkIHBlcmZvcm1Qb2xpY3lDaGVja3MoKTsKIApJbmRleDog
V2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlU3luYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dG9yYWdlL0RhdGFiYXNlU3luYy5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3N0b3JhZ2Uv
RGF0YWJhc2VTeW5jLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJ
bmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VTeW5jLmgiCisKKyNpZiBFTkFCTEUoREFU
QUJBU0UpCisjaW5jbHVkZSAiRGF0YWJhc2VDYWxsYmFjay5oIgorI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKKyNpbmNsdWRlICJTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5oIgorI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3QgU3RyaW5nJiBEYXRhYmFzZVN5bmM6OmRh
dGFiYXNlSW5mb1RhYmxlTmFtZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcs
IG5hbWUsICgiX19XZWJLaXREYXRhYmFzZUluZm9UYWJsZV9fIikpOworICAgIHJldHVybiBuYW1l
OworfQorCitzdGF0aWMgYm9vbCBpc1N5bmNEYXRhYmFzZUF2YWlsYWJsZSA9IHRydWU7CisKK3Zv
aWQgRGF0YWJhc2VTeW5jOjpzZXRJc0F2YWlsYWJsZShib29sIGF2YWlsYWJsZSkKK3sKKyAgICBp
c1N5bmNEYXRhYmFzZUF2YWlsYWJsZSA9IGF2YWlsYWJsZTsKK30KKworYm9vbCBEYXRhYmFzZVN5
bmM6OmlzQXZhaWxhYmxlKCkKK3sKKyAgICByZXR1cm4gaXNTeW5jRGF0YWJhc2VBdmFpbGFibGU7
Cit9CisKK1Bhc3NSZWZQdHI8RGF0YWJhc2VTeW5jPiBEYXRhYmFzZVN5bmM6Om9wZW5EYXRhYmFz
ZVN5bmMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZywgUGFzc1JlZlB0cjxEYXRh
YmFzZUNhbGxiYWNrPiwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgQVNTRVJUKGNvbnRleHQt
PmlzQ29udGV4dFRocmVhZCgpKTsKKworICAgIGVjID0gU0VDVVJJVFlfRVJSOworICAgIHJldHVy
biAwOworfQorCitEYXRhYmFzZVN5bmM6OkRhdGFiYXNlU3luYyhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRW
ZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBkaXNwbGF5
TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2Fs
bGJhY2s+IGNyZWF0aW9uQ2FsbGJhY2spCisgICAgOiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
Y29udGV4dCkKKyAgICAsIG1fbmFtZShuYW1lLmNyb3NzVGhyZWFkU3RyaW5nKCkpCisgICAgLCBt
X2V4cGVjdGVkVmVyc2lvbihleHBlY3RlZFZlcnNpb24uY3Jvc3NUaHJlYWRTdHJpbmcoKSkKKyAg
ICAsIG1fZGlzcGxheU5hbWUoZGlzcGxheU5hbWUuY3Jvc3NUaHJlYWRTdHJpbmcoKSkKKyAgICAs
IG1fZXN0aW1hdGVkU2l6ZShlc3RpbWF0ZWRTaXplKQorICAgICwgbV9jcmVhdGlvbkNhbGxiYWNr
KGNyZWF0aW9uQ2FsbGJhY2spCit7CisgICAgQVNTRVJUKGNvbnRleHQtPmlzQ29udGV4dFRocmVh
ZCgpKTsKK30KKworRGF0YWJhc2VTeW5jOjp+RGF0YWJhc2VTeW5jKCkKK3sKKyAgICBBU1NFUlQo
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSk7Cit9CisKK1N0cmlu
ZyBEYXRhYmFzZVN5bmM6OnZlcnNpb24oKSBjb25zdAoreworICAgIEFTU0VSVChtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7
Cit9CisKK3ZvaWQgRGF0YWJhc2VTeW5jOjpjaGFuZ2VWZXJzaW9uKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+KQorewor
ICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsK
K30KKwordm9pZCBEYXRhYmFzZVN5bmM6OnRyYW5zYWN0aW9uKFBhc3NSZWZQdHI8U1FMVHJhbnNh
Y3Rpb25TeW5jQ2FsbGJhY2s+LCBib29sKQoreworICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsKK30KKworU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogRGF0YWJhc2VTeW5jOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKK3sKKyAgICBB
U1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAg
cmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5nZXQoKTsKK30KKworI2VuZGlmIC8vIEVO
QUJMRShEQVRBQkFTRSkKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9z
dG9yYWdlL0RhdGFiYXNlU3luYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9EYXRh
YmFzZVN5bmMuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVN5bmMu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICog
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRGF0YWJhc2VTeW5jX2gK
KyNkZWZpbmUgRGF0YWJhc2VTeW5jX2gKKworI2lmIEVOQUJMRShEQVRBQkFTRSkKKyNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgRGF0YWJhc2VDYWxsYmFjazsKK2NsYXNzIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ7CitjbGFzcyBTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjazsKKwordHlwZWRl
ZiBpbnQgRXhjZXB0aW9uQ29kZTsKKworLy8gSW5zdGFuY2VzIG9mIHRoaXMgY2xhc3Mgc2hvdWxk
IGJlIGNyZWF0ZWQgYW5kIHVzZWQgb25seSBvbiB0aGUgd29ya2VyJ3MgY29udGV4dCB0aHJlYWQu
CitjbGFzcyBEYXRhYmFzZVN5bmMgOiBwdWJsaWMgUmVmQ291bnRlZDxEYXRhYmFzZVN5bmM+IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBzZXRJc0F2YWlsYWJsZShib29sKTsKKyAgICBzdGF0
aWMgYm9vbCBpc0F2YWlsYWJsZSgpOworCisgICAgfkRhdGFiYXNlU3luYygpOworCisgICAgLy8g
RGlyZWN0IHN1cHBvcnQgZm9yIHRoZSBET00gQVBJCisgICAgc3RhdGljIFBhc3NSZWZQdHI8RGF0
YWJhc2VTeW5jPiBvcGVuRGF0YWJhc2VTeW5jKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcm
IGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUsIFBhc3NSZWZQdHI8RGF0
YWJhc2VDYWxsYmFjaz4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBTdHJpbmcgdmVyc2lvbigpIGNv
bnN0OworICAgIHZvaWQgY2hhbmdlVmVyc2lvbihjb25zdCBTdHJpbmcmIG9sZFZlcnNpb24sIGNv
bnN0IFN0cmluZyYgbmV3VmVyc2lvbiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvblN5bmNDYWxs
YmFjaz4pOworICAgIHZvaWQgdHJhbnNhY3Rpb24oUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvblN5
bmNDYWxsYmFjaz4sIGJvb2wgcmVhZE9ubHkpOworCisgICAgLy8gSW50ZXJuYWwgZW5naW5lIHN1
cHBvcnQKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgY29uc3Q7CisKKyAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUluZm9UYWJsZU5h
bWUoKTsKKworcHJpdmF0ZToKKyAgICBEYXRhYmFzZVN5bmMoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sCisg
ICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcg
ZXN0aW1hdGVkU2l6ZSwgUGFzc1JlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPik7CisKKyAgICBSZWZQ
dHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OworICAg
IFN0cmluZyBtX25hbWU7CisgICAgU3RyaW5nIG1fZXhwZWN0ZWRWZXJzaW9uOworICAgIFN0cmlu
ZyBtX2Rpc3BsYXlOYW1lOworICAgIHVuc2lnbmVkIGxvbmcgbV9lc3RpbWF0ZWRTaXplOworICAg
IFJlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiBtX2NyZWF0aW9uQ2FsbGJhY2s7CisKKyNpZm5kZWYg
TkRFQlVHCisgICAgU3RyaW5nIGRhdGFiYXNlRGVidWdOYW1lKCkgY29uc3QgeyByZXR1cm4gU3Ry
aW5nKCk7IH0KKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKERBVEFCQVNFKQorCisjZW5kaWYgLy8gRGF0YWJhc2VTeW5jX2gKSW5kZXg6IFdl
YkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmMuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29y
ZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luYy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU1FMVHJhbnNhY3Rpb25TeW5j
LmgiCisKKyNpZiBFTkFCTEUoREFUQUJBU0UpCisKKyNpbmNsdWRlICJEYXRhYmFzZVN5bmMuaCIK
KyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIK
KyNpbmNsdWRlICJTUUxSZXN1bHRTZXQuaCIKKyNpbmNsdWRlICJTUUxUcmFuc2FjdGlvblN5bmND
YWxsYmFjay5oIgorI2luY2x1ZGUgIlNRTFZhbHVlLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8U1FMVHJhbnNh
Y3Rpb25TeW5jPiBTUUxUcmFuc2FjdGlvblN5bmM6OmNyZWF0ZShEYXRhYmFzZVN5bmMqIGRiLCBQ
YXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrPiBjYWxsYmFjaywgYm9vbCByZWFk
T25seSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNRTFRyYW5zYWN0aW9uU3luYyhkYiwg
Y2FsbGJhY2ssIHJlYWRPbmx5KSk7Cit9CisKK1NRTFRyYW5zYWN0aW9uU3luYzo6U1FMVHJhbnNh
Y3Rpb25TeW5jKERhdGFiYXNlU3luYyogZGIsIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5j
Q2FsbGJhY2s+IGNhbGxiYWNrLCBib29sIHJlYWRPbmx5KQorICAgIDogbV9kYXRhYmFzZShkYikK
KyAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2spCisgICAgLCBtX3JlYWRPbmx5KHJlYWRPbmx5KQor
eworICAgIEFTU0VSVChtX2RhdGFiYXNlLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzQ29u
dGV4dFRocmVhZCgpKTsKKyAgICBBU1NFUlQoY2FsbGJhY2spOworfQorCitTUUxUcmFuc2FjdGlv
blN5bmM6On5TUUxUcmFuc2FjdGlvblN5bmMoKQoreworICAgIEFTU0VSVChtX2RhdGFiYXNlLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzQ29udGV4dFRocmVhZCgpKTsKK30KKworUGFzc1Jl
ZlB0cjxTUUxSZXN1bHRTZXQ+IFNRTFRyYW5zYWN0aW9uU3luYzo6ZXhlY3V0ZVNRTChjb25zdCBT
dHJpbmcmLCBjb25zdCBWZWN0b3I8U1FMVmFsdWU+JiwgRXhjZXB0aW9uQ29kZSYpCit7CisgICAg
QVNTRVJUKG1fZGF0YWJhc2UtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNDb250ZXh0VGhy
ZWFkKCkpOworICAgIHJldHVybiAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoREFUQUJBU0UpCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNh
Y3Rpb25TeW5jLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9u
U3luYy5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3lu
Yy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikg
bm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpZm5kZWYgU1FMVHJhbnNhY3Rpb25T
eW5jX2gKKyNkZWZpbmUgU1FMVHJhbnNhY3Rpb25TeW5jX2gKKworI2lmIEVOQUJMRShEQVRBQkFT
RSkKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordHlw
ZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKKworY2xhc3MgRGF0YWJhc2VTeW5jOworY2xhc3MgU1FM
UmVzdWx0U2V0OworY2xhc3MgU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s7CitjbGFzcyBTUUxW
YWx1ZTsKK2NsYXNzIFN0cmluZzsKKworLy8gSW5zdGFuY2VzIG9mIHRoaXMgY2xhc3Mgc2hvdWxk
IGJlIGNyZWF0ZWQgYW5kIHVzZWQgb25seSBvbiB0aGUgd29ya2VyJ3MgY29udGV4dCB0aHJlYWQu
CitjbGFzcyBTUUxUcmFuc2FjdGlvblN5bmMgOiBwdWJsaWMgUmVmQ291bnRlZDxTUUxUcmFuc2Fj
dGlvblN5bmM+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlv
blN5bmM+IGNyZWF0ZShEYXRhYmFzZVN5bmMqLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uU3lu
Y0NhbGxiYWNrPiwgYm9vbCByZWFkT25seSA9IGZhbHNlKTsKKworICAgIH5TUUxUcmFuc2FjdGlv
blN5bmMoKTsKKworICAgIFBhc3NSZWZQdHI8U1FMUmVzdWx0U2V0PiBleGVjdXRlU1FMKGNvbnN0
IFN0cmluZyYgc3FsU3RhdGVtZW50LCBjb25zdCBWZWN0b3I8U1FMVmFsdWU+JiBhcmd1bWVudHMs
IEV4Y2VwdGlvbkNvZGUmKTsKKworICAgIERhdGFiYXNlU3luYyogZGF0YWJhc2UoKSB7IHJldHVy
biBtX2RhdGFiYXNlLmdldCgpOyB9CisgICAgYm9vbCBpc1JlYWRPbmx5KCkgY29uc3QgeyByZXR1
cm4gbV9yZWFkT25seTsgfQorCitwcml2YXRlOgorICAgIFNRTFRyYW5zYWN0aW9uU3luYyhEYXRh
YmFzZVN5bmMqLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrPiwgYm9vbCBy
ZWFkT25seSk7CisKKyAgICBSZWZQdHI8RGF0YWJhc2VTeW5jPiBtX2RhdGFiYXNlOworICAgIFJl
ZlB0cjxTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjaz4gbV9jYWxsYmFjazsKKyAgICBib29sIG1f
cmVhZE9ubHk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorCisjZW5k
aWYgLy8gU1FMVHJhbnNhY3Rpb25TeW5jX2gKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFu
c2FjdGlvblN5bmNDYWxsYmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TUUxU
cmFuc2FjdGlvblN5bmNDYWxsYmFjay5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9zdG9yYWdl
L1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqVHJh
bnNhY3Rpb24KKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5h
bWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAq
ICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2tfaAorI2Rl
ZmluZSBTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFja19oCisKKyNpZiBFTkFCTEUoREFUQUJBU0Up
CisKKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK2NsYXNzIFNRTFRyYW5zYWN0aW9uU3luYzsK
KworLy8gSW5zdGFuY2VzIG9mIHRoaXMgY2xhc3Mgc2hvdWxkIGJlIGNyZWF0ZWQgYW5kIHVzZWQg
b25seSBvbiB0aGUgd29ya2VyJ3MgY29udGV4dCB0aHJlYWQuCitjbGFzcyBTUUxUcmFuc2FjdGlv
blN5bmNDYWxsYmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPFNRTFRyYW5zYWN0aW9uU3luY0NhbGxi
YWNrPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2so
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFNRTFRyYW5zYWN0aW9uU3luYyosIGJvb2wmIHJhaXNlZEV4Y2VwdGlvbikgPSAwOworfTsK
KworfQorCisjZW5kaWYKKworI2VuZGlmIC8vIFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrX2gK
</data>
<flag name="review"
          id="38489"
          type_id="1"
          status="+"
          setter="jorlow"
    />
    <flag name="commit-queue"
          id="38490"
          type_id="3"
          status="-"
          setter="dumi"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54661</attachid>
            <date>2010-04-28 18:57:00 -0700</date>
            <delta_ts>2010-05-05 04:05:42 -0700</delta_ts>
            <desc>patch #2: IDL files + JSC bindings</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>60616</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1ODQ2MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTAgQEAKKzIwMTAtMDQtMjggIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRpbmcgdGhlIEpTQyBiaW5kaW5ncyBhbmQgSURMIGZpbGVzIGZvciB0aGUgc3luYyBXZWJT
UUxEYXRhYmFzZXMgQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzQ5OTQKKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLmNwcDoKKyAgICAgICAg
KiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAg
ICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnByaToKKyAgICAgICAgKiBXZWJD
b3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1
c3RvbVNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpKU0N1c3RvbVNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrOjpKU0N1c3RvbVNRTFRyYW5z
YWN0aW9uU3luY0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tU1FMVHJhbnNh
Y3Rpb25TeW5jQ2FsbGJhY2s6On5KU0N1c3RvbVNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s6Omhh
bmRsZUV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFRyYW5zYWN0aW9u
U3luY0NhbGxiYWNrLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21TUUxUcmFu
c2FjdGlvblN5bmNDYWxsYmFjazo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Rh
dGFiYXNlU3luY0N1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNEYXRhYmFz
ZVN5bmM6OmNoYW5nZVZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVHJhbnNhY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6SlNEYXRhYmFzZVN5bmM6OnRyYW5zYWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRGF0YWJhc2VTeW5jOjpyZWFkVHJhbnNhY3Rpb24pOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpKU1NRTFRyYW5zYWN0aW9uU3luYzo6ZXhlY3V0ZVNxbCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTV29ya2VyQ29udGV4dDo6b3BlbkRhdGFiYXNlU3luYyk6CisgICAgICAgICogc3Rv
cmFnZS9EYXRhYmFzZS5pZGw6CisgICAgICAgICogc3RvcmFnZS9EYXRhYmFzZVN5bmMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VTeW5jOjpjaGFuZ2VWZXJzaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFiYXNlU3luYzo6dHJhbnNhY3Rpb24pOgorICAgICAgICAqIHN0b3JhZ2Uv
RGF0YWJhc2VTeW5jLmg6CisgICAgICAgICogc3RvcmFnZS9EYXRhYmFzZVN5bmMuaWRsOiBBZGRl
ZC4KKyAgICAgICAgKiBzdG9yYWdlL1NRTEVycm9yLmlkbDoKKyAgICAgICAgKiBzdG9yYWdlL1NR
TFJlc3VsdFNldC5pZGw6CisgICAgICAgICogc3RvcmFnZS9TUUxSZXN1bHRTZXRSb3dMaXN0Lmlk
bDoKKyAgICAgICAgKiBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmlkbDoKKyAgICAgICAgKiBzdG9y
YWdlL1NRTFRyYW5zYWN0aW9uU3luYy5pZGw6IEFkZGVkLgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0OjpvcGVuRGF0
YWJhc2VTeW5jKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRleHQuaDoKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsOgorCiAyMDEwLTA0LTI4ICBNaWtlIFRob2xlICA8
bXRob2xlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJrIFJvd2UuCkluZGV4
OiBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLmNwcAkocmV2aXNpb24gNTg0NjEpCisrKyBXZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQsNyBAQAogI2luY2x1ZGUgIkpTQ1NTVmFy
aWFibGVzUnVsZS5jcHAiCiAjaW5jbHVkZSAiSlNDdXN0b21FdmVudC5jcHAiCiAjaW5jbHVkZSAi
SlNEYXRhYmFzZS5jcHAiCisjaW5jbHVkZSAiSlNEYXRhYmFzZVN5bmMuY3BwIgogI2luY2x1ZGUg
IkpTRGF0YUdyaWRDb2x1bW4uY3BwIgogI2luY2x1ZGUgIkpTRGF0YUdyaWRDb2x1bW5MaXN0LmNw
cCIKICNpbmNsdWRlICJKU0RlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwIgpAQCAtMjA1LDYgKzIw
Niw3IEBACiAjaW5jbHVkZSAiSlNTUUxSZXN1bHRTZXQuY3BwIgogI2luY2x1ZGUgIkpTU1FMUmVz
dWx0U2V0Um93TGlzdC5jcHAiCiAjaW5jbHVkZSAiSlNTUUxUcmFuc2FjdGlvbi5jcHAiCisjaW5j
bHVkZSAiSlNTUUxUcmFuc2FjdGlvblN5bmMuY3BwIgogI2luY2x1ZGUgIkpTU3RvcmFnZS5jcHAi
CiAjaW5jbHVkZSAiSlNTdG9yYWdlRXZlbnQuY3BwIgogI2luY2x1ZGUgIkpTU3R5bGVNZWRpYS5j
cHAiCkluZGV4OiBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiA1ODQ2MSkKKysrIFdlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTE1LDYgKzExNSw3IEBAIERPTV9D
TEFTU0VTID0gXAogICAgIERPTVNlbGVjdGlvbiBcCiAgICAgRE9NV2luZG93IFwKICAgICBEYXRh
YmFzZSBcCisgICAgRGF0YWJhc2VTeW5jIFwKICAgICBEb2N1bWVudCBcCiAgICAgRG9jdW1lbnRG
cmFnbWVudCBcCiAgICAgRG9jdW1lbnRUeXBlIFwKQEAgLTI0OSw2ICsyNTAsNyBAQCBET01fQ0xB
U1NFUyA9IFwKICAgICBTUUxSZXN1bHRTZXQgXAogICAgIFNRTFJlc3VsdFNldFJvd0xpc3QgXAog
ICAgIFNRTFRyYW5zYWN0aW9uIFwKKyAgICBTUUxUcmFuc2FjdGlvblN5bmMgXAogICAgIFN0b3Jh
Z2UgXAogICAgIFN0b3JhZ2VFdmVudCBcCiAgICAgU1ZHQUVsZW1lbnQgXApJbmRleDogV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShy
ZXZpc2lvbiA1ODQ2MSkKKysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkK
QEAgLTIzMDIsMTAgKzIzMDIsMTIgQEAgRkVBVFVSRV9ERUZJTkVTICs9IEVOQUJMRV9EQVRBQkFT
RT0xCiAKIElETF9CSU5ESU5HUyArPSBcCiAJV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmlkbCBc
CisJV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlU3luYy5pZGwgXAogCVdlYkNvcmUvc3RvcmFnZS9T
UUxFcnJvci5pZGwgXAogCVdlYkNvcmUvc3RvcmFnZS9TUUxSZXN1bHRTZXQuaWRsIFwKIAlXZWJD
b3JlL3N0b3JhZ2UvU1FMUmVzdWx0U2V0Um93TGlzdC5pZGwgXAotCVdlYkNvcmUvc3RvcmFnZS9T
UUxUcmFuc2FjdGlvbi5pZGwKKwlXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uaWRsIFwK
KwlXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5jby5pZGwKIAogd2ViY29yZV9jcHBm
bGFncyArPSBcCiAJLURFTkFCTEVfREFUQUJBU0U9MQpAQCAtMjMxOSwxMSArMjMyMSwxNSBAQCB3
ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21TUUxUcmFu
c2FjdGlvbkNhbGxiYWNrLmggXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21TUUxUcmFu
c2FjdGlvbkVycm9yQ2FsbGJhY2suY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9t
U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmggXAorCVdlYkNvcmUvYmluZGluZ3MvanMvSlND
dXN0b21TUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5jcHAgXAorCVdlYkNvcmUvYmluZGluZ3Mv
anMvSlNDdXN0b21TUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5oIFwKIAlXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRGF0YWJhc2VDYWxsYmFjay5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNE
YXRhYmFzZUNhbGxiYWNrLmggXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhYmFzZUN1c3Rv
bS5jcHAgXAorCVdlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhYmFzZUN1c3RvbVN5bmMuY3BwIFwK
IAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAgXAog
CVdlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAgXAorCVdlYkNv
cmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwIFwKIAlXZWJDb3Jl
L3BsYXRmb3JtL3NxbC9TUUxWYWx1ZS5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTFZh
bHVlLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUF1dGhvcml6ZXIuY3BwIFwKSW5k
ZXg6IFdlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5n
eXBpCShyZXZpc2lvbiA1ODQ2MSkKKysrIFdlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNv
cHkpCkBAIC0yMTgsNiArMjE4LDcgQEAKICAgICAgICAgICAgICdwbHVnaW5zL1BsdWdpbi5pZGwn
LAogICAgICAgICAgICAgJ3BsdWdpbnMvUGx1Z2luQXJyYXkuaWRsJywKICAgICAgICAgICAgICdz
dG9yYWdlL0RhdGFiYXNlLmlkbCcsCisgICAgICAgICAgICAnc3RvcmFnZS9EYXRhYmFzZVN5bmMu
aWRsJywKICAgICAgICAgICAgICdzdG9yYWdlL0lEQkRhdGFiYXNlRXJyb3IuaWRsJywKICAgICAg
ICAgICAgICdzdG9yYWdlL0lEQkRhdGFiYXNlRXhjZXB0aW9uLmlkbCcsCiAgICAgICAgICAgICAn
c3RvcmFnZS9JREJEYXRhYmFzZVJlcXVlc3QuaWRsJywKQEAgLTIyNiw2ICsyMjcsNyBAQAogICAg
ICAgICAgICAgJ3N0b3JhZ2UvU1FMUmVzdWx0U2V0LmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFn
ZS9TUUxSZXN1bHRTZXRSb3dMaXN0LmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9TUUxUcmFu
c2FjdGlvbi5pZGwnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5jLmlk
bCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9TdG9yYWdlLmlkbCcsCiAgICAgICAgICAgICAnc3Rv
cmFnZS9TdG9yYWdlRXZlbnQuaWRsJywKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tl
dC5pZGwnLApAQCAtNTA0LDExICs1MDYsMTQgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9K
U0N1c3RvbVNRTFRyYW5zYWN0aW9uQ2FsbGJhY2suaCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
anMvSlNDdXN0b21TUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suY3BwJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5oJywKKyAg
ICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNr
LmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNDdXN0b21TUUxUcmFuc2FjdGlvblN5
bmNDYWxsYmFjay5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0N1c3RvbVZvaWRDYWxs
YmFjay5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTQ3VzdG9tVm9pZENhbGxiYWNr
LmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNw
cCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNEYXRhYmFzZUN1c3RvbS5jcHAnLAorICAgICAg
ICAgICAgJ2JpbmRpbmdzL2pzL0pTRGF0YWJhc2VTeW5jQ3VzdG9tLmNwcCcsCiAgICAgICAgICAg
ICAnYmluZGluZ3MvanMvSlNEYXRhR3JpZENvbHVtbkxpc3RDdXN0b20uY3BwJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy9qcy9KU0RhdGFHcmlkRGF0YVNvdXJjZS5jcHAnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL2pzL0pTRGF0YUdyaWREYXRhU291cmNlLmgnLApAQCAtNjAzLDYgKzYwOCw3IEBA
CiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNTY3JpcHRQcm9maWxlTm9kZUN1c3RvbS5jcHAn
LAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5j
cHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3Bw
JywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1NRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5j
cHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5oJywKICAgICAgICAgICAgICdi
aW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0b20uY3BwJywKSW5kZXg6IFdlYkNvcmUvV2ViQ29y
ZS5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnByaQkocmV2aXNpb24gNTg0NjEp
CisrKyBXZWJDb3JlL1dlYkNvcmUucHJpCSh3b3JraW5nIGNvcHkpCkBAIC00MzIsMTIgKzQzMiwx
NCBAQCBJRExfQklORElOR1MgKz0gXAogICAgIHBsdWdpbnMvUGx1Z2luQXJyYXkuaWRsIFwKICAg
ICBwbHVnaW5zL01pbWVUeXBlQXJyYXkuaWRsIFwKICAgICBzdG9yYWdlL0RhdGFiYXNlLmlkbCBc
CisgICAgc3RvcmFnZS9EYXRhYmFzZVN5bmMuaWRsIFwKICAgICBzdG9yYWdlL1N0b3JhZ2UuaWRs
IFwKICAgICBzdG9yYWdlL1N0b3JhZ2VFdmVudC5pZGwgXAogICAgIHN0b3JhZ2UvU1FMRXJyb3Iu
aWRsIFwKICAgICBzdG9yYWdlL1NRTFJlc3VsdFNldC5pZGwgXAogICAgIHN0b3JhZ2UvU1FMUmVz
dWx0U2V0Um93TGlzdC5pZGwgXAogICAgIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uaWRsIFwKKyAg
ICBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luYy5pZGwgXAogICAgIHN2Zy9TVkdab29tRXZlbnQu
aWRsIFwKICAgICBzdmcvU1ZHQUVsZW1lbnQuaWRsIFwKICAgICBzdmcvU1ZHQWx0R2x5cGhFbGVt
ZW50LmlkbCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDU4NDYxKQorKysgV2ViQ29yZS9XZWJDb3JlLnBybwko
d29ya2luZyBjb3B5KQpAQCAtMTAyOSw2ICsxMDI5LDcgQEAgSEVBREVSUyArPSBcCiAgICAgYmlu
ZGluZ3MvanMvSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmggXAogICAgIGJpbmRp
bmdzL2pzL0pTQ3VzdG9tU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5oIFwKICAgICBiaW5kaW5ncy9q
cy9KU0N1c3RvbVNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5oIFwKKyAgICBiaW5kaW5ncy9q
cy9KU0N1c3RvbVNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmggXAogICAgIGJpbmRpbmdzL2pz
L0pTQ3VzdG9tVm9pZENhbGxiYWNrLmggXAogICAgIGJpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhO
U1Jlc29sdmVyLmggXAogICAgIGJpbmRpbmdzL2pzL0pTRGF0YWJhc2VDYWxsYmFjay5oIFwKQEAg
LTIyODYsMTAgKzIyODcsMTMgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0RBVEFCQVNFPTEp
IHsKICAgICAgICAgYmluZGluZ3MvanMvSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNr
LmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMVHJhbnNhY3Rpb25DYWxsYmFj
ay5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFRyYW5zYWN0aW9uRXJyb3JD
YWxsYmFjay5jcHAgXAorICAgICAgICBiaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFRyYW5zYWN0aW9u
U3luY0NhbGxiYWNrLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTRGF0YWJhc2VDYWxsYmFj
ay5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU0RhdGFiYXNlQ3VzdG9tLmNwcCBcCisgICAg
ICAgIGJpbmRpbmdzL2pzL0pTRGF0YWJhc2VTeW5jQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRp
bmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAgXAotICAgICAgICBiaW5kaW5n
cy9qcy9KU1NRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcAorICAgICAgICBiaW5kaW5ncy9qcy9KU1NR
TFRyYW5zYWN0aW9uQ3VzdG9tLmNwcCBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pTU1FMVHJhbnNh
Y3Rpb25TeW5jQ3VzdG9tLmNwcAogfQogCiBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfRE9NX1NU
T1JBR0U9MSkgewpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZp
c2lvbiA1ODQ2MSkKKysrIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdv
cmtpbmcgY29weSkKQEAgLTI1MTMsNiArMjUxMyw2MiBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQog
CQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJv
amVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRGF0YWJhc2VTeW5jLmNwcCINCisJCQkJPg0KKwkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9
IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0K
KwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWdfSW50ZXJuYWx8
V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxU
b29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVi
dWdfQ2Fpcm98V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4N
CisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQor
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJ
TmFtZT0iUmVsZWFzZV9DYWlyb3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVl
Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0K
KwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0
aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0K
KwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFBy
b2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0RhdGFiYXNlU3luYy5oIg0KKwkJCQk+DQorCQkJ
PC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIp
XG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0RhdGFHcmlkQ29sdW1uLmNwcCIN
CiAJCQkJPg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCkBAIC0xMDI3OCw2ICsxMDMzNCw2MiBA
QAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdl
YktpdE91dHB1dERpcilcb2JqXFdlYkNvcmVcRGVyaXZlZFNvdXJjZXNcSlNTUUxUcmFuc2FjdGlv
blN5bmMuY3BwIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0i
RGVidWd8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJ
CQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFt
ZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJ
Pg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4N
CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJ
CQlOYW1lPSJEZWJ1Z19JbnRlcm5hbHxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
Ig0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1
cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZp
bGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMyIg0KKwkJCQkJ
RXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
Pg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIN
CisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJ
CQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdl
YktpdE91dHB1dERpcilcb2JqXFdlYkNvcmVcRGVyaXZlZFNvdXJjZXNcSlNTUUxUcmFuc2FjdGlv
blN5bmMuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBh
dGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNc
SlNTdG9yYWdlLmNwcCINCiAJCQkJPg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCkBAIC0zNTY4
Nyw2ICszNTc5OSw2MiBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCisJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNDdXN0b21TUUxUcmFuc2FjdGlvblN5bmND
YWxsYmFjay5jcHAiDQorCQkJCQk+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlO
YW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJ
CQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJ
CQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlv
bg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8Rmls
ZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z19JbnRlcm5hbHxXaW4zMiINCisJCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnX0Nh
aXJvfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJ
CQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQor
CQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJ
CQkJTmFtZT0iUmVsZWFzZV9DYWlyb3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0i
dHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxl
Q29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiINCisJCQkJCQlFeGNs
dWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5k
aW5nc1xqc1xKU0N1c3RvbVNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmgiDQorCQkJCQk+DQor
CQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3Nc
anNcSlNDdXN0b21Wb2lkQ2FsbGJhY2suY3BwIg0KIAkJCQkJPg0KIAkJCQkJPEZpbGVDb25maWd1
cmF0aW9uDQpAQCAtMzU4NTksNiArMzYwMjcsNTggQEAKIAkJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5k
aW5nc1xqc1xKU0RhdGFiYXNlU3luY0N1c3RvbS5jcHAiDQorCQkJCQk+DQorCQkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkND
TENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJ
CQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z19J
bnRlcm5hbHxXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+
DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkv
Pg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0K
KwkJCQkJCU5hbWU9IkRlYnVnX0NhaXJvfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZp
bGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb3xXaW4zMiINCisJCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnX0Fs
bHxXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJ
CQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0RhdGFHcmlkQ29sdW1uTGlzdEN1c3RvbS5j
cHAiDQogCQkJCQk+DQogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCkBAIC0zOTEzOSw2ICszOTM1
OSw1OCBAQAogCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxG
aWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTU1FMVHJhbnNhY3Rpb25T
eW5jQ3VzdG9tLmNwcCINCisJCQkJCT4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJ
CU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJ
CQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJ
CQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0
aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxG
aWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnX0ludGVybmFsfFdpbjMyIg0KKwkJ
CQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJ
CQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWdf
Q2Fpcm98V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0K
KwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4N
CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJ
CQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZp
bGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIg0KKwkJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJp
bmRpbmdzXGpzXEpTU3RvcmFnZUN1c3RvbS5jcHAiDQogCQkJCQk+DQogCQkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24NCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gNTg0NjEpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDE2Nyw2ICs0MTY3LDE5IEBACiAJCUI1MjNDRjA5
MTE4MjY3NTQwMEVCQjI5QyAvKiBTUUxUcmFuc2FjdGlvblN5bmMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjUyM0NGMDIxMTgyNjc1NDAwRUJCMjlD
IC8qIFNRTFRyYW5zYWN0aW9uU3luYy5jcHAgKi87IH07CiAJCUI1MjNDRjBBMTE4MjY3NTQwMEVC
QjI5QyAvKiBEYXRhYmFzZVN5bmMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQjUyM0NGMDMxMTgyNjc1NDAwRUJCMjlDIC8qIERhdGFiYXNlU3luYy5j
cHAgKi87IH07CiAJCUI1MjNDRjBCMTE4MjY3NTQwMEVCQjI5QyAvKiBEYXRhYmFzZVN5bmMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1MjNDRjA0MTE4
MjY3NTQwMEVCQjI5QyAvKiBEYXRhYmFzZVN5bmMuaCAqLzsgfTsKKwkJQjUyM0NGMTExMTgyNjdE
MjAwRUJCMjlDIC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1MjNDRjBEMTE4MjY3RDIwMEVCQjI5
QyAvKiBKU1NRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHAgKi87IH07CisJCUI1MjNDRjEyMTE4
MjY3RDIwMEVCQjI5QyAvKiBKU0RhdGFiYXNlU3luY0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNTIzQ0YwRTExODI2N0QyMDBFQkIyOUMg
LyogSlNEYXRhYmFzZVN5bmNDdXN0b20uY3BwICovOyB9OworCQlCNTIzQ0YxMzExODI2N0QyMDBF
QkIyOUMgLyogSlNDdXN0b21TUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjUyM0NGMEYxMTgyNjdEMjAwRUJC
MjlDIC8qIEpTQ3VzdG9tU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaCAqLzsgfTsKKwkJQjUy
M0NGMTQxMTgyNjdEMjAwRUJCMjlDIC8qIEpTQ3VzdG9tU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJh
Y2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjUy
M0NGMTAxMTgyNjdEMjAwRUJCMjlDIC8qIEpTQ3VzdG9tU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJh
Y2suY3BwICovOyB9OworCQlCNUE2ODQyMjBGRkFCRTk4MDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5
c3RlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjVB
Njg0MjEwRkZBQkU5ODAwRDI0Njg5IC8qIFNRTGl0ZUZpbGVTeXN0ZW0uaCAqLzsgfTsKKwkJQjVB
Njg0MjQwRkZBQkVBQTAwRDI0Njg5IC8qIFNRTGl0ZUZpbGVTeXN0ZW0uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjVBNjg0MjMwRkZBQkVBQTAwRDI0
Njg5IC8qIFNRTGl0ZUZpbGVTeXN0ZW0uY3BwICovOyB9OworCQlCNUJFMERFMzExODI3Q0ZGMDA4
OTlEMEIgLyogSlNTUUxUcmFuc2FjdGlvblN5bmMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1QkUwREUxMTE4MjdDRkYwMDg5OUQwQiAvKiBKU1NRTFRy
YW5zYWN0aW9uU3luYy5oICovOyB9OworCQlCNUJFMERFNDExODI3Q0ZGMDA4OTlEMEIgLyogSlNT
UUxUcmFuc2FjdGlvblN5bmMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjVCRTBERTIxMTgyN0NGRjAwODk5RDBCIC8qIEpTU1FMVHJhbnNhY3Rpb25T
eW5jLmNwcCAqLzsgfTsKKwkJQjUyM0NGMDYxMTgyNjc1NDAwRUJCMjlDIC8qIFNRTFRyYW5zYWN0
aW9uU3luY0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCNTIzQ0VGRjExODI2NzU0MDBFQkIyOUMgLyogU1FMVHJhbnNhY3Rpb25TeW5jQ2Fs
bGJhY2suaCAqLzsgfTsKKwkJQjUyM0NGMDgxMTgyNjc1NDAwRUJCMjlDIC8qIFNRTFRyYW5zYWN0
aW9uU3luYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjUyM0NGMDExMTgyNjc1NDAwRUJCMjlDIC8qIFNRTFRyYW5zYWN0aW9uU3luYy5oICovOyB9Owor
CQlCNTIzQ0YwOTExODI2NzU0MDBFQkIyOUMgLyogU1FMVHJhbnNhY3Rpb25TeW5jLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1MjNDRjAyMTE4MjY3
NTQwMEVCQjI5QyAvKiBTUUxUcmFuc2FjdGlvblN5bmMuY3BwICovOyB9OworCQlCNTIzQ0YwQTEx
ODI2NzU0MDBFQkIyOUMgLyogRGF0YWJhc2VTeW5jLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1MjNDRjAzMTE4MjY3NTQwMEVCQjI5QyAvKiBEYXRh
YmFzZVN5bmMuY3BwICovOyB9OworCQlCNTIzQ0YwQjExODI2NzU0MDBFQkIyOUMgLyogRGF0YWJh
c2VTeW5jLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
NTIzQ0YwNDExODI2NzU0MDBFQkIyOUMgLyogRGF0YWJhc2VTeW5jLmggKi87IH07CiAJCUI1QTY4
NDIyMEZGQUJFOTgwMEQyNDY4OSAvKiBTUUxpdGVGaWxlU3lzdGVtLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNUE2ODQyMTBGRkFCRTk4MDBEMjQ2ODkg
LyogU1FMaXRlRmlsZVN5c3RlbS5oICovOyB9OwogCQlCNUE2ODQyNDBGRkFCRUFBMDBEMjQ2ODkg
LyogU1FMaXRlRmlsZVN5c3RlbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCNUE2ODQyMzBGRkFCRUFBMDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5c3Rl
bS5jcHAgKi87IH07CiAJCUI1QzExMjNCMTAyQjZDNDYwMDA5NjU3OCAvKiBTUUxUcmFuc2FjdGlv
bkNvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEI1QzExMjM5MTAyQjZDNDYwMDA5NjU3OCAvKiBTUUxUcmFuc2FjdGlvbkNvb3JkaW5h
dG9yLmNwcCAqLzsgfTsKQEAgLTQxNzQsNiArNDE4Nyw4IEBACiAJCUI1RDM2MDFBMTEyRjhCNTYw
MDQ4REVBOCAvKiBEYXRhYmFzZUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCNUQzNjAxOTExMkY4QjU2MDA0OERFQTggLyogRGF0YWJhc2VD
YWxsYmFjay5oICovOyB9OwogCQlCNUQzNjAxRDExMkY4QkEwMDA0OERFQTggLyogSlNEYXRhYmFz
ZUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCNUQzNjAxQzExMkY4QkEwMDA0OERFQTggLyogSlNEYXRhYmFzZUNhbGxiYWNrLmggKi87IH07
CiAJCUI1RDM2MDFGMTEyRjhCQTgwMDQ4REVBOCAvKiBKU0RhdGFiYXNlQ2FsbGJhY2suY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjVEMzYwMUUxMTJG
OEJBODAwNDhERUE4IC8qIEpTRGF0YWJhc2VDYWxsYmFjay5jcHAgKi87IH07CisJCUI1Rjk5NkZC
MTE4MjdDNDQwMDJBNUQ3NiAvKiBKU0RhdGFiYXNlU3luYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjVGOTk2RjkxMTgyN0M0NDAwMkE1RDc2IC8qIEpT
RGF0YWJhc2VTeW5jLmggKi87IH07CisJCUI1Rjk5NkZDMTE4MjdDNDQwMDJBNUQ3NiAvKiBKU0Rh
dGFiYXNlU3luYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCNUY5OTZGQTExODI3QzQ0MDAyQTVENzYgLyogSlNEYXRhYmFzZVN5bmMuY3BwICovOyB9
OwogCQlCNzFGRTZERjExMDkxQ0IzMDBEQUVGNzcgLyogUHJpbnRDb250ZXh0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNzc2RDQzQTExMDQ1MjVEMDBC
RUIwRUMgLyogUHJpbnRDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQjc3NkQ0M0QxMTA0NTI3NTAwQkVCMEVDIC8qIFByaW50Q29udGV4
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNzc2
RDQzQzExMDQ1Mjc1MDBCRUIwRUMgLyogUHJpbnRDb250ZXh0LmNwcCAqLzsgfTsKIAkJQkMwMEYw
MDQwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDBFRkZFMEUwQTE4NTUwMEZEMDRFMyAvKiBET01GaWxl
LmggKi87IH07CkBAIC05NTE0LDE3ICs5NTI5LDI4IEBACiAJCUI1MUJGNkVFMTAyQzlFNTkwMDAy
QzE1QSAvKiBTUUxUcmFuc2FjdGlvbkNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTUUxUcmFuc2FjdGlvbkNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUI1MUJGNkVGMTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlvbkNs
aWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTUUxUcmFuc2FjdGlvbkNs
aWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNTIzQ0VGRjExODI2NzU0MDBF
QkIyOUMgLyogU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQjUyM0NGMDAxMTgyNjc1NDAwRUJCMjlDIC8qIFNRTFRyYW5zYWN0
aW9uU3luYy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1FMVHJhbnNhY3Rpb25TeW5jLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjUyM0NGMDExMTgyNjc1NDAwRUJCMjlD
IC8qIFNRTFRyYW5zYWN0aW9uU3luYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTUUxUcmFuc2FjdGlvblN5bmMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjUy
M0NGMDIxMTgyNjc1NDAwRUJCMjlDIC8qIFNRTFRyYW5zYWN0aW9uU3luYy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTUUxUcmFuc2FjdGlvblN5bmMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNTIzQ0YwMzExODI2NzU0MDBFQkIyOUMgLyogRGF0
YWJhc2VTeW5jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGFi
YXNlU3luYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI1MjNDRjA0MTE4MjY3
NTQwMEVCQjI5QyAvKiBEYXRhYmFzZVN5bmMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRGF0YWJhc2VTeW5jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI1MjND
RjA1MTE4MjY3NTQwMEVCQjI5QyAvKiBEYXRhYmFzZVN5bmMuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IERhdGFiYXNlU3luYy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI1
MjNDRjBEMTE4MjY3RDIwMEVCQjI5QyAvKiBKU1NRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NRTFRyYW5zYWN0aW9uU3lu
Y0N1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI1MjNDRjBFMTE4MjY3
RDIwMEVCQjI5QyAvKiBKU0RhdGFiYXNlU3luY0N1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0RhdGFiYXNlU3luY0N1c3RvbS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUI1MjNDRjBGMTE4MjY3RDIwMEVCQjI5QyAvKiBKU0N1c3RvbVNR
TFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTQ3VzdG9tU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQjUyM0NGMTAxMTgyNjdEMjAwRUJCMjlDIC8qIEpTQ3VzdG9tU1FMVHJh
bnNhY3Rpb25TeW5jQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNDdXN0b21TUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUI1QTY4NDIxMEZGQUJFOTgwMEQyNDY4OSAvKiBTUUxpdGVGaWxl
U3lzdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNRTGl0ZUZpbGVTeXN0
ZW0uaDsgcGF0aCA9IHNxbC9TUUxpdGVGaWxlU3lzdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUI1QTY4NDIzMEZGQUJFQUEwMEQyNDY4OSAvKiBTUUxpdGVGaWxlU3lzdGVtLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNRTGl0ZUZpbGVTeXN0ZW0u
Y3BwOyBwYXRoID0gc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlCNUJFMERFMTExODI3Q0ZGMDA4OTlEMEIgLyogSlNTUUxUcmFuc2FjdGlvblN5
bmMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTUUxUcmFuc2FjdGlvblN5
bmMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjVCRTBERTIxMTgyN0NGRjAwODk5
RDBCIC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTU1FMVHJhbnNhY3Rpb25TeW5jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQjVDMTEyMzkxMDJCNkM0NjAwMDk2NTc4IC8qIFNRTFRyYW5zYWN0aW9uQ29v
cmRpbmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1FMVHJh
bnNhY3Rpb25Db29yZGluYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI1
QzExMjNBMTAyQjZDNDYwMDA5NjU3OCAvKiBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjVEMzYwMTkxMTJGOEI1NjAwNDhERUE4
IC8qIERhdGFiYXNlQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RGF0YWJhc2VDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNUQzNjAx
QzExMkY4QkEwMDA0OERFQTggLyogSlNEYXRhYmFzZUNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTRGF0YWJhc2VDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCNUQzNjAxRTExMkY4QkE4MDA0OERFQTggLyogSlNEYXRhYmFzZUNhbGxi
YWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRGF0YWJhc2VD
YWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI1Rjk5NkY2MTE4MjdC
RkUwMDJBNUQ3NiAvKiBKU0RhdGFiYXNlU3luYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0RhdGFiYXNlU3luYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlC
NUY5OTZGOTExODI3QzQ0MDAyQTVENzYgLyogSlNEYXRhYmFzZVN5bmMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEYXRhYmFzZVN5bmMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQjVGOTk2RkExMTgyN0M0NDAwMkE1RDc2IC8qIEpTRGF0YWJhc2VTeW5jLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRGF0YWJhc2VTeW5jLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjc3NkQ0M0ExMTA0NTI1RDAwQkVCMEVD
IC8qIFByaW50Q29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcmlu
dENvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjc3NkQ0M0MxMTA0NTI3
NTAwQkVCMEVDIC8qIFByaW50Q29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBQcmludENvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQzAwRUZGRTBFMEExODU1MDBGRDA0RTMgLyogRE9NRmlsZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBET01GaWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xMDczOCw2ICsxMDc2NCwxMyBAQAogCQkxQUU4MkVDOTBDQUFFMTc3MDAyMjM3QUUgLyogc3Rv
cmFnZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQjUy
M0NFRkYxMTgyNjc1NDAwRUJCMjlDIC8qIFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmggKi8s
CisJCQkJQjUyM0NGMDAxMTgyNjc1NDAwRUJCMjlDIC8qIFNRTFRyYW5zYWN0aW9uU3luYy5pZGwg
Ki8sCisJCQkJQjUyM0NGMDExMTgyNjc1NDAwRUJCMjlDIC8qIFNRTFRyYW5zYWN0aW9uU3luYy5o
ICovLAorCQkJCUI1MjNDRjAyMTE4MjY3NTQwMEVCQjI5QyAvKiBTUUxUcmFuc2FjdGlvblN5bmMu
Y3BwICovLAorCQkJCUI1MjNDRjAzMTE4MjY3NTQwMEVCQjI5QyAvKiBEYXRhYmFzZVN5bmMuY3Bw
ICovLAorCQkJCUI1MjNDRjA0MTE4MjY3NTQwMEVCQjI5QyAvKiBEYXRhYmFzZVN5bmMuaCAqLywK
KwkJCQlCNTIzQ0YwNTExODI2NzU0MDBFQkIyOUMgLyogRGF0YWJhc2VTeW5jLmlkbCAqLywKIAkJ
CQk1MTQxODVFRDBDRDY1RjA0MDA3NjNDOTkgLyogQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3BwICov
LAogCQkJCTUxNDE4NUVDMENENjVGMDQwMDc2M0M5OSAvKiBDaGFuZ2VWZXJzaW9uV3JhcHBlci5o
ICovLAogCQkJCTUxOTYxMTVFMENBQzU2NTcwMDEwQTgwQyAvKiBEYXRhYmFzZS5jcHAgKi8sCkBA
IC0xMTUxMiw2ICsxMTU0NSwxMSBAQAogCQkJCUUxNUEzNkQ2MTEwNDU3MjAwMEI3QjYzOSAvKiBY
TUxOU05hbWVzLmggKi8sCiAJCQkJMUE3NjI5RDMwQTA3NDI1MTAwOTg5RjVCIC8qIFhQYXRoR3Jh
bW1hci5jcHAgKi8sCiAJCQkJMUE3NjI5RDQwQTA3NDI1MTAwOTg5RjVCIC8qIFhQYXRoR3JhbW1h
ci5oICovLAorCQkJCUI1Rjk5NkY2MTE4MjdCRkUwMDJBNUQ3NiAvKiBKU0RhdGFiYXNlU3luYy5o
ICovLAorCQkJCUI1Rjk5NkY5MTE4MjdDNDQwMDJBNUQ3NiAvKiBKU0RhdGFiYXNlU3luYy5oICov
LAorCQkJCUI1Rjk5NkZBMTE4MjdDNDQwMDJBNUQ3NiAvKiBKU0RhdGFiYXNlU3luYy5jcHAgKi8s
CisJCQkJQjVCRTBERTExMTgyN0NGRjAwODk5RDBCIC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5jLmgg
Ki8sCisJCQkJQjVCRTBERTIxMTgyN0NGRjAwODk5RDBCIC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5j
LmNwcCAqLywKIAkJCSk7CiAJCQluYW1lID0gIkRlcml2ZWQgU291cmNlcyI7CiAJCQlwYXRoID0g
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZTsKQEAgLTE0ODY5LDYgKzE0OTA3LDEwIEBACiAJCUJDMUEz
NzkzMDk3QzZGQjEwMDE5RjNEOCAvKiBqcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJQjUyM0NGMEQxMTgyNjdEMjAwRUJCMjlDIC8qIEpTU1FMVHJhbnNh
Y3Rpb25TeW5jQ3VzdG9tLmNwcCAqLywKKwkJCQlCNTIzQ0YwRTExODI2N0QyMDBFQkIyOUMgLyog
SlNEYXRhYmFzZVN5bmNDdXN0b20uY3BwICovLAorCQkJCUI1MjNDRjBGMTE4MjY3RDIwMEVCQjI5
QyAvKiBKU0N1c3RvbVNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmggKi8sCisJCQkJQjUyM0NG
MTAxMTgyNjdEMjAwRUJCMjlDIC8qIEpTQ3VzdG9tU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2su
Y3BwICovLAogCQkJCUJDQ0U1OEE3MTA2MUU4MkYwMDhGQjM1QSAvKiBDYWxsYmFjayBPYmplY3Rz
ICovLAogCQkJCUJDQ0U1OEI0MTA2MUU5MjUwMDhGQjM1QSAvKiBDb25zdHJ1Y3RvcnMgKi8sCiAJ
CQkJQkM0RURFRjcwQzA4RjQxNDAwN0VERDQ5IC8qIEN1c3RvbSAqLywKQEAgLTE4OTA4LDYgKzE4
OTUwLDkgQEAKIAkJCQlCNTIzQ0YwNjExODI2NzU0MDBFQkIyOUMgLyogU1FMVHJhbnNhY3Rpb25T
eW5jQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUI1MjNDRjA4MTE4MjY3NTQwMEVCQjI5
QyAvKiBTUUxUcmFuc2FjdGlvblN5bmMuaCBpbiBIZWFkZXJzICovLAogCQkJCUI1MjNDRjBCMTE4
MjY3NTQwMEVCQjI5QyAvKiBEYXRhYmFzZVN5bmMuaCBpbiBIZWFkZXJzICovLAorCQkJCUI1MjND
RjEzMTE4MjY3RDIwMEVCQjI5QyAvKiBKU0N1c3RvbVNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNr
LmggaW4gSGVhZGVycyAqLywKKwkJCQlCNUY5OTZGQjExODI3QzQ0MDAyQTVENzYgLyogSlNEYXRh
YmFzZVN5bmMuaCBpbiBIZWFkZXJzICovLAorCQkJCUI1QkUwREUzMTE4MjdDRkYwMDg5OUQwQiAv
KiBKU1NRTFRyYW5zYWN0aW9uU3luYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yMTE0NSw2ICsyMTE5
MCwxMSBAQAogCQkJCTBGRjI4NTkyMTE4NjQwNTQwMDdCN0NENiAvKiBSZW5kZXJNYXRoTUxTcXVh
cmVSb290LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI1MjNDRjA5MTE4MjY3NTQwMEVCQjI5QyAv
KiBTUUxUcmFuc2FjdGlvblN5bmMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjUyM0NGMEExMTgy
Njc1NDAwRUJCMjlDIC8qIERhdGFiYXNlU3luYy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCNTIz
Q0YxMTExODI2N0QyMDBFQkIyOUMgLyogSlNTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQjUyM0NGMTIxMTgyNjdEMjAwRUJCMjlDIC8qIEpTRGF0YWJhc2VT
eW5jQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUI1MjNDRjE0MTE4MjY3RDIwMEVCQjI5
QyAvKiBKU0N1c3RvbVNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUI1Rjk5NkZDMTE4MjdDNDQwMDJBNUQ3NiAvKiBKU0RhdGFiYXNlU3luYy5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlCNUJFMERFNDExODI3Q0ZGMDA4OTlEMEIgLyogSlNTUUxUcmFuc2Fj
dGlvblN5bmMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
QmluZGluZ3NBbGxJbk9uZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0JpbmRpbmdzQWxsSW5PbmUuY3BwCShyZXZpc2lvbiA1ODQ2MSkKKysrIFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMs
NyBAQAogI2luY2x1ZGUgIkpTQ3VzdG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5jcHAiCiAj
aW5jbHVkZSAiSlNDdXN0b21TUUxUcmFuc2FjdGlvbkNhbGxiYWNrLmNwcCIKICNpbmNsdWRlICJK
U0N1c3RvbVNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5jcHAiCisjaW5jbHVkZSAiSlNDdXN0
b21TUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5jcHAiCiAjaW5jbHVkZSAiSlNDdXN0b21Wb2lk
Q2FsbGJhY2suY3BwIgogI2luY2x1ZGUgIkpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcCIKICNp
bmNsdWRlICJKU0RPTUFwcGxpY2F0aW9uQ2FjaGVDdXN0b20uY3BwIgpAQCAtNTQsNiArNTUsNyBA
QAogI2luY2x1ZGUgIkpTRGF0YUdyaWRDb2x1bW5MaXN0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJK
U0RhdGFHcmlkRGF0YVNvdXJjZS5jcHAiCiAjaW5jbHVkZSAiSlNEYXRhYmFzZUN1c3RvbS5jcHAi
CisjaW5jbHVkZSAiSlNEYXRhYmFzZVN5bmNDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTRGVkaWNh
dGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNEZXNrdG9wTm90aWZpY2F0
aW9uc0N1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNEb2N1bWVudEN1c3RvbS5jcHAiCkBAIC0xMDUs
NiArMTA3LDcgQEAKICNpbmNsdWRlICJKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwIgogI2lu
Y2x1ZGUgIkpTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNTUUxU
cmFuc2FjdGlvbkN1c3RvbS5jcHAiCisjaW5jbHVkZSAiSlNTUUxUcmFuc2FjdGlvblN5bmNDdXN0
b20uY3BwIgogI2luY2x1ZGUgIkpTU1ZHRWxlbWVudEluc3RhbmNlQ3VzdG9tLmNwcCIKICNpbmNs
dWRlICJKU1NWR0xlbmd0aEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNTVkdNYXRyaXhDdXN0b20u
Y3BwIgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFRyYW5zYWN0aW9uU3lu
Y0NhbGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9t
U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0N1c3RvbVNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFt
ZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJK
U0N1c3RvbVNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmgiCisKKyNpZiBFTkFCTEUoREFUQUJB
U0UpCisKKyNpbmNsdWRlICJKU0NhbGxiYWNrRGF0YS5oIgorI2luY2x1ZGUgIkpTU1FMVHJhbnNh
Y3Rpb25TeW5jLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1
ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFt
ZXNwYWNlIEpTQzsKKworSlNDdXN0b21TUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjazo6SlNDdXN0
b21TUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjayhKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgOiBtX2RhdGEobmV3IEpTQ2FsbGJhY2tEYXRh
KGNhbGxiYWNrLCBnbG9iYWxPYmplY3QpKQorICAgICwgbV9pc29sYXRlZFdvcmxkKGdsb2JhbE9i
amVjdC0+d29ybGQoKSkKK3sKK30KKworSlNDdXN0b21TUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFj
azo6fkpTQ3VzdG9tU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2soKQoreworICAgIGNhbGxPbk1h
aW5UaHJlYWQoSlNDYWxsYmFja0RhdGE6OmRlbGV0ZURhdGEsIG1fZGF0YSk7Cit9CisKK3ZvaWQg
SlNDdXN0b21TUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjazo6aGFuZGxlRXZlbnQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgU1FMVHJhbnNhY3Rpb25TeW5jKiB0cmFuc2FjdGlvbiwg
Ym9vbCYgcmFpc2VkRXhjZXB0aW9uKQoreworICAgIEFTU0VSVChtX2RhdGEpOworICAgIEFTU0VS
VChjb250ZXh0KTsKKworICAgIFJlZlB0cjxKU0N1c3RvbVNRTFRyYW5zYWN0aW9uU3luY0NhbGxi
YWNrPiBwcm90ZWN0KHRoaXMpOworCisgICAgSlNDOjpKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0
aW9uc09ubHkpOworICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0b0pTRE9N
R2xvYmFsT2JqZWN0KGNvbnRleHQsIG1faXNvbGF0ZWRXb3JsZC5nZXQoKSk7CisgICAgaWYgKCFn
bG9iYWxPYmplY3QpCisgICAgICAgIHJldHVybjsKKworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7
CisgICAgYXJncy5hcHBlbmQodG9KUyhleGVjLCBkZXByZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJv
dG90eXBlKGV4ZWMpLCB0cmFuc2FjdGlvbikpOworICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2so
YXJncywgJnJhaXNlZEV4Y2VwdGlvbik7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShEQVRB
QkFTRSkKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21TUUxUcmFuc2FjdGlvblN5
bmNDYWxsYmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21T
UUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0N1c3RvbVNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9m
CisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTQ3VzdG9tU1FMVHJhbnNhY3Rpb25TeW5jQ2Fs
bGJhY2tfaAorI2RlZmluZSBKU0N1c3RvbVNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrX2gKKwor
I2lmIEVOQUJMRShEQVRBQkFTRSkKKworI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCisj
aW5jbHVkZSAiU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaCIKKyNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEpTQ2FsbGJhY2tEYXRhOwor
Y2xhc3MgSlNET01HbG9iYWxPYmplY3Q7CisKK2NsYXNzIEpTQ3VzdG9tU1FMVHJhbnNhY3Rpb25T
eW5jQ2FsbGJhY2sgOiBwdWJsaWMgU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2sgeworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTQ3VzdG9tU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJh
Y2s+IGNyZWF0ZShKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSlNDdXN0b21T
UUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjayhjYWxsYmFjaywgZ2xvYmFsT2JqZWN0KSk7CisgICAg
fQorCisgICAgdmlydHVhbCB+SlNDdXN0b21TUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjaygpOwor
CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBT
UUxUcmFuc2FjdGlvblN5bmMqLCBib29sJiByYWlzZWRFeGNlcHRpb24pOworCitwcml2YXRlOgor
ICAgIEpTQ3VzdG9tU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2soSlNDOjpKU09iamVjdCogY2Fs
bGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0Kik7CisKKyAgICBKU0NhbGxiYWNrRGF0YSogbV9kYXRh
OworICAgIFJlZlB0cjxET01XcmFwcGVyV29ybGQ+IG1faXNvbGF0ZWRXb3JsZDsKK307CisKK30K
KworI2VuZGlmIC8vIEVOQUJMRShEQVRBQkFTRSkKKworI2VuZGlmIC8vIEpTQ3VzdG9tU1FMVHJh
bnNhY3Rpb25TeW5jQ2FsbGJhY2tfaApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFi
YXNlQ2FsbGJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRh
YmFzZUNhbGxiYWNrLmNwcAkocmV2aXNpb24gNTg0NjEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRGF0YWJhc2VDYWxsYmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAK
IAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSlNEYXRhYmFzZS5oIgorI2luY2x1ZGUg
IkpTRGF0YWJhc2VTeW5jLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgog
I2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
QEAgLTc4LDYgKzc5LDI3IEBAIHZvaWQgSlNEYXRhYmFzZUNhbGxiYWNrOjpoYW5kbGVFdmVudChT
Y3IKICAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKGFyZ3MsICZpZ25vcmVkKTsKIH0KIAordm9p
ZCBKU0RhdGFiYXNlQ2FsbGJhY2s6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIERhdGFiYXNlU3luYyogZGF0YWJhc2UpCit7CisgICAgQVNTRVJUKG1fZGF0YSk7
CisgICAgQVNTRVJUKGNvbnRleHQpOworCisgICAgUmVmUHRyPEpTRGF0YWJhc2VDYWxsYmFjaz4g
cHJvdGVjdCh0aGlzKTsKKworICAgIEpTQzo6SlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNP
bmx5KTsKKworICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0b0pTRE9NR2xv
YmFsT2JqZWN0KGNvbnRleHQsIG1faXNvbGF0ZWRXb3JsZC5nZXQoKSk7CisgICAgaWYgKCFnbG9i
YWxPYmplY3QpCisgICAgICAgIHJldHVybjsKKworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRXhlYygpOworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7Cisg
ICAgYXJncy5hcHBlbmQodG9KUyhleGVjLCBkYXRhYmFzZSkpOworCisgICAgYm9vbCBpZ25vcmVk
OworICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2soYXJncywgJmlnbm9yZWQpOworfQorCiB9CiAK
ICNlbmRpZiAvLyBFTkFCTEUoREFUQUJBU0UpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RGF0YWJhc2VDYWxsYmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNE
YXRhYmFzZUNhbGxiYWNrLmgJKHJldmlzaW9uIDU4NDYxKQorKysgV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RhdGFiYXNlQ2FsbGJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB+SlNEYXRhYmFzZUNhbGxiYWNrKCk7CiAKICAgICB2aXJ0dWFs
IHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIERhdGFiYXNlKik7Cisg
ICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBEYXRh
YmFzZVN5bmMqKTsKIAogcHJpdmF0ZToKICAgICBKU0RhdGFiYXNlQ2FsbGJhY2soSlNDOjpKU09i
amVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0Kik7CkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRGF0YWJhc2VTeW5jQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRGF0YWJhc2VTeW5jQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvYmluZGluZ3MvanMvSlNEYXRhYmFzZVN5bmNDdXN0b20uY3BwCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAg
ICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNEYXRhYmFzZVN5
bmMuaCIKKworI2lmIEVOQUJMRShEQVRBQkFTRSkKKworI2luY2x1ZGUgIkRhdGFiYXNlU3luYy5o
IgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJKU0N1c3RvbVNRTFRyYW5z
YWN0aW9uU3luY0NhbGxiYWNrLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNs
dWRlICJTUUxWYWx1ZS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNBcnJheS5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK0pTVmFsdWUgSlNEYXRhYmFz
ZVN5bmM6OmNoYW5nZVZlcnNpb24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdz
KQoreworICAgIFN0cmluZyBvbGRWZXJzaW9uID0gdXN0cmluZ1RvU3RyaW5nKGFyZ3MuYXQoMCku
dG9TdHJpbmcoZXhlYykpOworICAgIFN0cmluZyBuZXdWZXJzaW9uID0gdXN0cmluZ1RvU3RyaW5n
KGFyZ3MuYXQoMSkudG9TdHJpbmcoZXhlYykpOworCisgICAgSlNPYmplY3QqIG9iamVjdDsKKyAg
ICBpZiAoIShvYmplY3QgPSBhcmdzLmF0KDIpLmdldE9iamVjdCgpKSkgeworICAgICAgICBzZXRE
T01FeGNlcHRpb24oZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpOworICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKKyAgICB9CisKKyAgICBSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJh
Y2s+IGNhbGxiYWNrKEpTQ3VzdG9tU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s6OmNyZWF0ZShv
YmplY3QsIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+ZHluYW1pY0dsb2Jh
bE9iamVjdCgpKSkpOworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgbV9pbXBsLT5j
aGFuZ2VWZXJzaW9uKG9sZFZlcnNpb24sIG5ld1ZlcnNpb24sIGNhbGxiYWNrLnJlbGVhc2UoKSwg
ZWMpOworICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisKKyAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKK30KKworc3RhdGljIEpTVmFsdWUgY3JlYXRlVHJhbnNhY3Rpb24oRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzLCBEYXRhYmFzZVN5bmMqIGRhdGFiYXNlLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBib29sIHJlYWRPbmx5KQoreworICAgIEpTT2Jq
ZWN0KiBvYmplY3Q7CisKKyAgICBpZiAoIShvYmplY3QgPSBhcmdzLmF0KDApLmdldE9iamVjdCgp
KSkgeworICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpOwor
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisKKyAgICBSZWZQdHI8U1FMVHJh
bnNhY3Rpb25TeW5jQ2FsbGJhY2s+IGNhbGxiYWNrKEpTQ3VzdG9tU1FMVHJhbnNhY3Rpb25TeW5j
Q2FsbGJhY2s6OmNyZWF0ZShvYmplY3QsIGdsb2JhbE9iamVjdCkpOworCisgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CisgICAgZGF0YWJhc2UtPnRyYW5zYWN0aW9uKGNhbGxiYWNrLnJlbGVhc2Uo
KSwgcmVhZE9ubHksIGVjKTsKKyAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworCisgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKK0pTVmFsdWUgSlNEYXRhYmFzZVN5bmM6OnRyYW5z
YWN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICByZXR1
cm4gY3JlYXRlVHJhbnNhY3Rpb24oZXhlYywgYXJncywgbV9pbXBsLmdldCgpLCBzdGF0aWNfY2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKSksIGZhbHNl
KTsKK30KKworSlNWYWx1ZSBKU0RhdGFiYXNlU3luYzo6cmVhZFRyYW5zYWN0aW9uKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICByZXR1cm4gY3JlYXRlVHJhbnNh
Y3Rpb24oZXhlYywgYXJncywgbV9pbXBsLmdldCgpLCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKSksIHRydWUpOworfQorCit9CisKKyNl
bmRpZiAvLyBFTkFCTEUoREFUQUJBU0UpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FM
VHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTU1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0
aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBv
ZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTU1FM
VHJhbnNhY3Rpb25TeW5jLmgiCisKKyNpZiBFTkFCTEUoREFUQUJBU0UpCisKKyNpbmNsdWRlICJF
eGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiSlNTUUxSZXN1bHRTZXQuaCIKKyNpbmNsdWRlICJT
UUxUcmFuc2FjdGlvblN5bmMuaCIKKyNpbmNsdWRlICJTUUxSZXN1bHRTZXQuaCIKKyNpbmNsdWRl
ICJTUUxWYWx1ZS5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0pTVmFsdWUgSlNTUUxUcmFuc2FjdGlvblN5bmM6OmV4ZWN1dGVTcWwoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIGlmIChhcmdzLmlzRW1wdHkoKSkg
eworICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgU1lOVEFYX0VSUik7CisgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOworICAgIH0KKworICAgIFN0cmluZyBzcWxTdGF0ZW1lbnQgPSB1
c3RyaW5nVG9TdHJpbmcoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKSk7CisgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKworICAgIC8v
IE5vdyBhc3NlbWJsZSB0aGUgbGlzdCBvZiBTUUwgYXJndW1lbnRzCisgICAgVmVjdG9yPFNRTFZh
bHVlPiBzcWxWYWx1ZXM7CisgICAgaWYgKCFhcmdzLmF0KDEpLmlzVW5kZWZpbmVkT3JOdWxsKCkp
IHsKKyAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFyZ3MuYXQoMSkuZ2V0T2JqZWN0KCk7Cisg
ICAgICAgIGlmICghb2JqZWN0KSB7CisgICAgICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywg
VFlQRV9NSVNNQVRDSF9FUlIpOworICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cisg
ICAgICAgIH0KKworICAgICAgICBKU1ZhbHVlIGxlbmd0aFZhbHVlID0gb2JqZWN0LT5nZXQoZXhl
YywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCk7CisgICAgICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgICAgICB1
bnNpZ25lZCBsZW5ndGggPSBsZW5ndGhWYWx1ZS50b1VJbnQzMihleGVjKTsKKyAgICAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMCA7IGkgPCBsZW5ndGg7ICsraSkgeworICAg
ICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIGkpOworICAgICAgICAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOworCisgICAgICAgICAgICBpZiAodmFsdWUuaXNOdWxsKCkpCisgICAgICAgICAg
ICAgICAgc3FsVmFsdWVzLmFwcGVuZChTUUxWYWx1ZSgpKTsKKyAgICAgICAgICAgIGVsc2UgaWYg
KHZhbHVlLmlzTnVtYmVyKCkpCisgICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFwcGVuZCh2YWx1
ZS51bmNoZWNrZWRHZXROdW1iZXIoKSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAvLyBDb252ZXJ0IHRoZSBhcmd1bWVudCB0byBhIHN0cmluZyBhbmQgYXBwZW5kIGl0Cisg
ICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFwcGVuZCh1c3RyaW5nVG9TdHJpbmcodmFsdWUudG9T
dHJpbmcoZXhlYykpKTsKKyAgICAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgSlNW
YWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihtX2lt
cGwtPmV4ZWN1dGVTUUwoc3FsU3RhdGVtZW50LCBzcWxWYWx1ZXMsIGVjKSkpOworICAgIHNldERP
TUV4Y2VwdGlvbihleGVjLCBlYyk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9CisKKyNl
bmRpZiAvLyBFTkFCTEUoREFUQUJBU0UpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29y
a2VyQ29udGV4dEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dvcmtlckNvbnRleHRDdXN0b20uY3BwCShyZXZpc2lvbiA1ODQ2MSkKKysrIFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjks
NiArMjksMTAgQEAKIAogI2luY2x1ZGUgIkpTV29ya2VyQ29udGV4dC5oIgogCisjaWYgRU5BQkxF
KERBVEFCQVNFKQorI2luY2x1ZGUgIkpTRGF0YWJhc2VTeW5jLmgiCisjaW5jbHVkZSAiSlNEYXRh
YmFzZUNhbGxiYWNrLmgiCisjZW5kaWYKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNs
dWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgpA
QCAtMTQyLDYgKzE0NiwyOCBAQCBKU1ZhbHVlIEpTV29ya2VyQ29udGV4dDo6bWVzc2FnZUNoYW5u
ZWwoCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShEQVRBQkFTRSkKK0pTVmFsdWUgSlNXb3JrZXJD
b250ZXh0OjpvcGVuRGF0YWJhc2VTeW5jKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYg
YXJncykKK3sKKyAgICBpZiAoYXJncy5zaXplKCkgPCA0KQorICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGNvbnN0IFVTdHJpbmcm
IG5hbWUgPSBhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpOworICAgIGNvbnN0IFVTdHJpbmcmIHZl
cnNpb24gPSBhcmdzLmF0KDEpLnRvU3RyaW5nKGV4ZWMpOworICAgIGNvbnN0IFVTdHJpbmcmIGRp
c3BsYXlOYW1lID0gYXJncy5hdCgyKS50b1N0cmluZyhleGVjKTsKKyAgICB1bnNpZ25lZCBsb25n
IGVzdGltYXRlZFNpemUgPSBhcmdzLmF0KDMpLnRvSW50MzIoZXhlYyk7CisgICAgUmVmUHRyPERh
dGFiYXNlQ2FsbGJhY2s+IGNyZWF0aW9uQ2FsbGJhY2s7CisgICAgaWYgKChhcmdzLnNpemUoKSA+
PSA1KSAmJiBhcmdzLmF0KDQpLmlzT2JqZWN0KCkpCisgICAgICAgIGNyZWF0aW9uQ2FsbGJhY2sg
PSBKU0RhdGFiYXNlQ2FsbGJhY2s6OmNyZWF0ZShhc09iamVjdChhcmdzLmF0KDQpKSwgZ2xvYmFs
T2JqZWN0KCkpOworCisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGdsb2JhbE9iamVj
dCgpLCBXVEY6OmdldFB0cihpbXBsKCktPm9wZW5EYXRhYmFzZVN5bmModXN0cmluZ1RvU3RyaW5n
KG5hbWUpLCB1c3RyaW5nVG9TdHJpbmcodmVyc2lvbiksIHVzdHJpbmdUb1N0cmluZyhkaXNwbGF5
TmFtZSksIGVzdGltYXRlZFNpemUsIGNyZWF0aW9uQ2FsbGJhY2sucmVsZWFzZSgpLCBlYykpKTsK
KworICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV09S
S0VSUykKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmlkbAkocmV2aXNpb24gNTg0NjEpCisrKyBXZWJDb3Jl
L3N0b3JhZ2UvRGF0YWJhc2UuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw4IEBAIG1v
ZHVsZSBzdG9yYWdlIHsKIAogICAgIGludGVyZmFjZSBbCiAgICAgICAgIENvbmRpdGlvbmFsPURB
VEFCQVNFLAotICAgICAgICBPbWl0Q29uc3RydWN0b3IKKyAgICAgICAgT21pdENvbnN0cnVjdG9y
LAorICAgICAgICBOb1N0YXRpY1RhYmxlcwogICAgIF0gRGF0YWJhc2UgewogICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZlcnNpb247CiAgICAgICAgIFtDdXN0b21dIHZvaWQg
Y2hhbmdlVmVyc2lvbihpbiBET01TdHJpbmcgb2xkVmVyc2lvbiwgaW4gRE9NU3RyaW5nIG5ld1Zl
cnNpb24sIGluIFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2sgY2FsbGJhY2ssIGluIFNRTFRyYW5zYWN0
aW9uRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrLCBpbiBWb2lkQ2FsbGJhY2sgc3VjY2Vzc0Nh
bGxiYWNrKTsKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZUNhbGxiYWNrLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlQ2FsbGJhY2suaAkocmV2aXNpb24gNTg0
NjEpCisrKyBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VDYWxsYmFjay5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zOCwxMiArMzgsMTQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRGF0YWJh
c2U7CitjbGFzcyBEYXRhYmFzZVN5bmM7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owog
CiBjbGFzcyBEYXRhYmFzZUNhbGxiYWNrIDogcHVibGljIFRocmVhZFNhZmVTaGFyZWQ8RGF0YWJh
c2VDYWxsYmFjaz4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkRhdGFiYXNlQ2FsbGJhY2soKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IERhdGFiYXNlKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgRGF0YWJhc2VTeW5jKikgPSAwOwogfTsKIAogfQpJbmRleDogV2ViQ29y
ZS9zdG9yYWdlL0RhdGFiYXNlU3luYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdl
L0RhdGFiYXNlU3luYy5jcHAJKHJldmlzaW9uIDU4NDYxKQorKysgV2ViQ29yZS9zdG9yYWdlL0Rh
dGFiYXNlU3luYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDEyICs5MSwxMiBAQCBTdHJpbmcg
RGF0YWJhc2VTeW5jOjp2ZXJzaW9uKCkgY29uc3QKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAK
LXZvaWQgRGF0YWJhc2VTeW5jOjpjaGFuZ2VWZXJzaW9uKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+KQordm9pZCBEYXRh
YmFzZVN5bmM6OmNoYW5nZVZlcnNpb24oY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUGFz
c1JlZlB0cjxTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjaz4sIEV4Y2VwdGlvbkNvZGUmKQogewog
ICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsK
IH0KIAotdm9pZCBEYXRhYmFzZVN5bmM6OnRyYW5zYWN0aW9uKFBhc3NSZWZQdHI8U1FMVHJhbnNh
Y3Rpb25TeW5jQ2FsbGJhY2s+LCBib29sKQordm9pZCBEYXRhYmFzZVN5bmM6OnRyYW5zYWN0aW9u
KFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+LCBib29sLCBFeGNlcHRpb25D
b2RlJikKIHsKICAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRU
aHJlYWQoKSk7CiB9CkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VTeW5jLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlU3luYy5oCShyZXZpc2lvbiA1ODQ2MSkK
KysrIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVN5bmMuaAkod29ya2luZyBjb3B5KQpAQCAtNTMs
OCArNTMsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RGF0YWJhc2VTeW5jPiBv
cGVuRGF0YWJhc2VTeW5jKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1l
LCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUsIFBhc3NSZWZQdHI8RGF0YWJhc2VDYWxsYmFj
az4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBTdHJpbmcgdmVyc2lvbigpIGNvbnN0OwotICAgIHZv
aWQgY2hhbmdlVmVyc2lvbihjb25zdCBTdHJpbmcmIG9sZFZlcnNpb24sIGNvbnN0IFN0cmluZyYg
bmV3VmVyc2lvbiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjaz4pOwotICAg
IHZvaWQgdHJhbnNhY3Rpb24oUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjaz4s
IGJvb2wgcmVhZE9ubHkpOworICAgIHZvaWQgY2hhbmdlVmVyc2lvbihjb25zdCBTdHJpbmcmIG9s
ZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgbmV3VmVyc2lvbiwgUGFzc1JlZlB0cjxTUUxUcmFuc2Fj
dGlvblN5bmNDYWxsYmFjaz4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHRyYW5zYWN0aW9u
KFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+LCBib29sIHJlYWRPbmx5LCBF
eGNlcHRpb25Db2RlJik7CiAKICAgICAvLyBJbnRlcm5hbCBlbmdpbmUgc3VwcG9ydAogICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKSW5k
ZXg6IFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVN5bmMuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3RvcmFnZS9EYXRhYmFzZVN5bmMuaWRsCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9zdG9y
YWdlL0RhdGFiYXNlU3luYy5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVy
LCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICog
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1
bGUgc3RvcmFnZSB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1EQVRB
QkFTRSwKKyAgICAgICAgT21pdENvbnN0cnVjdG9yLAorICAgICAgICBOb1N0YXRpY1RhYmxlcwor
ICAgIF0gRGF0YWJhc2VTeW5jIHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
ZyB2ZXJzaW9uOworICAgICAgICBbQ3VzdG9tXSB2b2lkIGNoYW5nZVZlcnNpb24oaW4gRE9NU3Ry
aW5nIG9sZFZlcnNpb24sIGluIERPTVN0cmluZyBuZXdWZXJzaW9uLCBpbiBTUUxUcmFuc2FjdGlv
blN5bmNDYWxsYmFjayBjYWxsYmFjayk7CisgICAgICAgIFtDdXN0b21dIHZvaWQgdHJhbnNhY3Rp
b24oaW4gU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2sgY2FsbGJhY2spOworICAgICAgICBbQ3Vz
dG9tXSB2b2lkIHJlYWRUcmFuc2FjdGlvbihpbiBTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjayBj
YWxsYmFjayk7CisgICAgfTsKKworfQpJbmRleDogV2ViQ29yZS9zdG9yYWdlL1NRTEVycm9yLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU1FMRXJyb3IuaWRsCShyZXZpc2lvbiA1
ODQ2MSkKKysrIFdlYkNvcmUvc3RvcmFnZS9TUUxFcnJvci5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDcgKzMwLDggQEAgbW9kdWxlIHN0b3JhZ2UgewogCiAgICAgaW50ZXJmYWNlIFsKICAgICAg
ICAgQ29uZGl0aW9uYWw9REFUQUJBU0UsCi0gICAgICAgIE9taXRDb25zdHJ1Y3RvcgorICAgICAg
ICBPbWl0Q29uc3RydWN0b3IsCisgICAgICAgIE5vU3RhdGljVGFibGVzCiAgICAgXSBTUUxFcnJv
ciB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGNvZGU7CiAgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbWVzc2FnZTsKSW5kZXg6IFdlYkNvcmUv
c3RvcmFnZS9TUUxSZXN1bHRTZXQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9T
UUxSZXN1bHRTZXQuaWRsCShyZXZpc2lvbiA1ODQ2MSkKKysrIFdlYkNvcmUvc3RvcmFnZS9TUUxS
ZXN1bHRTZXQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw4IEBAIG1vZHVsZSBzdG9y
YWdlIHsKIAogICAgIGludGVyZmFjZSBbCiAgICAgICAgIENvbmRpdGlvbmFsPURBVEFCQVNFLAot
ICAgICAgICBPbWl0Q29uc3RydWN0b3IKKyAgICAgICAgT21pdENvbnN0cnVjdG9yLAorICAgICAg
ICBOb1N0YXRpY1RhYmxlcwogICAgIF0gU1FMUmVzdWx0U2V0IHsKICAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIFNRTFJlc3VsdFNldFJvd0xpc3Qgcm93czsKIApJbmRleDogV2ViQ29yZS9zdG9y
YWdlL1NRTFJlc3VsdFNldFJvd0xpc3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFn
ZS9TUUxSZXN1bHRTZXRSb3dMaXN0LmlkbAkocmV2aXNpb24gNTg0NjEpCisrKyBXZWJDb3JlL3N0
b3JhZ2UvU1FMUmVzdWx0U2V0Um93TGlzdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMw
LDggQEAgbW9kdWxlIHN0b3JhZ2UgewogCiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgQ29uZGl0
aW9uYWw9REFUQUJBU0UsCi0gICAgICAgIE9taXRDb25zdHJ1Y3RvcgorICAgICAgICBPbWl0Q29u
c3RydWN0b3IsCisgICAgICAgIE5vU3RhdGljVGFibGVzCiAgICAgXSBTUUxSZXN1bHRTZXRSb3dM
aXN0IHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwog
ICAgICAgICBbQ3VzdG9tXSBET01PYmplY3QgaXRlbShpbiB1bnNpZ25lZCBsb25nIGluZGV4KTsK
SW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmlkbAkocmV2aXNpb24gNTg0NjEpCisrKyBX
ZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3
ICszMCw4IEBAIG1vZHVsZSBzdG9yYWdlIHsKIAogICAgIGludGVyZmFjZSBbCiAgICAgICAgIENv
bmRpdGlvbmFsPURBVEFCQVNFLAotICAgICAgICBPbWl0Q29uc3RydWN0b3IKKyAgICAgICAgT21p
dENvbnN0cnVjdG9yLAorICAgICAgICBOb1N0YXRpY1RhYmxlcwogICAgIF0gU1FMVHJhbnNhY3Rp
b24gewogICAgICAgICBbQ3VzdG9tXSB2b2lkIGV4ZWN1dGVTcWwoaW4gRE9NU3RyaW5nIHNxbFN0
YXRlbWVudCwgaW4gT2JqZWN0QXJyYXkgYXJndW1lbnRzLCBpbiBTUUxTdGF0ZW1lbnRDYWxsYmFj
ayBjYWxsYmFjaywgaW4gU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKTsK
ICAgICB9OwpJbmRleDogV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luYy5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luYy5pZGwJKHJldmlz
aW9uIDApCisrKyBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5jLmlkbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFt
ZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBzdG9yYWdlIHsKKworICAgIGludGVyZmFj
ZSBbCisgICAgICAgIENvbmRpdGlvbmFsPURBVEFCQVNFLAorICAgICAgICBPbWl0Q29uc3RydWN0
b3IsCisgICAgICAgIE5vU3RhdGljVGFibGVzCisgICAgXSBTUUxUcmFuc2FjdGlvblN5bmMgewor
ICAgICAgICBbQ3VzdG9tXSBTUUxSZXN1bHRTZXQgZXhlY3V0ZVNxbChpbiBET01TdHJpbmcgc3Fs
U3RhdGVtZW50LCBpbiBPYmplY3RBcnJheSBhcmd1bWVudHMpOworICAgIH07Cit9CkluZGV4OiBX
ZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93
b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCShyZXZpc2lvbiA1ODQ2MSkKKysrIFdlYkNvcmUvd29y
a2Vycy9Xb3JrZXJDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgxLDYgKzI4MSwyMCBA
QCBQYXNzUmVmUHRyPERhdGFiYXNlPiBXb3JrZXJDb250ZXh0OjpvcGVuCiAKICAgICByZXR1cm4g
RGF0YWJhc2U6Om9wZW5EYXRhYmFzZSh0aGlzLCBuYW1lLCB2ZXJzaW9uLCBkaXNwbGF5TmFtZSwg
ZXN0aW1hdGVkU2l6ZSwgY3JlYXRpb25DYWxsYmFjaywgZWMpOwogfQorCitQYXNzUmVmUHRyPERh
dGFiYXNlU3luYz4gV29ya2VyQ29udGV4dDo6b3BlbkRhdGFiYXNlU3luYyhjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwg
dW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+
IGNyZWF0aW9uQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghc2VjdXJp
dHlPcmlnaW4oKS0+Y2FuQWNjZXNzRGF0YWJhc2UoKSkgeworICAgICAgICBlYyA9IFNFQ1VSSVRZ
X0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgQVNTRVJUKERhdGFiYXNlU3lu
Yzo6aXNBdmFpbGFibGUoKSk7CisgICAgaWYgKCFEYXRhYmFzZVN5bmM6OmlzQXZhaWxhYmxlKCkp
CisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIERhdGFiYXNlU3luYzo6b3BlbkRhdGFi
YXNlU3luYyh0aGlzLCBuYW1lLCB2ZXJzaW9uLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSwg
Y3JlYXRpb25DYWxsYmFjaywgZWMpOworfQogI2VuZGlmCiAKIGJvb2wgV29ya2VyQ29udGV4dDo6
aXNDb250ZXh0VGhyZWFkKCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250
ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAkocmV2
aXNpb24gNTg0NjEpCisrKyBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJBdG9taWNTdHJpbmdIYXNoLmgi
CiAjaW5jbHVkZSAiRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJEYXRhYmFzZVN5bmMuaCIKICNpbmNs
dWRlICJEYXRhYmFzZUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2lu
Y2x1ZGUgIkV2ZW50TmFtZXMuaCIKQEAgLTEwNSw2ICsxMDYsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAjaWYgRU5BQkxFKERBVEFCQVNFKQogICAgICAgICAvLyBIVE1MIDUgY2xpZW50LXNpZGUg
ZGF0YWJhc2UKICAgICAgICAgUGFzc1JlZlB0cjxEYXRhYmFzZT4gb3BlbkRhdGFiYXNlKGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRpc3Bs
YXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUsIFBhc3NSZWZQdHI8RGF0YWJhc2VD
YWxsYmFjaz4gY3JlYXRpb25DYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICBQYXNz
UmVmUHRyPERhdGFiYXNlU3luYz4gb3BlbkRhdGFiYXNlU3luYyhjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWdu
ZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+IGNyZWF0
aW9uQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKKwogICAgICAgICAvLyBOb3QgaW1wbGVtZW50
ZWQgeWV0LgogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNEYXRhYmFzZVJlYWRPbmx5KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgLy8gTm90IGltcGxlbWVudGVkIHlldC4KSW5kZXg6
IFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwJKHJldmlzaW9uIDU4NDYxKQorKysgV2ViQ29yZS93
b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00OSw4ICs0OSwxMSBA
QCBtb2R1bGUgdGhyZWFkcyB7CiAgICAgICAgIC8vIFdvcmtlclV0aWxzCiAgICAgICAgIFtDdXN0
b21dIHZvaWQgaW1wb3J0U2NyaXB0cygvKltWYXJpYWRpY10gaW4gRE9NU3RyaW5nIHVybHMgKi8p
OwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW1JlcGxhY2VhYmxlXSBXb3JrZXJOYXZpZ2F0
b3IgbmF2aWdhdG9yOworCisjaWYgZGVmaW5lZChFTkFCTEVfREFUQUJBU0UpICYmIEVOQUJMRV9E
QVRBQkFTRQogICAgICAgICAvLyBEYXRhYmFzZSBvcGVuRGF0YWJhc2UoaW4gRE9NU3RyaW5nIG5h
bWUsIGluIERPTVN0cmluZyB2ZXJzaW9uLCBpbiBET01TdHJpbmcgZGlzcGxheU5hbWUsIGluIHVu
c2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSk7Ci0gICAgICAgIC8vIERhdGFiYXNlU3luYyBvcGVu
RGF0YWJhc2VTeW5jKGluIERPTVN0cmluZyBuYW1lLCBpbiBET01TdHJpbmcgdmVyc2lvbiwgaW4g
RE9NU3RyaW5nIGRpc3BsYXlOYW1lLCBpbiB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpOwor
ICAgICAgICBbRW5hYmxlQXRSdW50aW1lLCBDdXN0b21dIERhdGFiYXNlU3luYyBvcGVuRGF0YWJh
c2VTeW5jKGluIERPTVN0cmluZyBuYW1lLCBpbiBET01TdHJpbmcgdmVyc2lvbiwgaW4gRE9NU3Ry
aW5nIGRpc3BsYXlOYW1lLCBpbiB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUsIGluIERhdGFi
YXNlQ2FsbGJhY2sgY3JlYXRpb25DYWxsYmFjayk7CisjZW5kaWYKIAogICAgICAgICAvLyBUaW1l
cnMKICAgICAgICAgW0N1c3RvbV0gbG9uZyBzZXRUaW1lb3V0KGluIFRpbWVvdXRIYW5kbGVyIGhh
bmRsZXIsIGluIGxvbmcgdGltZW91dCk7Cg==
</data>
<flag name="review"
          id="38674"
          type_id="1"
          status="-"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="38675"
          type_id="3"
          status="-"
          setter="dumi"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55104</attachid>
            <date>2010-05-05 04:05:42 -0700</date>
            <delta_ts>2010-05-05 04:35:50 -0700</delta_ts>
            <desc>patch #2: IDL files + JSC and V8 bindings</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>69044</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
RGVyaXZlZFNvdXJjZXMuY3BwCShyZXZpc2lvbiA1ODgwNykKKysrIFdlYkNvcmUvRGVyaXZlZFNv
dXJjZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSw3IEBACiAjaW5jbHVkZSAiSlND
dXN0b21FdmVudC5jcHAiCiAjaW5jbHVkZSAiSlNEYXRhYmFzZS5jcHAiCiAjaW5jbHVkZSAiSlNE
YXRhYmFzZUNhbGxiYWNrLmNwcCIKKyNpbmNsdWRlICJKU0RhdGFiYXNlU3luYy5jcHAiCiAjaW5j
bHVkZSAiSlNEYXRhR3JpZENvbHVtbi5jcHAiCiAjaW5jbHVkZSAiSlNEYXRhR3JpZENvbHVtbkxp
c3QuY3BwIgogI2luY2x1ZGUgIkpTRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAiCkBAIC0yMTAs
NiArMjExLDggQEAKICNpbmNsdWRlICJKU1NRTFRyYW5zYWN0aW9uLmNwcCIKICNpbmNsdWRlICJK
U1NRTFRyYW5zYWN0aW9uQ2FsbGJhY2suY3BwIgogI2luY2x1ZGUgIkpTU1FMVHJhbnNhY3Rpb25F
cnJvckNhbGxiYWNrLmNwcCIKKyNpbmNsdWRlICJKU1NRTFRyYW5zYWN0aW9uU3luYy5jcHAiCisj
aW5jbHVkZSAiSlNTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5jcHAiCiAjaW5jbHVkZSAiSlNT
dG9yYWdlLmNwcCIKICNpbmNsdWRlICJKU1N0b3JhZ2VFdmVudC5jcHAiCiAjaW5jbHVkZSAiSlNT
dHlsZU1lZGlhLmNwcCIKSW5kZXg6IFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDU4ODA3KQorKysg
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNiArMTE2
LDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgRE9NV2luZG93IFwKICAgICBEYXRhYmFzZSBcCiAg
ICAgRGF0YWJhc2VDYWxsYmFjayBcCisgICAgRGF0YWJhc2VTeW5jIFwKICAgICBEb2N1bWVudCBc
CiAgICAgRG9jdW1lbnRGcmFnbWVudCBcCiAgICAgRG9jdW1lbnRUeXBlIFwKQEAgLTI1NCw2ICsy
NTUsOCBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBTUUxUcmFuc2FjdGlvbiBcCiAgICAgU1FMVHJh
bnNhY3Rpb25DYWxsYmFjayBcCiAgICAgU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrIFwKKyAg
ICBTUUxUcmFuc2FjdGlvblN5bmMgXAorICAgIFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrIFwK
ICAgICBTdG9yYWdlIFwKICAgICBTdG9yYWdlRXZlbnQgXAogICAgIFNWR0FFbGVtZW50IFwKSW5k
ZXg6IFdlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9HTlVtYWtl
ZmlsZS5hbQkocmV2aXNpb24gNTg4MDcpCisrKyBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMzA1LDE0ICsyMzA1LDE4IEBAIEZFQVRVUkVfREVGSU5FUyArPSBFTkFC
TEVfREFUQUJBU0U9MQogSURMX0JJTkRJTkdTICs9IFwKIAlXZWJDb3JlL3N0b3JhZ2UvRGF0YWJh
c2UuaWRsIFwKIAlXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VDYWxsYmFjay5pZGwgXAorCVdlYkNv
cmUvc3RvcmFnZS9EYXRhYmFzZVN5bmMuaWRsIFwKIAlXZWJDb3JlL3N0b3JhZ2UvU1FMRXJyb3Iu
aWRsIFwKIAlXZWJDb3JlL3N0b3JhZ2UvU1FMUmVzdWx0U2V0LmlkbCBcCiAJV2ViQ29yZS9zdG9y
YWdlL1NRTFJlc3VsdFNldFJvd0xpc3QuaWRsIFwKIAlXZWJDb3JlL3N0b3JhZ2UvU1FMU3RhdGVt
ZW50Q2FsbGJhY2suaWRsIFwKIAlXZWJDb3JlL3N0b3JhZ2UvU1FMU3RhdGVtZW50RXJyb3JDYWxs
YmFjay5pZGwgXAogCVdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5pZGwgXAorCVdlYkNv
cmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5pZGwgXAogCVdlYkNvcmUvc3RvcmFnZS9TUUxUcmFu
c2FjdGlvbkNhbGxiYWNrLmlkbCBcCi0JV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uRXJy
b3JDYWxsYmFjay5pZGwKKwlXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxi
YWNrLmlkbCBcCisJV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luYy5pZGwgXAorCVdl
YkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5pZGwKIAogd2ViY29yZV9j
cHBmbGFncyArPSBcCiAJLURFTkFCTEVfREFUQUJBU0U9MQpAQCAtMjMyMCw4ICsyMzI0LDEwIEBA
IHdlYmNvcmVfY3BwZmxhZ3MgKz0gXAogd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5jcHAgXAogCVdlYkNv
cmUvYmluZGluZ3MvanMvSlNEYXRhYmFzZUN1c3RvbS5jcHAgXAorCVdlYkNvcmUvYmluZGluZ3Mv
anMvSlNEYXRhYmFzZUN1c3RvbVN5bmMuY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FM
UmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxU
cmFuc2FjdGlvbkN1c3RvbS5jcHAgXAorCVdlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2Fj
dGlvblN5bmNDdXN0b20uY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxWYWx1ZS5jcHAg
XAogCVdlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTFZhbHVlLmggXAogCVdlYkNvcmUvcGxhdGZvcm0v
c3FsL1NRTGl0ZUF1dGhvcml6ZXIuY3BwIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5neXBpCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA1ODgwNykKKysrIFdl
YkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0yMTksNiArMjE5LDcgQEAKICAg
ICAgICAgICAgICdwbHVnaW5zL1BsdWdpbkFycmF5LmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFn
ZS9EYXRhYmFzZS5pZGwnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvRGF0YWJhc2VDYWxsYmFjay5p
ZGwnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvRGF0YWJhc2VTeW5jLmlkbCcsCiAgICAgICAgICAg
ICAnc3RvcmFnZS9JREJEYXRhYmFzZUVycm9yLmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9J
REJEYXRhYmFzZUV4Y2VwdGlvbi5pZGwnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURCRGF0YWJh
c2VSZXF1ZXN0LmlkbCcsCkBAIC0yMzEsNiArMjMyLDggQEAKICAgICAgICAgICAgICdzdG9yYWdl
L1NRTFRyYW5zYWN0aW9uLmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9TUUxUcmFuc2FjdGlv
bkNhbGxiYWNrLmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkVycm9y
Q2FsbGJhY2suaWRsJywKKyAgICAgICAgICAgICdzdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luYy5p
ZGwnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaWRs
JywKICAgICAgICAgICAgICdzdG9yYWdlL1N0b3JhZ2UuaWRsJywKICAgICAgICAgICAgICdzdG9y
YWdlL1N0b3JhZ2VFdmVudC5pZGwnLAogICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0
LmlkbCcsCkBAIC01MDcsNiArNTEwLDcgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0N1
c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTQ3Vz
dG9tWFBhdGhOU1Jlc29sdmVyLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRGF0YWJh
c2VDdXN0b20uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RhdGFiYXNlU3luY0N1
c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRGF0YUdyaWRDb2x1bW5MaXN0
Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNEYXRhR3JpZERhdGFTb3Vy
Y2UuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RhdGFHcmlkRGF0YVNvdXJjZS5o
JywKQEAgLTYwMSw2ICs2MDUsNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTU2NyaXB0
UHJvZmlsZU5vZGVDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1NRTFJl
c3VsdFNldFJvd0xpc3RDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1NR
TFRyYW5zYWN0aW9uQ3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNTUUxU
cmFuc2FjdGlvblN5bmNDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1N0
b3JhZ2VDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0
b20uaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcCcs
CkBAIC03MTIsNiArNzE3LDcgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhD
dXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0
b20vVjhDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RGF0YWJhc2VDdXN0b20uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9j
dXN0b20vVjhEYXRhYmFzZVN5bmNDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92
OC9jdXN0b20vVjhEYXRhR3JpZENvbHVtbkxpc3RDdXN0b20uY3BwJywKICAgICAgICAgICAgICdi
aW5kaW5ncy92OC9jdXN0b20vVjhEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRMb2NhdGlvbkN1c3RvbS5j
cHAnLApAQCAtNzY1LDYgKzc3MSw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9t
L1Y4U3RvcmFnZUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OFNRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92
OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAnLAorICAgICAgICAgICAgJ2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHAnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0RvY3VtZW50Q3VzdG9tLmNwcCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHRWxlbWVudEN1c3RvbS5jcHAnLAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0xlbmd0aEN1c3RvbS5jcHAnLApJbmRleDog
V2ViQ29yZS9XZWJDb3JlLnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUucHJpCShy
ZXZpc2lvbiA1ODgwNykKKysrIFdlYkNvcmUvV2ViQ29yZS5wcmkJKHdvcmtpbmcgY29weSkKQEAg
LTQzNyw2ICs0MzcsNyBAQCBJRExfQklORElOR1MgKz0gXAogICAgIHBsdWdpbnMvTWltZVR5cGVB
cnJheS5pZGwgXAogICAgIHN0b3JhZ2UvRGF0YWJhc2UuaWRsIFwKICAgICBzdG9yYWdlL0RhdGFi
YXNlQ2FsbGJhY2suaWRsIFwKKyAgICBzdG9yYWdlL0RhdGFiYXNlU3luYy5pZGwgXAogICAgIHN0
b3JhZ2UvU3RvcmFnZS5pZGwgXAogICAgIHN0b3JhZ2UvU3RvcmFnZUV2ZW50LmlkbCBcCiAgICAg
c3RvcmFnZS9TUUxFcnJvci5pZGwgXApAQCAtNDQ3LDYgKzQ0OCw4IEBAIElETF9CSU5ESU5HUyAr
PSBcCiAgICAgc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5pZGwgXAogICAgIHN0b3JhZ2UvU1FMVHJh
bnNhY3Rpb25DYWxsYmFjay5pZGwgXAogICAgIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb25FcnJvckNh
bGxiYWNrLmlkbCBcCisgICAgc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmMuaWRsIFwKKyAgICBz
dG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmlkbCBcCiAgICAgc3ZnL1NWR1pvb21F
dmVudC5pZGwgXAogICAgIHN2Zy9TVkdBRWxlbWVudC5pZGwgXAogICAgIHN2Zy9TVkdBbHRHbHlw
aEVsZW1lbnQuaWRsIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gNTg4MDcpCisrKyBXZWJDb3JlL1dlYkNvcmUu
cHJvCSh3b3JraW5nIGNvcHkpCkBAIC0yMzAwLDggKzIzMDAsMTAgQEAgY29udGFpbnMoREVGSU5F
UywgRU5BQkxFX0RBVEFCQVNFPTEpIHsKICAgICAgICAgc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5
bmMuY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNh
bGxiYWNrLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTRGF0YWJhc2VDdXN0b20uY3BwIFwK
KyAgICAgICAgYmluZGluZ3MvanMvSlNEYXRhYmFzZVN5bmNDdXN0b20uY3BwIFwKICAgICAgICAg
YmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcCBcCi0gICAgICAgIGJp
bmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwCisgICAgICAgIGJpbmRpbmdzL2pz
L0pTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwIFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNTUUxU
cmFuc2FjdGlvblN5bmNDdXN0b20uY3BwCiB9CiAKIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9E
T01fU1RPUkFHRT0xKSB7CkBAIC0yMzI1LDYgKzIzMjcsNyBAQCBjb250YWlucyhERUZJTkVTLCBF
TkFCTEVfRE9NX1NUT1JBR0U9MSkgCiAgICAgICAgIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DbGll
bnQuaCBcCiAgICAgICAgIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5oIFwKICAg
ICAgICAgc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmMuaCBcCisgICAgICAgIHN0b3JhZ2UvU1FM
VHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaCBcCiAgICAgICAgIHN0b3JhZ2UvU3RvcmFnZUFyZWEu
aCBcCiAgICAgICAgIHN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmggXAogICAgICAgICBzdG9yYWdl
L1N0b3JhZ2VBcmVhU3luYy5oIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagkocmV2aXNpb24gNTg4MDcpCisrKyBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNTEzLDYgKzI1MTMsNjIgQEAKIAkJCQk+DQogCQkJ
PC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIp
XG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0RhdGFiYXNlU3luYy5jcHAiDQor
CQkJCT4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIN
CisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJ
CQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFdp
bjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9v
bA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVn
X0ludGVybmFsfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+
DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0K
KwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJ
CU5hbWU9IkRlYnVnX0NhaXJvfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUi
DQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQor
CQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24NCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm98V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxl
Q29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIg0KKwkJCQkJRXhjbHVk
ZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJ
CTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGly
KVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNEYXRhYmFzZVN5bmMuaCINCisJ
CQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0
T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNEYXRhR3JpZENv
bHVtbi5jcHAiDQogCQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQpAQCAtMTAyNzgsNiAr
MTAzMzQsNjIgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZl
UGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialxXZWJDb3JlXERlcml2ZWRTb3VyY2VzXEpTU1FM
VHJhbnNhY3Rpb25TeW5jLmNwcCINCisJCQkJPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJ
CQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQor
CQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJ
CQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24N
CisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIN
CisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJh
dGlvbg0KKwkJCQkJTmFtZT0iRGVidWdfSW50ZXJuYWx8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxG
aWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm98V2luMzIiDQorCQkJCQlF
eGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+
DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb3xXaW4z
MiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wN
CisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z19B
bGx8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJ
CTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZl
UGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialxXZWJDb3JlXERlcml2ZWRTb3VyY2VzXEpTU1FM
VHJhbnNhY3Rpb25TeW5jLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJ
UmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXEpTU3RvcmFnZS5jcHAiDQogCQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9u
DQpAQCAtMzU2OTEsNiArMzU4MDMsNTggQEAKIAkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCiAJ
CQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xq
c1xKU0RhdGFiYXNlU3luY0N1c3RvbS5jcHAiDQorCQkJCQk+DQorCQkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxG
aWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z19JbnRlcm5h
bHxXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJ
CQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJ
CU5hbWU9IkRlYnVnX0NhaXJvfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVl
Ig0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
Ig0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25m
aWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb3xXaW4zMiINCisJCQkJCQlFeGNs
dWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4z
MiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRv
b2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0RhdGFHcmlkQ29sdW1uTGlzdEN1c3RvbS5jcHAiDQog
CQkJCQk+DQogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCkBAIC0zODk3MSw2ICszOTEzNSw1OCBA
QAogCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQor
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTU1FMVHJhbnNhY3Rpb25TeW5jQ3Vz
dG9tLmNwcCINCisJCQkJCT4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9
IkRlYnVnfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4N
CisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+
DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQor
CQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnX0ludGVybmFsfFdpbjMyIg0KKwkJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWdfQ2Fpcm98
V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJ
CTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlO
YW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVl
Ig0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
Ig0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25m
aWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVk
RnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0K
KwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdz
XGpzXEpTU3RvcmFnZUN1c3RvbS5jcHAiDQogCQkJCQk+DQogCQkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24NCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gNTg4MDcpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtNDE2OCw2ICs0MTY4LDE0IEBACiAJCUI1MjNDRjA5MTE4MjY3
NTQwMEVCQjI5QyAvKiBTUUxUcmFuc2FjdGlvblN5bmMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjUyM0NGMDIxMTgyNjc1NDAwRUJCMjlDIC8qIFNR
TFRyYW5zYWN0aW9uU3luYy5jcHAgKi87IH07CiAJCUI1MjNDRjBBMTE4MjY3NTQwMEVCQjI5QyAv
KiBEYXRhYmFzZVN5bmMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjUyM0NGMDMxMTgyNjc1NDAwRUJCMjlDIC8qIERhdGFiYXNlU3luYy5jcHAgKi87
IH07CiAJCUI1MjNDRjBCMTE4MjY3NTQwMEVCQjI5QyAvKiBEYXRhYmFzZVN5bmMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1MjNDRjA0MTE4MjY3NTQw
MEVCQjI5QyAvKiBEYXRhYmFzZVN5bmMuaCAqLzsgfTsKKwkJQjU1RDVBQTQxMTkxMzFGQzAwQkND
MzE1IC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1NUQ1QUEyMTE5MTMxRkMwMEJDQzMxNSAvKiBK
U1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmggKi87IH07CisJCUI1NUQ1QUE1MTE5MTMxRkMw
MEJDQzMxNSAvKiBKU1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1NUQ1QUEzMTE5MTMxRkMwMEJDQzMx
NSAvKiBKU1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmNwcCAqLzsgfTsKKwkJQjU1RDVBQTgx
MTkxMzI1MDAwQkNDMzE1IC8qIEpTRGF0YWJhc2VTeW5jQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1NUQ1QUE2MTE5MTMyNTAwMEJDQzMx
NSAvKiBKU0RhdGFiYXNlU3luY0N1c3RvbS5jcHAgKi87IH07CisJCUI1NUQ1QUE5MTE5MTMyNTAw
MEJDQzMxNSAvKiBKU1NRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNTVENUFBNzExOTEzMjUwMDBCQ0MzMTUg
LyogSlNTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwICovOyB9OworCQlCNThDRUI2OTExOTEz
NjA3MDAyQTY3OTAgLyogSlNEYXRhYmFzZVN5bmMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1OENFQjY3MTE5MTM2MDcwMDJBNjc5MCAvKiBKU0RhdGFi
YXNlU3luYy5oICovOyB9OworCQlCNThDRUI2QTExOTEzNjA3MDAyQTY3OTAgLyogSlNEYXRhYmFz
ZVN5bmMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjU4Q0VCNjgxMTkxMzYwNzAwMkE2NzkwIC8qIEpTRGF0YWJhc2VTeW5jLmNwcCAqLzsgfTsKKwkJ
QjU4Q0VCNkQxMTkxMzYxQzAwMkE2NzkwIC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5jLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNThDRUI2QjExOTEzNjFD
MDAyQTY3OTAgLyogSlNTUUxUcmFuc2FjdGlvblN5bmMuaCAqLzsgfTsKKwkJQjU4Q0VCNkUxMTkx
MzYxQzAwMkE2NzkwIC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5jLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1OENFQjZDMTE5MTM2MUMwMDJBNjc5MCAv
KiBKU1NRTFRyYW5zYWN0aW9uU3luYy5jcHAgKi87IH07CiAJCUI1OURENjk5MTE5MDI5RTUwMDdF
OTY4NCAvKiBKU0RhdGFiYXNlQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEI1OURENjk3MTE5MDI5RTUwMDdFOTY4NCAvKiBKU0RhdGFiYXNl
Q2FsbGJhY2suaCAqLzsgfTsKIAkJQjU5REQ2OUExMTkwMjlFNTAwN0U5Njg0IC8qIEpTRGF0YWJh
c2VDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCNTlERDY5ODExOTAyOUU1MDA3RTk2ODQgLyogSlNEYXRhYmFzZUNhbGxiYWNrLmNwcCAq
LzsgfTsKIAkJQjU5REQ2OUQxMTkwMkE0MjAwN0U5Njg0IC8qIEpTU1FMVHJhbnNhY3Rpb25DYWxs
YmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjU5
REQ2OUIxMTkwMkE0MjAwN0U5Njg0IC8qIEpTU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5oICovOyB9
OwpAQCAtOTUyOCw2ICs5NTM2LDE3IEBACiAJCUI1MjNDRjAyMTE4MjY3NTQwMEVCQjI5QyAvKiBT
UUxUcmFuc2FjdGlvblN5bmMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU1FMVHJhbnNhY3Rpb25TeW5jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QjUyM0NGMDMxMTgyNjc1NDAwRUJCMjlDIC8qIERhdGFiYXNlU3luYy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRhYmFzZVN5bmMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCNTIzQ0YwNDExODI2NzU0MDBFQkIyOUMgLyogRGF0YWJhc2VTeW5j
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFiYXNlU3luYy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCNTVENUFBMjExOTEzMUZDMDBCQ0MzMTUgLyogSlNT
UUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUI1NUQ1QUEzMTE5MTMxRkMwMEJDQzMxNSAvKiBKU1NRTFRyYW5zYWN0aW9uU3lu
Y0NhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1FM
VHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlCNTVENUFBNjExOTEzMjUwMDBCQ0MzMTUgLyogSlNEYXRhYmFzZVN5bmNDdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEYXRhYmFzZVN5bmNDdXN0b20u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCNTVENUFBNzExOTEzMjUwMDBCQ0Mz
MTUgLyogSlNTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlCNTVENUFCQjExOTEzMjcyMDBCQ0MzMTUgLyogRGF0YWJh
c2VTeW5jLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBEYXRhYmFzZVN5bmMuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCNTVENUFCQzExOTEzMjcyMDBCQ0MzMTUgLyogU1FM
VHJhbnNhY3Rpb25TeW5jLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTUUxUcmFuc2FjdGlv
blN5bmMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCNTVENUFCRDExOTEzMjcy
MDBCQ0MzMTUgLyogU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQjU4Q0VCNjcxMTkxMzYwNzAwMkE2NzkwIC8qIEpTRGF0YWJhc2VTeW5j
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRGF0YWJhc2VTeW5jLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI1OENFQjY4MTE5MTM2MDcwMDJBNjc5MCAvKiBK
U0RhdGFiYXNlU3luYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0RhdGFiYXNlU3luYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI1OENFQjZC
MTE5MTM2MUMwMDJBNjc5MCAvKiBKU1NRTFRyYW5zYWN0aW9uU3luYy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1NRTFRyYW5zYWN0aW9uU3luYy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlCNThDRUI2QzExOTEzNjFDMDAyQTY3OTAgLyogSlNTUUxUcmFuc2Fj
dGlvblN5bmMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTUUxU
cmFuc2FjdGlvblN5bmMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNTlERDY4
RDExOTAyOThFMDA3RTk2ODQgLyogRGF0YWJhc2VDYWxsYmFjay5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gRGF0YWJhc2VDYWxsYmFjay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUI1OURENjhFMTE5MDI5OEUwMDdFOTY4NCAvKiBTUUxTdGF0ZW1lbnRDYWxsYmFjay5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1FMU3RhdGVtZW50Q2FsbGJhY2suaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCNTlERDY4RjExOTAyOThFMDA3RTk2ODQgLyogU1FMU3Rh
dGVtZW50RXJyb3JDYWxsYmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1FMU3RhdGVt
ZW50RXJyb3JDYWxsYmFjay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDc3
NCw2ICsxMDc5Myw3IEBACiAJCQkJNTExNkQ5NzUwQ0YxNzdCRDAwQzJCODREIC8qIERhdGFiYXNl
RGV0YWlscy5oICovLAogCQkJCUI1MjNDRjAzMTE4MjY3NTQwMEVCQjI5QyAvKiBEYXRhYmFzZVN5
bmMuY3BwICovLAogCQkJCUI1MjNDRjA0MTE4MjY3NTQwMEVCQjI5QyAvKiBEYXRhYmFzZVN5bmMu
aCAqLywKKwkJCQlCNTVENUFCQjExOTEzMjcyMDBCQ0MzMTUgLyogRGF0YWJhc2VTeW5jLmlkbCAq
LywKIAkJCQk1MTk2MTFFOTBDQUM3NDlDMDAxMEE4MEMgLyogRGF0YWJhc2VUYXNrLmNwcCAqLywK
IAkJCQk1MTk2MTFFODBDQUM3NDlDMDAxMEE4MEMgLyogRGF0YWJhc2VUYXNrLmggKi8sCiAJCQkJ
NTE5NjExNjEwQ0FDNTY1NzAwMTBBODBDIC8qIERhdGFiYXNlVGhyZWFkLmNwcCAqLywKQEAgLTEw
ODE2LDcgKzEwODM2LDkgQEAKIAkJCQlCNTlERDY5MTExOTAyOThFMDA3RTk2ODQgLyogU1FMVHJh
bnNhY3Rpb25FcnJvckNhbGxiYWNrLmlkbCAqLywKIAkJCQlCNTIzQ0YwMjExODI2NzU0MDBFQkIy
OUMgLyogU1FMVHJhbnNhY3Rpb25TeW5jLmNwcCAqLywKIAkJCQlCNTIzQ0YwMTExODI2NzU0MDBF
QkIyOUMgLyogU1FMVHJhbnNhY3Rpb25TeW5jLmggKi8sCisJCQkJQjU1RDVBQkMxMTkxMzI3MjAw
QkNDMzE1IC8qIFNRTFRyYW5zYWN0aW9uU3luYy5pZGwgKi8sCiAJCQkJQjUyM0NFRkYxMTgyNjc1
NDAwRUJCMjlDIC8qIFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmggKi8sCisJCQkJQjU1RDVB
QkQxMTkxMzI3MjAwQkNDMzE1IC8qIFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmlkbCAqLywK
IAkJCQk1MUUzRjlDNTBEQTA1OURDMDAyNTA5MTEgLyogU3RvcmFnZS5jcHAgKi8sCiAJCQkJNTFF
M0Y5QzQwREEwNTlEQzAwMjUwOTExIC8qIFN0b3JhZ2UuaCAqLywKIAkJCQk1MUUzRjlEMTBEQTA1
RDcxMDAyNTA5MTEgLyogU3RvcmFnZS5pZGwgKi8sCkBAIC0xNDEwMSw2ICsxNDEyMywxMiBAQAog
CQkJCUI1OURENkE0MTE5MDJBNjIwMDdFOTY4NCAvKiBKU1NRTFN0YXRlbWVudENhbGxiYWNrLmNw
cCAqLywKIAkJCQlCNTlERDZBNzExOTAyQTcxMDA3RTk2ODQgLyogSlNTUUxTdGF0ZW1lbnRFcnJv
ckNhbGxiYWNrLmggKi8sCiAJCQkJQjU5REQ2QTgxMTkwMkE3MTAwN0U5Njg0IC8qIEpTU1FMU3Rh
dGVtZW50RXJyb3JDYWxsYmFjay5jcHAgKi8sCisJCQkJQjU1RDVBQTIxMTkxMzFGQzAwQkNDMzE1
IC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaCAqLywKKwkJCQlCNTVENUFBMzExOTEz
MUZDMDBCQ0MzMTUgLyogSlNTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5jcHAgKi8sCisJCQkJ
QjU4Q0VCNjcxMTkxMzYwNzAwMkE2NzkwIC8qIEpTRGF0YWJhc2VTeW5jLmggKi8sCisJCQkJQjU4
Q0VCNjgxMTkxMzYwNzAwMkE2NzkwIC8qIEpTRGF0YWJhc2VTeW5jLmNwcCAqLywKKwkJCQlCNThD
RUI2QjExOTEzNjFDMDAyQTY3OTAgLyogSlNTUUxUcmFuc2FjdGlvblN5bmMuaCAqLywKKwkJCQlC
NThDRUI2QzExOTEzNjFDMDAyQTY3OTAgLyogSlNTUUxUcmFuc2FjdGlvblN5bmMuY3BwICovLAog
CQkJKTsKIAkJCW5hbWUgPSBTdG9yYWdlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAg
LTE1MDQ1LDYgKzE1MDczLDggQEAKIAkJQkM0RURFRjcwQzA4RjQxNDAwN0VERDQ5IC8qIEN1c3Rv
bSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQjU1RDVB
QTYxMTkxMzI1MDAwQkNDMzE1IC8qIEpTRGF0YWJhc2VTeW5jQ3VzdG9tLmNwcCAqLywKKwkJCQlC
NTVENUFBNzExOTEzMjUwMDBCQ0MzMTUgLyogSlNTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3Bw
ICovLAogCQkJCUJDMkVENkJCMEM2QkQyRjAwMDkyMEJGRiAvKiBKU0F0dHJDdXN0b20uY3BwICov
LAogCQkJCTQ5RUVEMTRCMTA1MTk3MTkwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREN1c3RvbS5jcHAgKi8sCiAJCQkJNDlFRUQxNEQxMDUxOTcxQTAwMDk5RkFCIC8qIEpTQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgKi8sCkBAIC0xODk0OSw2ICsxODk3OSw5IEBA
CiAJCQkJQjU5REQ2QTExMTkwMkE1MjAwN0U5Njg0IC8qIEpTU1FMVHJhbnNhY3Rpb25FcnJvckNh
bGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlCNTlERDZBNTExOTAyQTYyMDA3RTk2ODQgLyog
SlNTUUxTdGF0ZW1lbnRDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjU5REQ2QTkxMTkw
MkE3MTAwN0U5Njg0IC8qIEpTU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQjU1RDVBQTQxMTkxMzFGQzAwQkNDMzE1IC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5j
Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCUI1OENFQjY5MTE5MTM2MDcwMDJBNjc5MCAv
KiBKU0RhdGFiYXNlU3luYy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjU4Q0VCNkQxMTkxMzYxQzAw
MkE2NzkwIC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5jLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIxMTkx
LDYgKzIxMjI0LDExIEBACiAJCQkJQjU5REQ2QTIxMTkwMkE1MjAwN0U5Njg0IC8qIEpTU1FMVHJh
bnNhY3Rpb25FcnJvckNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI1OURENkE2MTE5
MDJBNjIwMDdFOTY4NCAvKiBKU1NRTFN0YXRlbWVudENhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUI1OURENkFBMTE5MDJBNzEwMDdFOTY4NCAvKiBKU1NRTFN0YXRlbWVudEVycm9yQ2Fs
bGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjU1RDVBQTUxMTkxMzFGQzAwQkNDMzE1IC8q
IEpTU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjU1
RDVBQTgxMTkxMzI1MDAwQkNDMzE1IC8qIEpTRGF0YWJhc2VTeW5jQ3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUI1NUQ1QUE5MTE5MTMyNTAwMEJDQzMxNSAvKiBKU1NRTFRyYW5zYWN0aW9u
U3luY0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCNThDRUI2QTExOTEzNjA3MDAyQTY3
OTAgLyogSlNEYXRhYmFzZVN5bmMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjU4Q0VCNkUxMTkx
MzYxQzAwMkE2NzkwIC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5jLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAkocmV2aXNp
b24gNTg4MDcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJKU0RhdGFHcmlkQ29s
dW1uTGlzdEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNEYXRhR3JpZERhdGFTb3VyY2UuY3BwIgog
I2luY2x1ZGUgIkpTRGF0YWJhc2VDdXN0b20uY3BwIgorI2luY2x1ZGUgIkpTRGF0YWJhc2VTeW5j
Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0RlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3Bw
IgogI2luY2x1ZGUgIkpTRGVza3RvcE5vdGlmaWNhdGlvbnNDdXN0b20uY3BwIgogI2luY2x1ZGUg
IkpTRG9jdW1lbnRDdXN0b20uY3BwIgpAQCAtMTAyLDYgKzEwMyw3IEBACiAjaW5jbHVkZSAiSlNQ
bHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcCIKICNpbmNsdWRlICJKU1NRTFJlc3VsdFNldFJvd0xp
c3RDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwIgorI2lu
Y2x1ZGUgIkpTU1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1NWR0Vs
ZW1lbnRJbnN0YW5jZUN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNTVkdMZW5ndGhDdXN0b20uY3Bw
IgogI2luY2x1ZGUgIkpTU1ZHTWF0cml4Q3VzdG9tLmNwcCIKSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiA1ODgwNykKKysrIFdlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Njcs
MTMgKzk2NywyMiBAQCBKU1ZhbHVlIEpTRE9NV2luZG93OjpyZW1vdmVFdmVudExpc3RlbmVyCiAj
aWYgRU5BQkxFKERBVEFCQVNFKQogSlNWYWx1ZSBKU0RPTVdpbmRvdzo6b3BlbkRhdGFiYXNlKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKIHsKLSAgICBpZiAoIWFsbG93c0Fj
Y2Vzc0Zyb20oZXhlYykgfHwgKGFyZ3Muc2l6ZSgpIDwgNCkpCisgICAgaWYgKCFhbGxvd3NBY2Nl
c3NGcm9tKGV4ZWMpIHx8IChhcmdzLnNpemUoKSA8IDQpKSB7CisgICAgICAgIHNldERPTUV4Y2Vw
dGlvbihleGVjLCBTWU5UQVhfRVJSKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cisg
ICAgfQorCisgICAgLy8gYXJncy5hdCgzKSA9IGVzdGltYXRlZCBzaXplCisgICAgaWYgKCFhcmdz
LmF0KDMpLmlzVUludDMyKCkpIHsKKyAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBUWVBFX01J
U01BVENIX0VSUik7CisgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisKICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBjb25zdCBVU3RyaW5nJiBuYW1lID0gYXJncy5hdCgw
KS50b1N0cmluZyhleGVjKTsKICAgICBjb25zdCBVU3RyaW5nJiB2ZXJzaW9uID0gYXJncy5hdCgx
KS50b1N0cmluZyhleGVjKTsKICAgICBjb25zdCBVU3RyaW5nJiBkaXNwbGF5TmFtZSA9IGFyZ3Mu
YXQoMikudG9TdHJpbmcoZXhlYyk7Ci0gICAgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplID0g
YXJncy5hdCgzKS50b0ludDMyKGV4ZWMpOworICAgIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6
ZSA9IGFyZ3MuYXQoMykudG9VSW50MzIoZXhlYyk7CiAgICAgUmVmUHRyPERhdGFiYXNlQ2FsbGJh
Y2s+IGNyZWF0aW9uQ2FsbGJhY2s7CiAgICAgaWYgKChhcmdzLnNpemUoKSA+PSA1KSAmJiBhcmdz
LmF0KDQpLmlzT2JqZWN0KCkpCiAgICAgICAgIGNyZWF0aW9uQ2FsbGJhY2sgPSBKU0RhdGFiYXNl
Q2FsbGJhY2s6OmNyZWF0ZShhc09iamVjdChhcmdzLmF0KDQpKSwgZ2xvYmFsT2JqZWN0KCkpOwpJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFiYXNlQ3VzdG9tLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YWJhc2VDdXN0b20uY3BwCShyZXZpc2lvbiA1
ODgwNykKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhYmFzZUN1c3RvbS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUwLDEwICs1MCwxOSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogSlNWYWx1
ZSBKU0RhdGFiYXNlOjpjaGFuZ2VWZXJzaW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlz
dCYgYXJncykKIHsKICAgICBTdHJpbmcgb2xkVmVyc2lvbiA9IHVzdHJpbmdUb1N0cmluZyhhcmdz
LmF0KDApLnRvU3RyaW5nKGV4ZWMpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsK
KyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKKyAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorCiAgICAgU3RyaW5nIG5ld1ZlcnNpb24g
PSB1c3RyaW5nVG9TdHJpbmcoYXJncy5hdCgxKS50b1N0cmluZyhleGVjKSk7CisgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBUWVBF
X01JU01BVENIX0VSUik7CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIH0KIAot
ICAgIEpTT2JqZWN0KiBvYmplY3Q7Ci0gICAgaWYgKCEob2JqZWN0ID0gYXJncy5hdCgyKS5nZXRP
YmplY3QoKSkpIHsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gYXJncy5hdCgyKS5nZXRPYmplY3Qo
KTsKKyAgICBpZiAoIW9iamVjdCkgewogICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQ
RV9NSVNNQVRDSF9FUlIpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CkBA
IC03Miw3ICs4MSw4IEBAIEpTVmFsdWUgSlNEYXRhYmFzZTo6Y2hhbmdlVmVyc2lvbihFeGVjU3QK
ICAgICAKICAgICBSZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2s7CiAgICAgaWYg
KCFhcmdzLmF0KDQpLmlzTnVsbCgpKSB7Ci0gICAgICAgIGlmICghKG9iamVjdCA9IGFyZ3MuYXQo
NCkuZ2V0T2JqZWN0KCkpKSB7CisgICAgICAgIG9iamVjdCA9IGFyZ3MuYXQoNCkuZ2V0T2JqZWN0
KCk7CisgICAgICAgIGlmICghb2JqZWN0KSB7CiAgICAgICAgICAgICBzZXRET01FeGNlcHRpb24o
ZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpOwogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CiAgICAgICAgIH0KQEAgLTg3LDkgKzk3LDkgQEAgSlNWYWx1ZSBKU0RhdGFiYXNlOjpjaGFu
Z2VWZXJzaW9uKEV4ZWNTdAogCiBzdGF0aWMgSlNWYWx1ZSBjcmVhdGVUcmFuc2FjdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIERhdGFiYXNlKiBkYXRhYmFzZSwgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgYm9vbCByZWFkT25seSkKIHsKLSAgICBKU09i
amVjdCogb2JqZWN0OworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhcmdzLmF0KDApLmdldE9iamVj
dCgpOwogICAgIAotICAgIGlmICghKG9iamVjdCA9IGFyZ3MuYXQoMCkuZ2V0T2JqZWN0KCkpKSB7
CisgICAgaWYgKCFvYmplY3QpIHsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVf
TUlTTUFUQ0hfRVJSKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfSAgICAg
ICAgCkBAIC05Nyw3ICsxMDcsOCBAQCBzdGF0aWMgSlNWYWx1ZSBjcmVhdGVUcmFuc2FjdGlvbihF
eGVjU3RhCiAgICAgUmVmUHRyPFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2s+IGNhbGxiYWNrKEpTU1FM
VHJhbnNhY3Rpb25DYWxsYmFjazo6Y3JlYXRlKG9iamVjdCwgZ2xvYmFsT2JqZWN0KSk7CiAgICAg
UmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjazsKICAgICBp
ZiAoYXJncy5zaXplKCkgPiAxICYmICFhcmdzLmF0KDEpLmlzTnVsbCgpKSB7Ci0gICAgICAgIGlm
ICghKG9iamVjdCA9IGFyZ3MuYXQoMSkuZ2V0T2JqZWN0KCkpKSB7CisgICAgICAgIG9iamVjdCA9
IGFyZ3MuYXQoMSkuZ2V0T2JqZWN0KCk7CisgICAgICAgIGlmICghb2JqZWN0KSB7CiAgICAgICAg
ICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpOwogICAgICAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgIH0KQEAgLTEwNyw3ICsxMTgsOCBAQCBz
dGF0aWMgSlNWYWx1ZSBjcmVhdGVUcmFuc2FjdGlvbihFeGVjU3RhCiAKICAgICBSZWZQdHI8Vm9p
ZENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2s7CiAgICAgaWYgKGFyZ3Muc2l6ZSgpID4gMiAmJiAh
YXJncy5hdCgyKS5pc051bGwoKSkgewotICAgICAgICBpZiAoIShvYmplY3QgPSBhcmdzLmF0KDIp
LmdldE9iamVjdCgpKSkgeworICAgICAgICBvYmplY3QgPSBhcmdzLmF0KDIpLmdldE9iamVjdCgp
OworICAgICAgICBpZiAoIW9iamVjdCkgewogICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4
ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwogICAgICAgICB9CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YWJhc2VTeW5jQ3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YWJhc2VTeW5j
Q3VzdG9tLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhYmFz
ZVN5bmNDdXN0b20uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwMyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5j
LiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTRGF0YWJhc2VTeW5jLmgiCisKKyNpZiBFTkFCTEUoREFU
QUJBU0UpCisKKyNpbmNsdWRlICJEYXRhYmFzZVN5bmMuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCisjaW5jbHVkZSAiSlNTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiU1FMVmFsdWUuaCIKKyNpbmNsdWRlIDxy
dW50aW1lL0pTQXJyYXkuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3Bh
Y2UgSlNDOworCitKU1ZhbHVlIEpTRGF0YWJhc2VTeW5jOjpjaGFuZ2VWZXJzaW9uKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICBTdHJpbmcgb2xkVmVyc2lvbiA9
IHVzdHJpbmdUb1N0cmluZyhhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpKTsKKyAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVf
TUlTTUFUQ0hfRVJSKTsKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorCisg
ICAgU3RyaW5nIG5ld1ZlcnNpb24gPSB1c3RyaW5nVG9TdHJpbmcoYXJncy5hdCgxKS50b1N0cmlu
ZyhleGVjKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAgIHNldERP
TUV4Y2VwdGlvbihleGVjLCBUWVBFX01JU01BVENIX0VSUik7CisgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOworICAgIH0KKworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhcmdzLmF0KDIpLmdl
dE9iamVjdCgpOworICAgIGlmICghb2JqZWN0KSB7CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihl
eGVjLCBUWVBFX01JU01BVENIX0VSUik7CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwor
ICAgIH0KKworICAgIFJlZlB0cjxTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjaz4gY2FsbGJhY2so
SlNTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjazo6Y3JlYXRlKG9iamVjdCwgc3RhdGljX2Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkpKSk7CisKKyAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBtX2ltcGwtPmNoYW5nZVZlcnNpb24ob2xkVmVy
c2lvbiwgbmV3VmVyc2lvbiwgY2FsbGJhY2sucmVsZWFzZSgpLCBlYyk7CisgICAgc2V0RE9NRXhj
ZXB0aW9uKGV4ZWMsIGVjKTsKKworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCitzdGF0
aWMgSlNWYWx1ZSBjcmVhdGVUcmFuc2FjdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xp
c3QmIGFyZ3MsIERhdGFiYXNlU3luYyogZGF0YWJhc2UsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGJvb2wgcmVhZE9ubHkpCit7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFyZ3Mu
YXQoMCkuZ2V0T2JqZWN0KCk7CisgICAgaWYgKCFvYmplY3QpIHsKKyAgICAgICAgc2V0RE9NRXhj
ZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CisgICAgfQorCisgICAgUmVmUHRyPFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrPiBj
YWxsYmFjayhKU1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrOjpjcmVhdGUob2JqZWN0LCBnbG9i
YWxPYmplY3QpKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGRhdGFiYXNlLT50
cmFuc2FjdGlvbihjYWxsYmFjay5yZWxlYXNlKCksIHJlYWRPbmx5LCBlYyk7CisgICAgc2V0RE9N
RXhjZXB0aW9uKGV4ZWMsIGVjKTsKKworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCitK
U1ZhbHVlIEpTRGF0YWJhc2VTeW5jOjp0cmFuc2FjdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAgcmV0dXJuIGNyZWF0ZVRyYW5zYWN0aW9uKGV4ZWMsIGFy
Z3MsIG1faW1wbC5nZXQoKSwgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5k
eW5hbWljR2xvYmFsT2JqZWN0KCkpLCBmYWxzZSk7Cit9CisKK0pTVmFsdWUgSlNEYXRhYmFzZVN5
bmM6OnJlYWRUcmFuc2FjdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3Mp
Cit7CisgICAgcmV0dXJuIGNyZWF0ZVRyYW5zYWN0aW9uKGV4ZWMsIGFyZ3MsIG1faW1wbC5nZXQo
KSwgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5keW5hbWljR2xvYmFsT2Jq
ZWN0KCkpLCB0cnVlKTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKERBVEFCQVNFKQpJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwCShy
ZXZpc2lvbiA1ODgwNykKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1
c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDggKzUwLDEwIEBAIEpTVmFsdWUgSlNTUUxU
cmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbChFeGUKICAgICB9CiAKICAgICBTdHJpbmcgc3FsU3RhdGVt
ZW50ID0gdXN0cmluZ1RvU3RyaW5nKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYykpOwotICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsK
KyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKICAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQogCiAgICAgLy8gTm93IGFzc2VtYmxlIHRo
ZSBsaXN0IG9mIFNRTCBhcmd1bWVudHMKICAgICBWZWN0b3I8U1FMVmFsdWU+IHNxbFZhbHVlczsK
QEAgLTc0LDcgKzc2LDcgQEAgSlNWYWx1ZSBKU1NRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3FsKEV4
ZQogICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAodmFs
dWUuaXNOdWxsKCkpCisgICAgICAgICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkK
ICAgICAgICAgICAgICAgICBzcWxWYWx1ZXMuYXBwZW5kKFNRTFZhbHVlKCkpOwogICAgICAgICAg
ICAgZWxzZSBpZiAodmFsdWUuaXNOdW1iZXIoKSkKICAgICAgICAgICAgICAgICBzcWxWYWx1ZXMu
YXBwZW5kKHZhbHVlLnVuY2hlY2tlZEdldE51bWJlcigpKTsKSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwCShyZXZpc2lvbiAw
KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHAJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAz
LiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkpTU1FMVHJhbnNhY3Rpb25TeW5jLmgiCisKKyNpZiBFTkFCTEUoREFUQUJBU0UpCisK
KyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiSlNTUUxSZXN1bHRTZXQuaCIK
KyNpbmNsdWRlICJTUUxSZXN1bHRTZXQuaCIKKyNpbmNsdWRlICJTUUxUcmFuc2FjdGlvblN5bmMu
aCIKKyNpbmNsdWRlICJTUUxWYWx1ZS5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK0pTVmFsdWUgSlNTUUxUcmFuc2FjdGlvblN5bmM6OmV4ZWN1dGVT
cWwoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIGlmIChhcmdz
LmlzRW1wdHkoKSkgeworICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgU1lOVEFYX0VSUik7
CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIH0KKworICAgIFN0cmluZyBzcWxT
dGF0ZW1lbnQgPSB1c3RyaW5nVG9TdHJpbmcoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKSk7Cisg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihl
eGVjLCBUWVBFX01JU01BVENIX0VSUik7CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwor
ICAgIH0KKworICAgIC8vIE5vdyBhc3NlbWJsZSB0aGUgbGlzdCBvZiBTUUwgYXJndW1lbnRzCisg
ICAgVmVjdG9yPFNRTFZhbHVlPiBzcWxWYWx1ZXM7CisgICAgaWYgKCFhcmdzLmF0KDEpLmlzVW5k
ZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFyZ3MuYXQoMSku
Z2V0T2JqZWN0KCk7CisgICAgICAgIGlmICghb2JqZWN0KSB7CisgICAgICAgICAgICBzZXRET01F
eGNlcHRpb24oZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpOworICAgICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CisgICAgICAgIH0KKworICAgICAgICBKU1ZhbHVlIGxlbmd0aFZhbHVlID0g
b2JqZWN0LT5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCk7CisgICAgICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOworICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBsZW5ndGhWYWx1ZS50b1VJbnQzMihleGVj
KTsKKyAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMCA7IGkgPCBsZW5n
dGg7ICsraSkgeworICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMs
IGkpOworICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworCisgICAgICAgICAgICBpZiAodmFsdWUuaXNVbmRl
ZmluZWRPck51bGwoKSkKKyAgICAgICAgICAgICAgICBzcWxWYWx1ZXMuYXBwZW5kKFNRTFZhbHVl
KCkpOworICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUuaXNOdW1iZXIoKSkKKyAgICAgICAgICAg
ICAgICBzcWxWYWx1ZXMuYXBwZW5kKHZhbHVlLnVuY2hlY2tlZEdldE51bWJlcigpKTsKKyAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIC8vIENvbnZlcnQgdGhlIGFyZ3VtZW50IHRv
IGEgc3RyaW5nIGFuZCBhcHBlbmQgaXQKKyAgICAgICAgICAgICAgICBzcWxWYWx1ZXMuYXBwZW5k
KHVzdHJpbmdUb1N0cmluZyh2YWx1ZS50b1N0cmluZyhleGVjKSkpOworICAgICAgICAgICAgICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgZ2xvYmFs
T2JqZWN0KCksIFdURjo6Z2V0UHRyKG1faW1wbC0+ZXhlY3V0ZVNRTChzcWxTdGF0ZW1lbnQsIHNx
bFZhbHVlcywgZWMpKSk7CisgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShEQVRBQkFTRSkKSW5kZXg6
IFdlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAJKHJldmlz
aW9uIDU4ODA3KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSwxMCBAQAogCiAjaW5jbHVkZSAiSlNXb3Jr
ZXJDb250ZXh0LmgiCiAKKyNpZiBFTkFCTEUoREFUQUJBU0UpCisjaW5jbHVkZSAiSlNEYXRhYmFz
ZUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiSlNEYXRhYmFzZVN5bmMuaCIKKyNlbmRpZgogI2luY2x1
ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCiAjaW5j
bHVkZSAiSlNFdmVudExpc3RlbmVyLmgiCkBAIC0xNDIsNiArMTQ2LDM2IEBAIEpTVmFsdWUgSlNX
b3JrZXJDb250ZXh0OjptZXNzYWdlQ2hhbm5lbCgKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKERB
VEFCQVNFKQorSlNWYWx1ZSBKU1dvcmtlckNvbnRleHQ6Om9wZW5EYXRhYmFzZVN5bmMoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIGlmIChhcmdzLnNpemUoKSA8
IDQpIHsKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFNZTlRBWF9FUlIpOworICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisKKyAgICAvLyBhcmdzLmF0KDMpID0gZXN0
aW1hdGVkIHNpemUKKyAgICBpZiAoIWFyZ3MuYXQoMykuaXNVSW50MzIoKSkgeworICAgICAgc2V0
RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKKyAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOworICAgIH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGNvbnN0
IFVTdHJpbmcmIG5hbWUgPSBhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpOworICAgIGNvbnN0IFVT
dHJpbmcmIHZlcnNpb24gPSBhcmdzLmF0KDEpLnRvU3RyaW5nKGV4ZWMpOworICAgIGNvbnN0IFVT
dHJpbmcmIGRpc3BsYXlOYW1lID0gYXJncy5hdCgyKS50b1N0cmluZyhleGVjKTsKKyAgICB1bnNp
Z25lZCBsb25nIGVzdGltYXRlZFNpemUgPSBhcmdzLmF0KDMpLnRvVUludDMyKGV4ZWMpOworICAg
IFJlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiBjcmVhdGlvbkNhbGxiYWNrOworICAgIGlmICgoYXJn
cy5zaXplKCkgPj0gNSkgJiYgYXJncy5hdCg0KS5pc09iamVjdCgpKQorICAgICAgICBjcmVhdGlv
bkNhbGxiYWNrID0gSlNEYXRhYmFzZUNhbGxiYWNrOjpjcmVhdGUoYXNPYmplY3QoYXJncy5hdCg0
KSksIGdsb2JhbE9iamVjdCgpKTsKKworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhleGVjLCBn
bG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbCgpLT5vcGVuRGF0YWJhc2VTeW5jKHVzdHJp
bmdUb1N0cmluZyhuYW1lKSwgdXN0cmluZ1RvU3RyaW5nKHZlcnNpb24pLCB1c3RyaW5nVG9TdHJp
bmcoZGlzcGxheU5hbWUpLCBlc3RpbWF0ZWRTaXplLCBjcmVhdGlvbkNhbGxiYWNrLnJlbGVhc2Uo
KSwgZWMpKSk7CisKKyAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKFdPUktFUlMpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdp
bmRvd0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhET01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiA1ODgwNykKKysrIFdlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzE5
LDcgKzcxOSwxMSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6Om9wZW5ECiB7
CiAgICAgSU5DX1NUQVRTKCJET00uRE9NV2luZG93Lm9wZW5EYXRhYmFzZSIpOwogICAgIGlmIChh
cmdzLkxlbmd0aCgpIDwgNCkKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93RXJyb3IoIm9wZW5EYXRhYmFzZVN5bmMoKSBtdXN0IGJlIGNhbGxlZCB3
aXRoIGF0IGxlYXN0IDQgcGFyYW1ldGVycy4iLCBWOFByb3h5OjpTeW50YXhFcnJvcik7CisKKyAg
ICAvLyBhcmdzWzNdID0gZXN0aW1hdGVkIHNpemUKKyAgICBpZiAoIWFyZ3NbM10tPklzVWludDMy
KCkpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJUaGlyZCBwYXJhbWV0ZXIgdG8gb3BlbkRh
dGFiYXNlU3luYygpIG11c3QgYmUgYSB1aW50MzIuIiwgVjhQcm94eTo6VHlwZUVycm9yKTsKIAog
ICAgIERPTVdpbmRvdyogaW1wID0gVjhET01XaW5kb3c6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkp
OwogICAgIGlmICghVjhCaW5kaW5nU2VjdXJpdHk6OmNhbkFjY2Vzc0ZyYW1lKFY4QmluZGluZ1N0
YXRlOjpPbmx5KCksIGltcC0+ZnJhbWUoKSwgdHJ1ZSkpCkBAIC03MjksNyArNzMzLDcgQEAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpvcGVuRAogICAgIFN0cmluZyBuYW1lID0g
dG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOwogICAgIFN0cmluZyB2ZXJzaW9uID0gdG9XZWJDb3Jl
U3RyaW5nKGFyZ3NbMV0pOwogICAgIFN0cmluZyBkaXNwbGF5TmFtZSA9IHRvV2ViQ29yZVN0cmlu
ZyhhcmdzWzJdKTsKLSAgICB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUgPSBhcmdzWzNdLT5J
bnRlZ2VyVmFsdWUoKTsKKyAgICB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUgPSBhcmdzWzNd
LT5VaW50MzJWYWx1ZSgpOwogICAgIFJlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiBjcmVhdGlvbkNh
bGxiYWNrOwogICAgIGlmICgoYXJncy5MZW5ndGgoKSA+PSA1KSAmJiBhcmdzWzRdLT5Jc09iamVj
dCgpKQogICAgICAgICBjcmVhdGlvbkNhbGxiYWNrID0gVjhEYXRhYmFzZUNhbGxiYWNrOjpjcmVh
dGUoYXJnc1s0XSwgaW1wLT5mcmFtZSgpKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4RGF0YWJhc2VDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RGF0YWJhc2VDdXN0b20uY3BwCShyZXZpc2lvbiA1ODgwNykKKysrIFdlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YWJhc2VDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01MCw3ICs1MCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERhdGFiYXNlOjpjaGFu
Z2UKICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIlRoZSBvbGQgYW5kIG5ldyB2ZXJzaW9uIHN0
cmluZ3MgYXJlIHJlcXVpcmVkLiIsIFY4UHJveHk6OlN5bnRheEVycm9yKTsKIAogICAgIGlmICgh
KGFyZ3NbMF0tPklzU3RyaW5nKCkgJiYgYXJnc1sxXS0+SXNTdHJpbmcoKSkpCi0gICAgICAgIHJl
dHVybiB0aHJvd0Vycm9yKCJUaGUgb2xkIGFuZCBuZXcgdmVyc2lvbnMgbXVzdCBiZSBzdHJpbmdz
LiIpOworICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiVGhlIG9sZCBhbmQgbmV3IHZlcnNpb25z
IG11c3QgYmUgc3RyaW5ncy4iLCBWOFByb3h5OjpUeXBlRXJyb3IpOwogCiAgICAgRGF0YWJhc2Uq
IGRhdGFiYXNlID0gVjhEYXRhYmFzZTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAKQEAgLTYx
LDcgKzYxLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGF0YWJhc2U6OmNoYW5nZQogICAg
IFJlZlB0cjxWOFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2s+IGNhbGxiYWNrOwogICAgIGlmIChhcmdz
Lkxlbmd0aCgpID4gMikgewogICAgICAgICBpZiAoIWFyZ3NbMl0tPklzT2JqZWN0KCkpCi0gICAg
ICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiY2hhbmdlVmVyc2lvbiB0cmFuc2FjdGlvbiBjYWxs
YmFjayBtdXN0IGJlIG9mIHZhbGlkIHR5cGUuIik7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dF
cnJvcigiY2hhbmdlVmVyc2lvbiB0cmFuc2FjdGlvbiBjYWxsYmFjayBtdXN0IGJlIG9mIHZhbGlk
IHR5cGUuIiwgVjhQcm94eTo6VHlwZUVycm9yKTsKIAogICAgICAgICBjYWxsYmFjayA9IFY4U1FM
VHJhbnNhY3Rpb25DYWxsYmFjazo6Y3JlYXRlKGFyZ3NbMl0sIGZyYW1lKTsKICAgICB9CkBAIC02
OSw3ICs2OSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERhdGFiYXNlOjpjaGFuZ2UKICAg
ICBSZWZQdHI8VjhTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2s7CiAg
ICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAzKSB7CiAgICAgICAgIGlmICghYXJnc1szXS0+SXNPYmpl
Y3QoKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJjaGFuZ2VWZXJzaW9uIGVycm9y
IGNhbGxiYWNrIG11c3QgYmUgb2YgdmFsaWQgdHlwZS4iKTsKKyAgICAgICAgICAgIHJldHVybiB0
aHJvd0Vycm9yKCJjaGFuZ2VWZXJzaW9uIGVycm9yIGNhbGxiYWNrIG11c3QgYmUgb2YgdmFsaWQg
dHlwZS4iLCBWOFByb3h5OjpUeXBlRXJyb3IpOwogCiAgICAgICAgIGVycm9yQ2FsbGJhY2sgPSBW
OFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjazo6Y3JlYXRlKGFyZ3NbM10sIGZyYW1lKTsKICAg
ICB9CkBAIC03Nyw3ICs3Nyw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERhdGFiYXNlOjpj
aGFuZ2UKICAgICBSZWZQdHI8VjhDdXN0b21Wb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjazsK
ICAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDQpIHsKICAgICAgICAgaWYgKCFhcmdzWzRdLT5Jc09i
amVjdCgpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoImNoYW5nZVZlcnNpb24gc3Vj
Y2VzcyBjYWxsYmFjayBtdXN0IGJlIG9mIHZhbGlkIHR5cGUuIik7CisgICAgICAgICAgICByZXR1
cm4gdGhyb3dFcnJvcigiY2hhbmdlVmVyc2lvbiBzdWNjZXNzIGNhbGxiYWNrIG11c3QgYmUgb2Yg
dmFsaWQgdHlwZS4iLCBWOFByb3h5OjpUeXBlRXJyb3IpOwogCiAgICAgICAgIHN1Y2Nlc3NDYWxs
YmFjayA9IFY4Q3VzdG9tVm9pZENhbGxiYWNrOjpjcmVhdGUoYXJnc1s0XSwgZnJhbWUpOwogICAg
IH0KQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjcmVhdGVU
cmFucwogICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiVHJhbnNhY3Rpb24gY2FsbGJhY2sgaXMg
cmVxdWlyZWQuIiwgVjhQcm94eTo6U3ludGF4RXJyb3IpOwogCiAgICAgaWYgKCFhcmdzWzBdLT5J
c09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiVHJhbnNhY3Rpb24gY2FsbGJh
Y2sgbXVzdCBiZSBvZiB2YWxpZCB0eXBlLiIpOworICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigi
VHJhbnNhY3Rpb24gY2FsbGJhY2sgbXVzdCBiZSBvZiB2YWxpZCB0eXBlLiIsIFY4UHJveHk6OlR5
cGVFcnJvcik7CiAKICAgICBEYXRhYmFzZSogZGF0YWJhc2UgPSBWOERhdGFiYXNlOjp0b05hdGl2
ZShhcmdzLkhvbGRlcigpKTsKIApAQCAtMTA2LDcgKzEwNiw3IEBAIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gY3JlYXRlVHJhbnMKICAgICBSZWZQdHI8VjhTUUxUcmFuc2FjdGlvbkVycm9y
Q2FsbGJhY2s+IGVycm9yQ2FsbGJhY2s7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAxICYmICFp
c1VuZGVmaW5lZE9yTnVsbChhcmdzWzFdKSkgewogICAgICAgICBpZiAoIWFyZ3NbMV0tPklzT2Jq
ZWN0KCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiVHJhbnNhY3Rpb24gZXJyb3Ig
Y2FsbGJhY2sgbXVzdCBiZSBvZiB2YWxpZCB0eXBlLiIpOworICAgICAgICAgICAgcmV0dXJuIHRo
cm93RXJyb3IoIlRyYW5zYWN0aW9uIGVycm9yIGNhbGxiYWNrIG11c3QgYmUgb2YgdmFsaWQgdHlw
ZS4iLCBWOFByb3h5OjpUeXBlRXJyb3IpOwogCiAgICAgICAgIGVycm9yQ2FsbGJhY2sgPSBWOFNR
TFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjazo6Y3JlYXRlKGFyZ3NbMV0sIGZyYW1lKTsKICAgICB9
CkBAIC0xMTQsNyArMTE0LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjcmVhdGVU
cmFucwogICAgIFJlZlB0cjxWOEN1c3RvbVZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrOwog
ICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMiAmJiAhaXNVbmRlZmluZWRPck51bGwoYXJnc1syXSkp
IHsKICAgICAgICAgaWYgKCFhcmdzWzJdLT5Jc09iamVjdCgpKQotICAgICAgICAgICAgcmV0dXJu
IHRocm93RXJyb3IoIlRyYW5zYWN0aW9uIHN1Y2Nlc3MgY2FsbGJhY2sgbXVzdCBiZSBvZiB2YWxp
ZCB0eXBlLiIpOworICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIlRyYW5zYWN0aW9uIHN1
Y2Nlc3MgY2FsbGJhY2sgbXVzdCBiZSBvZiB2YWxpZCB0eXBlLiIsIFY4UHJveHk6OlR5cGVFcnJv
cik7CiAKICAgICAgICAgc3VjY2Vzc0NhbGxiYWNrID0gVjhDdXN0b21Wb2lkQ2FsbGJhY2s6OmNy
ZWF0ZShhcmdzWzJdLCBmcmFtZSk7CiAgICAgfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhEYXRhYmFzZVN5bmNDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YWJhc2VTeW5jQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKKysr
IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YWJhc2VTeW5jQ3VzdG9tLmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
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
TEUoREFUQUJBU0UpCisjaW5jbHVkZSAiVjhEYXRhYmFzZVN5bmMuaCIKKworI2luY2x1ZGUgIkRh
dGFiYXNlU3luYy5oIgorI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4U1FMVHJh
bnNhY3Rpb25TeW5jQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGF0YWJhc2VTeW5jOjpjaGFu
Z2VWZXJzaW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNf
U1RBVFMoIkRPTS5EYXRhYmFzZS5jaGFuZ2VWZXJzaW9uKCkiKTsKKworICAgIGlmIChhcmdzLkxl
bmd0aCgpIDwgMikKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIlRoZSBvbGQgYW5kIG5ldyB2
ZXJzaW9uIHN0cmluZ3MgYXJlIHJlcXVpcmVkLiIsIFY4UHJveHk6OlN5bnRheEVycm9yKTsKKwor
ICAgIGlmICghKGFyZ3NbMF0tPklzU3RyaW5nKCkgJiYgYXJnc1sxXS0+SXNTdHJpbmcoKSkpCisg
ICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJUaGUgb2xkIGFuZCBuZXcgdmVyc2lvbnMgbXVzdCBi
ZSBzdHJpbmdzLiIsIFY4UHJveHk6OlR5cGVFcnJvcik7CisKKyAgICBEYXRhYmFzZVN5bmMqIGRh
dGFiYXNlID0gVjhEYXRhYmFzZVN5bmM6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworCisgICAg
UmVmUHRyPFY4U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+IGNhbGxiYWNrOworICAgIGlmIChh
cmdzLkxlbmd0aCgpID4gMikgeworICAgICAgICBpZiAoIWFyZ3NbMl0tPklzT2JqZWN0KCkpCisg
ICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiY2hhbmdlVmVyc2lvbiB0cmFuc2FjdGlvbiBj
YWxsYmFjayBtdXN0IGJlIG9mIHZhbGlkIHR5cGUuIiwgVjhQcm94eTo6VHlwZUVycm9yKTsKKwor
ICAgICAgICBjYWxsYmFjayA9IFY4U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s6OmNyZWF0ZShh
cmdzWzJdLCAwKTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBkYXRh
YmFzZS0+Y2hhbmdlVmVyc2lvbih0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSksIHRvV2ViQ29yZVN0
cmluZyhhcmdzWzFdKSwgY2FsbGJhY2sucmVsZWFzZSgpLCBlYyk7CisgICAgVjhQcm94eTo6c2V0
RE9NRXhjZXB0aW9uKGVjKTsKKworICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Cit9CisKK3N0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3JlYXRlVHJhbnNhY3Rpb24oY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncywgYm9vbCByZWFkT25seSkKK3sKKyAgICBpZiAoIWFyZ3MuTGVuZ3RoKCkp
CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJUcmFuc2FjdGlvbiBjYWxsYmFjayBpcyByZXF1
aXJlZC4iLCBWOFByb3h5OjpTeW50YXhFcnJvcik7CisKKyAgICBpZiAoIWFyZ3NbMF0tPklzT2Jq
ZWN0KCkpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJUcmFuc2FjdGlvbiBjYWxsYmFjayBt
dXN0IGJlIG9mIHZhbGlkIHR5cGUuIiwgVjhQcm94eTo6VHlwZUVycm9yKTsKKworICAgIERhdGFi
YXNlU3luYyogZGF0YWJhc2UgPSBWOERhdGFiYXNlU3luYzo6dG9OYXRpdmUoYXJncy5Ib2xkZXIo
KSk7CisKKyAgICBSZWZQdHI8VjhTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjaz4gY2FsbGJhY2sg
PSBWOFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrOjpjcmVhdGUoYXJnc1swXSwgMCk7CisKKyAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBkYXRhYmFzZS0+dHJhbnNhY3Rpb24oY2FsbGJh
Y2sucmVsZWFzZSgpLCByZWFkT25seSwgZWMpOworICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlv
bihlYyk7CisKKyAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworfQorCit2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhEYXRhYmFzZVN5bmM6OnRyYW5zYWN0aW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5EYXRhYmFzZS50cmFuc2FjdGlv
bigpIik7CisgICAgcmV0dXJuIGNyZWF0ZVRyYW5zYWN0aW9uKGFyZ3MsIGZhbHNlKTsKK30KKwor
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGF0YWJhc2VTeW5jOjpyZWFkVHJhbnNhY3Rpb25DYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLkRh
dGFiYXNlLnJlYWRUcmFuc2FjdGlvbigpIik7CisgICAgcmV0dXJuIGNyZWF0ZVRyYW5zYWN0aW9u
KGFyZ3MsIHRydWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNh
Y3Rpb25TeW5jQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoREFUQUJBU0UpCisK
KyNpbmNsdWRlICJWOFNRTFRyYW5zYWN0aW9uU3luYy5oIgorCisjaW5jbHVkZSAiRGF0YWJhc2VT
eW5jLmgiCisjaW5jbHVkZSAiU1FMUmVzdWx0U2V0LmgiCisjaW5jbHVkZSAiU1FMVmFsdWUuaCIK
KyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgorCit1c2luZyBuYW1lc3BhY2UgV1RGOworCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFNRTFRyYW5zYWN0aW9uU3luYzo6ZXhlY3V0
ZVNxbENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRT
KCJET00uU1FMVHJhbnNhY3Rpb25TeW5jLmV4ZWN1dGVTcWwoKSIpOworCisgICAgaWYgKGFyZ3Mu
TGVuZ3RoKCkgPT0gMCkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIlNRTCBzdGF0ZW1lbnQg
aXMgcmVxdWlyZWQuIiwgVjhQcm94eTo6U3ludGF4RXJyb3IpOworCisgICAgU3RyaW5nIHN0YXRl
bWVudCA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKTsKKworICAgIFZlY3RvcjxTUUxWYWx1ZT4g
c3FsVmFsdWVzOworCisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAxICYmICFpc1VuZGVmaW5lZE9y
TnVsbChhcmdzWzFdKSkgeworICAgICAgICBpZiAoYXJnc1sxXS0+SXNPYmplY3QoKSkgeworICAg
ICAgICAgICAgdWludDMyX3Qgc3FsQXJnc0xlbmd0aCA9IDA7CisgICAgICAgICAgICB2ODo6TG9j
YWw8djg6Ok9iamVjdD4gc3FsQXJnc09iamVjdCA9IGFyZ3NbMV0tPlRvT2JqZWN0KCk7CisgICAg
ICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBsZW5ndGhHZXR0ZXI7CisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgdjg6OlRyeUNhdGNoIGJsb2NrOworICAgICAgICAgICAgICAgIGxl
bmd0aEdldHRlciA9IHNxbEFyZ3NPYmplY3QtPkdldCh2ODo6U3RyaW5nOjpOZXcoImxlbmd0aCIp
KTsKKyAgICAgICAgICAgICAgICBpZiAoYmxvY2suSGFzQ2F1Z2h0KCkpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGJsb2NrLkV4Y2VwdGlvbigpKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgaWYgKGlzVW5kZWZpbmVkT3JOdWxsKGxlbmd0aEdldHRlcikpCisg
ICAgICAgICAgICAgICAgc3FsQXJnc0xlbmd0aCA9IHNxbEFyZ3NPYmplY3QtPkdldFByb3BlcnR5
TmFtZXMoKS0+TGVuZ3RoKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc3Fs
QXJnc0xlbmd0aCA9IGxlbmd0aEdldHRlci0+VWludDMyVmFsdWUoKTsKKworICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBzcWxBcmdzTGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgICAgICAgICB2ODo6TG9jYWw8djg6OkludGVnZXI+IGtleSA9IHY4OjpJbnRlZ2VyOjpOZXco
aSk7CisgICAgICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWU7CisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB2ODo6VHJ5Q2F0Y2ggYmxvY2s7CisgICAg
ICAgICAgICAgICAgICAgIHZhbHVlID0gc3FsQXJnc09iamVjdC0+R2V0KGtleSk7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChibG9jay5IYXNDYXVnaHQoKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0aHJvd0Vycm9yKGJsb2NrLkV4Y2VwdGlvbigpKTsKKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUuSXNFbXB0eSgpIHx8IHZhbHVlLT5Jc051
bGwoKSkKKyAgICAgICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFwcGVuZChTUUxWYWx1ZSgpKTsK
KyAgICAgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZS0+SXNOdW1iZXIoKSkKKyAgICAgICAgICAg
ICAgICAgICAgc3FsVmFsdWVzLmFwcGVuZChTUUxWYWx1ZSh2YWx1ZS0+TnVtYmVyVmFsdWUoKSkp
OworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFw
cGVuZChTUUxWYWx1ZSh0b1dlYkNvcmVTdHJpbmcodmFsdWUpKSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoInNxbEFyZ3Mgc2hv
dWxkIGJlIGFycmF5IG9yIG9iamVjdCEiLCBWOFByb3h5OjpUeXBlRXJyb3IpOworICAgIH0KKwor
ICAgIFNRTFRyYW5zYWN0aW9uU3luYyogdHJhbnNhY3Rpb24gPSBWOFNRTFRyYW5zYWN0aW9uU3lu
Yzo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
KyAgICB0cmFuc2FjdGlvbi0+ZXhlY3V0ZVNRTChzdGF0ZW1lbnQsIHNxbFZhbHVlcywgZWMpOwor
ICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYyk7CisKKyAgICByZXR1cm4gdjg6OlVuZGVm
aW5lZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20u
Y3BwCShyZXZpc2lvbiA1ODgwNykKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29y
a2VyQ29udGV4dEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDEwIEBACiAj
aWYgRU5BQkxFKFdPUktFUlMpCiAjaW5jbHVkZSAiVjhXb3JrZXJDb250ZXh0LmgiCiAKKyNpZiBF
TkFCTEUoREFUQUJBU0UpCisjaW5jbHVkZSAiVjhEYXRhYmFzZUNhbGxiYWNrLmgiCisjaW5jbHVk
ZSAiVjhEYXRhYmFzZVN5bmMuaCIKKyNlbmRpZgogI2luY2x1ZGUgIkRPTVRpbWVyLmgiCiAjaW5j
bHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIlNjaGVkdWxlZEFjdGlvbi5oIgpAQCAt
MTM2LDYgKzE0MCwzNSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChXb3JrZXJDb250ZXh0
CiAgICAgcmV0dXJuIGdsb2JhbDsKIH0KIAorI2lmIEVOQUJMRShEQVRBQkFTRSkKK3Y4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOFdvcmtlckNvbnRleHQ6Om9wZW5EYXRhYmFzZVN5bmNDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLlY4V29ya2Vy
Q29udGV4dC5vcGVuRGF0YWJhc2VTeW5jKCkiKTsKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDQp
CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJvcGVuRGF0YWJhc2VTeW5jKCkgbXVzdCBiZSBj
YWxsZWQgd2l0aCBhdCBsZWFzdCA0IHBhcmFtZXRlcnMuIiwgVjhQcm94eTo6U3ludGF4RXJyb3Ip
OworCisgICAgLy8gYXJnc1szXSA9IGVzdGltYXRlZCBzaXplCisgICAgaWYgKCFhcmdzWzNdLT5J
c1VpbnQzMigpKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiVGhpcmQgcGFyYW1ldGVyIHRv
IG9wZW5EYXRhYmFzZVN5bmMoKSBtdXN0IGJlIGEgdWludDMyLiIsIFY4UHJveHk6OlR5cGVFcnJv
cik7CisKKyAgICBXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0ID0gVjhXb3JrZXJDb250ZXh0
Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwor
ICAgIFN0cmluZyBuYW1lID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOworICAgIFN0cmluZyB2
ZXJzaW9uID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMV0pOworICAgIFN0cmluZyBkaXNwbGF5TmFt
ZSA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzJdKTsKKyAgICB1bnNpZ25lZCBsb25nIGVzdGltYXRl
ZFNpemUgPSBhcmdzWzNdLT5VaW50MzJWYWx1ZSgpOworICAgIFJlZlB0cjxEYXRhYmFzZUNhbGxi
YWNrPiBjcmVhdGlvbkNhbGxiYWNrOworICAgIGlmICgoYXJncy5MZW5ndGgoKSA+PSA1KSAmJiBh
cmdzWzRdLT5Jc09iamVjdCgpKQorICAgICAgICBjcmVhdGlvbkNhbGxiYWNrID0gVjhEYXRhYmFz
ZUNhbGxiYWNrOjpjcmVhdGUoYXJnc1s0XSwgMCk7CisKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gcmVzdWx0ID0gdG9WOCh3b3JrZXJDb250ZXh0LT5vcGVuRGF0YWJhc2VTeW5jKG5hbWUsIHZl
cnNpb24sIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplLCBjcmVhdGlvbkNhbGxiYWNrLnJlbGVh
c2UoKSwgZWMpKTsKKworICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYyk7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoV09SS0VSUykKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmlkbAkocmV2aXNpb24gNTg4
MDcpCisrKyBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCw3ICszMCw4IEBAIG1vZHVsZSBzdG9yYWdlIHsKIAogICAgIGludGVyZmFjZSBbCiAgICAgICAg
IENvbmRpdGlvbmFsPURBVEFCQVNFLAotICAgICAgICBPbWl0Q29uc3RydWN0b3IKKyAgICAgICAg
T21pdENvbnN0cnVjdG9yLAorICAgICAgICBOb1N0YXRpY1RhYmxlcwogICAgIF0gRGF0YWJhc2Ug
ewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZlcnNpb247CiAgICAgICAg
IFtDdXN0b21dIHZvaWQgY2hhbmdlVmVyc2lvbihpbiBET01TdHJpbmcgb2xkVmVyc2lvbiwgaW4g
RE9NU3RyaW5nIG5ld1ZlcnNpb24sIGluIFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2sgY2FsbGJhY2ss
IGluIFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrLCBpbiBWb2lkQ2Fs
bGJhY2sgc3VjY2Vzc0NhbGxiYWNrKTsKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZUNh
bGxiYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlQ2FsbGJhY2su
aAkocmV2aXNpb24gNTg4MDcpCisrKyBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VDYWxsYmFjay5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMiArMzgsMTQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgRGF0YWJhc2U7CitjbGFzcyBEYXRhYmFzZVN5bmM7CiBjbGFzcyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OwogCiBjbGFzcyBEYXRhYmFzZUNhbGxiYWNrIDogcHVibGljIFRocmVhZFNh
ZmVTaGFyZWQ8RGF0YWJhc2VDYWxsYmFjaz4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkRhdGFi
YXNlQ2FsbGJhY2soKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIERhdGFiYXNlKikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVF
dmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRGF0YWJhc2VTeW5jKikgPSAwOwogfTsKIAog
fQpJbmRleDogV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlQ2FsbGJhY2suaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZUNhbGxiYWNrLmlkbAkocmV2aXNpb24gNTg4MDcp
CisrKyBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VDYWxsYmFjay5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTMyLDUgKzMyLDYgQEAgbW9kdWxlIHN0b3JhZ2UgewogICAgICAgICBDYWxsYmFjawogICAg
IF0gRGF0YWJhc2VDYWxsYmFjayB7CiAgICAgICAgIGJvb2xlYW4gaGFuZGxlRXZlbnQoaW4gRGF0
YWJhc2UgZGF0YWJhc2UpOworICAgICAgICBib29sZWFuIGhhbmRsZUV2ZW50KGluIERhdGFiYXNl
U3luYyBkYXRhYmFzZSk7CiAgICAgfTsKIH0KSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFz
ZVN5bmMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVN5bmMuY3Bw
CShyZXZpc2lvbiA1ODgwNykKKysrIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVN5bmMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05MSwxMiArOTEsMTIgQEAgU3RyaW5nIERhdGFiYXNlU3luYzo6dmVy
c2lvbigpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi12b2lkIERhdGFiYXNlU3lu
Yzo6Y2hhbmdlVmVyc2lvbihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRy
PFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrPikKK3ZvaWQgRGF0YWJhc2VTeW5jOjpjaGFuZ2VW
ZXJzaW9uKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFBhc3NSZWZQdHI8U1FMVHJhbnNh
Y3Rpb25TeW5jQ2FsbGJhY2s+LCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBBU1NFUlQobV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSk7CiB9CiAKLXZvaWQgRGF0YWJh
c2VTeW5jOjp0cmFuc2FjdGlvbihQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNr
PiwgYm9vbCkKK3ZvaWQgRGF0YWJhc2VTeW5jOjp0cmFuc2FjdGlvbihQYXNzUmVmUHRyPFNRTFRy
YW5zYWN0aW9uU3luY0NhbGxiYWNrPiwgYm9vbCwgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgQVNT
RVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNDb250ZXh0VGhyZWFkKCkpOwogfQpJbmRl
eDogV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlU3luYy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3RvcmFnZS9EYXRhYmFzZVN5bmMuaAkocmV2aXNpb24gNTg4MDcpCisrKyBXZWJDb3JlL3N0b3Jh
Z2UvRGF0YWJhc2VTeW5jLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDggKzUzLDggQEAgcHVibGlj
OgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPERhdGFiYXNlU3luYz4gb3BlbkRhdGFiYXNlU3luYyhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IGV4cGVjdGVkVmVyc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBl
c3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+LCBFeGNlcHRpb25Db2Rl
Jik7CiAgICAgU3RyaW5nIHZlcnNpb24oKSBjb25zdDsKLSAgICB2b2lkIGNoYW5nZVZlcnNpb24o
Y29uc3QgU3RyaW5nJiBvbGRWZXJzaW9uLCBjb25zdCBTdHJpbmcmIG5ld1ZlcnNpb24sIFBhc3NS
ZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+KTsKLSAgICB2b2lkIHRyYW5zYWN0aW9u
KFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+LCBib29sIHJlYWRPbmx5KTsK
KyAgICB2b2lkIGNoYW5nZVZlcnNpb24oY29uc3QgU3RyaW5nJiBvbGRWZXJzaW9uLCBjb25zdCBT
dHJpbmcmIG5ld1ZlcnNpb24sIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+
LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCB0cmFuc2FjdGlvbihQYXNzUmVmUHRyPFNRTFRy
YW5zYWN0aW9uU3luY0NhbGxiYWNrPiwgYm9vbCByZWFkT25seSwgRXhjZXB0aW9uQ29kZSYpOwog
CiAgICAgLy8gSW50ZXJuYWwgZW5naW5lIHN1cHBvcnQKICAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CkluZGV4OiBXZWJDb3JlL3N0b3Jh
Z2UvRGF0YWJhc2VTeW5jLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJh
c2VTeW5jLmlkbAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVN5bmMu
aWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikg
bm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIHN0b3JhZ2UgeworCisg
ICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9REFUQUJBU0UsCisgICAgICAgIE9t
aXRDb25zdHJ1Y3RvciwKKyAgICAgICAgTm9TdGF0aWNUYWJsZXMKKyAgICBdIERhdGFiYXNlU3lu
YyB7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdmVyc2lvbjsKKyAgICAg
ICAgW0N1c3RvbV0gdm9pZCBjaGFuZ2VWZXJzaW9uKGluIERPTVN0cmluZyBvbGRWZXJzaW9uLCBp
biBET01TdHJpbmcgbmV3VmVyc2lvbiwgaW4gU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2sgY2Fs
bGJhY2spOworICAgICAgICBbQ3VzdG9tXSB2b2lkIHRyYW5zYWN0aW9uKGluIFNRTFRyYW5zYWN0
aW9uU3luY0NhbGxiYWNrIGNhbGxiYWNrKTsKKyAgICAgICAgW0N1c3RvbV0gdm9pZCByZWFkVHJh
bnNhY3Rpb24oaW4gU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2sgY2FsbGJhY2spOworICAgIH07
CisKK30KSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9TUUxFcnJvci5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdG9yYWdlL1NRTEVycm9yLmlkbAkocmV2aXNpb24gNTg4MDcpCisrKyBXZWJDb3Jl
L3N0b3JhZ2UvU1FMRXJyb3IuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw4IEBAIG1v
ZHVsZSBzdG9yYWdlIHsKIAogICAgIGludGVyZmFjZSBbCiAgICAgICAgIENvbmRpdGlvbmFsPURB
VEFCQVNFLAotICAgICAgICBPbWl0Q29uc3RydWN0b3IKKyAgICAgICAgT21pdENvbnN0cnVjdG9y
LAorICAgICAgICBOb1N0YXRpY1RhYmxlcwogICAgIF0gU1FMRXJyb3IgewogICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBjb2RlOwogICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIG1lc3NhZ2U7CkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvU1FMUmVzdWx0
U2V0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU1FMUmVzdWx0U2V0LmlkbAko
cmV2aXNpb24gNTg4MDcpCisrKyBXZWJDb3JlL3N0b3JhZ2UvU1FMUmVzdWx0U2V0LmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNyArMzAsOCBAQCBtb2R1bGUgc3RvcmFnZSB7CiAKICAgICBpbnRl
cmZhY2UgWwogICAgICAgICBDb25kaXRpb25hbD1EQVRBQkFTRSwKLSAgICAgICAgT21pdENvbnN0
cnVjdG9yCisgICAgICAgIE9taXRDb25zdHJ1Y3RvciwKKyAgICAgICAgTm9TdGF0aWNUYWJsZXMK
ICAgICBdIFNRTFJlc3VsdFNldCB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTUUxSZXN1
bHRTZXRSb3dMaXN0IHJvd3M7CiAKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9TUUxSZXN1bHRTZXRS
b3dMaXN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU1FMUmVzdWx0U2V0Um93
TGlzdC5pZGwJKHJldmlzaW9uIDU4ODA3KQorKysgV2ViQ29yZS9zdG9yYWdlL1NRTFJlc3VsdFNl
dFJvd0xpc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw4IEBAIG1vZHVsZSBzdG9y
YWdlIHsKIAogICAgIGludGVyZmFjZSBbCiAgICAgICAgIENvbmRpdGlvbmFsPURBVEFCQVNFLAot
ICAgICAgICBPbWl0Q29uc3RydWN0b3IKKyAgICAgICAgT21pdENvbnN0cnVjdG9yLAorICAgICAg
ICBOb1N0YXRpY1RhYmxlcwogICAgIF0gU1FMUmVzdWx0U2V0Um93TGlzdCB7CiAgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICAgICAgW0N1c3RvbV0g
RE9NT2JqZWN0IGl0ZW0oaW4gdW5zaWduZWQgbG9uZyBpbmRleCk7CkluZGV4OiBXZWJDb3JlL3N0
b3JhZ2UvU1FMVHJhbnNhY3Rpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9T
UUxUcmFuc2FjdGlvbi5pZGwJKHJldmlzaW9uIDU4ODA3KQorKysgV2ViQ29yZS9zdG9yYWdlL1NR
TFRyYW5zYWN0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsOCBAQCBtb2R1bGUg
c3RvcmFnZSB7CiAKICAgICBpbnRlcmZhY2UgWwogICAgICAgICBDb25kaXRpb25hbD1EQVRBQkFT
RSwKLSAgICAgICAgT21pdENvbnN0cnVjdG9yCisgICAgICAgIE9taXRDb25zdHJ1Y3RvciwKKyAg
ICAgICAgTm9TdGF0aWNUYWJsZXMKICAgICBdIFNRTFRyYW5zYWN0aW9uIHsKICAgICAgICAgW0N1
c3RvbV0gdm9pZCBleGVjdXRlU3FsKGluIERPTVN0cmluZyBzcWxTdGF0ZW1lbnQsIGluIE9iamVj
dEFycmF5IGFyZ3VtZW50cywgaW4gU1FMU3RhdGVtZW50Q2FsbGJhY2sgY2FsbGJhY2ssIGluIFNR
TFN0YXRlbWVudEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7CiAgICAgfTsKSW5kZXg6IFdl
YkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmMuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmMuaWRsCShyZXZpc2lvbiAwKQorKysgV2ViQ29y
ZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luYy5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCittb2R1bGUgc3RvcmFnZSB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25k
aXRpb25hbD1EQVRBQkFTRSwKKyAgICAgICAgT21pdENvbnN0cnVjdG9yLAorICAgICAgICBOb1N0
YXRpY1RhYmxlcworICAgIF0gU1FMVHJhbnNhY3Rpb25TeW5jIHsKKyAgICAgICAgW0N1c3RvbV0g
U1FMUmVzdWx0U2V0IGV4ZWN1dGVTcWwoaW4gRE9NU3RyaW5nIHNxbFN0YXRlbWVudCwgaW4gT2Jq
ZWN0QXJyYXkgYXJndW1lbnRzKTsKKyAgICB9OworfQpJbmRleDogV2ViQ29yZS9zdG9yYWdlL1NR
TFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdl
L1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmgJKHJldmlzaW9uIDU4ODA3KQorKysgV2ViQ29y
ZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQyLDcgKzQyLDcgQEAgY2xhc3MgU1FMVHJhbnNhY3Rpb25TeW5jOwogY2xhc3MgU1FMVHJhbnNh
Y3Rpb25TeW5jQ2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxTUUxUcmFuc2FjdGlvblN5bmND
YWxsYmFjaz4gewogcHVibGljOgogICAgIHZpcnR1YWwgflNRTFRyYW5zYWN0aW9uU3luY0NhbGxi
YWNrKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBTUUxUcmFuc2FjdGlvblN5bmMqLCBib29sJiByYWlzZWRFeGNlcHRpb24pID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFNR
TFRyYW5zYWN0aW9uU3luYyopID0gMDsKIH07CiAKIH0KSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9T
UUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9y
YWdlL1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmlkbAkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5pZGwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBu
YW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisg
KiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCittb2R1bGUgc3RvcmFnZSB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAg
ICAgQ29uZGl0aW9uYWw9REFUQUJBU0UsCisgICAgICAgIENhbGxiYWNrCisgICAgXSBTUUxUcmFu
c2FjdGlvblN5bmNDYWxsYmFjayB7CisgICAgICAgIGJvb2xlYW4gaGFuZGxlRXZlbnQoaW4gU1FM
VHJhbnNhY3Rpb25TeW5jIHRyYW5zYWN0aW9uKTsKKyAgICB9OworfQpJbmRleDogV2ViQ29yZS93
b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvd29ya2Vycy9X
b3JrZXJDb250ZXh0LmNwcAkocmV2aXNpb24gNTg4MDcpCisrKyBXZWJDb3JlL3dvcmtlcnMvV29y
a2VyQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4MSw2ICsyODEsMjAgQEAgUGFzc1Jl
ZlB0cjxEYXRhYmFzZT4gV29ya2VyQ29udGV4dDo6b3BlbgogCiAgICAgcmV0dXJuIERhdGFiYXNl
OjpvcGVuRGF0YWJhc2UodGhpcywgbmFtZSwgdmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGltYXRl
ZFNpemUsIGNyZWF0aW9uQ2FsbGJhY2ssIGVjKTsKIH0KKworUGFzc1JlZlB0cjxEYXRhYmFzZVN5
bmM+IFdvcmtlckNvbnRleHQ6Om9wZW5EYXRhYmFzZVN5bmMoY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIHZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVk
IGxvbmcgZXN0aW1hdGVkU2l6ZSwgUGFzc1JlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiBjcmVhdGlv
bkNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIXNlY3VyaXR5T3JpZ2lu
KCktPmNhbkFjY2Vzc0RhdGFiYXNlKCkpIHsKKyAgICAgICAgZWMgPSBTRUNVUklUWV9FUlI7Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIEFTU0VSVChEYXRhYmFzZVN5bmM6OmlzQXZh
aWxhYmxlKCkpOworICAgIGlmICghRGF0YWJhc2VTeW5jOjppc0F2YWlsYWJsZSgpKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIHJldHVybiBEYXRhYmFzZVN5bmM6Om9wZW5EYXRhYmFzZVN5bmMo
dGhpcywgbmFtZSwgdmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUsIGNyZWF0aW9u
Q2FsbGJhY2ssIGVjKTsKK30KICNlbmRpZgogCiBib29sIFdvcmtlckNvbnRleHQ6OmlzQ29udGV4
dFRocmVhZCgpIGNvbnN0CkluZGV4OiBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgJKHJldmlzaW9uIDU4
ODA3KQorKysgV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiQXRvbWljU3RyaW5nSGFzaC5oIgogI2luY2x1
ZGUgIkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VTeW5jLmgiCiAjaW5jbHVkZSAiRGF0
YWJhc2VDYWxsYmFjay5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJF
dmVudE5hbWVzLmgiCkBAIC0xMDUsNiArMTA2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lm
IEVOQUJMRShEQVRBQkFTRSkKICAgICAgICAgLy8gSFRNTCA1IGNsaWVudC1zaWRlIGRhdGFiYXNl
CiAgICAgICAgIFBhc3NSZWZQdHI8RGF0YWJhc2U+IG9wZW5EYXRhYmFzZShjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwg
dW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+
IGNyZWF0aW9uQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgUGFzc1JlZlB0cjxE
YXRhYmFzZVN5bmM+IG9wZW5EYXRhYmFzZVN5bmMoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIHZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcg
ZXN0aW1hdGVkU2l6ZSwgUGFzc1JlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiBjcmVhdGlvbkNhbGxi
YWNrLCBFeGNlcHRpb25Db2RlJik7CisKICAgICAgICAgLy8gTm90IGltcGxlbWVudGVkIHlldC4K
ICAgICAgICAgdmlydHVhbCBib29sIGlzRGF0YWJhc2VSZWFkT25seSgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgICAgIC8vIE5vdCBpbXBsZW1lbnRlZCB5ZXQuCkluZGV4OiBXZWJDb3Jl
L3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93b3JrZXJz
L1dvcmtlckNvbnRleHQuaWRsCShyZXZpc2lvbiA1ODgwNykKKysrIFdlYkNvcmUvd29ya2Vycy9X
b3JrZXJDb250ZXh0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDksOCArNDksMTEgQEAgbW9kdWxl
IHRocmVhZHMgewogICAgICAgICAvLyBXb3JrZXJVdGlscwogICAgICAgICBbQ3VzdG9tXSB2b2lk
IGltcG9ydFNjcmlwdHMoLypbVmFyaWFkaWNdIGluIERPTVN0cmluZyB1cmxzICovKTsKICAgICAg
ICAgICAgICAgICAgYXR0cmlidXRlIFtSZXBsYWNlYWJsZV0gV29ya2VyTmF2aWdhdG9yIG5hdmln
YXRvcjsKKworI2lmIGRlZmluZWQoRU5BQkxFX0RBVEFCQVNFKSAmJiBFTkFCTEVfREFUQUJBU0UK
ICAgICAgICAgLy8gRGF0YWJhc2Ugb3BlbkRhdGFiYXNlKGluIERPTVN0cmluZyBuYW1lLCBpbiBE
T01TdHJpbmcgdmVyc2lvbiwgaW4gRE9NU3RyaW5nIGRpc3BsYXlOYW1lLCBpbiB1bnNpZ25lZCBs
b25nIGVzdGltYXRlZFNpemUpOwotICAgICAgICAvLyBEYXRhYmFzZVN5bmMgb3BlbkRhdGFiYXNl
U3luYyhpbiBET01TdHJpbmcgbmFtZSwgaW4gRE9NU3RyaW5nIHZlcnNpb24sIGluIERPTVN0cmlu
ZyBkaXNwbGF5TmFtZSwgaW4gdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKTsKKyAgICAgICAg
W0VuYWJsZUF0UnVudGltZSwgQ3VzdG9tXSBEYXRhYmFzZVN5bmMgb3BlbkRhdGFiYXNlU3luYyhp
biBET01TdHJpbmcgbmFtZSwgaW4gRE9NU3RyaW5nIHZlcnNpb24sIGluIERPTVN0cmluZyBkaXNw
bGF5TmFtZSwgaW4gdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBpbiBEYXRhYmFzZUNhbGxi
YWNrIGNyZWF0aW9uQ2FsbGJhY2spOworI2VuZGlmCiAKICAgICAgICAgLy8gVGltZXJzCiAgICAg
ICAgIFtDdXN0b21dIGxvbmcgc2V0VGltZW91dChpbiBUaW1lb3V0SGFuZGxlciBoYW5kbGVyLCBp
biBsb25nIHRpbWVvdXQpOwo=
</data>
<flag name="commit-queue"
          id="39205"
          type_id="3"
          status="-"
          setter="dumi"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55105</attachid>
            <date>2010-05-05 04:35:50 -0700</date>
            <delta_ts>2010-05-05 05:17:39 -0700</delta_ts>
            <desc>patch #2: IDL files + JSC and V8 bindings</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>69044</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
RGVyaXZlZFNvdXJjZXMuY3BwCShyZXZpc2lvbiA1ODgwNykKKysrIFdlYkNvcmUvRGVyaXZlZFNv
dXJjZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSw3IEBACiAjaW5jbHVkZSAiSlND
dXN0b21FdmVudC5jcHAiCiAjaW5jbHVkZSAiSlNEYXRhYmFzZS5jcHAiCiAjaW5jbHVkZSAiSlNE
YXRhYmFzZUNhbGxiYWNrLmNwcCIKKyNpbmNsdWRlICJKU0RhdGFiYXNlU3luYy5jcHAiCiAjaW5j
bHVkZSAiSlNEYXRhR3JpZENvbHVtbi5jcHAiCiAjaW5jbHVkZSAiSlNEYXRhR3JpZENvbHVtbkxp
c3QuY3BwIgogI2luY2x1ZGUgIkpTRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAiCkBAIC0yMTAs
NiArMjExLDggQEAKICNpbmNsdWRlICJKU1NRTFRyYW5zYWN0aW9uLmNwcCIKICNpbmNsdWRlICJK
U1NRTFRyYW5zYWN0aW9uQ2FsbGJhY2suY3BwIgogI2luY2x1ZGUgIkpTU1FMVHJhbnNhY3Rpb25F
cnJvckNhbGxiYWNrLmNwcCIKKyNpbmNsdWRlICJKU1NRTFRyYW5zYWN0aW9uU3luYy5jcHAiCisj
aW5jbHVkZSAiSlNTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5jcHAiCiAjaW5jbHVkZSAiSlNT
dG9yYWdlLmNwcCIKICNpbmNsdWRlICJKU1N0b3JhZ2VFdmVudC5jcHAiCiAjaW5jbHVkZSAiSlNT
dHlsZU1lZGlhLmNwcCIKSW5kZXg6IFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDU4ODA3KQorKysg
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNiArMTE2
LDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgRE9NV2luZG93IFwKICAgICBEYXRhYmFzZSBcCiAg
ICAgRGF0YWJhc2VDYWxsYmFjayBcCisgICAgRGF0YWJhc2VTeW5jIFwKICAgICBEb2N1bWVudCBc
CiAgICAgRG9jdW1lbnRGcmFnbWVudCBcCiAgICAgRG9jdW1lbnRUeXBlIFwKQEAgLTI1NCw2ICsy
NTUsOCBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBTUUxUcmFuc2FjdGlvbiBcCiAgICAgU1FMVHJh
bnNhY3Rpb25DYWxsYmFjayBcCiAgICAgU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrIFwKKyAg
ICBTUUxUcmFuc2FjdGlvblN5bmMgXAorICAgIFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrIFwK
ICAgICBTdG9yYWdlIFwKICAgICBTdG9yYWdlRXZlbnQgXAogICAgIFNWR0FFbGVtZW50IFwKSW5k
ZXg6IFdlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9HTlVtYWtl
ZmlsZS5hbQkocmV2aXNpb24gNTg4MDcpCisrKyBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMzA1LDE0ICsyMzA1LDE4IEBAIEZFQVRVUkVfREVGSU5FUyArPSBFTkFC
TEVfREFUQUJBU0U9MQogSURMX0JJTkRJTkdTICs9IFwKIAlXZWJDb3JlL3N0b3JhZ2UvRGF0YWJh
c2UuaWRsIFwKIAlXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VDYWxsYmFjay5pZGwgXAorCVdlYkNv
cmUvc3RvcmFnZS9EYXRhYmFzZVN5bmMuaWRsIFwKIAlXZWJDb3JlL3N0b3JhZ2UvU1FMRXJyb3Iu
aWRsIFwKIAlXZWJDb3JlL3N0b3JhZ2UvU1FMUmVzdWx0U2V0LmlkbCBcCiAJV2ViQ29yZS9zdG9y
YWdlL1NRTFJlc3VsdFNldFJvd0xpc3QuaWRsIFwKIAlXZWJDb3JlL3N0b3JhZ2UvU1FMU3RhdGVt
ZW50Q2FsbGJhY2suaWRsIFwKIAlXZWJDb3JlL3N0b3JhZ2UvU1FMU3RhdGVtZW50RXJyb3JDYWxs
YmFjay5pZGwgXAogCVdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5pZGwgXAorCVdlYkNv
cmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5pZGwgXAogCVdlYkNvcmUvc3RvcmFnZS9TUUxUcmFu
c2FjdGlvbkNhbGxiYWNrLmlkbCBcCi0JV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uRXJy
b3JDYWxsYmFjay5pZGwKKwlXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxi
YWNrLmlkbCBcCisJV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luYy5pZGwgXAorCVdl
YkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5pZGwKIAogd2ViY29yZV9j
cHBmbGFncyArPSBcCiAJLURFTkFCTEVfREFUQUJBU0U9MQpAQCAtMjMyMCw4ICsyMzI0LDEwIEBA
IHdlYmNvcmVfY3BwZmxhZ3MgKz0gXAogd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5jcHAgXAogCVdlYkNv
cmUvYmluZGluZ3MvanMvSlNEYXRhYmFzZUN1c3RvbS5jcHAgXAorCVdlYkNvcmUvYmluZGluZ3Mv
anMvSlNEYXRhYmFzZVN5bmNDdXN0b20uY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FM
UmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxU
cmFuc2FjdGlvbkN1c3RvbS5jcHAgXAorCVdlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2Fj
dGlvblN5bmNDdXN0b20uY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxWYWx1ZS5jcHAg
XAogCVdlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTFZhbHVlLmggXAogCVdlYkNvcmUvcGxhdGZvcm0v
c3FsL1NRTGl0ZUF1dGhvcml6ZXIuY3BwIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5neXBpCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA1ODgwNykKKysrIFdl
YkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0yMTksNiArMjE5LDcgQEAKICAg
ICAgICAgICAgICdwbHVnaW5zL1BsdWdpbkFycmF5LmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFn
ZS9EYXRhYmFzZS5pZGwnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvRGF0YWJhc2VDYWxsYmFjay5p
ZGwnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvRGF0YWJhc2VTeW5jLmlkbCcsCiAgICAgICAgICAg
ICAnc3RvcmFnZS9JREJEYXRhYmFzZUVycm9yLmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9J
REJEYXRhYmFzZUV4Y2VwdGlvbi5pZGwnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURCRGF0YWJh
c2VSZXF1ZXN0LmlkbCcsCkBAIC0yMzEsNiArMjMyLDggQEAKICAgICAgICAgICAgICdzdG9yYWdl
L1NRTFRyYW5zYWN0aW9uLmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9TUUxUcmFuc2FjdGlv
bkNhbGxiYWNrLmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkVycm9y
Q2FsbGJhY2suaWRsJywKKyAgICAgICAgICAgICdzdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luYy5p
ZGwnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaWRs
JywKICAgICAgICAgICAgICdzdG9yYWdlL1N0b3JhZ2UuaWRsJywKICAgICAgICAgICAgICdzdG9y
YWdlL1N0b3JhZ2VFdmVudC5pZGwnLAogICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0
LmlkbCcsCkBAIC01MDcsNiArNTEwLDcgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0N1
c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTQ3Vz
dG9tWFBhdGhOU1Jlc29sdmVyLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRGF0YWJh
c2VDdXN0b20uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RhdGFiYXNlU3luY0N1
c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRGF0YUdyaWRDb2x1bW5MaXN0
Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNEYXRhR3JpZERhdGFTb3Vy
Y2UuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RhdGFHcmlkRGF0YVNvdXJjZS5o
JywKQEAgLTYwMSw2ICs2MDUsNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTU2NyaXB0
UHJvZmlsZU5vZGVDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1NRTFJl
c3VsdFNldFJvd0xpc3RDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1NR
TFRyYW5zYWN0aW9uQ3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNTUUxU
cmFuc2FjdGlvblN5bmNDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1N0
b3JhZ2VDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0
b20uaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcCcs
CkBAIC03MTIsNiArNzE3LDcgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhD
dXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0
b20vVjhDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RGF0YWJhc2VDdXN0b20uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9j
dXN0b20vVjhEYXRhYmFzZVN5bmNDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92
OC9jdXN0b20vVjhEYXRhR3JpZENvbHVtbkxpc3RDdXN0b20uY3BwJywKICAgICAgICAgICAgICdi
aW5kaW5ncy92OC9jdXN0b20vVjhEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRMb2NhdGlvbkN1c3RvbS5j
cHAnLApAQCAtNzY1LDYgKzc3MSw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9t
L1Y4U3RvcmFnZUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OFNRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92
OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAnLAorICAgICAgICAgICAgJ2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHAnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0RvY3VtZW50Q3VzdG9tLmNwcCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHRWxlbWVudEN1c3RvbS5jcHAnLAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0xlbmd0aEN1c3RvbS5jcHAnLApJbmRleDog
V2ViQ29yZS9XZWJDb3JlLnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUucHJpCShy
ZXZpc2lvbiA1ODgwNykKKysrIFdlYkNvcmUvV2ViQ29yZS5wcmkJKHdvcmtpbmcgY29weSkKQEAg
LTQzNyw2ICs0MzcsNyBAQCBJRExfQklORElOR1MgKz0gXAogICAgIHBsdWdpbnMvTWltZVR5cGVB
cnJheS5pZGwgXAogICAgIHN0b3JhZ2UvRGF0YWJhc2UuaWRsIFwKICAgICBzdG9yYWdlL0RhdGFi
YXNlQ2FsbGJhY2suaWRsIFwKKyAgICBzdG9yYWdlL0RhdGFiYXNlU3luYy5pZGwgXAogICAgIHN0
b3JhZ2UvU3RvcmFnZS5pZGwgXAogICAgIHN0b3JhZ2UvU3RvcmFnZUV2ZW50LmlkbCBcCiAgICAg
c3RvcmFnZS9TUUxFcnJvci5pZGwgXApAQCAtNDQ3LDYgKzQ0OCw4IEBAIElETF9CSU5ESU5HUyAr
PSBcCiAgICAgc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5pZGwgXAogICAgIHN0b3JhZ2UvU1FMVHJh
bnNhY3Rpb25DYWxsYmFjay5pZGwgXAogICAgIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb25FcnJvckNh
bGxiYWNrLmlkbCBcCisgICAgc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmMuaWRsIFwKKyAgICBz
dG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmlkbCBcCiAgICAgc3ZnL1NWR1pvb21F
dmVudC5pZGwgXAogICAgIHN2Zy9TVkdBRWxlbWVudC5pZGwgXAogICAgIHN2Zy9TVkdBbHRHbHlw
aEVsZW1lbnQuaWRsIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gNTg4MDcpCisrKyBXZWJDb3JlL1dlYkNvcmUu
cHJvCSh3b3JraW5nIGNvcHkpCkBAIC0yMzAwLDggKzIzMDAsMTAgQEAgY29udGFpbnMoREVGSU5F
UywgRU5BQkxFX0RBVEFCQVNFPTEpIHsKICAgICAgICAgc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5
bmMuY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNh
bGxiYWNrLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTRGF0YWJhc2VDdXN0b20uY3BwIFwK
KyAgICAgICAgYmluZGluZ3MvanMvSlNEYXRhYmFzZVN5bmNDdXN0b20uY3BwIFwKICAgICAgICAg
YmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcCBcCi0gICAgICAgIGJp
bmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwCisgICAgICAgIGJpbmRpbmdzL2pz
L0pTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwIFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNTUUxU
cmFuc2FjdGlvblN5bmNDdXN0b20uY3BwCiB9CiAKIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9E
T01fU1RPUkFHRT0xKSB7CkBAIC0yMzI1LDYgKzIzMjcsNyBAQCBjb250YWlucyhERUZJTkVTLCBF
TkFCTEVfRE9NX1NUT1JBR0U9MSkgCiAgICAgICAgIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DbGll
bnQuaCBcCiAgICAgICAgIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5oIFwKICAg
ICAgICAgc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmMuaCBcCisgICAgICAgIHN0b3JhZ2UvU1FM
VHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaCBcCiAgICAgICAgIHN0b3JhZ2UvU3RvcmFnZUFyZWEu
aCBcCiAgICAgICAgIHN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmggXAogICAgICAgICBzdG9yYWdl
L1N0b3JhZ2VBcmVhU3luYy5oIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagkocmV2aXNpb24gNTg4MDcpCisrKyBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNTEzLDYgKzI1MTMsNjIgQEAKIAkJCQk+DQogCQkJ
PC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIp
XG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0RhdGFiYXNlU3luYy5jcHAiDQor
CQkJCT4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIN
CisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJ
CQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFdp
bjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9v
bA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVn
X0ludGVybmFsfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+
DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0K
KwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJ
CU5hbWU9IkRlYnVnX0NhaXJvfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUi
DQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQor
CQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24NCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm98V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxl
Q29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIg0KKwkJCQkJRXhjbHVk
ZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJ
CTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGly
KVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNEYXRhYmFzZVN5bmMuaCINCisJ
CQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0
T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNEYXRhR3JpZENv
bHVtbi5jcHAiDQogCQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQpAQCAtMTAyNzgsNiAr
MTAzMzQsNjIgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZl
UGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialxXZWJDb3JlXERlcml2ZWRTb3VyY2VzXEpTU1FM
VHJhbnNhY3Rpb25TeW5jLmNwcCINCisJCQkJPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJ
CQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQor
CQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJ
CQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24N
CisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIN
CisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJh
dGlvbg0KKwkJCQkJTmFtZT0iRGVidWdfSW50ZXJuYWx8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxG
aWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm98V2luMzIiDQorCQkJCQlF
eGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+
DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb3xXaW4z
MiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wN
CisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z19B
bGx8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJ
CTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZl
UGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialxXZWJDb3JlXERlcml2ZWRTb3VyY2VzXEpTU1FM
VHJhbnNhY3Rpb25TeW5jLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJ
UmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXEpTU3RvcmFnZS5jcHAiDQogCQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9u
DQpAQCAtMzU2OTEsNiArMzU4MDMsNTggQEAKIAkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCiAJ
CQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xq
c1xKU0RhdGFiYXNlU3luY0N1c3RvbS5jcHAiDQorCQkJCQk+DQorCQkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxG
aWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z19JbnRlcm5h
bHxXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJ
CQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJ
CU5hbWU9IkRlYnVnX0NhaXJvfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVl
Ig0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
Ig0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25m
aWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb3xXaW4zMiINCisJCQkJCQlFeGNs
dWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4z
MiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRv
b2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0RhdGFHcmlkQ29sdW1uTGlzdEN1c3RvbS5jcHAiDQog
CQkJCQk+DQogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCkBAIC0zODk3MSw2ICszOTEzNSw1OCBA
QAogCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQor
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTU1FMVHJhbnNhY3Rpb25TeW5jQ3Vz
dG9tLmNwcCINCisJCQkJCT4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9
IkRlYnVnfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4N
CisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+
DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQor
CQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnX0ludGVybmFsfFdpbjMyIg0KKwkJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWdfQ2Fpcm98
V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJ
CTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlO
YW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVl
Ig0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
Ig0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25m
aWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVk
RnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0K
KwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdz
XGpzXEpTU3RvcmFnZUN1c3RvbS5jcHAiDQogCQkJCQk+DQogCQkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24NCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gNTg4MDcpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtNDE2OCw2ICs0MTY4LDE0IEBACiAJCUI1MjNDRjA5MTE4MjY3
NTQwMEVCQjI5QyAvKiBTUUxUcmFuc2FjdGlvblN5bmMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjUyM0NGMDIxMTgyNjc1NDAwRUJCMjlDIC8qIFNR
TFRyYW5zYWN0aW9uU3luYy5jcHAgKi87IH07CiAJCUI1MjNDRjBBMTE4MjY3NTQwMEVCQjI5QyAv
KiBEYXRhYmFzZVN5bmMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjUyM0NGMDMxMTgyNjc1NDAwRUJCMjlDIC8qIERhdGFiYXNlU3luYy5jcHAgKi87
IH07CiAJCUI1MjNDRjBCMTE4MjY3NTQwMEVCQjI5QyAvKiBEYXRhYmFzZVN5bmMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1MjNDRjA0MTE4MjY3NTQw
MEVCQjI5QyAvKiBEYXRhYmFzZVN5bmMuaCAqLzsgfTsKKwkJQjU1RDVBQTQxMTkxMzFGQzAwQkND
MzE1IC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1NUQ1QUEyMTE5MTMxRkMwMEJDQzMxNSAvKiBK
U1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmggKi87IH07CisJCUI1NUQ1QUE1MTE5MTMxRkMw
MEJDQzMxNSAvKiBKU1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1NUQ1QUEzMTE5MTMxRkMwMEJDQzMx
NSAvKiBKU1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmNwcCAqLzsgfTsKKwkJQjU1RDVBQTgx
MTkxMzI1MDAwQkNDMzE1IC8qIEpTRGF0YWJhc2VTeW5jQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1NUQ1QUE2MTE5MTMyNTAwMEJDQzMx
NSAvKiBKU0RhdGFiYXNlU3luY0N1c3RvbS5jcHAgKi87IH07CisJCUI1NUQ1QUE5MTE5MTMyNTAw
MEJDQzMxNSAvKiBKU1NRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNTVENUFBNzExOTEzMjUwMDBCQ0MzMTUg
LyogSlNTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwICovOyB9OworCQlCNThDRUI2OTExOTEz
NjA3MDAyQTY3OTAgLyogSlNEYXRhYmFzZVN5bmMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1OENFQjY3MTE5MTM2MDcwMDJBNjc5MCAvKiBKU0RhdGFi
YXNlU3luYy5oICovOyB9OworCQlCNThDRUI2QTExOTEzNjA3MDAyQTY3OTAgLyogSlNEYXRhYmFz
ZVN5bmMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjU4Q0VCNjgxMTkxMzYwNzAwMkE2NzkwIC8qIEpTRGF0YWJhc2VTeW5jLmNwcCAqLzsgfTsKKwkJ
QjU4Q0VCNkQxMTkxMzYxQzAwMkE2NzkwIC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5jLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNThDRUI2QjExOTEzNjFD
MDAyQTY3OTAgLyogSlNTUUxUcmFuc2FjdGlvblN5bmMuaCAqLzsgfTsKKwkJQjU4Q0VCNkUxMTkx
MzYxQzAwMkE2NzkwIC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5jLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1OENFQjZDMTE5MTM2MUMwMDJBNjc5MCAv
KiBKU1NRTFRyYW5zYWN0aW9uU3luYy5jcHAgKi87IH07CiAJCUI1OURENjk5MTE5MDI5RTUwMDdF
OTY4NCAvKiBKU0RhdGFiYXNlQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEI1OURENjk3MTE5MDI5RTUwMDdFOTY4NCAvKiBKU0RhdGFiYXNl
Q2FsbGJhY2suaCAqLzsgfTsKIAkJQjU5REQ2OUExMTkwMjlFNTAwN0U5Njg0IC8qIEpTRGF0YWJh
c2VDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCNTlERDY5ODExOTAyOUU1MDA3RTk2ODQgLyogSlNEYXRhYmFzZUNhbGxiYWNrLmNwcCAq
LzsgfTsKIAkJQjU5REQ2OUQxMTkwMkE0MjAwN0U5Njg0IC8qIEpTU1FMVHJhbnNhY3Rpb25DYWxs
YmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjU5
REQ2OUIxMTkwMkE0MjAwN0U5Njg0IC8qIEpTU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5oICovOyB9
OwpAQCAtOTUyOCw2ICs5NTM2LDE3IEBACiAJCUI1MjNDRjAyMTE4MjY3NTQwMEVCQjI5QyAvKiBT
UUxUcmFuc2FjdGlvblN5bmMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU1FMVHJhbnNhY3Rpb25TeW5jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QjUyM0NGMDMxMTgyNjc1NDAwRUJCMjlDIC8qIERhdGFiYXNlU3luYy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRhYmFzZVN5bmMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCNTIzQ0YwNDExODI2NzU0MDBFQkIyOUMgLyogRGF0YWJhc2VTeW5j
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFiYXNlU3luYy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCNTVENUFBMjExOTEzMUZDMDBCQ0MzMTUgLyogSlNT
UUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUI1NUQ1QUEzMTE5MTMxRkMwMEJDQzMxNSAvKiBKU1NRTFRyYW5zYWN0aW9uU3lu
Y0NhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1FM
VHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlCNTVENUFBNjExOTEzMjUwMDBCQ0MzMTUgLyogSlNEYXRhYmFzZVN5bmNDdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEYXRhYmFzZVN5bmNDdXN0b20u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCNTVENUFBNzExOTEzMjUwMDBCQ0Mz
MTUgLyogSlNTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlCNTVENUFCQjExOTEzMjcyMDBCQ0MzMTUgLyogRGF0YWJh
c2VTeW5jLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBEYXRhYmFzZVN5bmMuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCNTVENUFCQzExOTEzMjcyMDBCQ0MzMTUgLyogU1FM
VHJhbnNhY3Rpb25TeW5jLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTUUxUcmFuc2FjdGlv
blN5bmMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCNTVENUFCRDExOTEzMjcy
MDBCQ0MzMTUgLyogU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQjU4Q0VCNjcxMTkxMzYwNzAwMkE2NzkwIC8qIEpTRGF0YWJhc2VTeW5j
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRGF0YWJhc2VTeW5jLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI1OENFQjY4MTE5MTM2MDcwMDJBNjc5MCAvKiBK
U0RhdGFiYXNlU3luYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0RhdGFiYXNlU3luYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI1OENFQjZC
MTE5MTM2MUMwMDJBNjc5MCAvKiBKU1NRTFRyYW5zYWN0aW9uU3luYy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1NRTFRyYW5zYWN0aW9uU3luYy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlCNThDRUI2QzExOTEzNjFDMDAyQTY3OTAgLyogSlNTUUxUcmFuc2Fj
dGlvblN5bmMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTUUxU
cmFuc2FjdGlvblN5bmMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNTlERDY4
RDExOTAyOThFMDA3RTk2ODQgLyogRGF0YWJhc2VDYWxsYmFjay5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gRGF0YWJhc2VDYWxsYmFjay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUI1OURENjhFMTE5MDI5OEUwMDdFOTY4NCAvKiBTUUxTdGF0ZW1lbnRDYWxsYmFjay5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1FMU3RhdGVtZW50Q2FsbGJhY2suaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCNTlERDY4RjExOTAyOThFMDA3RTk2ODQgLyogU1FMU3Rh
dGVtZW50RXJyb3JDYWxsYmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1FMU3RhdGVt
ZW50RXJyb3JDYWxsYmFjay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDc3
NCw2ICsxMDc5Myw3IEBACiAJCQkJNTExNkQ5NzUwQ0YxNzdCRDAwQzJCODREIC8qIERhdGFiYXNl
RGV0YWlscy5oICovLAogCQkJCUI1MjNDRjAzMTE4MjY3NTQwMEVCQjI5QyAvKiBEYXRhYmFzZVN5
bmMuY3BwICovLAogCQkJCUI1MjNDRjA0MTE4MjY3NTQwMEVCQjI5QyAvKiBEYXRhYmFzZVN5bmMu
aCAqLywKKwkJCQlCNTVENUFCQjExOTEzMjcyMDBCQ0MzMTUgLyogRGF0YWJhc2VTeW5jLmlkbCAq
LywKIAkJCQk1MTk2MTFFOTBDQUM3NDlDMDAxMEE4MEMgLyogRGF0YWJhc2VUYXNrLmNwcCAqLywK
IAkJCQk1MTk2MTFFODBDQUM3NDlDMDAxMEE4MEMgLyogRGF0YWJhc2VUYXNrLmggKi8sCiAJCQkJ
NTE5NjExNjEwQ0FDNTY1NzAwMTBBODBDIC8qIERhdGFiYXNlVGhyZWFkLmNwcCAqLywKQEAgLTEw
ODE2LDcgKzEwODM2LDkgQEAKIAkJCQlCNTlERDY5MTExOTAyOThFMDA3RTk2ODQgLyogU1FMVHJh
bnNhY3Rpb25FcnJvckNhbGxiYWNrLmlkbCAqLywKIAkJCQlCNTIzQ0YwMjExODI2NzU0MDBFQkIy
OUMgLyogU1FMVHJhbnNhY3Rpb25TeW5jLmNwcCAqLywKIAkJCQlCNTIzQ0YwMTExODI2NzU0MDBF
QkIyOUMgLyogU1FMVHJhbnNhY3Rpb25TeW5jLmggKi8sCisJCQkJQjU1RDVBQkMxMTkxMzI3MjAw
QkNDMzE1IC8qIFNRTFRyYW5zYWN0aW9uU3luYy5pZGwgKi8sCiAJCQkJQjUyM0NFRkYxMTgyNjc1
NDAwRUJCMjlDIC8qIFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmggKi8sCisJCQkJQjU1RDVB
QkQxMTkxMzI3MjAwQkNDMzE1IC8qIFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmlkbCAqLywK
IAkJCQk1MUUzRjlDNTBEQTA1OURDMDAyNTA5MTEgLyogU3RvcmFnZS5jcHAgKi8sCiAJCQkJNTFF
M0Y5QzQwREEwNTlEQzAwMjUwOTExIC8qIFN0b3JhZ2UuaCAqLywKIAkJCQk1MUUzRjlEMTBEQTA1
RDcxMDAyNTA5MTEgLyogU3RvcmFnZS5pZGwgKi8sCkBAIC0xNDEwMSw2ICsxNDEyMywxMiBAQAog
CQkJCUI1OURENkE0MTE5MDJBNjIwMDdFOTY4NCAvKiBKU1NRTFN0YXRlbWVudENhbGxiYWNrLmNw
cCAqLywKIAkJCQlCNTlERDZBNzExOTAyQTcxMDA3RTk2ODQgLyogSlNTUUxTdGF0ZW1lbnRFcnJv
ckNhbGxiYWNrLmggKi8sCiAJCQkJQjU5REQ2QTgxMTkwMkE3MTAwN0U5Njg0IC8qIEpTU1FMU3Rh
dGVtZW50RXJyb3JDYWxsYmFjay5jcHAgKi8sCisJCQkJQjU1RDVBQTIxMTkxMzFGQzAwQkNDMzE1
IC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaCAqLywKKwkJCQlCNTVENUFBMzExOTEz
MUZDMDBCQ0MzMTUgLyogSlNTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5jcHAgKi8sCisJCQkJ
QjU4Q0VCNjcxMTkxMzYwNzAwMkE2NzkwIC8qIEpTRGF0YWJhc2VTeW5jLmggKi8sCisJCQkJQjU4
Q0VCNjgxMTkxMzYwNzAwMkE2NzkwIC8qIEpTRGF0YWJhc2VTeW5jLmNwcCAqLywKKwkJCQlCNThD
RUI2QjExOTEzNjFDMDAyQTY3OTAgLyogSlNTUUxUcmFuc2FjdGlvblN5bmMuaCAqLywKKwkJCQlC
NThDRUI2QzExOTEzNjFDMDAyQTY3OTAgLyogSlNTUUxUcmFuc2FjdGlvblN5bmMuY3BwICovLAog
CQkJKTsKIAkJCW5hbWUgPSBTdG9yYWdlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAg
LTE1MDQ1LDYgKzE1MDczLDggQEAKIAkJQkM0RURFRjcwQzA4RjQxNDAwN0VERDQ5IC8qIEN1c3Rv
bSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQjU1RDVB
QTYxMTkxMzI1MDAwQkNDMzE1IC8qIEpTRGF0YWJhc2VTeW5jQ3VzdG9tLmNwcCAqLywKKwkJCQlC
NTVENUFBNzExOTEzMjUwMDBCQ0MzMTUgLyogSlNTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3Bw
ICovLAogCQkJCUJDMkVENkJCMEM2QkQyRjAwMDkyMEJGRiAvKiBKU0F0dHJDdXN0b20uY3BwICov
LAogCQkJCTQ5RUVEMTRCMTA1MTk3MTkwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREN1c3RvbS5jcHAgKi8sCiAJCQkJNDlFRUQxNEQxMDUxOTcxQTAwMDk5RkFCIC8qIEpTQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgKi8sCkBAIC0xODk0OSw2ICsxODk3OSw5IEBA
CiAJCQkJQjU5REQ2QTExMTkwMkE1MjAwN0U5Njg0IC8qIEpTU1FMVHJhbnNhY3Rpb25FcnJvckNh
bGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlCNTlERDZBNTExOTAyQTYyMDA3RTk2ODQgLyog
SlNTUUxTdGF0ZW1lbnRDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjU5REQ2QTkxMTkw
MkE3MTAwN0U5Njg0IC8qIEpTU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQjU1RDVBQTQxMTkxMzFGQzAwQkNDMzE1IC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5j
Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCUI1OENFQjY5MTE5MTM2MDcwMDJBNjc5MCAv
KiBKU0RhdGFiYXNlU3luYy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjU4Q0VCNkQxMTkxMzYxQzAw
MkE2NzkwIC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5jLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIxMTkx
LDYgKzIxMjI0LDExIEBACiAJCQkJQjU5REQ2QTIxMTkwMkE1MjAwN0U5Njg0IC8qIEpTU1FMVHJh
bnNhY3Rpb25FcnJvckNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI1OURENkE2MTE5
MDJBNjIwMDdFOTY4NCAvKiBKU1NRTFN0YXRlbWVudENhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUI1OURENkFBMTE5MDJBNzEwMDdFOTY4NCAvKiBKU1NRTFN0YXRlbWVudEVycm9yQ2Fs
bGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjU1RDVBQTUxMTkxMzFGQzAwQkNDMzE1IC8q
IEpTU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjU1
RDVBQTgxMTkxMzI1MDAwQkNDMzE1IC8qIEpTRGF0YWJhc2VTeW5jQ3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUI1NUQ1QUE5MTE5MTMyNTAwMEJDQzMxNSAvKiBKU1NRTFRyYW5zYWN0aW9u
U3luY0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCNThDRUI2QTExOTEzNjA3MDAyQTY3
OTAgLyogSlNEYXRhYmFzZVN5bmMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjU4Q0VCNkUxMTkx
MzYxQzAwMkE2NzkwIC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5jLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAkocmV2aXNp
b24gNTg4MDcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJKU0RhdGFHcmlkQ29s
dW1uTGlzdEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNEYXRhR3JpZERhdGFTb3VyY2UuY3BwIgog
I2luY2x1ZGUgIkpTRGF0YWJhc2VDdXN0b20uY3BwIgorI2luY2x1ZGUgIkpTRGF0YWJhc2VTeW5j
Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0RlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3Bw
IgogI2luY2x1ZGUgIkpTRGVza3RvcE5vdGlmaWNhdGlvbnNDdXN0b20uY3BwIgogI2luY2x1ZGUg
IkpTRG9jdW1lbnRDdXN0b20uY3BwIgpAQCAtMTAyLDYgKzEwMyw3IEBACiAjaW5jbHVkZSAiSlNQ
bHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcCIKICNpbmNsdWRlICJKU1NRTFJlc3VsdFNldFJvd0xp
c3RDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwIgorI2lu
Y2x1ZGUgIkpTU1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1NWR0Vs
ZW1lbnRJbnN0YW5jZUN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNTVkdMZW5ndGhDdXN0b20uY3Bw
IgogI2luY2x1ZGUgIkpTU1ZHTWF0cml4Q3VzdG9tLmNwcCIKSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiA1ODgwNykKKysrIFdlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Njcs
MTMgKzk2NywyMiBAQCBKU1ZhbHVlIEpTRE9NV2luZG93OjpyZW1vdmVFdmVudExpc3RlbmVyCiAj
aWYgRU5BQkxFKERBVEFCQVNFKQogSlNWYWx1ZSBKU0RPTVdpbmRvdzo6b3BlbkRhdGFiYXNlKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKIHsKLSAgICBpZiAoIWFsbG93c0Fj
Y2Vzc0Zyb20oZXhlYykgfHwgKGFyZ3Muc2l6ZSgpIDwgNCkpCisgICAgaWYgKCFhbGxvd3NBY2Nl
c3NGcm9tKGV4ZWMpIHx8IChhcmdzLnNpemUoKSA8IDQpKSB7CisgICAgICAgIHNldERPTUV4Y2Vw
dGlvbihleGVjLCBTWU5UQVhfRVJSKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cisg
ICAgfQorCisgICAgLy8gYXJncy5hdCgzKSA9IGVzdGltYXRlZCBzaXplCisgICAgaWYgKCFhcmdz
LmF0KDMpLmlzVUludDMyKCkpIHsKKyAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBUWVBFX01J
U01BVENIX0VSUik7CisgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisKICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBjb25zdCBVU3RyaW5nJiBuYW1lID0gYXJncy5hdCgw
KS50b1N0cmluZyhleGVjKTsKICAgICBjb25zdCBVU3RyaW5nJiB2ZXJzaW9uID0gYXJncy5hdCgx
KS50b1N0cmluZyhleGVjKTsKICAgICBjb25zdCBVU3RyaW5nJiBkaXNwbGF5TmFtZSA9IGFyZ3Mu
YXQoMikudG9TdHJpbmcoZXhlYyk7Ci0gICAgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplID0g
YXJncy5hdCgzKS50b0ludDMyKGV4ZWMpOworICAgIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6
ZSA9IGFyZ3MuYXQoMykudG9VSW50MzIoZXhlYyk7CiAgICAgUmVmUHRyPERhdGFiYXNlQ2FsbGJh
Y2s+IGNyZWF0aW9uQ2FsbGJhY2s7CiAgICAgaWYgKChhcmdzLnNpemUoKSA+PSA1KSAmJiBhcmdz
LmF0KDQpLmlzT2JqZWN0KCkpCiAgICAgICAgIGNyZWF0aW9uQ2FsbGJhY2sgPSBKU0RhdGFiYXNl
Q2FsbGJhY2s6OmNyZWF0ZShhc09iamVjdChhcmdzLmF0KDQpKSwgZ2xvYmFsT2JqZWN0KCkpOwpJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFiYXNlQ3VzdG9tLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YWJhc2VDdXN0b20uY3BwCShyZXZpc2lvbiA1
ODgwNykKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhYmFzZUN1c3RvbS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUwLDEwICs1MCwxOSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogSlNWYWx1
ZSBKU0RhdGFiYXNlOjpjaGFuZ2VWZXJzaW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlz
dCYgYXJncykKIHsKICAgICBTdHJpbmcgb2xkVmVyc2lvbiA9IHVzdHJpbmdUb1N0cmluZyhhcmdz
LmF0KDApLnRvU3RyaW5nKGV4ZWMpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsK
KyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKKyAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorCiAgICAgU3RyaW5nIG5ld1ZlcnNpb24g
PSB1c3RyaW5nVG9TdHJpbmcoYXJncy5hdCgxKS50b1N0cmluZyhleGVjKSk7CisgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBUWVBF
X01JU01BVENIX0VSUik7CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIH0KIAot
ICAgIEpTT2JqZWN0KiBvYmplY3Q7Ci0gICAgaWYgKCEob2JqZWN0ID0gYXJncy5hdCgyKS5nZXRP
YmplY3QoKSkpIHsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gYXJncy5hdCgyKS5nZXRPYmplY3Qo
KTsKKyAgICBpZiAoIW9iamVjdCkgewogICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQ
RV9NSVNNQVRDSF9FUlIpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CkBA
IC03Miw3ICs4MSw4IEBAIEpTVmFsdWUgSlNEYXRhYmFzZTo6Y2hhbmdlVmVyc2lvbihFeGVjU3QK
ICAgICAKICAgICBSZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2s7CiAgICAgaWYg
KCFhcmdzLmF0KDQpLmlzTnVsbCgpKSB7Ci0gICAgICAgIGlmICghKG9iamVjdCA9IGFyZ3MuYXQo
NCkuZ2V0T2JqZWN0KCkpKSB7CisgICAgICAgIG9iamVjdCA9IGFyZ3MuYXQoNCkuZ2V0T2JqZWN0
KCk7CisgICAgICAgIGlmICghb2JqZWN0KSB7CiAgICAgICAgICAgICBzZXRET01FeGNlcHRpb24o
ZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpOwogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CiAgICAgICAgIH0KQEAgLTg3LDkgKzk3LDkgQEAgSlNWYWx1ZSBKU0RhdGFiYXNlOjpjaGFu
Z2VWZXJzaW9uKEV4ZWNTdAogCiBzdGF0aWMgSlNWYWx1ZSBjcmVhdGVUcmFuc2FjdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIERhdGFiYXNlKiBkYXRhYmFzZSwgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgYm9vbCByZWFkT25seSkKIHsKLSAgICBKU09i
amVjdCogb2JqZWN0OworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhcmdzLmF0KDApLmdldE9iamVj
dCgpOwogICAgIAotICAgIGlmICghKG9iamVjdCA9IGFyZ3MuYXQoMCkuZ2V0T2JqZWN0KCkpKSB7
CisgICAgaWYgKCFvYmplY3QpIHsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVf
TUlTTUFUQ0hfRVJSKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfSAgICAg
ICAgCkBAIC05Nyw3ICsxMDcsOCBAQCBzdGF0aWMgSlNWYWx1ZSBjcmVhdGVUcmFuc2FjdGlvbihF
eGVjU3RhCiAgICAgUmVmUHRyPFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2s+IGNhbGxiYWNrKEpTU1FM
VHJhbnNhY3Rpb25DYWxsYmFjazo6Y3JlYXRlKG9iamVjdCwgZ2xvYmFsT2JqZWN0KSk7CiAgICAg
UmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjazsKICAgICBp
ZiAoYXJncy5zaXplKCkgPiAxICYmICFhcmdzLmF0KDEpLmlzTnVsbCgpKSB7Ci0gICAgICAgIGlm
ICghKG9iamVjdCA9IGFyZ3MuYXQoMSkuZ2V0T2JqZWN0KCkpKSB7CisgICAgICAgIG9iamVjdCA9
IGFyZ3MuYXQoMSkuZ2V0T2JqZWN0KCk7CisgICAgICAgIGlmICghb2JqZWN0KSB7CiAgICAgICAg
ICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpOwogICAgICAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgIH0KQEAgLTEwNyw3ICsxMTgsOCBAQCBz
dGF0aWMgSlNWYWx1ZSBjcmVhdGVUcmFuc2FjdGlvbihFeGVjU3RhCiAKICAgICBSZWZQdHI8Vm9p
ZENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2s7CiAgICAgaWYgKGFyZ3Muc2l6ZSgpID4gMiAmJiAh
YXJncy5hdCgyKS5pc051bGwoKSkgewotICAgICAgICBpZiAoIShvYmplY3QgPSBhcmdzLmF0KDIp
LmdldE9iamVjdCgpKSkgeworICAgICAgICBvYmplY3QgPSBhcmdzLmF0KDIpLmdldE9iamVjdCgp
OworICAgICAgICBpZiAoIW9iamVjdCkgewogICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4
ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwogICAgICAgICB9CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YWJhc2VTeW5jQ3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YWJhc2VTeW5j
Q3VzdG9tLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhYmFz
ZVN5bmNDdXN0b20uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwMyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5j
LiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTRGF0YWJhc2VTeW5jLmgiCisKKyNpZiBFTkFCTEUoREFU
QUJBU0UpCisKKyNpbmNsdWRlICJEYXRhYmFzZVN5bmMuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCisjaW5jbHVkZSAiSlNTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiU1FMVmFsdWUuaCIKKyNpbmNsdWRlIDxy
dW50aW1lL0pTQXJyYXkuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3Bh
Y2UgSlNDOworCitKU1ZhbHVlIEpTRGF0YWJhc2VTeW5jOjpjaGFuZ2VWZXJzaW9uKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICBTdHJpbmcgb2xkVmVyc2lvbiA9
IHVzdHJpbmdUb1N0cmluZyhhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpKTsKKyAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVf
TUlTTUFUQ0hfRVJSKTsKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorCisg
ICAgU3RyaW5nIG5ld1ZlcnNpb24gPSB1c3RyaW5nVG9TdHJpbmcoYXJncy5hdCgxKS50b1N0cmlu
ZyhleGVjKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAgIHNldERP
TUV4Y2VwdGlvbihleGVjLCBUWVBFX01JU01BVENIX0VSUik7CisgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOworICAgIH0KKworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhcmdzLmF0KDIpLmdl
dE9iamVjdCgpOworICAgIGlmICghb2JqZWN0KSB7CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihl
eGVjLCBUWVBFX01JU01BVENIX0VSUik7CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwor
ICAgIH0KKworICAgIFJlZlB0cjxTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjaz4gY2FsbGJhY2so
SlNTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjazo6Y3JlYXRlKG9iamVjdCwgc3RhdGljX2Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkpKSk7CisKKyAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBtX2ltcGwtPmNoYW5nZVZlcnNpb24ob2xkVmVy
c2lvbiwgbmV3VmVyc2lvbiwgY2FsbGJhY2sucmVsZWFzZSgpLCBlYyk7CisgICAgc2V0RE9NRXhj
ZXB0aW9uKGV4ZWMsIGVjKTsKKworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCitzdGF0
aWMgSlNWYWx1ZSBjcmVhdGVUcmFuc2FjdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xp
c3QmIGFyZ3MsIERhdGFiYXNlU3luYyogZGF0YWJhc2UsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGJvb2wgcmVhZE9ubHkpCit7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFyZ3Mu
YXQoMCkuZ2V0T2JqZWN0KCk7CisgICAgaWYgKCFvYmplY3QpIHsKKyAgICAgICAgc2V0RE9NRXhj
ZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CisgICAgfQorCisgICAgUmVmUHRyPFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrPiBj
YWxsYmFjayhKU1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrOjpjcmVhdGUob2JqZWN0LCBnbG9i
YWxPYmplY3QpKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGRhdGFiYXNlLT50
cmFuc2FjdGlvbihjYWxsYmFjay5yZWxlYXNlKCksIHJlYWRPbmx5LCBlYyk7CisgICAgc2V0RE9N
RXhjZXB0aW9uKGV4ZWMsIGVjKTsKKworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCitK
U1ZhbHVlIEpTRGF0YWJhc2VTeW5jOjp0cmFuc2FjdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAgcmV0dXJuIGNyZWF0ZVRyYW5zYWN0aW9uKGV4ZWMsIGFy
Z3MsIG1faW1wbC5nZXQoKSwgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5k
eW5hbWljR2xvYmFsT2JqZWN0KCkpLCBmYWxzZSk7Cit9CisKK0pTVmFsdWUgSlNEYXRhYmFzZVN5
bmM6OnJlYWRUcmFuc2FjdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3Mp
Cit7CisgICAgcmV0dXJuIGNyZWF0ZVRyYW5zYWN0aW9uKGV4ZWMsIGFyZ3MsIG1faW1wbC5nZXQo
KSwgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5keW5hbWljR2xvYmFsT2Jq
ZWN0KCkpLCB0cnVlKTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKERBVEFCQVNFKQpJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwCShy
ZXZpc2lvbiA1ODgwNykKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1
c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDggKzUwLDEwIEBAIEpTVmFsdWUgSlNTUUxU
cmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbChFeGUKICAgICB9CiAKICAgICBTdHJpbmcgc3FsU3RhdGVt
ZW50ID0gdXN0cmluZ1RvU3RyaW5nKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYykpOwotICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsK
KyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKICAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQogCiAgICAgLy8gTm93IGFzc2VtYmxlIHRo
ZSBsaXN0IG9mIFNRTCBhcmd1bWVudHMKICAgICBWZWN0b3I8U1FMVmFsdWU+IHNxbFZhbHVlczsK
QEAgLTc0LDcgKzc2LDcgQEAgSlNWYWx1ZSBKU1NRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3FsKEV4
ZQogICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAodmFs
dWUuaXNOdWxsKCkpCisgICAgICAgICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkK
ICAgICAgICAgICAgICAgICBzcWxWYWx1ZXMuYXBwZW5kKFNRTFZhbHVlKCkpOwogICAgICAgICAg
ICAgZWxzZSBpZiAodmFsdWUuaXNOdW1iZXIoKSkKICAgICAgICAgICAgICAgICBzcWxWYWx1ZXMu
YXBwZW5kKHZhbHVlLnVuY2hlY2tlZEdldE51bWJlcigpKTsKSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwCShyZXZpc2lvbiAw
KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHAJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAz
LiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkpTU1FMVHJhbnNhY3Rpb25TeW5jLmgiCisKKyNpZiBFTkFCTEUoREFUQUJBU0UpCisK
KyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiSlNTUUxSZXN1bHRTZXQuaCIK
KyNpbmNsdWRlICJTUUxSZXN1bHRTZXQuaCIKKyNpbmNsdWRlICJTUUxUcmFuc2FjdGlvblN5bmMu
aCIKKyNpbmNsdWRlICJTUUxWYWx1ZS5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK0pTVmFsdWUgSlNTUUxUcmFuc2FjdGlvblN5bmM6OmV4ZWN1dGVT
cWwoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIGlmIChhcmdz
LmlzRW1wdHkoKSkgeworICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgU1lOVEFYX0VSUik7
CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIH0KKworICAgIFN0cmluZyBzcWxT
dGF0ZW1lbnQgPSB1c3RyaW5nVG9TdHJpbmcoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKSk7Cisg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihl
eGVjLCBUWVBFX01JU01BVENIX0VSUik7CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwor
ICAgIH0KKworICAgIC8vIE5vdyBhc3NlbWJsZSB0aGUgbGlzdCBvZiBTUUwgYXJndW1lbnRzCisg
ICAgVmVjdG9yPFNRTFZhbHVlPiBzcWxWYWx1ZXM7CisgICAgaWYgKCFhcmdzLmF0KDEpLmlzVW5k
ZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFyZ3MuYXQoMSku
Z2V0T2JqZWN0KCk7CisgICAgICAgIGlmICghb2JqZWN0KSB7CisgICAgICAgICAgICBzZXRET01F
eGNlcHRpb24oZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpOworICAgICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CisgICAgICAgIH0KKworICAgICAgICBKU1ZhbHVlIGxlbmd0aFZhbHVlID0g
b2JqZWN0LT5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCk7CisgICAgICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOworICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBsZW5ndGhWYWx1ZS50b1VJbnQzMihleGVj
KTsKKyAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMCA7IGkgPCBsZW5n
dGg7ICsraSkgeworICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMs
IGkpOworICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworCisgICAgICAgICAgICBpZiAodmFsdWUuaXNVbmRl
ZmluZWRPck51bGwoKSkKKyAgICAgICAgICAgICAgICBzcWxWYWx1ZXMuYXBwZW5kKFNRTFZhbHVl
KCkpOworICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUuaXNOdW1iZXIoKSkKKyAgICAgICAgICAg
ICAgICBzcWxWYWx1ZXMuYXBwZW5kKHZhbHVlLnVuY2hlY2tlZEdldE51bWJlcigpKTsKKyAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIC8vIENvbnZlcnQgdGhlIGFyZ3VtZW50IHRv
IGEgc3RyaW5nIGFuZCBhcHBlbmQgaXQKKyAgICAgICAgICAgICAgICBzcWxWYWx1ZXMuYXBwZW5k
KHVzdHJpbmdUb1N0cmluZyh2YWx1ZS50b1N0cmluZyhleGVjKSkpOworICAgICAgICAgICAgICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgZ2xvYmFs
T2JqZWN0KCksIFdURjo6Z2V0UHRyKG1faW1wbC0+ZXhlY3V0ZVNRTChzcWxTdGF0ZW1lbnQsIHNx
bFZhbHVlcywgZWMpKSk7CisgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShEQVRBQkFTRSkKSW5kZXg6
IFdlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAJKHJldmlz
aW9uIDU4ODA3KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSwxMCBAQAogCiAjaW5jbHVkZSAiSlNXb3Jr
ZXJDb250ZXh0LmgiCiAKKyNpZiBFTkFCTEUoREFUQUJBU0UpCisjaW5jbHVkZSAiSlNEYXRhYmFz
ZUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiSlNEYXRhYmFzZVN5bmMuaCIKKyNlbmRpZgogI2luY2x1
ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCiAjaW5j
bHVkZSAiSlNFdmVudExpc3RlbmVyLmgiCkBAIC0xNDIsNiArMTQ2LDM2IEBAIEpTVmFsdWUgSlNX
b3JrZXJDb250ZXh0OjptZXNzYWdlQ2hhbm5lbCgKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKERB
VEFCQVNFKQorSlNWYWx1ZSBKU1dvcmtlckNvbnRleHQ6Om9wZW5EYXRhYmFzZVN5bmMoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIGlmIChhcmdzLnNpemUoKSA8
IDQpIHsKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFNZTlRBWF9FUlIpOworICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisKKyAgICAvLyBhcmdzLmF0KDMpID0gZXN0
aW1hdGVkIHNpemUKKyAgICBpZiAoIWFyZ3MuYXQoMykuaXNVSW50MzIoKSkgeworICAgICAgc2V0
RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKKyAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOworICAgIH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGNvbnN0
IFVTdHJpbmcmIG5hbWUgPSBhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpOworICAgIGNvbnN0IFVT
dHJpbmcmIHZlcnNpb24gPSBhcmdzLmF0KDEpLnRvU3RyaW5nKGV4ZWMpOworICAgIGNvbnN0IFVT
dHJpbmcmIGRpc3BsYXlOYW1lID0gYXJncy5hdCgyKS50b1N0cmluZyhleGVjKTsKKyAgICB1bnNp
Z25lZCBsb25nIGVzdGltYXRlZFNpemUgPSBhcmdzLmF0KDMpLnRvVUludDMyKGV4ZWMpOworICAg
IFJlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiBjcmVhdGlvbkNhbGxiYWNrOworICAgIGlmICgoYXJn
cy5zaXplKCkgPj0gNSkgJiYgYXJncy5hdCg0KS5pc09iamVjdCgpKQorICAgICAgICBjcmVhdGlv
bkNhbGxiYWNrID0gSlNEYXRhYmFzZUNhbGxiYWNrOjpjcmVhdGUoYXNPYmplY3QoYXJncy5hdCg0
KSksIGdsb2JhbE9iamVjdCgpKTsKKworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhleGVjLCBn
bG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbCgpLT5vcGVuRGF0YWJhc2VTeW5jKHVzdHJp
bmdUb1N0cmluZyhuYW1lKSwgdXN0cmluZ1RvU3RyaW5nKHZlcnNpb24pLCB1c3RyaW5nVG9TdHJp
bmcoZGlzcGxheU5hbWUpLCBlc3RpbWF0ZWRTaXplLCBjcmVhdGlvbkNhbGxiYWNrLnJlbGVhc2Uo
KSwgZWMpKSk7CisKKyAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKFdPUktFUlMpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdp
bmRvd0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhET01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiA1ODgwNykKKysrIFdlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzE5
LDcgKzcxOSwxMSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6Om9wZW5ECiB7
CiAgICAgSU5DX1NUQVRTKCJET00uRE9NV2luZG93Lm9wZW5EYXRhYmFzZSIpOwogICAgIGlmIChh
cmdzLkxlbmd0aCgpIDwgNCkKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93RXJyb3IoIm9wZW5EYXRhYmFzZVN5bmMoKSBtdXN0IGJlIGNhbGxlZCB3
aXRoIGF0IGxlYXN0IDQgcGFyYW1ldGVycy4iLCBWOFByb3h5OjpTeW50YXhFcnJvcik7CisKKyAg
ICAvLyBhcmdzWzNdID0gZXN0aW1hdGVkIHNpemUKKyAgICBpZiAoIWFyZ3NbM10tPklzVWludDMy
KCkpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJUaGlyZCBwYXJhbWV0ZXIgdG8gb3BlbkRh
dGFiYXNlU3luYygpIG11c3QgYmUgYSB1aW50MzIuIiwgVjhQcm94eTo6VHlwZUVycm9yKTsKIAog
ICAgIERPTVdpbmRvdyogaW1wID0gVjhET01XaW5kb3c6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkp
OwogICAgIGlmICghVjhCaW5kaW5nU2VjdXJpdHk6OmNhbkFjY2Vzc0ZyYW1lKFY4QmluZGluZ1N0
YXRlOjpPbmx5KCksIGltcC0+ZnJhbWUoKSwgdHJ1ZSkpCkBAIC03MjksNyArNzMzLDcgQEAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpvcGVuRAogICAgIFN0cmluZyBuYW1lID0g
dG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOwogICAgIFN0cmluZyB2ZXJzaW9uID0gdG9XZWJDb3Jl
U3RyaW5nKGFyZ3NbMV0pOwogICAgIFN0cmluZyBkaXNwbGF5TmFtZSA9IHRvV2ViQ29yZVN0cmlu
ZyhhcmdzWzJdKTsKLSAgICB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUgPSBhcmdzWzNdLT5J
bnRlZ2VyVmFsdWUoKTsKKyAgICB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUgPSBhcmdzWzNd
LT5VaW50MzJWYWx1ZSgpOwogICAgIFJlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiBjcmVhdGlvbkNh
bGxiYWNrOwogICAgIGlmICgoYXJncy5MZW5ndGgoKSA+PSA1KSAmJiBhcmdzWzRdLT5Jc09iamVj
dCgpKQogICAgICAgICBjcmVhdGlvbkNhbGxiYWNrID0gVjhEYXRhYmFzZUNhbGxiYWNrOjpjcmVh
dGUoYXJnc1s0XSwgaW1wLT5mcmFtZSgpKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4RGF0YWJhc2VDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RGF0YWJhc2VDdXN0b20uY3BwCShyZXZpc2lvbiA1ODgwNykKKysrIFdlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YWJhc2VDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01MCw3ICs1MCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERhdGFiYXNlOjpjaGFu
Z2UKICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIlRoZSBvbGQgYW5kIG5ldyB2ZXJzaW9uIHN0
cmluZ3MgYXJlIHJlcXVpcmVkLiIsIFY4UHJveHk6OlN5bnRheEVycm9yKTsKIAogICAgIGlmICgh
KGFyZ3NbMF0tPklzU3RyaW5nKCkgJiYgYXJnc1sxXS0+SXNTdHJpbmcoKSkpCi0gICAgICAgIHJl
dHVybiB0aHJvd0Vycm9yKCJUaGUgb2xkIGFuZCBuZXcgdmVyc2lvbnMgbXVzdCBiZSBzdHJpbmdz
LiIpOworICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiVGhlIG9sZCBhbmQgbmV3IHZlcnNpb25z
IG11c3QgYmUgc3RyaW5ncy4iLCBWOFByb3h5OjpUeXBlRXJyb3IpOwogCiAgICAgRGF0YWJhc2Uq
IGRhdGFiYXNlID0gVjhEYXRhYmFzZTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAKQEAgLTYx
LDcgKzYxLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGF0YWJhc2U6OmNoYW5nZQogICAg
IFJlZlB0cjxWOFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2s+IGNhbGxiYWNrOwogICAgIGlmIChhcmdz
Lkxlbmd0aCgpID4gMikgewogICAgICAgICBpZiAoIWFyZ3NbMl0tPklzT2JqZWN0KCkpCi0gICAg
ICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiY2hhbmdlVmVyc2lvbiB0cmFuc2FjdGlvbiBjYWxs
YmFjayBtdXN0IGJlIG9mIHZhbGlkIHR5cGUuIik7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dF
cnJvcigiY2hhbmdlVmVyc2lvbiB0cmFuc2FjdGlvbiBjYWxsYmFjayBtdXN0IGJlIG9mIHZhbGlk
IHR5cGUuIiwgVjhQcm94eTo6VHlwZUVycm9yKTsKIAogICAgICAgICBjYWxsYmFjayA9IFY4U1FM
VHJhbnNhY3Rpb25DYWxsYmFjazo6Y3JlYXRlKGFyZ3NbMl0sIGZyYW1lKTsKICAgICB9CkBAIC02
OSw3ICs2OSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERhdGFiYXNlOjpjaGFuZ2UKICAg
ICBSZWZQdHI8VjhTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2s7CiAg
ICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAzKSB7CiAgICAgICAgIGlmICghYXJnc1szXS0+SXNPYmpl
Y3QoKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJjaGFuZ2VWZXJzaW9uIGVycm9y
IGNhbGxiYWNrIG11c3QgYmUgb2YgdmFsaWQgdHlwZS4iKTsKKyAgICAgICAgICAgIHJldHVybiB0
aHJvd0Vycm9yKCJjaGFuZ2VWZXJzaW9uIGVycm9yIGNhbGxiYWNrIG11c3QgYmUgb2YgdmFsaWQg
dHlwZS4iLCBWOFByb3h5OjpUeXBlRXJyb3IpOwogCiAgICAgICAgIGVycm9yQ2FsbGJhY2sgPSBW
OFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjazo6Y3JlYXRlKGFyZ3NbM10sIGZyYW1lKTsKICAg
ICB9CkBAIC03Nyw3ICs3Nyw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERhdGFiYXNlOjpj
aGFuZ2UKICAgICBSZWZQdHI8VjhDdXN0b21Wb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjazsK
ICAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDQpIHsKICAgICAgICAgaWYgKCFhcmdzWzRdLT5Jc09i
amVjdCgpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoImNoYW5nZVZlcnNpb24gc3Vj
Y2VzcyBjYWxsYmFjayBtdXN0IGJlIG9mIHZhbGlkIHR5cGUuIik7CisgICAgICAgICAgICByZXR1
cm4gdGhyb3dFcnJvcigiY2hhbmdlVmVyc2lvbiBzdWNjZXNzIGNhbGxiYWNrIG11c3QgYmUgb2Yg
dmFsaWQgdHlwZS4iLCBWOFByb3h5OjpUeXBlRXJyb3IpOwogCiAgICAgICAgIHN1Y2Nlc3NDYWxs
YmFjayA9IFY4Q3VzdG9tVm9pZENhbGxiYWNrOjpjcmVhdGUoYXJnc1s0XSwgZnJhbWUpOwogICAg
IH0KQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjcmVhdGVU
cmFucwogICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiVHJhbnNhY3Rpb24gY2FsbGJhY2sgaXMg
cmVxdWlyZWQuIiwgVjhQcm94eTo6U3ludGF4RXJyb3IpOwogCiAgICAgaWYgKCFhcmdzWzBdLT5J
c09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiVHJhbnNhY3Rpb24gY2FsbGJh
Y2sgbXVzdCBiZSBvZiB2YWxpZCB0eXBlLiIpOworICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigi
VHJhbnNhY3Rpb24gY2FsbGJhY2sgbXVzdCBiZSBvZiB2YWxpZCB0eXBlLiIsIFY4UHJveHk6OlR5
cGVFcnJvcik7CiAKICAgICBEYXRhYmFzZSogZGF0YWJhc2UgPSBWOERhdGFiYXNlOjp0b05hdGl2
ZShhcmdzLkhvbGRlcigpKTsKIApAQCAtMTA2LDcgKzEwNiw3IEBAIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gY3JlYXRlVHJhbnMKICAgICBSZWZQdHI8VjhTUUxUcmFuc2FjdGlvbkVycm9y
Q2FsbGJhY2s+IGVycm9yQ2FsbGJhY2s7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAxICYmICFp
c1VuZGVmaW5lZE9yTnVsbChhcmdzWzFdKSkgewogICAgICAgICBpZiAoIWFyZ3NbMV0tPklzT2Jq
ZWN0KCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiVHJhbnNhY3Rpb24gZXJyb3Ig
Y2FsbGJhY2sgbXVzdCBiZSBvZiB2YWxpZCB0eXBlLiIpOworICAgICAgICAgICAgcmV0dXJuIHRo
cm93RXJyb3IoIlRyYW5zYWN0aW9uIGVycm9yIGNhbGxiYWNrIG11c3QgYmUgb2YgdmFsaWQgdHlw
ZS4iLCBWOFByb3h5OjpUeXBlRXJyb3IpOwogCiAgICAgICAgIGVycm9yQ2FsbGJhY2sgPSBWOFNR
TFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjazo6Y3JlYXRlKGFyZ3NbMV0sIGZyYW1lKTsKICAgICB9
CkBAIC0xMTQsNyArMTE0LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjcmVhdGVU
cmFucwogICAgIFJlZlB0cjxWOEN1c3RvbVZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrOwog
ICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMiAmJiAhaXNVbmRlZmluZWRPck51bGwoYXJnc1syXSkp
IHsKICAgICAgICAgaWYgKCFhcmdzWzJdLT5Jc09iamVjdCgpKQotICAgICAgICAgICAgcmV0dXJu
IHRocm93RXJyb3IoIlRyYW5zYWN0aW9uIHN1Y2Nlc3MgY2FsbGJhY2sgbXVzdCBiZSBvZiB2YWxp
ZCB0eXBlLiIpOworICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIlRyYW5zYWN0aW9uIHN1
Y2Nlc3MgY2FsbGJhY2sgbXVzdCBiZSBvZiB2YWxpZCB0eXBlLiIsIFY4UHJveHk6OlR5cGVFcnJv
cik7CiAKICAgICAgICAgc3VjY2Vzc0NhbGxiYWNrID0gVjhDdXN0b21Wb2lkQ2FsbGJhY2s6OmNy
ZWF0ZShhcmdzWzJdLCBmcmFtZSk7CiAgICAgfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhEYXRhYmFzZVN5bmNDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YWJhc2VTeW5jQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKKysr
IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YWJhc2VTeW5jQ3VzdG9tLmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
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
TEUoREFUQUJBU0UpCisjaW5jbHVkZSAiVjhEYXRhYmFzZVN5bmMuaCIKKworI2luY2x1ZGUgIkRh
dGFiYXNlU3luYy5oIgorI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4UHJveHku
aCIKKyNpbmNsdWRlICJWOFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGF0YWJhc2VTeW5jOjpjaGFu
Z2VWZXJzaW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNf
U1RBVFMoIkRPTS5EYXRhYmFzZS5jaGFuZ2VWZXJzaW9uKCkiKTsKKworICAgIGlmIChhcmdzLkxl
bmd0aCgpIDwgMikKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIlRoZSBvbGQgYW5kIG5ldyB2
ZXJzaW9uIHN0cmluZ3MgYXJlIHJlcXVpcmVkLiIsIFY4UHJveHk6OlN5bnRheEVycm9yKTsKKwor
ICAgIGlmICghKGFyZ3NbMF0tPklzU3RyaW5nKCkgJiYgYXJnc1sxXS0+SXNTdHJpbmcoKSkpCisg
ICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJUaGUgb2xkIGFuZCBuZXcgdmVyc2lvbnMgbXVzdCBi
ZSBzdHJpbmdzLiIsIFY4UHJveHk6OlR5cGVFcnJvcik7CisKKyAgICBEYXRhYmFzZVN5bmMqIGRh
dGFiYXNlID0gVjhEYXRhYmFzZVN5bmM6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworCisgICAg
UmVmUHRyPFY4U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+IGNhbGxiYWNrOworICAgIGlmIChh
cmdzLkxlbmd0aCgpID4gMikgeworICAgICAgICBpZiAoIWFyZ3NbMl0tPklzT2JqZWN0KCkpCisg
ICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiY2hhbmdlVmVyc2lvbiB0cmFuc2FjdGlvbiBj
YWxsYmFjayBtdXN0IGJlIG9mIHZhbGlkIHR5cGUuIiwgVjhQcm94eTo6VHlwZUVycm9yKTsKKwor
ICAgICAgICBjYWxsYmFjayA9IFY4U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s6OmNyZWF0ZShh
cmdzWzJdLCAwKTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBkYXRh
YmFzZS0+Y2hhbmdlVmVyc2lvbih0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSksIHRvV2ViQ29yZVN0
cmluZyhhcmdzWzFdKSwgY2FsbGJhY2sucmVsZWFzZSgpLCBlYyk7CisgICAgVjhQcm94eTo6c2V0
RE9NRXhjZXB0aW9uKGVjKTsKKworICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Cit9CisKK3N0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3JlYXRlVHJhbnNhY3Rpb24oY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncywgYm9vbCByZWFkT25seSkKK3sKKyAgICBpZiAoIWFyZ3MuTGVuZ3RoKCkp
CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJUcmFuc2FjdGlvbiBjYWxsYmFjayBpcyByZXF1
aXJlZC4iLCBWOFByb3h5OjpTeW50YXhFcnJvcik7CisKKyAgICBpZiAoIWFyZ3NbMF0tPklzT2Jq
ZWN0KCkpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJUcmFuc2FjdGlvbiBjYWxsYmFjayBt
dXN0IGJlIG9mIHZhbGlkIHR5cGUuIiwgVjhQcm94eTo6VHlwZUVycm9yKTsKKworICAgIERhdGFi
YXNlU3luYyogZGF0YWJhc2UgPSBWOERhdGFiYXNlU3luYzo6dG9OYXRpdmUoYXJncy5Ib2xkZXIo
KSk7CisKKyAgICBSZWZQdHI8VjhTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjaz4gY2FsbGJhY2sg
PSBWOFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrOjpjcmVhdGUoYXJnc1swXSwgMCk7CisKKyAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBkYXRhYmFzZS0+dHJhbnNhY3Rpb24oY2FsbGJh
Y2sucmVsZWFzZSgpLCByZWFkT25seSwgZWMpOworICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlv
bihlYyk7CisKKyAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworfQorCit2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhEYXRhYmFzZVN5bmM6OnRyYW5zYWN0aW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5EYXRhYmFzZS50cmFuc2FjdGlv
bigpIik7CisgICAgcmV0dXJuIGNyZWF0ZVRyYW5zYWN0aW9uKGFyZ3MsIGZhbHNlKTsKK30KKwor
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGF0YWJhc2VTeW5jOjpyZWFkVHJhbnNhY3Rpb25DYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLkRh
dGFiYXNlLnJlYWRUcmFuc2FjdGlvbigpIik7CisgICAgcmV0dXJuIGNyZWF0ZVRyYW5zYWN0aW9u
KGFyZ3MsIHRydWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNh
Y3Rpb25TeW5jQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoREFUQUJBU0UpCisK
KyNpbmNsdWRlICJWOFNRTFRyYW5zYWN0aW9uU3luYy5oIgorCisjaW5jbHVkZSAiRGF0YWJhc2VT
eW5jLmgiCisjaW5jbHVkZSAiU1FMUmVzdWx0U2V0LmgiCisjaW5jbHVkZSAiU1FMVmFsdWUuaCIK
KyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgorCit1c2luZyBuYW1lc3BhY2UgV1RGOworCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFNRTFRyYW5zYWN0aW9uU3luYzo6ZXhlY3V0
ZVNxbENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRT
KCJET00uU1FMVHJhbnNhY3Rpb25TeW5jLmV4ZWN1dGVTcWwoKSIpOworCisgICAgaWYgKGFyZ3Mu
TGVuZ3RoKCkgPT0gMCkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIlNRTCBzdGF0ZW1lbnQg
aXMgcmVxdWlyZWQuIiwgVjhQcm94eTo6U3ludGF4RXJyb3IpOworCisgICAgU3RyaW5nIHN0YXRl
bWVudCA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKTsKKworICAgIFZlY3RvcjxTUUxWYWx1ZT4g
c3FsVmFsdWVzOworCisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAxICYmICFpc1VuZGVmaW5lZE9y
TnVsbChhcmdzWzFdKSkgeworICAgICAgICBpZiAoYXJnc1sxXS0+SXNPYmplY3QoKSkgeworICAg
ICAgICAgICAgdWludDMyX3Qgc3FsQXJnc0xlbmd0aCA9IDA7CisgICAgICAgICAgICB2ODo6TG9j
YWw8djg6Ok9iamVjdD4gc3FsQXJnc09iamVjdCA9IGFyZ3NbMV0tPlRvT2JqZWN0KCk7CisgICAg
ICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBsZW5ndGhHZXR0ZXI7CisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgdjg6OlRyeUNhdGNoIGJsb2NrOworICAgICAgICAgICAgICAgIGxl
bmd0aEdldHRlciA9IHNxbEFyZ3NPYmplY3QtPkdldCh2ODo6U3RyaW5nOjpOZXcoImxlbmd0aCIp
KTsKKyAgICAgICAgICAgICAgICBpZiAoYmxvY2suSGFzQ2F1Z2h0KCkpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGJsb2NrLkV4Y2VwdGlvbigpKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgaWYgKGlzVW5kZWZpbmVkT3JOdWxsKGxlbmd0aEdldHRlcikpCisg
ICAgICAgICAgICAgICAgc3FsQXJnc0xlbmd0aCA9IHNxbEFyZ3NPYmplY3QtPkdldFByb3BlcnR5
TmFtZXMoKS0+TGVuZ3RoKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc3Fs
QXJnc0xlbmd0aCA9IGxlbmd0aEdldHRlci0+VWludDMyVmFsdWUoKTsKKworICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBzcWxBcmdzTGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgICAgICAgICB2ODo6TG9jYWw8djg6OkludGVnZXI+IGtleSA9IHY4OjpJbnRlZ2VyOjpOZXco
aSk7CisgICAgICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWU7CisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB2ODo6VHJ5Q2F0Y2ggYmxvY2s7CisgICAg
ICAgICAgICAgICAgICAgIHZhbHVlID0gc3FsQXJnc09iamVjdC0+R2V0KGtleSk7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChibG9jay5IYXNDYXVnaHQoKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0aHJvd0Vycm9yKGJsb2NrLkV4Y2VwdGlvbigpKTsKKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUuSXNFbXB0eSgpIHx8IHZhbHVlLT5Jc051
bGwoKSkKKyAgICAgICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFwcGVuZChTUUxWYWx1ZSgpKTsK
KyAgICAgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZS0+SXNOdW1iZXIoKSkKKyAgICAgICAgICAg
ICAgICAgICAgc3FsVmFsdWVzLmFwcGVuZChTUUxWYWx1ZSh2YWx1ZS0+TnVtYmVyVmFsdWUoKSkp
OworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFw
cGVuZChTUUxWYWx1ZSh0b1dlYkNvcmVTdHJpbmcodmFsdWUpKSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoInNxbEFyZ3Mgc2hv
dWxkIGJlIGFycmF5IG9yIG9iamVjdCEiLCBWOFByb3h5OjpUeXBlRXJyb3IpOworICAgIH0KKwor
ICAgIFNRTFRyYW5zYWN0aW9uU3luYyogdHJhbnNhY3Rpb24gPSBWOFNRTFRyYW5zYWN0aW9uU3lu
Yzo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
KyAgICB0cmFuc2FjdGlvbi0+ZXhlY3V0ZVNRTChzdGF0ZW1lbnQsIHNxbFZhbHVlcywgZWMpOwor
ICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYyk7CisKKyAgICByZXR1cm4gdjg6OlVuZGVm
aW5lZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20u
Y3BwCShyZXZpc2lvbiA1ODgwNykKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29y
a2VyQ29udGV4dEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDEwIEBACiAj
aWYgRU5BQkxFKFdPUktFUlMpCiAjaW5jbHVkZSAiVjhXb3JrZXJDb250ZXh0LmgiCiAKKyNpZiBF
TkFCTEUoREFUQUJBU0UpCisjaW5jbHVkZSAiVjhEYXRhYmFzZUNhbGxiYWNrLmgiCisjaW5jbHVk
ZSAiVjhEYXRhYmFzZVN5bmMuaCIKKyNlbmRpZgogI2luY2x1ZGUgIkRPTVRpbWVyLmgiCiAjaW5j
bHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIlNjaGVkdWxlZEFjdGlvbi5oIgpAQCAt
MTM2LDYgKzE0MCwzNSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChXb3JrZXJDb250ZXh0
CiAgICAgcmV0dXJuIGdsb2JhbDsKIH0KIAorI2lmIEVOQUJMRShEQVRBQkFTRSkKK3Y4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOFdvcmtlckNvbnRleHQ6Om9wZW5EYXRhYmFzZVN5bmNDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLlY4V29ya2Vy
Q29udGV4dC5vcGVuRGF0YWJhc2VTeW5jKCkiKTsKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDQp
CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJvcGVuRGF0YWJhc2VTeW5jKCkgbXVzdCBiZSBj
YWxsZWQgd2l0aCBhdCBsZWFzdCA0IHBhcmFtZXRlcnMuIiwgVjhQcm94eTo6U3ludGF4RXJyb3Ip
OworCisgICAgLy8gYXJnc1szXSA9IGVzdGltYXRlZCBzaXplCisgICAgaWYgKCFhcmdzWzNdLT5J
c1VpbnQzMigpKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiVGhpcmQgcGFyYW1ldGVyIHRv
IG9wZW5EYXRhYmFzZVN5bmMoKSBtdXN0IGJlIGEgdWludDMyLiIsIFY4UHJveHk6OlR5cGVFcnJv
cik7CisKKyAgICBXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0ID0gVjhXb3JrZXJDb250ZXh0
Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwor
ICAgIFN0cmluZyBuYW1lID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOworICAgIFN0cmluZyB2
ZXJzaW9uID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMV0pOworICAgIFN0cmluZyBkaXNwbGF5TmFt
ZSA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzJdKTsKKyAgICB1bnNpZ25lZCBsb25nIGVzdGltYXRl
ZFNpemUgPSBhcmdzWzNdLT5VaW50MzJWYWx1ZSgpOworICAgIFJlZlB0cjxEYXRhYmFzZUNhbGxi
YWNrPiBjcmVhdGlvbkNhbGxiYWNrOworICAgIGlmICgoYXJncy5MZW5ndGgoKSA+PSA1KSAmJiBh
cmdzWzRdLT5Jc09iamVjdCgpKQorICAgICAgICBjcmVhdGlvbkNhbGxiYWNrID0gVjhEYXRhYmFz
ZUNhbGxiYWNrOjpjcmVhdGUoYXJnc1s0XSwgMCk7CisKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gcmVzdWx0ID0gdG9WOCh3b3JrZXJDb250ZXh0LT5vcGVuRGF0YWJhc2VTeW5jKG5hbWUsIHZl
cnNpb24sIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplLCBjcmVhdGlvbkNhbGxiYWNrLnJlbGVh
c2UoKSwgZWMpKTsKKworICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYyk7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoV09SS0VSUykKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmlkbAkocmV2aXNpb24gNTg4
MDcpCisrKyBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCw3ICszMCw4IEBAIG1vZHVsZSBzdG9yYWdlIHsKIAogICAgIGludGVyZmFjZSBbCiAgICAgICAg
IENvbmRpdGlvbmFsPURBVEFCQVNFLAotICAgICAgICBPbWl0Q29uc3RydWN0b3IKKyAgICAgICAg
T21pdENvbnN0cnVjdG9yLAorICAgICAgICBOb1N0YXRpY1RhYmxlcwogICAgIF0gRGF0YWJhc2Ug
ewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZlcnNpb247CiAgICAgICAg
IFtDdXN0b21dIHZvaWQgY2hhbmdlVmVyc2lvbihpbiBET01TdHJpbmcgb2xkVmVyc2lvbiwgaW4g
RE9NU3RyaW5nIG5ld1ZlcnNpb24sIGluIFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2sgY2FsbGJhY2ss
IGluIFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrLCBpbiBWb2lkQ2Fs
bGJhY2sgc3VjY2Vzc0NhbGxiYWNrKTsKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZUNh
bGxiYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlQ2FsbGJhY2su
aAkocmV2aXNpb24gNTg4MDcpCisrKyBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VDYWxsYmFjay5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMiArMzgsMTQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgRGF0YWJhc2U7CitjbGFzcyBEYXRhYmFzZVN5bmM7CiBjbGFzcyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OwogCiBjbGFzcyBEYXRhYmFzZUNhbGxiYWNrIDogcHVibGljIFRocmVhZFNh
ZmVTaGFyZWQ8RGF0YWJhc2VDYWxsYmFjaz4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkRhdGFi
YXNlQ2FsbGJhY2soKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIERhdGFiYXNlKikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVF
dmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRGF0YWJhc2VTeW5jKikgPSAwOwogfTsKIAog
fQpJbmRleDogV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlQ2FsbGJhY2suaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZUNhbGxiYWNrLmlkbAkocmV2aXNpb24gNTg4MDcp
CisrKyBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VDYWxsYmFjay5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTMyLDUgKzMyLDYgQEAgbW9kdWxlIHN0b3JhZ2UgewogICAgICAgICBDYWxsYmFjawogICAg
IF0gRGF0YWJhc2VDYWxsYmFjayB7CiAgICAgICAgIGJvb2xlYW4gaGFuZGxlRXZlbnQoaW4gRGF0
YWJhc2UgZGF0YWJhc2UpOworICAgICAgICBib29sZWFuIGhhbmRsZUV2ZW50KGluIERhdGFiYXNl
U3luYyBkYXRhYmFzZSk7CiAgICAgfTsKIH0KSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFz
ZVN5bmMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVN5bmMuY3Bw
CShyZXZpc2lvbiA1ODgwNykKKysrIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVN5bmMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05MSwxMiArOTEsMTIgQEAgU3RyaW5nIERhdGFiYXNlU3luYzo6dmVy
c2lvbigpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi12b2lkIERhdGFiYXNlU3lu
Yzo6Y2hhbmdlVmVyc2lvbihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRy
PFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrPikKK3ZvaWQgRGF0YWJhc2VTeW5jOjpjaGFuZ2VW
ZXJzaW9uKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFBhc3NSZWZQdHI8U1FMVHJhbnNh
Y3Rpb25TeW5jQ2FsbGJhY2s+LCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBBU1NFUlQobV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSk7CiB9CiAKLXZvaWQgRGF0YWJh
c2VTeW5jOjp0cmFuc2FjdGlvbihQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNr
PiwgYm9vbCkKK3ZvaWQgRGF0YWJhc2VTeW5jOjp0cmFuc2FjdGlvbihQYXNzUmVmUHRyPFNRTFRy
YW5zYWN0aW9uU3luY0NhbGxiYWNrPiwgYm9vbCwgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgQVNT
RVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNDb250ZXh0VGhyZWFkKCkpOwogfQpJbmRl
eDogV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlU3luYy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3RvcmFnZS9EYXRhYmFzZVN5bmMuaAkocmV2aXNpb24gNTg4MDcpCisrKyBXZWJDb3JlL3N0b3Jh
Z2UvRGF0YWJhc2VTeW5jLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDggKzUzLDggQEAgcHVibGlj
OgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPERhdGFiYXNlU3luYz4gb3BlbkRhdGFiYXNlU3luYyhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IGV4cGVjdGVkVmVyc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBl
c3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+LCBFeGNlcHRpb25Db2Rl
Jik7CiAgICAgU3RyaW5nIHZlcnNpb24oKSBjb25zdDsKLSAgICB2b2lkIGNoYW5nZVZlcnNpb24o
Y29uc3QgU3RyaW5nJiBvbGRWZXJzaW9uLCBjb25zdCBTdHJpbmcmIG5ld1ZlcnNpb24sIFBhc3NS
ZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+KTsKLSAgICB2b2lkIHRyYW5zYWN0aW9u
KFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+LCBib29sIHJlYWRPbmx5KTsK
KyAgICB2b2lkIGNoYW5nZVZlcnNpb24oY29uc3QgU3RyaW5nJiBvbGRWZXJzaW9uLCBjb25zdCBT
dHJpbmcmIG5ld1ZlcnNpb24sIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+
LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCB0cmFuc2FjdGlvbihQYXNzUmVmUHRyPFNRTFRy
YW5zYWN0aW9uU3luY0NhbGxiYWNrPiwgYm9vbCByZWFkT25seSwgRXhjZXB0aW9uQ29kZSYpOwog
CiAgICAgLy8gSW50ZXJuYWwgZW5naW5lIHN1cHBvcnQKICAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CkluZGV4OiBXZWJDb3JlL3N0b3Jh
Z2UvRGF0YWJhc2VTeW5jLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJh
c2VTeW5jLmlkbAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVN5bmMu
aWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikg
bm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIHN0b3JhZ2UgeworCisg
ICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9REFUQUJBU0UsCisgICAgICAgIE9t
aXRDb25zdHJ1Y3RvciwKKyAgICAgICAgTm9TdGF0aWNUYWJsZXMKKyAgICBdIERhdGFiYXNlU3lu
YyB7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdmVyc2lvbjsKKyAgICAg
ICAgW0N1c3RvbV0gdm9pZCBjaGFuZ2VWZXJzaW9uKGluIERPTVN0cmluZyBvbGRWZXJzaW9uLCBp
biBET01TdHJpbmcgbmV3VmVyc2lvbiwgaW4gU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2sgY2Fs
bGJhY2spOworICAgICAgICBbQ3VzdG9tXSB2b2lkIHRyYW5zYWN0aW9uKGluIFNRTFRyYW5zYWN0
aW9uU3luY0NhbGxiYWNrIGNhbGxiYWNrKTsKKyAgICAgICAgW0N1c3RvbV0gdm9pZCByZWFkVHJh
bnNhY3Rpb24oaW4gU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2sgY2FsbGJhY2spOworICAgIH07
CisKK30KSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9TUUxFcnJvci5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdG9yYWdlL1NRTEVycm9yLmlkbAkocmV2aXNpb24gNTg4MDcpCisrKyBXZWJDb3Jl
L3N0b3JhZ2UvU1FMRXJyb3IuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw4IEBAIG1v
ZHVsZSBzdG9yYWdlIHsKIAogICAgIGludGVyZmFjZSBbCiAgICAgICAgIENvbmRpdGlvbmFsPURB
VEFCQVNFLAotICAgICAgICBPbWl0Q29uc3RydWN0b3IKKyAgICAgICAgT21pdENvbnN0cnVjdG9y
LAorICAgICAgICBOb1N0YXRpY1RhYmxlcwogICAgIF0gU1FMRXJyb3IgewogICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBjb2RlOwogICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIG1lc3NhZ2U7CkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvU1FMUmVzdWx0
U2V0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU1FMUmVzdWx0U2V0LmlkbAko
cmV2aXNpb24gNTg4MDcpCisrKyBXZWJDb3JlL3N0b3JhZ2UvU1FMUmVzdWx0U2V0LmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNyArMzAsOCBAQCBtb2R1bGUgc3RvcmFnZSB7CiAKICAgICBpbnRl
cmZhY2UgWwogICAgICAgICBDb25kaXRpb25hbD1EQVRBQkFTRSwKLSAgICAgICAgT21pdENvbnN0
cnVjdG9yCisgICAgICAgIE9taXRDb25zdHJ1Y3RvciwKKyAgICAgICAgTm9TdGF0aWNUYWJsZXMK
ICAgICBdIFNRTFJlc3VsdFNldCB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTUUxSZXN1
bHRTZXRSb3dMaXN0IHJvd3M7CiAKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9TUUxSZXN1bHRTZXRS
b3dMaXN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU1FMUmVzdWx0U2V0Um93
TGlzdC5pZGwJKHJldmlzaW9uIDU4ODA3KQorKysgV2ViQ29yZS9zdG9yYWdlL1NRTFJlc3VsdFNl
dFJvd0xpc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw4IEBAIG1vZHVsZSBzdG9y
YWdlIHsKIAogICAgIGludGVyZmFjZSBbCiAgICAgICAgIENvbmRpdGlvbmFsPURBVEFCQVNFLAot
ICAgICAgICBPbWl0Q29uc3RydWN0b3IKKyAgICAgICAgT21pdENvbnN0cnVjdG9yLAorICAgICAg
ICBOb1N0YXRpY1RhYmxlcwogICAgIF0gU1FMUmVzdWx0U2V0Um93TGlzdCB7CiAgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICAgICAgW0N1c3RvbV0g
RE9NT2JqZWN0IGl0ZW0oaW4gdW5zaWduZWQgbG9uZyBpbmRleCk7CkluZGV4OiBXZWJDb3JlL3N0
b3JhZ2UvU1FMVHJhbnNhY3Rpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9T
UUxUcmFuc2FjdGlvbi5pZGwJKHJldmlzaW9uIDU4ODA3KQorKysgV2ViQ29yZS9zdG9yYWdlL1NR
TFRyYW5zYWN0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsOCBAQCBtb2R1bGUg
c3RvcmFnZSB7CiAKICAgICBpbnRlcmZhY2UgWwogICAgICAgICBDb25kaXRpb25hbD1EQVRBQkFT
RSwKLSAgICAgICAgT21pdENvbnN0cnVjdG9yCisgICAgICAgIE9taXRDb25zdHJ1Y3RvciwKKyAg
ICAgICAgTm9TdGF0aWNUYWJsZXMKICAgICBdIFNRTFRyYW5zYWN0aW9uIHsKICAgICAgICAgW0N1
c3RvbV0gdm9pZCBleGVjdXRlU3FsKGluIERPTVN0cmluZyBzcWxTdGF0ZW1lbnQsIGluIE9iamVj
dEFycmF5IGFyZ3VtZW50cywgaW4gU1FMU3RhdGVtZW50Q2FsbGJhY2sgY2FsbGJhY2ssIGluIFNR
TFN0YXRlbWVudEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7CiAgICAgfTsKSW5kZXg6IFdl
YkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmMuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmMuaWRsCShyZXZpc2lvbiAwKQorKysgV2ViQ29y
ZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luYy5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCittb2R1bGUgc3RvcmFnZSB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25k
aXRpb25hbD1EQVRBQkFTRSwKKyAgICAgICAgT21pdENvbnN0cnVjdG9yLAorICAgICAgICBOb1N0
YXRpY1RhYmxlcworICAgIF0gU1FMVHJhbnNhY3Rpb25TeW5jIHsKKyAgICAgICAgW0N1c3RvbV0g
U1FMUmVzdWx0U2V0IGV4ZWN1dGVTcWwoaW4gRE9NU3RyaW5nIHNxbFN0YXRlbWVudCwgaW4gT2Jq
ZWN0QXJyYXkgYXJndW1lbnRzKTsKKyAgICB9OworfQpJbmRleDogV2ViQ29yZS9zdG9yYWdlL1NR
TFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdl
L1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmgJKHJldmlzaW9uIDU4ODA3KQorKysgV2ViQ29y
ZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQyLDcgKzQyLDcgQEAgY2xhc3MgU1FMVHJhbnNhY3Rpb25TeW5jOwogY2xhc3MgU1FMVHJhbnNh
Y3Rpb25TeW5jQ2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxTUUxUcmFuc2FjdGlvblN5bmND
YWxsYmFjaz4gewogcHVibGljOgogICAgIHZpcnR1YWwgflNRTFRyYW5zYWN0aW9uU3luY0NhbGxi
YWNrKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBTUUxUcmFuc2FjdGlvblN5bmMqLCBib29sJiByYWlzZWRFeGNlcHRpb24pID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFNR
TFRyYW5zYWN0aW9uU3luYyopID0gMDsKIH07CiAKIH0KSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9T
UUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9y
YWdlL1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmlkbAkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5pZGwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBu
YW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisg
KiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCittb2R1bGUgc3RvcmFnZSB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAg
ICAgQ29uZGl0aW9uYWw9REFUQUJBU0UsCisgICAgICAgIENhbGxiYWNrCisgICAgXSBTUUxUcmFu
c2FjdGlvblN5bmNDYWxsYmFjayB7CisgICAgICAgIGJvb2xlYW4gaGFuZGxlRXZlbnQoaW4gU1FM
VHJhbnNhY3Rpb25TeW5jIHRyYW5zYWN0aW9uKTsKKyAgICB9OworfQpJbmRleDogV2ViQ29yZS93
b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvd29ya2Vycy9X
b3JrZXJDb250ZXh0LmNwcAkocmV2aXNpb24gNTg4MDcpCisrKyBXZWJDb3JlL3dvcmtlcnMvV29y
a2VyQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4MSw2ICsyODEsMjAgQEAgUGFzc1Jl
ZlB0cjxEYXRhYmFzZT4gV29ya2VyQ29udGV4dDo6b3BlbgogCiAgICAgcmV0dXJuIERhdGFiYXNl
OjpvcGVuRGF0YWJhc2UodGhpcywgbmFtZSwgdmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGltYXRl
ZFNpemUsIGNyZWF0aW9uQ2FsbGJhY2ssIGVjKTsKIH0KKworUGFzc1JlZlB0cjxEYXRhYmFzZVN5
bmM+IFdvcmtlckNvbnRleHQ6Om9wZW5EYXRhYmFzZVN5bmMoY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIHZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVk
IGxvbmcgZXN0aW1hdGVkU2l6ZSwgUGFzc1JlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiBjcmVhdGlv
bkNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIXNlY3VyaXR5T3JpZ2lu
KCktPmNhbkFjY2Vzc0RhdGFiYXNlKCkpIHsKKyAgICAgICAgZWMgPSBTRUNVUklUWV9FUlI7Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIEFTU0VSVChEYXRhYmFzZVN5bmM6OmlzQXZh
aWxhYmxlKCkpOworICAgIGlmICghRGF0YWJhc2VTeW5jOjppc0F2YWlsYWJsZSgpKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIHJldHVybiBEYXRhYmFzZVN5bmM6Om9wZW5EYXRhYmFzZVN5bmMo
dGhpcywgbmFtZSwgdmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUsIGNyZWF0aW9u
Q2FsbGJhY2ssIGVjKTsKK30KICNlbmRpZgogCiBib29sIFdvcmtlckNvbnRleHQ6OmlzQ29udGV4
dFRocmVhZCgpIGNvbnN0CkluZGV4OiBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgJKHJldmlzaW9uIDU4
ODA3KQorKysgV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiQXRvbWljU3RyaW5nSGFzaC5oIgogI2luY2x1
ZGUgIkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VTeW5jLmgiCiAjaW5jbHVkZSAiRGF0
YWJhc2VDYWxsYmFjay5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJF
dmVudE5hbWVzLmgiCkBAIC0xMDUsNiArMTA2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lm
IEVOQUJMRShEQVRBQkFTRSkKICAgICAgICAgLy8gSFRNTCA1IGNsaWVudC1zaWRlIGRhdGFiYXNl
CiAgICAgICAgIFBhc3NSZWZQdHI8RGF0YWJhc2U+IG9wZW5EYXRhYmFzZShjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwg
dW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+
IGNyZWF0aW9uQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgUGFzc1JlZlB0cjxE
YXRhYmFzZVN5bmM+IG9wZW5EYXRhYmFzZVN5bmMoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIHZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcg
ZXN0aW1hdGVkU2l6ZSwgUGFzc1JlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiBjcmVhdGlvbkNhbGxi
YWNrLCBFeGNlcHRpb25Db2RlJik7CisKICAgICAgICAgLy8gTm90IGltcGxlbWVudGVkIHlldC4K
ICAgICAgICAgdmlydHVhbCBib29sIGlzRGF0YWJhc2VSZWFkT25seSgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgICAgIC8vIE5vdCBpbXBsZW1lbnRlZCB5ZXQuCkluZGV4OiBXZWJDb3Jl
L3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93b3JrZXJz
L1dvcmtlckNvbnRleHQuaWRsCShyZXZpc2lvbiA1ODgwNykKKysrIFdlYkNvcmUvd29ya2Vycy9X
b3JrZXJDb250ZXh0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDksOCArNDksMTEgQEAgbW9kdWxl
IHRocmVhZHMgewogICAgICAgICAvLyBXb3JrZXJVdGlscwogICAgICAgICBbQ3VzdG9tXSB2b2lk
IGltcG9ydFNjcmlwdHMoLypbVmFyaWFkaWNdIGluIERPTVN0cmluZyB1cmxzICovKTsKICAgICAg
ICAgICAgICAgICAgYXR0cmlidXRlIFtSZXBsYWNlYWJsZV0gV29ya2VyTmF2aWdhdG9yIG5hdmln
YXRvcjsKKworI2lmIGRlZmluZWQoRU5BQkxFX0RBVEFCQVNFKSAmJiBFTkFCTEVfREFUQUJBU0UK
ICAgICAgICAgLy8gRGF0YWJhc2Ugb3BlbkRhdGFiYXNlKGluIERPTVN0cmluZyBuYW1lLCBpbiBE
T01TdHJpbmcgdmVyc2lvbiwgaW4gRE9NU3RyaW5nIGRpc3BsYXlOYW1lLCBpbiB1bnNpZ25lZCBs
b25nIGVzdGltYXRlZFNpemUpOwotICAgICAgICAvLyBEYXRhYmFzZVN5bmMgb3BlbkRhdGFiYXNl
U3luYyhpbiBET01TdHJpbmcgbmFtZSwgaW4gRE9NU3RyaW5nIHZlcnNpb24sIGluIERPTVN0cmlu
ZyBkaXNwbGF5TmFtZSwgaW4gdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKTsKKyAgICAgICAg
W0VuYWJsZUF0UnVudGltZSwgQ3VzdG9tXSBEYXRhYmFzZVN5bmMgb3BlbkRhdGFiYXNlU3luYyhp
biBET01TdHJpbmcgbmFtZSwgaW4gRE9NU3RyaW5nIHZlcnNpb24sIGluIERPTVN0cmluZyBkaXNw
bGF5TmFtZSwgaW4gdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBpbiBEYXRhYmFzZUNhbGxi
YWNrIGNyZWF0aW9uQ2FsbGJhY2spOworI2VuZGlmCiAKICAgICAgICAgLy8gVGltZXJzCiAgICAg
ICAgIFtDdXN0b21dIGxvbmcgc2V0VGltZW91dChpbiBUaW1lb3V0SGFuZGxlciBoYW5kbGVyLCBp
biBsb25nIHRpbWVvdXQpOwo=
</data>
<flag name="commit-queue"
          id="39207"
          type_id="3"
          status="-"
          setter="dumi"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55110</attachid>
            <date>2010-05-05 05:17:39 -0700</date>
            <delta_ts>2010-05-06 13:37:47 -0700</delta_ts>
            <desc>patch #2: IDL files + JSC and V8 bindings</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>68998</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
RGVyaXZlZFNvdXJjZXMuY3BwCShyZXZpc2lvbiA1ODgwNykKKysrIFdlYkNvcmUvRGVyaXZlZFNv
dXJjZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSw3IEBACiAjaW5jbHVkZSAiSlND
dXN0b21FdmVudC5jcHAiCiAjaW5jbHVkZSAiSlNEYXRhYmFzZS5jcHAiCiAjaW5jbHVkZSAiSlNE
YXRhYmFzZUNhbGxiYWNrLmNwcCIKKyNpbmNsdWRlICJKU0RhdGFiYXNlU3luYy5jcHAiCiAjaW5j
bHVkZSAiSlNEYXRhR3JpZENvbHVtbi5jcHAiCiAjaW5jbHVkZSAiSlNEYXRhR3JpZENvbHVtbkxp
c3QuY3BwIgogI2luY2x1ZGUgIkpTRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAiCkBAIC0yMTAs
NiArMjExLDggQEAKICNpbmNsdWRlICJKU1NRTFRyYW5zYWN0aW9uLmNwcCIKICNpbmNsdWRlICJK
U1NRTFRyYW5zYWN0aW9uQ2FsbGJhY2suY3BwIgogI2luY2x1ZGUgIkpTU1FMVHJhbnNhY3Rpb25F
cnJvckNhbGxiYWNrLmNwcCIKKyNpbmNsdWRlICJKU1NRTFRyYW5zYWN0aW9uU3luYy5jcHAiCisj
aW5jbHVkZSAiSlNTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5jcHAiCiAjaW5jbHVkZSAiSlNT
dG9yYWdlLmNwcCIKICNpbmNsdWRlICJKU1N0b3JhZ2VFdmVudC5jcHAiCiAjaW5jbHVkZSAiSlNT
dHlsZU1lZGlhLmNwcCIKSW5kZXg6IFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDU4ODA3KQorKysg
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNiArMTE2
LDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgRE9NV2luZG93IFwKICAgICBEYXRhYmFzZSBcCiAg
ICAgRGF0YWJhc2VDYWxsYmFjayBcCisgICAgRGF0YWJhc2VTeW5jIFwKICAgICBEb2N1bWVudCBc
CiAgICAgRG9jdW1lbnRGcmFnbWVudCBcCiAgICAgRG9jdW1lbnRUeXBlIFwKQEAgLTI1NCw2ICsy
NTUsOCBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBTUUxUcmFuc2FjdGlvbiBcCiAgICAgU1FMVHJh
bnNhY3Rpb25DYWxsYmFjayBcCiAgICAgU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrIFwKKyAg
ICBTUUxUcmFuc2FjdGlvblN5bmMgXAorICAgIFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrIFwK
ICAgICBTdG9yYWdlIFwKICAgICBTdG9yYWdlRXZlbnQgXAogICAgIFNWR0FFbGVtZW50IFwKSW5k
ZXg6IFdlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9HTlVtYWtl
ZmlsZS5hbQkocmV2aXNpb24gNTg4MDcpCisrKyBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMzA1LDYgKzIzMDUsNyBAQCBGRUFUVVJFX0RFRklORVMgKz0gRU5BQkxF
X0RBVEFCQVNFPTEKIElETF9CSU5ESU5HUyArPSBcCiAJV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNl
LmlkbCBcCiAJV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlQ2FsbGJhY2suaWRsIFwKKwlXZWJDb3Jl
L3N0b3JhZ2UvRGF0YWJhc2VTeW5jLmlkbCBcCiAJV2ViQ29yZS9zdG9yYWdlL1NRTEVycm9yLmlk
bCBcCiAJV2ViQ29yZS9zdG9yYWdlL1NRTFJlc3VsdFNldC5pZGwgXAogCVdlYkNvcmUvc3RvcmFn
ZS9TUUxSZXN1bHRTZXRSb3dMaXN0LmlkbCBcCkBAIC0yMzEyLDcgKzIzMTMsOSBAQCBJRExfQklO
RElOR1MgKz0gXAogCVdlYkNvcmUvc3RvcmFnZS9TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmlk
bCBcCiAJV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmlkbCBcCiAJV2ViQ29yZS9zdG9y
YWdlL1NRTFRyYW5zYWN0aW9uQ2FsbGJhY2suaWRsIFwKLQlXZWJDb3JlL3N0b3JhZ2UvU1FMVHJh
bnNhY3Rpb25FcnJvckNhbGxiYWNrLmlkbAorCVdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlv
bkVycm9yQ2FsbGJhY2suaWRsIFwKKwlXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5j
LmlkbCBcCisJV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmlkbAog
CiB3ZWJjb3JlX2NwcGZsYWdzICs9IFwKIAktREVOQUJMRV9EQVRBQkFTRT0xCkBAIC0yMzIwLDgg
KzIzMjMsMTAgQEAgd2ViY29yZV9jcHBmbGFncyArPSBcCiB3ZWJjb3JlX3NvdXJjZXMgKz0gXAog
CVdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNw
cCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFiYXNlQ3VzdG9tLmNwcCBcCisJV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RhdGFiYXNlU3luY0N1c3RvbS5jcHAgXAogCVdlYkNvcmUvYmluZGlu
Z3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1NRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcCBcCisJV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1NRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vc3FsL1NR
TFZhbHVlLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMVmFsdWUuaCBcCiAJV2ViQ29y
ZS9wbGF0Zm9ybS9zcWwvU1FMaXRlQXV0aG9yaXplci5jcHAgXApJbmRleDogV2ViQ29yZS9XZWJD
b3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDU4
ODA3KQorKysgV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTIxOSw2ICsy
MTksNyBAQAogICAgICAgICAgICAgJ3BsdWdpbnMvUGx1Z2luQXJyYXkuaWRsJywKICAgICAgICAg
ICAgICdzdG9yYWdlL0RhdGFiYXNlLmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9EYXRhYmFz
ZUNhbGxiYWNrLmlkbCcsCisgICAgICAgICAgICAnc3RvcmFnZS9EYXRhYmFzZVN5bmMuaWRsJywK
ICAgICAgICAgICAgICdzdG9yYWdlL0lEQkRhdGFiYXNlRXJyb3IuaWRsJywKICAgICAgICAgICAg
ICdzdG9yYWdlL0lEQkRhdGFiYXNlRXhjZXB0aW9uLmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFn
ZS9JREJEYXRhYmFzZVJlcXVlc3QuaWRsJywKQEAgLTIzMSw2ICsyMzIsOCBAQAogICAgICAgICAg
ICAgJ3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uaWRsJywKICAgICAgICAgICAgICdzdG9yYWdlL1NR
TFRyYW5zYWN0aW9uQ2FsbGJhY2suaWRsJywKICAgICAgICAgICAgICdzdG9yYWdlL1NRTFRyYW5z
YWN0aW9uRXJyb3JDYWxsYmFjay5pZGwnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvU1FMVHJhbnNh
Y3Rpb25TeW5jLmlkbCcsCisgICAgICAgICAgICAnc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmND
YWxsYmFjay5pZGwnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvU3RvcmFnZS5pZGwnLAogICAgICAg
ICAgICAgJ3N0b3JhZ2UvU3RvcmFnZUV2ZW50LmlkbCcsCiAgICAgICAgICAgICAnd2Vic29ja2V0
cy9XZWJTb2NrZXQuaWRsJywKQEAgLTUwNyw2ICs1MTAsNyBAQAogICAgICAgICAgICAgJ2JpbmRp
bmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcCcsCiAgICAgICAgICAgICAnYmluZGlu
Z3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
anMvSlNEYXRhYmFzZUN1c3RvbS5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRGF0
YWJhc2VTeW5jQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNEYXRhR3Jp
ZENvbHVtbkxpc3RDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RhdGFH
cmlkRGF0YVNvdXJjZS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRGF0YUdyaWRE
YXRhU291cmNlLmgnLApAQCAtNjAxLDYgKzYwNSw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3Mv
anMvSlNTY3JpcHRQcm9maWxlTm9kZUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L2pzL0pTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5n
cy9qcy9KU1NRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pT
U3RvcmFnZUN1c3RvbS5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRD
dXN0b20uY3BwJywKQEAgLTcxMiw2ICs3MTcsNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEN1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVhQYXRoTlNSZXNvbHZlci5oJywKICAgICAgICAgICAgICdi
aW5kaW5ncy92OC9jdXN0b20vVjhEYXRhYmFzZUN1c3RvbS5jcHAnLAorICAgICAgICAgICAgJ2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFiYXNlU3luY0N1c3RvbS5jcHAnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFHcmlkQ29sdW1uTGlzdEN1c3RvbS5jcHAnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0
b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudExvY2F0
aW9uQ3VzdG9tLmNwcCcsCkBAIC03NjUsNiArNzcxLDcgQEAKICAgICAgICAgICAgICdiaW5kaW5n
cy92OC9jdXN0b20vVjhTdG9yYWdlQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
djgvY3VzdG9tL1Y4U1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcCcsCisgICAgICAg
ICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHRG9jdW1lbnRDdXN0b20uY3Bw
JywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhTVkdFbGVtZW50Q3VzdG9tLmNw
cCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHTGVuZ3RoQ3VzdG9tLmNw
cCcsCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2Vi
Q29yZS5wcmkJKHJldmlzaW9uIDU4ODA3KQorKysgV2ViQ29yZS9XZWJDb3JlLnByaQkod29ya2lu
ZyBjb3B5KQpAQCAtNDM3LDYgKzQzNyw3IEBAIElETF9CSU5ESU5HUyArPSBcCiAgICAgcGx1Z2lu
cy9NaW1lVHlwZUFycmF5LmlkbCBcCiAgICAgc3RvcmFnZS9EYXRhYmFzZS5pZGwgXAogICAgIHN0
b3JhZ2UvRGF0YWJhc2VDYWxsYmFjay5pZGwgXAorICAgIHN0b3JhZ2UvRGF0YWJhc2VTeW5jLmlk
bCBcCiAgICAgc3RvcmFnZS9TdG9yYWdlLmlkbCBcCiAgICAgc3RvcmFnZS9TdG9yYWdlRXZlbnQu
aWRsIFwKICAgICBzdG9yYWdlL1NRTEVycm9yLmlkbCBcCkBAIC00NDcsNiArNDQ4LDggQEAgSURM
X0JJTkRJTkdTICs9IFwKICAgICBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmlkbCBcCiAgICAgc3Rv
cmFnZS9TUUxUcmFuc2FjdGlvbkNhbGxiYWNrLmlkbCBcCiAgICAgc3RvcmFnZS9TUUxUcmFuc2Fj
dGlvbkVycm9yQ2FsbGJhY2suaWRsIFwKKyAgICBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luYy5p
ZGwgXAorICAgIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaWRsIFwKICAgICBz
dmcvU1ZHWm9vbUV2ZW50LmlkbCBcCiAgICAgc3ZnL1NWR0FFbGVtZW50LmlkbCBcCiAgICAgc3Zn
L1NWR0FsdEdseXBoRWxlbWVudC5pZGwgXApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA1ODgwNykKKysrIFdlYkNv
cmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTIzMDAsOCArMjMwMCwxMCBAQCBjb250
YWlucyhERUZJTkVTLCBFTkFCTEVfREFUQUJBU0U9MSkgewogICAgICAgICBzdG9yYWdlL1NRTFRy
YW5zYWN0aW9uU3luYy5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFN0YXRl
bWVudEVycm9yQ2FsbGJhY2suY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNEYXRhYmFzZUN1
c3RvbS5jcHAgXAorICAgICAgICBiaW5kaW5ncy9qcy9KU0RhdGFiYXNlU3luY0N1c3RvbS5jcHAg
XAogICAgICAgICBiaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwIFwK
LSAgICAgICAgYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKKyAgICAgICAg
YmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAgXAorICAgICAgICBiaW5kaW5n
cy9qcy9KU1NRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHAKIH0KIAogY29udGFpbnMoREVGSU5F
UywgRU5BQkxFX0RPTV9TVE9SQUdFPTEpIHsKQEAgLTIzMjUsNiArMjMyNyw3IEBAIGNvbnRhaW5z
KERFRklORVMsIEVOQUJMRV9ET01fU1RPUkFHRT0xKSAKICAgICAgICAgc3RvcmFnZS9TUUxUcmFu
c2FjdGlvbkNsaWVudC5oIFwKICAgICAgICAgc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNvb3JkaW5h
dG9yLmggXAogICAgICAgICBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luYy5oIFwKKyAgICAgICAg
c3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5oIFwKICAgICAgICAgc3RvcmFnZS9T
dG9yYWdlQXJlYS5oIFwKICAgICAgICAgc3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaCBcCiAgICAg
ICAgIHN0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmggXApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA1ODgwNykKKysrIFdlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTI1MTMsNiArMjUxMyw2MiBAQAog
CQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktp
dE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRGF0YWJhc2VT
eW5jLmNwcCINCisJCQkJPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRl
YnVnfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJ
CQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8
L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9
IlJlbGVhc2V8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4N
CisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQor
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJ
TmFtZT0iRGVidWdfSW50ZXJuYWx8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIN
CisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJh
dGlvbg0KKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm98V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxl
Q29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb3xXaW4zMiINCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1l
PSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4N
CisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiDQor
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJL
aXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0RhdGFiYXNl
U3luYy5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0
aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xK
U0RhdGFHcmlkQ29sdW1uLmNwcCINCiAJCQkJPg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCkBA
IC0xMDI3OCw2ICsxMDMzNCw2MiBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJ
CQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXFdlYkNvcmVcRGVyaXZlZFNv
dXJjZXNcSlNTUUxUcmFuc2FjdGlvblN5bmMuY3BwIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmln
dXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZp
bGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z19JbnRlcm5hbHxXaW4zMiINCisJCQkJ
CUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb3xXaW4z
MiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wN
CisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNl
X0NhaXJvfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQor
CQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJ
CQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5h
bWU9IkRlYnVnX0FsbHxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJ
CQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJ
Lz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJ
CQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXFdlYkNvcmVcRGVyaXZlZFNv
dXJjZXNcSlNTUUxUcmFuc2FjdGlvblN5bmMuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8
RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNTdG9yYWdlLmNwcCINCiAJCQkJPg0KIAkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24NCkBAIC0zNTY5MSw2ICszNTgwMyw1OCBAQAogCQkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGJpbmRpbmdzXGpzXEpTRGF0YWJhc2VTeW5jQ3VzdG9tLmNwcCINCisJCQkJCT4NCisJCQkJCTxG
aWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1l
PSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
Pg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIN
CisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wN
CisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRl
YnVnX0ludGVybmFsfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJ
CQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJ
CQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0
aW9uDQorCQkJCQkJTmFtZT0iRGVidWdfQ2Fpcm98V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xD
b21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMyIg0K
KwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0K
KwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVi
dWdfQWxsfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4N
CisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+
DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQog
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTRGF0YUdyaWRDb2x1bW5MaXN0Q3Vz
dG9tLmNwcCINCiAJCQkJCT4NCiAJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KQEAgLTM4OTcxLDYg
KzM5MTM1LDU4IEBACiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQogCQkJCTwvRmlsZT4NCiAJ
CQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNTUUxUcmFuc2Fj
dGlvblN5bmNDdXN0b20uY3BwIg0KKwkJCQkJPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQor
CQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUi
DQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
DQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJ
CQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWdfSW50ZXJuYWx8V2luMzIi
DQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29s
DQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJE
ZWJ1Z19DYWlyb3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJ
CQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJ
CQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlv
bg0KKwkJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm98V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xD
b21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiDQorCQkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0i
Li5cYmluZGluZ3NcanNcSlNTdG9yYWdlQ3VzdG9tLmNwcCINCiAJCQkJCT4NCiAJCQkJCTxGaWxl
Q29uZmlndXJhdGlvbg0KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiA1ODgwNykKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MTY4LDYgKzQxNjgsMTQgQEAKIAkJQjUy
M0NGMDkxMTgyNjc1NDAwRUJCMjlDIC8qIFNRTFRyYW5zYWN0aW9uU3luYy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNTIzQ0YwMjExODI2NzU0MDBF
QkIyOUMgLyogU1FMVHJhbnNhY3Rpb25TeW5jLmNwcCAqLzsgfTsKIAkJQjUyM0NGMEExMTgyNjc1
NDAwRUJCMjlDIC8qIERhdGFiYXNlU3luYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCNTIzQ0YwMzExODI2NzU0MDBFQkIyOUMgLyogRGF0YWJhc2VT
eW5jLmNwcCAqLzsgfTsKIAkJQjUyM0NGMEIxMTgyNjc1NDAwRUJCMjlDIC8qIERhdGFiYXNlU3lu
Yy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjUyM0NG
MDQxMTgyNjc1NDAwRUJCMjlDIC8qIERhdGFiYXNlU3luYy5oICovOyB9OworCQlCNTVENUFBNDEx
OTEzMUZDMDBCQ0MzMTUgLyogSlNTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjU1RDVBQTIxMTkxMzFGQzAw
QkNDMzE1IC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaCAqLzsgfTsKKwkJQjU1RDVB
QTUxMTkxMzFGQzAwQkNDMzE1IC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjU1RDVBQTMxMTkx
MzFGQzAwQkNDMzE1IC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suY3BwICovOyB9Owor
CQlCNTVENUFBODExOTEzMjUwMDBCQ0MzMTUgLyogSlNEYXRhYmFzZVN5bmNDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjU1RDVBQTYxMTkx
MzI1MDAwQkNDMzE1IC8qIEpTRGF0YWJhc2VTeW5jQ3VzdG9tLmNwcCAqLzsgfTsKKwkJQjU1RDVB
QTkxMTkxMzI1MDAwQkNDMzE1IC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1NUQ1QUE3MTE5MTMy
NTAwMEJDQzMxNSAvKiBKU1NRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHAgKi87IH07CisJCUI1
OENFQjY5MTE5MTM2MDcwMDJBNjc5MCAvKiBKU0RhdGFiYXNlU3luYy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjU4Q0VCNjcxMTkxMzYwNzAwMkE2Nzkw
IC8qIEpTRGF0YWJhc2VTeW5jLmggKi87IH07CisJCUI1OENFQjZBMTE5MTM2MDcwMDJBNjc5MCAv
KiBKU0RhdGFiYXNlU3luYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCNThDRUI2ODExOTEzNjA3MDAyQTY3OTAgLyogSlNEYXRhYmFzZVN5bmMuY3Bw
ICovOyB9OworCQlCNThDRUI2RDExOTEzNjFDMDAyQTY3OTAgLyogSlNTUUxUcmFuc2FjdGlvblN5
bmMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1OENF
QjZCMTE5MTM2MUMwMDJBNjc5MCAvKiBKU1NRTFRyYW5zYWN0aW9uU3luYy5oICovOyB9OworCQlC
NThDRUI2RTExOTEzNjFDMDAyQTY3OTAgLyogSlNTUUxUcmFuc2FjdGlvblN5bmMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjU4Q0VCNkMxMTkxMzYx
QzAwMkE2NzkwIC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5jLmNwcCAqLzsgfTsKIAkJQjU5REQ2OTkx
MTkwMjlFNTAwN0U5Njg0IC8qIEpTRGF0YWJhc2VDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjU5REQ2OTcxMTkwMjlFNTAwN0U5Njg0IC8q
IEpTRGF0YWJhc2VDYWxsYmFjay5oICovOyB9OwogCQlCNTlERDY5QTExOTAyOUU1MDA3RTk2ODQg
LyogSlNEYXRhYmFzZUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEI1OURENjk4MTE5MDI5RTUwMDdFOTY4NCAvKiBKU0RhdGFiYXNlQ2Fs
bGJhY2suY3BwICovOyB9OwogCQlCNTlERDY5RDExOTAyQTQyMDA3RTk2ODQgLyogSlNTUUxUcmFu
c2FjdGlvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCNTlERDY5QjExOTAyQTQyMDA3RTk2ODQgLyogSlNTUUxUcmFuc2FjdGlvbkNhbGxi
YWNrLmggKi87IH07CkBAIC05NTI4LDYgKzk1MzYsMTcgQEAKIAkJQjUyM0NGMDIxMTgyNjc1NDAw
RUJCMjlDIC8qIFNRTFRyYW5zYWN0aW9uU3luYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTUUxUcmFuc2FjdGlvblN5bmMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCNTIzQ0YwMzExODI2NzU0MDBFQkIyOUMgLyogRGF0YWJhc2VTeW5jLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGFiYXNlU3luYy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI1MjNDRjA0MTE4MjY3NTQwMEVCQjI5QyAvKiBE
YXRhYmFzZVN5bmMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YWJhc2VT
eW5jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI1NUQ1QUEyMTE5MTMxRkMwMEJD
QzMxNSAvKiBKU1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjU1RDVBQTMxMTkxMzFGQzAwQkNDMzE1IC8qIEpTU1FMVHJh
bnNhY3Rpb25TeW5jQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUI1NUQ1QUE2MTE5MTMyNTAwMEJDQzMxNSAvKiBKU0RhdGFiYXNlU3luY0N1
c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RhdGFiYXNl
U3luY0N1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI1NUQ1QUE3MTE5
MTMyNTAwMEJDQzMxNSAvKiBKU1NRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI1NUQ1QUJCMTE5MTMyNzIwMEJDQzMx
NSAvKiBEYXRhYmFzZVN5bmMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERhdGFiYXNlU3lu
Yy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI1NUQ1QUJDMTE5MTMyNzIwMEJD
QzMxNSAvKiBTUUxUcmFuc2FjdGlvblN5bmMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNR
TFRyYW5zYWN0aW9uU3luYy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI1NUQ1
QUJEMTE5MTMyNzIwMEJDQzMxNSAvKiBTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCNThDRUI2NzExOTEzNjA3MDAyQTY3OTAgLyogSlNE
YXRhYmFzZVN5bmMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEYXRhYmFz
ZVN5bmMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjU4Q0VCNjgxMTkxMzYwNzAw
MkE2NzkwIC8qIEpTRGF0YWJhc2VTeW5jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTRGF0YWJhc2VTeW5jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQjU4Q0VCNkIxMTkxMzYxQzAwMkE2NzkwIC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5jLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1FMVHJhbnNhY3Rpb25TeW5jLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI1OENFQjZDMTE5MTM2MUMwMDJBNjc5MCAvKiBK
U1NRTFRyYW5zYWN0aW9uU3luYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1NRTFRyYW5zYWN0aW9uU3luYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUI1OURENjhEMTE5MDI5OEUwMDdFOTY4NCAvKiBEYXRhYmFzZUNhbGxiYWNrLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBEYXRhYmFzZUNhbGxiYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQjU5REQ2OEUxMTkwMjk4RTAwN0U5Njg0IC8qIFNRTFN0YXRlbWVudENh
bGxiYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTUUxTdGF0ZW1lbnRDYWxsYmFjay5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI1OURENjhGMTE5MDI5OEUwMDdFOTY4
NCAvKiBTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTEwNzc0LDYgKzEwNzkzLDcgQEAKIAkJCQk1MTE2RDk3NTBDRjE3N0JEMDBDMkI4NEQg
LyogRGF0YWJhc2VEZXRhaWxzLmggKi8sCiAJCQkJQjUyM0NGMDMxMTgyNjc1NDAwRUJCMjlDIC8q
IERhdGFiYXNlU3luYy5jcHAgKi8sCiAJCQkJQjUyM0NGMDQxMTgyNjc1NDAwRUJCMjlDIC8qIERh
dGFiYXNlU3luYy5oICovLAorCQkJCUI1NUQ1QUJCMTE5MTMyNzIwMEJDQzMxNSAvKiBEYXRhYmFz
ZVN5bmMuaWRsICovLAogCQkJCTUxOTYxMUU5MENBQzc0OUMwMDEwQTgwQyAvKiBEYXRhYmFzZVRh
c2suY3BwICovLAogCQkJCTUxOTYxMUU4MENBQzc0OUMwMDEwQTgwQyAvKiBEYXRhYmFzZVRhc2su
aCAqLywKIAkJCQk1MTk2MTE2MTBDQUM1NjU3MDAxMEE4MEMgLyogRGF0YWJhc2VUaHJlYWQuY3Bw
ICovLApAQCAtMTA4MTYsNyArMTA4MzYsOSBAQAogCQkJCUI1OURENjkxMTE5MDI5OEUwMDdFOTY4
NCAvKiBTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suaWRsICovLAogCQkJCUI1MjNDRjAyMTE4
MjY3NTQwMEVCQjI5QyAvKiBTUUxUcmFuc2FjdGlvblN5bmMuY3BwICovLAogCQkJCUI1MjNDRjAx
MTE4MjY3NTQwMEVCQjI5QyAvKiBTUUxUcmFuc2FjdGlvblN5bmMuaCAqLywKKwkJCQlCNTVENUFC
QzExOTEzMjcyMDBCQ0MzMTUgLyogU1FMVHJhbnNhY3Rpb25TeW5jLmlkbCAqLywKIAkJCQlCNTIz
Q0VGRjExODI2NzU0MDBFQkIyOUMgLyogU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaCAqLywK
KwkJCQlCNTVENUFCRDExOTEzMjcyMDBCQ0MzMTUgLyogU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJh
Y2suaWRsICovLAogCQkJCTUxRTNGOUM1MERBMDU5REMwMDI1MDkxMSAvKiBTdG9yYWdlLmNwcCAq
LywKIAkJCQk1MUUzRjlDNDBEQTA1OURDMDAyNTA5MTEgLyogU3RvcmFnZS5oICovLAogCQkJCTUx
RTNGOUQxMERBMDVENzEwMDI1MDkxMSAvKiBTdG9yYWdlLmlkbCAqLywKQEAgLTE0MTAxLDYgKzE0
MTIzLDEyIEBACiAJCQkJQjU5REQ2QTQxMTkwMkE2MjAwN0U5Njg0IC8qIEpTU1FMU3RhdGVtZW50
Q2FsbGJhY2suY3BwICovLAogCQkJCUI1OURENkE3MTE5MDJBNzEwMDdFOTY4NCAvKiBKU1NRTFN0
YXRlbWVudEVycm9yQ2FsbGJhY2suaCAqLywKIAkJCQlCNTlERDZBODExOTAyQTcxMDA3RTk2ODQg
LyogSlNTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcCAqLywKKwkJCQlCNTVENUFBMjExOTEz
MUZDMDBCQ0MzMTUgLyogSlNTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5oICovLAorCQkJCUI1
NUQ1QUEzMTE5MTMxRkMwMEJDQzMxNSAvKiBKU1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmNw
cCAqLywKKwkJCQlCNThDRUI2NzExOTEzNjA3MDAyQTY3OTAgLyogSlNEYXRhYmFzZVN5bmMuaCAq
LywKKwkJCQlCNThDRUI2ODExOTEzNjA3MDAyQTY3OTAgLyogSlNEYXRhYmFzZVN5bmMuY3BwICov
LAorCQkJCUI1OENFQjZCMTE5MTM2MUMwMDJBNjc5MCAvKiBKU1NRTFRyYW5zYWN0aW9uU3luYy5o
ICovLAorCQkJCUI1OENFQjZDMTE5MTM2MUMwMDJBNjc5MCAvKiBKU1NRTFRyYW5zYWN0aW9uU3lu
Yy5jcHAgKi8sCiAJCQkpOwogCQkJbmFtZSA9IFN0b3JhZ2U7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwpAQCAtMTUwNDUsNiArMTUwNzMsOCBAQAogCQlCQzRFREVGNzBDMDhGNDE0MDA3RURE
NDkgLyogQ3VzdG9tICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
KwkJCQlCNTVENUFBNjExOTEzMjUwMDBCQ0MzMTUgLyogSlNEYXRhYmFzZVN5bmNDdXN0b20uY3Bw
ICovLAorCQkJCUI1NUQ1QUE3MTE5MTMyNTAwMEJDQzMxNSAvKiBKU1NRTFRyYW5zYWN0aW9uU3lu
Y0N1c3RvbS5jcHAgKi8sCiAJCQkJQkMyRUQ2QkIwQzZCRDJGMDAwOTIwQkZGIC8qIEpTQXR0ckN1
c3RvbS5jcHAgKi8sCiAJCQkJNDlFRUQxNEIxMDUxOTcxOTAwMDk5RkFCIC8qIEpTQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCAqLywKIAkJCQk0OUVFRDE0RDEwNTE5NzFBMDAwOTlG
QUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCAqLywKQEAgLTE4OTQ5LDYg
KzE4OTc5LDkgQEAKIAkJCQlCNTlERDZBMTExOTAyQTUyMDA3RTk2ODQgLyogSlNTUUxUcmFuc2Fj
dGlvbkVycm9yQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUI1OURENkE1MTE5MDJBNjIw
MDdFOTY4NCAvKiBKU1NRTFN0YXRlbWVudENhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
NTlERDZBOTExOTAyQTcxMDA3RTk2ODQgLyogSlNTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlCNTVENUFBNDExOTEzMUZDMDBCQ0MzMTUgLyogSlNTUUxUcmFu
c2FjdGlvblN5bmNDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjU4Q0VCNjkxMTkxMzYw
NzAwMkE2NzkwIC8qIEpTRGF0YWJhc2VTeW5jLmggaW4gSGVhZGVycyAqLywKKwkJCQlCNThDRUI2
RDExOTEzNjFDMDAyQTY3OTAgLyogSlNTUUxUcmFuc2FjdGlvblN5bmMuaCBpbiBIZWFkZXJzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpAQCAtMjExOTEsNiArMjEyMjQsMTEgQEAKIAkJCQlCNTlERDZBMjExOTAyQTUyMDA3RTk2ODQg
LyogSlNTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QjU5REQ2QTYxMTkwMkE2MjAwN0U5Njg0IC8qIEpTU1FMU3RhdGVtZW50Q2FsbGJhY2suY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQjU5REQ2QUExMTkwMkE3MTAwN0U5Njg0IC8qIEpTU1FMU3RhdGVt
ZW50RXJyb3JDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCNTVENUFBNTExOTEzMUZD
MDBCQ0MzMTUgLyogSlNTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlCNTVENUFBODExOTEzMjUwMDBCQ0MzMTUgLyogSlNEYXRhYmFzZVN5bmNDdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjU1RDVBQTkxMTkxMzI1MDAwQkNDMzE1IC8qIEpTU1FM
VHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUI1OENFQjZBMTE5
MTM2MDcwMDJBNjc5MCAvKiBKU0RhdGFiYXNlU3luYy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlC
NThDRUI2RTExOTEzNjFDMDAyQTY3OTAgLyogSlNTUUxUcmFuc2FjdGlvblN5bmMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUu
Y3BwCShyZXZpc2lvbiA1ODgwNykKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0Fs
bEluT25lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIkpT
RGF0YUdyaWRDb2x1bW5MaXN0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0RhdGFHcmlkRGF0YVNv
dXJjZS5jcHAiCiAjaW5jbHVkZSAiSlNEYXRhYmFzZUN1c3RvbS5jcHAiCisjaW5jbHVkZSAiSlNE
YXRhYmFzZVN5bmNDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTRGVkaWNhdGVkV29ya2VyQ29udGV4
dEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNEZXNrdG9wTm90aWZpY2F0aW9uc0N1c3RvbS5jcHAi
CiAjaW5jbHVkZSAiSlNEb2N1bWVudEN1c3RvbS5jcHAiCkBAIC0xMDIsNiArMTAzLDcgQEAKICNp
bmNsdWRlICJKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwIgogI2luY2x1ZGUgIkpTU1FMUmVz
dWx0U2V0Um93TGlzdEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNTUUxUcmFuc2FjdGlvbkN1c3Rv
bS5jcHAiCisjaW5jbHVkZSAiSlNTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwIgogI2luY2x1
ZGUgIkpTU1ZHRWxlbWVudEluc3RhbmNlQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1NWR0xlbmd0
aEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNTVkdNYXRyaXhDdXN0b20uY3BwIgpJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9uIDU4ODA3KQor
KysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTk2NywxMyArOTY3LDIyIEBAIEpTVmFsdWUgSlNET01XaW5kb3c6OnJlbW92ZUV2ZW50
TGlzdGVuZXIKICNpZiBFTkFCTEUoREFUQUJBU0UpCiBKU1ZhbHVlIEpTRE9NV2luZG93OjpvcGVu
RGF0YWJhc2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogewotICAgIGlm
ICghYWxsb3dzQWNjZXNzRnJvbShleGVjKSB8fCAoYXJncy5zaXplKCkgPCA0KSkKKyAgICBpZiAo
IWFsbG93c0FjY2Vzc0Zyb20oZXhlYykgfHwgKGFyZ3Muc2l6ZSgpIDwgNCkpIHsKKyAgICAgICAg
c2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFNZTlRBWF9FUlIpOwogICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKKyAgICB9CisKKyAgICAvLyBhcmdzLmF0KDMpID0gZXN0aW1hdGVkIHNpemUKKyAg
ICBpZiAoIWFyZ3MuYXQoMykuaXNVSW50MzIoKSkgeworICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4
ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKKyAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAg
IH0KKwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGNvbnN0IFVTdHJpbmcmIG5hbWUg
PSBhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpOwogICAgIGNvbnN0IFVTdHJpbmcmIHZlcnNpb24g
PSBhcmdzLmF0KDEpLnRvU3RyaW5nKGV4ZWMpOwogICAgIGNvbnN0IFVTdHJpbmcmIGRpc3BsYXlO
YW1lID0gYXJncy5hdCgyKS50b1N0cmluZyhleGVjKTsKLSAgICB1bnNpZ25lZCBsb25nIGVzdGlt
YXRlZFNpemUgPSBhcmdzLmF0KDMpLnRvSW50MzIoZXhlYyk7CisgICAgdW5zaWduZWQgbG9uZyBl
c3RpbWF0ZWRTaXplID0gYXJncy5hdCgzKS50b1VJbnQzMihleGVjKTsKICAgICBSZWZQdHI8RGF0
YWJhc2VDYWxsYmFjaz4gY3JlYXRpb25DYWxsYmFjazsKICAgICBpZiAoKGFyZ3Muc2l6ZSgpID49
IDUpICYmIGFyZ3MuYXQoNCkuaXNPYmplY3QoKSkKICAgICAgICAgY3JlYXRpb25DYWxsYmFjayA9
IEpTRGF0YWJhc2VDYWxsYmFjazo6Y3JlYXRlKGFzT2JqZWN0KGFyZ3MuYXQoNCkpLCBnbG9iYWxP
YmplY3QoKSk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YWJhc2VDdXN0b20uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhYmFzZUN1c3RvbS5jcHAJ
KHJldmlzaW9uIDU4ODA3KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFiYXNlQ3VzdG9t
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTAgKzUwLDE5IEBAIHVzaW5nIG5hbWVzcGFjZSBK
U0M7CiBKU1ZhbHVlIEpTRGF0YWJhc2U6OmNoYW5nZVZlcnNpb24oRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBBcmdMaXN0JiBhcmdzKQogewogICAgIFN0cmluZyBvbGRWZXJzaW9uID0gdXN0cmluZ1Rv
U3RyaW5nKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYykpOworICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkgeworICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQRV9NSVNNQVRDSF9F
UlIpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisKICAgICBTdHJpbmcg
bmV3VmVyc2lvbiA9IHVzdHJpbmdUb1N0cmluZyhhcmdzLmF0KDEpLnRvU3RyaW5nKGV4ZWMpKTsK
KyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9u
KGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CisgICAgfQogCi0gICAgSlNPYmplY3QqIG9iamVjdDsKLSAgICBpZiAoIShvYmplY3QgPSBhcmdz
LmF0KDIpLmdldE9iamVjdCgpKSkgeworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhcmdzLmF0KDIp
LmdldE9iamVjdCgpOworICAgIGlmICghb2JqZWN0KSB7CiAgICAgICAgIHNldERPTUV4Y2VwdGlv
bihleGVjLCBUWVBFX01JU01BVENIX0VSUik7CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwogICAgIH0KQEAgLTcyLDcgKzgxLDggQEAgSlNWYWx1ZSBKU0RhdGFiYXNlOjpjaGFuZ2VWZXJz
aW9uKEV4ZWNTdAogICAgIAogICAgIFJlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFj
azsKICAgICBpZiAoIWFyZ3MuYXQoNCkuaXNOdWxsKCkpIHsKLSAgICAgICAgaWYgKCEob2JqZWN0
ID0gYXJncy5hdCg0KS5nZXRPYmplY3QoKSkpIHsKKyAgICAgICAgb2JqZWN0ID0gYXJncy5hdCg0
KS5nZXRPYmplY3QoKTsKKyAgICAgICAgaWYgKCFvYmplY3QpIHsKICAgICAgICAgICAgIHNldERP
TUV4Y2VwdGlvbihleGVjLCBUWVBFX01JU01BVENIX0VSUik7CiAgICAgICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKICAgICAgICAgfQpAQCAtODcsOSArOTcsOSBAQCBKU1ZhbHVlIEpTRGF0
YWJhc2U6OmNoYW5nZVZlcnNpb24oRXhlY1N0CiAKIHN0YXRpYyBKU1ZhbHVlIGNyZWF0ZVRyYW5z
YWN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncywgRGF0YWJhc2UqIGRh
dGFiYXNlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBib29sIHJlYWRPbmx5KQog
ewotICAgIEpTT2JqZWN0KiBvYmplY3Q7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFyZ3MuYXQo
MCkuZ2V0T2JqZWN0KCk7CiAgICAgCi0gICAgaWYgKCEob2JqZWN0ID0gYXJncy5hdCgwKS5nZXRP
YmplY3QoKSkpIHsKKyAgICBpZiAoIW9iamVjdCkgewogICAgICAgICBzZXRET01FeGNlcHRpb24o
ZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
ICAgICB9ICAgICAgICAKQEAgLTk3LDcgKzEwNyw4IEBAIHN0YXRpYyBKU1ZhbHVlIGNyZWF0ZVRy
YW5zYWN0aW9uKEV4ZWNTdGEKICAgICBSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4gY2Fs
bGJhY2soSlNTUUxUcmFuc2FjdGlvbkNhbGxiYWNrOjpjcmVhdGUob2JqZWN0LCBnbG9iYWxPYmpl
Y3QpKTsKICAgICBSZWZQdHI8U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiBlcnJvckNhbGxi
YWNrOwogICAgIGlmIChhcmdzLnNpemUoKSA+IDEgJiYgIWFyZ3MuYXQoMSkuaXNOdWxsKCkpIHsK
LSAgICAgICAgaWYgKCEob2JqZWN0ID0gYXJncy5hdCgxKS5nZXRPYmplY3QoKSkpIHsKKyAgICAg
ICAgb2JqZWN0ID0gYXJncy5hdCgxKS5nZXRPYmplY3QoKTsKKyAgICAgICAgaWYgKCFvYmplY3Qp
IHsKICAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBUWVBFX01JU01BVENIX0VSUik7
CiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgfQpAQCAtMTA3LDcg
KzExOCw4IEBAIHN0YXRpYyBKU1ZhbHVlIGNyZWF0ZVRyYW5zYWN0aW9uKEV4ZWNTdGEKIAogICAg
IFJlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjazsKICAgICBpZiAoYXJncy5zaXpl
KCkgPiAyICYmICFhcmdzLmF0KDIpLmlzTnVsbCgpKSB7Ci0gICAgICAgIGlmICghKG9iamVjdCA9
IGFyZ3MuYXQoMikuZ2V0T2JqZWN0KCkpKSB7CisgICAgICAgIG9iamVjdCA9IGFyZ3MuYXQoMiku
Z2V0T2JqZWN0KCk7CisgICAgICAgIGlmICghb2JqZWN0KSB7CiAgICAgICAgICAgICBzZXRET01F
eGNlcHRpb24oZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpOwogICAgICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiAgICAgICAgIH0KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRh
YmFzZVN5bmNDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNE
YXRhYmFzZVN5bmNDdXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RhdGFiYXNlU3luY0N1c3RvbS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENv
bXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNEYXRhYmFzZVN5bmMuaCIKKworI2lm
IEVOQUJMRShEQVRBQkFTRSkKKworI2luY2x1ZGUgIkRhdGFiYXNlU3luYy5oIgorI2luY2x1ZGUg
IkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJKU1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNr
LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTUUxWYWx1ZS5oIgor
I2luY2x1ZGUgPHJ1bnRpbWUvSlNBcnJheS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3Vz
aW5nIG5hbWVzcGFjZSBKU0M7CisKK0pTVmFsdWUgSlNEYXRhYmFzZVN5bmM6OmNoYW5nZVZlcnNp
b24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIFN0cmluZyBv
bGRWZXJzaW9uID0gdXN0cmluZ1RvU3RyaW5nKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYykpOwor
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgeworICAgICAgICBzZXRET01FeGNlcHRpb24o
ZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
KyAgICB9CisKKyAgICBTdHJpbmcgbmV3VmVyc2lvbiA9IHVzdHJpbmdUb1N0cmluZyhhcmdzLmF0
KDEpLnRvU3RyaW5nKGV4ZWMpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKKyAg
ICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKKyAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorCisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFy
Z3MuYXQoMikuZ2V0T2JqZWN0KCk7CisgICAgaWYgKCFvYmplY3QpIHsKKyAgICAgICAgc2V0RE9N
RXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKKyAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CisgICAgfQorCisgICAgUmVmUHRyPFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNr
PiBjYWxsYmFjayhKU1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrOjpjcmVhdGUob2JqZWN0LCBz
dGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3Qo
KSkpKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIG1faW1wbC0+Y2hhbmdlVmVy
c2lvbihvbGRWZXJzaW9uLCBuZXdWZXJzaW9uLCBjYWxsYmFjay5yZWxlYXNlKCksIGVjKTsKKyAg
ICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworCisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
Cit9CisKK3N0YXRpYyBKU1ZhbHVlIGNyZWF0ZVRyYW5zYWN0aW9uKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgQXJnTGlzdCYgYXJncywgRGF0YWJhc2VTeW5jKiBkYXRhYmFzZSwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgYm9vbCByZWFkT25seSkKK3sKKyAgICBKU09iamVjdCogb2Jq
ZWN0ID0gYXJncy5hdCgwKS5nZXRPYmplY3QoKTsKKyAgICBpZiAoIW9iamVjdCkgeworICAgICAg
ICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpOworICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisKKyAgICBSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5j
Q2FsbGJhY2s+IGNhbGxiYWNrKEpTU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s6OmNyZWF0ZShv
YmplY3QsIGdsb2JhbE9iamVjdCkpOworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAg
ZGF0YWJhc2UtPnRyYW5zYWN0aW9uKGNhbGxiYWNrLnJlbGVhc2UoKSwgcmVhZE9ubHksIGVjKTsK
KyAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworCisgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7Cit9CisKK0pTVmFsdWUgSlNEYXRhYmFzZVN5bmM6OnRyYW5zYWN0aW9uKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICByZXR1cm4gY3JlYXRlVHJhbnNhY3Rp
b24oZXhlYywgYXJncywgbV9pbXBsLmdldCgpLCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKSksIGZhbHNlKTsKK30KKworSlNWYWx1ZSBK
U0RhdGFiYXNlU3luYzo6cmVhZFRyYW5zYWN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJn
TGlzdCYgYXJncykKK3sKKyAgICByZXR1cm4gY3JlYXRlVHJhbnNhY3Rpb24oZXhlYywgYXJncywg
bV9pbXBsLmdldCgpLCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmR5bmFt
aWNHbG9iYWxPYmplY3QoKSksIHRydWUpOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoREFU
QUJBU0UpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0b20u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1
c3RvbS5jcHAJKHJldmlzaW9uIDU4ODA3KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFRy
YW5zYWN0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsOCArNTAsMTAgQEAgSlNW
YWx1ZSBKU1NRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3FsKEV4ZQogICAgIH0KIAogICAgIFN0cmlu
ZyBzcWxTdGF0ZW1lbnQgPSB1c3RyaW5nVG9TdHJpbmcoYXJncy5hdCgwKS50b1N0cmluZyhleGVj
KSk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkgeworICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQRV9NSVNNQVRDSF9F
UlIpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CiAKICAgICAvLyBOb3cg
YXNzZW1ibGUgdGhlIGxpc3Qgb2YgU1FMIGFyZ3VtZW50cwogICAgIFZlY3RvcjxTUUxWYWx1ZT4g
c3FsVmFsdWVzOwpAQCAtNzQsNyArNzYsNyBAQCBKU1ZhbHVlIEpTU1FMVHJhbnNhY3Rpb246OmV4
ZWN1dGVTcWwoRXhlCiAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgICAgICAKLSAgICAgICAg
ICAgIGlmICh2YWx1ZS5pc051bGwoKSkKKyAgICAgICAgICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5l
ZE9yTnVsbCgpKQogICAgICAgICAgICAgICAgIHNxbFZhbHVlcy5hcHBlbmQoU1FMVmFsdWUoKSk7
CiAgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZS5pc051bWJlcigpKQogICAgICAgICAgICAgICAg
IHNxbFZhbHVlcy5hcHBlbmQodmFsdWUudW5jaGVja2VkR2V0TnVtYmVyKCkpOwpJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1NRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHAJ
KHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25TeW5j
Q3VzdG9tLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiSlNTUUxUcmFuc2FjdGlvblN5bmMuaCIKKworI2lmIEVOQUJMRShE
QVRBQkFTRSkKKworI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJKU1NRTFJl
c3VsdFNldC5oIgorI2luY2x1ZGUgIlNRTFJlc3VsdFNldC5oIgorI2luY2x1ZGUgIlNRTFRyYW5z
YWN0aW9uU3luYy5oIgorI2luY2x1ZGUgIlNRTFZhbHVlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBK
U0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSlNWYWx1ZSBKU1NRTFRyYW5zYWN0aW9uU3lu
Yzo6ZXhlY3V0ZVNxbChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7Cisg
ICAgaWYgKGFyZ3MuaXNFbXB0eSgpKSB7CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBT
WU5UQVhfRVJSKTsKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorCisgICAg
U3RyaW5nIHNxbFN0YXRlbWVudCA9IHVzdHJpbmdUb1N0cmluZyhhcmdzLmF0KDApLnRvU3RyaW5n
KGV4ZWMpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgc2V0RE9N
RXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKKyAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CisgICAgfQorCisgICAgLy8gTm93IGFzc2VtYmxlIHRoZSBsaXN0IG9mIFNRTCBh
cmd1bWVudHMKKyAgICBWZWN0b3I8U1FMVmFsdWU+IHNxbFZhbHVlczsKKyAgICBpZiAoIWFyZ3Mu
YXQoMSkuaXNVbmRlZmluZWRPck51bGwoKSkgeworICAgICAgICBKU09iamVjdCogb2JqZWN0ID0g
YXJncy5hdCgxKS5nZXRPYmplY3QoKTsKKyAgICAgICAgaWYgKCFvYmplY3QpIHsKKyAgICAgICAg
ICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBUWVBFX01JU01BVENIX0VSUik7CisgICAgICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAgICAgfQorCisgICAgICAgIEpTVmFsdWUgbGVu
Z3RoVmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3Ro
KTsKKyAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CisgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGxlbmd0aFZhbHVlLnRv
VUludDMyKGV4ZWMpOworICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
IDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gb2JqZWN0
LT5nZXQoZXhlYywgaSk7CisgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAgICAgICAgICAgIGlmICh2
YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICAgICAgICAgIHNxbFZhbHVlcy5hcHBl
bmQoU1FMVmFsdWUoKSk7CisgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZS5pc051bWJlcigpKQor
ICAgICAgICAgICAgICAgIHNxbFZhbHVlcy5hcHBlbmQodmFsdWUudW5jaGVja2VkR2V0TnVtYmVy
KCkpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gQ29udmVydCB0aGUg
YXJndW1lbnQgdG8gYSBzdHJpbmcgYW5kIGFwcGVuZCBpdAorICAgICAgICAgICAgICAgIHNxbFZh
bHVlcy5hcHBlbmQodXN0cmluZ1RvU3RyaW5nKHZhbHVlLnRvU3RyaW5nKGV4ZWMpKSk7CisgICAg
ICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhl
eGVjLCBnbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIobV9pbXBsLT5leGVjdXRlU1FMKHNxbFN0
YXRlbWVudCwgc3FsVmFsdWVzLCBlYykpKTsKKyAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMp
OworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKERBVEFC
QVNFKQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9t
LmNwcAkocmV2aXNpb24gNTg4MDcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29u
dGV4dEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDEwIEBACiAKICNpbmNs
dWRlICJKU1dvcmtlckNvbnRleHQuaCIKIAorI2lmIEVOQUJMRShEQVRBQkFTRSkKKyNpbmNsdWRl
ICJKU0RhdGFiYXNlQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJKU0RhdGFiYXNlU3luYy5oIgorI2Vu
ZGlmCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmpl
Y3QuaCIKICNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKQEAgLTE0Miw2ICsxNDYsMzYgQEAg
SlNWYWx1ZSBKU1dvcmtlckNvbnRleHQ6Om1lc3NhZ2VDaGFubmVsKAogfQogI2VuZGlmCiAKKyNp
ZiBFTkFCTEUoREFUQUJBU0UpCitKU1ZhbHVlIEpTV29ya2VyQ29udGV4dDo6b3BlbkRhdGFiYXNl
U3luYyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAgaWYgKGFy
Z3Muc2l6ZSgpIDwgNCkgeworICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgU1lOVEFYX0VS
Uik7CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIH0KKworICAgIC8vIGFyZ3Mu
YXQoMykgPSBlc3RpbWF0ZWQgc2l6ZQorICAgIGlmICghYXJncy5hdCgzKS5pc1VJbnQzMigpKSB7
CisgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpOworICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CisgICAgY29uc3QgVVN0cmluZyYgbmFtZSA9IGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyk7Cisg
ICAgY29uc3QgVVN0cmluZyYgdmVyc2lvbiA9IGFyZ3MuYXQoMSkudG9TdHJpbmcoZXhlYyk7Cisg
ICAgY29uc3QgVVN0cmluZyYgZGlzcGxheU5hbWUgPSBhcmdzLmF0KDIpLnRvU3RyaW5nKGV4ZWMp
OworICAgIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSA9IGFyZ3MuYXQoMykudG9VSW50MzIo
ZXhlYyk7CisgICAgUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+IGNyZWF0aW9uQ2FsbGJhY2s7Cisg
ICAgaWYgKChhcmdzLnNpemUoKSA+PSA1KSAmJiBhcmdzLmF0KDQpLmlzT2JqZWN0KCkpCisgICAg
ICAgIGNyZWF0aW9uQ2FsbGJhY2sgPSBKU0RhdGFiYXNlQ2FsbGJhY2s6OmNyZWF0ZShhc09iamVj
dChhcmdzLmF0KDQpKSwgZ2xvYmFsT2JqZWN0KCkpOworCisgICAgSlNWYWx1ZSByZXN1bHQgPSB0
b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsKCktPm9wZW5EYXRhYmFz
ZVN5bmModXN0cmluZ1RvU3RyaW5nKG5hbWUpLCB1c3RyaW5nVG9TdHJpbmcodmVyc2lvbiksIHVz
dHJpbmdUb1N0cmluZyhkaXNwbGF5TmFtZSksIGVzdGltYXRlZFNpemUsIGNyZWF0aW9uQ2FsbGJh
Y2sucmVsZWFzZSgpLCBlYykpKTsKKworICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9uIDU4ODA3KQorKysgV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MTksNyArNzE5LDExIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRv
dzo6b3BlbkQKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5ET01XaW5kb3cub3BlbkRhdGFiYXNlIik7
CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCA0KQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5l
ZCgpOworICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigib3BlbkRhdGFiYXNlU3luYygpIG11c3Qg
YmUgY2FsbGVkIHdpdGggYXQgbGVhc3QgNCBwYXJhbWV0ZXJzLiIsIFY4UHJveHk6OlN5bnRheEVy
cm9yKTsKKworICAgIC8vIGFyZ3NbM10gPSBlc3RpbWF0ZWQgc2l6ZQorICAgIGlmICghYXJnc1sz
XS0+SXNVaW50MzIoKSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIlRoaXJkIHBhcmFtZXRl
ciB0byBvcGVuRGF0YWJhc2VTeW5jKCkgbXVzdCBiZSBhIHVpbnQzMi4iLCBWOFByb3h5OjpUeXBl
RXJyb3IpOwogCiAgICAgRE9NV2luZG93KiBpbXAgPSBWOERPTVdpbmRvdzo6dG9OYXRpdmUoYXJn
cy5Ib2xkZXIoKSk7CiAgICAgaWYgKCFWOEJpbmRpbmdTZWN1cml0eTo6Y2FuQWNjZXNzRnJhbWUo
VjhCaW5kaW5nU3RhdGU6Ok9ubHkoKSwgaW1wLT5mcmFtZSgpLCB0cnVlKSkKQEAgLTcyOSw3ICs3
MzMsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6Om9wZW5ECiAgICAgU3Ry
aW5nIG5hbWUgPSB0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSk7CiAgICAgU3RyaW5nIHZlcnNpb24g
PSB0b1dlYkNvcmVTdHJpbmcoYXJnc1sxXSk7CiAgICAgU3RyaW5nIGRpc3BsYXlOYW1lID0gdG9X
ZWJDb3JlU3RyaW5nKGFyZ3NbMl0pOwotICAgIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSA9
IGFyZ3NbM10tPkludGVnZXJWYWx1ZSgpOworICAgIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6
ZSA9IGFyZ3NbM10tPlVpbnQzMlZhbHVlKCk7CiAgICAgUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+
IGNyZWF0aW9uQ2FsbGJhY2s7CiAgICAgaWYgKChhcmdzLkxlbmd0aCgpID49IDUpICYmIGFyZ3Nb
NF0tPklzT2JqZWN0KCkpCiAgICAgICAgIGNyZWF0aW9uQ2FsbGJhY2sgPSBWOERhdGFiYXNlQ2Fs
bGJhY2s6OmNyZWF0ZShhcmdzWzRdLCBpbXAtPmZyYW1lKCkpOwpJbmRleDogV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhEYXRhYmFzZUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhYmFzZUN1c3RvbS5jcHAJKHJldmlzaW9uIDU4ODA3
KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhYmFzZUN1c3RvbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGF0
YWJhc2U6OmNoYW5nZQogICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiVGhlIG9sZCBhbmQgbmV3
IHZlcnNpb24gc3RyaW5ncyBhcmUgcmVxdWlyZWQuIiwgVjhQcm94eTo6U3ludGF4RXJyb3IpOwog
CiAgICAgaWYgKCEoYXJnc1swXS0+SXNTdHJpbmcoKSAmJiBhcmdzWzFdLT5Jc1N0cmluZygpKSkK
LSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIlRoZSBvbGQgYW5kIG5ldyB2ZXJzaW9ucyBtdXN0
IGJlIHN0cmluZ3MuIik7CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJUaGUgb2xkIGFuZCBu
ZXcgdmVyc2lvbnMgbXVzdCBiZSBzdHJpbmdzLiIsIFY4UHJveHk6OlR5cGVFcnJvcik7CiAKICAg
ICBEYXRhYmFzZSogZGF0YWJhc2UgPSBWOERhdGFiYXNlOjp0b05hdGl2ZShhcmdzLkhvbGRlcigp
KTsKIApAQCAtNjEsNyArNjEsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEYXRhYmFzZTo6
Y2hhbmdlCiAgICAgUmVmUHRyPFY4U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4gY2FsbGJhY2s7CiAg
ICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAyKSB7CiAgICAgICAgIGlmICghYXJnc1syXS0+SXNPYmpl
Y3QoKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJjaGFuZ2VWZXJzaW9uIHRyYW5z
YWN0aW9uIGNhbGxiYWNrIG11c3QgYmUgb2YgdmFsaWQgdHlwZS4iKTsKKyAgICAgICAgICAgIHJl
dHVybiB0aHJvd0Vycm9yKCJjaGFuZ2VWZXJzaW9uIHRyYW5zYWN0aW9uIGNhbGxiYWNrIG11c3Qg
YmUgb2YgdmFsaWQgdHlwZS4iLCBWOFByb3h5OjpUeXBlRXJyb3IpOwogCiAgICAgICAgIGNhbGxi
YWNrID0gVjhTUUxUcmFuc2FjdGlvbkNhbGxiYWNrOjpjcmVhdGUoYXJnc1syXSwgZnJhbWUpOwog
ICAgIH0KQEAgLTY5LDcgKzY5LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGF0YWJhc2U6
OmNoYW5nZQogICAgIFJlZlB0cjxWOFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4gZXJyb3JD
YWxsYmFjazsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDMpIHsKICAgICAgICAgaWYgKCFhcmdz
WzNdLT5Jc09iamVjdCgpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoImNoYW5nZVZl
cnNpb24gZXJyb3IgY2FsbGJhY2sgbXVzdCBiZSBvZiB2YWxpZCB0eXBlLiIpOworICAgICAgICAg
ICAgcmV0dXJuIHRocm93RXJyb3IoImNoYW5nZVZlcnNpb24gZXJyb3IgY2FsbGJhY2sgbXVzdCBi
ZSBvZiB2YWxpZCB0eXBlLiIsIFY4UHJveHk6OlR5cGVFcnJvcik7CiAKICAgICAgICAgZXJyb3JD
YWxsYmFjayA9IFY4U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrOjpjcmVhdGUoYXJnc1szXSwg
ZnJhbWUpOwogICAgIH0KQEAgLTc3LDcgKzc3LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
RGF0YWJhc2U6OmNoYW5nZQogICAgIFJlZlB0cjxWOEN1c3RvbVZvaWRDYWxsYmFjaz4gc3VjY2Vz
c0NhbGxiYWNrOwogICAgIGlmIChhcmdzLkxlbmd0aCgpID4gNCkgewogICAgICAgICBpZiAoIWFy
Z3NbNF0tPklzT2JqZWN0KCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiY2hhbmdl
VmVyc2lvbiBzdWNjZXNzIGNhbGxiYWNrIG11c3QgYmUgb2YgdmFsaWQgdHlwZS4iKTsKKyAgICAg
ICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJjaGFuZ2VWZXJzaW9uIHN1Y2Nlc3MgY2FsbGJhY2sg
bXVzdCBiZSBvZiB2YWxpZCB0eXBlLiIsIFY4UHJveHk6OlR5cGVFcnJvcik7CiAKICAgICAgICAg
c3VjY2Vzc0NhbGxiYWNrID0gVjhDdXN0b21Wb2lkQ2FsbGJhY2s6OmNyZWF0ZShhcmdzWzRdLCBm
cmFtZSk7CiAgICAgfQpAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGNyZWF0ZVRyYW5zCiAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJUcmFuc2FjdGlvbiBj
YWxsYmFjayBpcyByZXF1aXJlZC4iLCBWOFByb3h5OjpTeW50YXhFcnJvcik7CiAKICAgICBpZiAo
IWFyZ3NbMF0tPklzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJUcmFuc2Fj
dGlvbiBjYWxsYmFjayBtdXN0IGJlIG9mIHZhbGlkIHR5cGUuIik7CisgICAgICAgIHJldHVybiB0
aHJvd0Vycm9yKCJUcmFuc2FjdGlvbiBjYWxsYmFjayBtdXN0IGJlIG9mIHZhbGlkIHR5cGUuIiwg
VjhQcm94eTo6VHlwZUVycm9yKTsKIAogICAgIERhdGFiYXNlKiBkYXRhYmFzZSA9IFY4RGF0YWJh
c2U6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogCkBAIC0xMDYsNyArMTA2LDcgQEAgc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjcmVhdGVUcmFucwogICAgIFJlZlB0cjxWOFNRTFRyYW5z
YWN0aW9uRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjazsKICAgICBpZiAoYXJncy5MZW5ndGgo
KSA+IDEgJiYgIWlzVW5kZWZpbmVkT3JOdWxsKGFyZ3NbMV0pKSB7CiAgICAgICAgIGlmICghYXJn
c1sxXS0+SXNPYmplY3QoKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJUcmFuc2Fj
dGlvbiBlcnJvciBjYWxsYmFjayBtdXN0IGJlIG9mIHZhbGlkIHR5cGUuIik7CisgICAgICAgICAg
ICByZXR1cm4gdGhyb3dFcnJvcigiVHJhbnNhY3Rpb24gZXJyb3IgY2FsbGJhY2sgbXVzdCBiZSBv
ZiB2YWxpZCB0eXBlLiIsIFY4UHJveHk6OlR5cGVFcnJvcik7CiAKICAgICAgICAgZXJyb3JDYWxs
YmFjayA9IFY4U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrOjpjcmVhdGUoYXJnc1sxXSwgZnJh
bWUpOwogICAgIH0KQEAgLTExNCw3ICsxMTQsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGNyZWF0ZVRyYW5zCiAgICAgUmVmUHRyPFY4Q3VzdG9tVm9pZENhbGxiYWNrPiBzdWNjZXNz
Q2FsbGJhY2s7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAyICYmICFpc1VuZGVmaW5lZE9yTnVs
bChhcmdzWzJdKSkgewogICAgICAgICBpZiAoIWFyZ3NbMl0tPklzT2JqZWN0KCkpCi0gICAgICAg
ICAgICByZXR1cm4gdGhyb3dFcnJvcigiVHJhbnNhY3Rpb24gc3VjY2VzcyBjYWxsYmFjayBtdXN0
IGJlIG9mIHZhbGlkIHR5cGUuIik7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiVHJh
bnNhY3Rpb24gc3VjY2VzcyBjYWxsYmFjayBtdXN0IGJlIG9mIHZhbGlkIHR5cGUuIiwgVjhQcm94
eTo6VHlwZUVycm9yKTsKIAogICAgICAgICBzdWNjZXNzQ2FsbGJhY2sgPSBWOEN1c3RvbVZvaWRD
YWxsYmFjazo6Y3JlYXRlKGFyZ3NbMl0sIGZyYW1lKTsKICAgICB9CkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFiYXNlU3luY0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhYmFzZVN5bmNDdXN0b20uY3BwCShyZXZp
c2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhYmFzZVN5bmNDdXN0
b20uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
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
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2lmIEVOQUJMRShEQVRBQkFTRSkKKyNpbmNsdWRlICJWOERhdGFiYXNlU3luYy5oIgorCisj
aW5jbHVkZSAiRGF0YWJhc2VTeW5jLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVk
ZSAiVjhQcm94eS5oIgorI2luY2x1ZGUgIlY4U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEYXRhYmFz
ZVN5bmM6OmNoYW5nZVZlcnNpb25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQor
eworICAgIElOQ19TVEFUUygiRE9NLkRhdGFiYXNlLmNoYW5nZVZlcnNpb24oKSIpOworCisgICAg
aWYgKGFyZ3MuTGVuZ3RoKCkgPCAyKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiVGhlIG9s
ZCBhbmQgbmV3IHZlcnNpb24gc3RyaW5ncyBhcmUgcmVxdWlyZWQuIiwgVjhQcm94eTo6U3ludGF4
RXJyb3IpOworCisgICAgaWYgKCEoYXJnc1swXS0+SXNTdHJpbmcoKSAmJiBhcmdzWzFdLT5Jc1N0
cmluZygpKSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIlRoZSBvbGQgYW5kIG5ldyB2ZXJz
aW9ucyBtdXN0IGJlIHN0cmluZ3MuIiwgVjhQcm94eTo6VHlwZUVycm9yKTsKKworICAgIERhdGFi
YXNlU3luYyogZGF0YWJhc2UgPSBWOERhdGFiYXNlU3luYzo6dG9OYXRpdmUoYXJncy5Ib2xkZXIo
KSk7CisKKyAgICBSZWZQdHI8VjhTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjaz4gY2FsbGJhY2s7
CisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAyKSB7CisgICAgICAgIGlmICghYXJnc1syXS0+SXNP
YmplY3QoKSkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJjaGFuZ2VWZXJzaW9uIHRy
YW5zYWN0aW9uIGNhbGxiYWNrIG11c3QgYmUgb2YgdmFsaWQgdHlwZS4iLCBWOFByb3h5OjpUeXBl
RXJyb3IpOworCisgICAgICAgIGNhbGxiYWNrID0gVjhTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFj
azo6Y3JlYXRlKGFyZ3NbMl0sIDApOworICAgIH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OworICAgIGRhdGFiYXNlLT5jaGFuZ2VWZXJzaW9uKHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKSwg
dG9XZWJDb3JlU3RyaW5nKGFyZ3NbMV0pLCBjYWxsYmFjay5yZWxlYXNlKCksIGVjKTsKKyAgICBW
OFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMpOworCisgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQo
KTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjcmVhdGVUcmFuc2FjdGlvbihj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBib29sIHJlYWRPbmx5KQoreworICAgIGlmICghYXJn
cy5MZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIlRyYW5zYWN0aW9uIGNhbGxi
YWNrIGlzIHJlcXVpcmVkLiIsIFY4UHJveHk6OlN5bnRheEVycm9yKTsKKworICAgIGlmICghYXJn
c1swXS0+SXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIlRyYW5zYWN0aW9u
IGNhbGxiYWNrIG11c3QgYmUgb2YgdmFsaWQgdHlwZS4iLCBWOFByb3h5OjpUeXBlRXJyb3IpOwor
CisgICAgRGF0YWJhc2VTeW5jKiBkYXRhYmFzZSA9IFY4RGF0YWJhc2VTeW5jOjp0b05hdGl2ZShh
cmdzLkhvbGRlcigpKTsKKworICAgIFJlZlB0cjxWOFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNr
PiBjYWxsYmFjayA9IFY4U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s6OmNyZWF0ZShhcmdzWzBd
LCAwKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGRhdGFiYXNlLT50cmFuc2Fj
dGlvbihjYWxsYmFjay5yZWxlYXNlKCksIHJlYWRPbmx5LCBlYyk7CisgICAgVjhQcm94eTo6c2V0
RE9NRXhjZXB0aW9uKGVjKTsKKworICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Cit9CisKK3Y4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOERhdGFiYXNlU3luYzo6dHJhbnNhY3Rpb25DYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLkRhdGFiYXNl
LnRyYW5zYWN0aW9uKCkiKTsKKyAgICByZXR1cm4gY3JlYXRlVHJhbnNhY3Rpb24oYXJncywgZmFs
c2UpOworfQorCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEYXRhYmFzZVN5bmM6OnJlYWRUcmFu
c2FjdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NU
QVRTKCJET00uRGF0YWJhc2UucmVhZFRyYW5zYWN0aW9uKCkiKTsKKyAgICByZXR1cm4gY3JlYXRl
VHJhbnNhY3Rpb24oYXJncywgdHJ1ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9u
U3luY0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDEwOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShE
QVRBQkFTRSkKKworI2luY2x1ZGUgIlY4U1FMVHJhbnNhY3Rpb25TeW5jLmgiCisKKyNpbmNsdWRl
ICJEYXRhYmFzZVN5bmMuaCIKKyNpbmNsdWRlICJTUUxSZXN1bHRTZXQuaCIKKyNpbmNsdWRlICJT
UUxWYWx1ZS5oIgorI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIK
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXVEY7CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4U1FMVHJhbnNhY3Rpb25T
eW5jOjpleGVjdXRlU3FsQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAg
ICBJTkNfU1RBVFMoIkRPTS5TUUxUcmFuc2FjdGlvblN5bmMuZXhlY3V0ZVNxbCgpIik7CisKKyAg
ICBpZiAoYXJncy5MZW5ndGgoKSA9PSAwKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiU1FM
IHN0YXRlbWVudCBpcyByZXF1aXJlZC4iLCBWOFByb3h5OjpTeW50YXhFcnJvcik7CisKKyAgICBT
dHJpbmcgc3RhdGVtZW50ID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOworCisgICAgVmVjdG9y
PFNRTFZhbHVlPiBzcWxWYWx1ZXM7CisKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDEgJiYgIWlz
VW5kZWZpbmVkT3JOdWxsKGFyZ3NbMV0pKSB7CisgICAgICAgIGlmIChhcmdzWzFdLT5Jc09iamVj
dCgpKSB7CisgICAgICAgICAgICB1aW50MzJfdCBzcWxBcmdzTGVuZ3RoID0gMDsKKyAgICAgICAg
ICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBzcWxBcmdzT2JqZWN0ID0gYXJnc1sxXS0+VG9PYmpl
Y3QoKTsKKyAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGxlbmd0aEdldHRlcjsKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2ODo6VHJ5Q2F0Y2ggYmxvY2s7CisgICAgICAg
ICAgICAgICAgbGVuZ3RoR2V0dGVyID0gc3FsQXJnc09iamVjdC0+R2V0KHY4OjpTdHJpbmc6Ok5l
dygibGVuZ3RoIikpOworICAgICAgICAgICAgICAgIGlmIChibG9jay5IYXNDYXVnaHQoKSkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoYmxvY2suRXhjZXB0aW9uKCkpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaXNVbmRlZmluZWRPck51bGwobGVuZ3Ro
R2V0dGVyKSkKKyAgICAgICAgICAgICAgICBzcWxBcmdzTGVuZ3RoID0gc3FsQXJnc09iamVjdC0+
R2V0UHJvcGVydHlOYW1lcygpLT5MZW5ndGgoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBzcWxBcmdzTGVuZ3RoID0gbGVuZ3RoR2V0dGVyLT5VaW50MzJWYWx1ZSgpOworCisg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHNxbEFyZ3NMZW5ndGg7ICsr
aSkgeworICAgICAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6SW50ZWdlcj4ga2V5ID0gdjg6Oklu
dGVnZXI6Ok5ldyhpKTsKKyAgICAgICAgICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1
ZTsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHY4OjpUcnlDYXRjaCBi
bG9jazsKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBzcWxBcmdzT2JqZWN0LT5HZXQoa2V5
KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGJsb2NrLkhhc0NhdWdodCgpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoYmxvY2suRXhjZXB0aW9uKCkpOworICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5Jc0VtcHR5KCkgfHwg
dmFsdWUtPklzTnVsbCgpKQorICAgICAgICAgICAgICAgICAgICBzcWxWYWx1ZXMuYXBwZW5kKFNR
TFZhbHVlKCkpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlLT5Jc051bWJlcigpKQor
ICAgICAgICAgICAgICAgICAgICBzcWxWYWx1ZXMuYXBwZW5kKFNRTFZhbHVlKHZhbHVlLT5OdW1i
ZXJWYWx1ZSgpKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBz
cWxWYWx1ZXMuYXBwZW5kKFNRTFZhbHVlKHRvV2ViQ29yZVN0cmluZyh2YWx1ZSkpKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigi
c3FsQXJncyBzaG91bGQgYmUgYXJyYXkgb3Igb2JqZWN0ISIsIFY4UHJveHk6OlR5cGVFcnJvcik7
CisgICAgfQorCisgICAgU1FMVHJhbnNhY3Rpb25TeW5jKiB0cmFuc2FjdGlvbiA9IFY4U1FMVHJh
bnNhY3Rpb25TeW5jOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKworICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOworICAgIHRyYW5zYWN0aW9uLT5leGVjdXRlU1FMKHN0YXRlbWVudCwgc3FsVmFs
dWVzLCBlYyk7CisgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKGVjKTsKKworICAgIHJldHVy
biB2ODo6VW5kZWZpbmVkKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29u
dGV4dEN1c3RvbS5jcHAJKHJldmlzaW9uIDU4ODA3KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiAr
MzMsMTAgQEAKICNpZiBFTkFCTEUoV09SS0VSUykKICNpbmNsdWRlICJWOFdvcmtlckNvbnRleHQu
aCIKIAorI2lmIEVOQUJMRShEQVRBQkFTRSkKKyNpbmNsdWRlICJWOERhdGFiYXNlQ2FsbGJhY2su
aCIKKyNpbmNsdWRlICJWOERhdGFiYXNlU3luYy5oIgorI2VuZGlmCiAjaW5jbHVkZSAiRE9NVGlt
ZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiU2NoZWR1bGVkQWN0
aW9uLmgiCkBAIC0xMzYsNiArMTQwLDM1IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFdv
cmtlckNvbnRleHQKICAgICByZXR1cm4gZ2xvYmFsOwogfQogCisjaWYgRU5BQkxFKERBVEFCQVNF
KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V29ya2VyQ29udGV4dDo6b3BlbkRhdGFiYXNlU3lu
Y0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJE
T00uVjhXb3JrZXJDb250ZXh0Lm9wZW5EYXRhYmFzZVN5bmMoKSIpOworICAgIGlmIChhcmdzLkxl
bmd0aCgpIDwgNCkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIm9wZW5EYXRhYmFzZVN5bmMo
KSBtdXN0IGJlIGNhbGxlZCB3aXRoIGF0IGxlYXN0IDQgcGFyYW1ldGVycy4iLCBWOFByb3h5OjpT
eW50YXhFcnJvcik7CisKKyAgICAvLyBhcmdzWzNdID0gZXN0aW1hdGVkIHNpemUKKyAgICBpZiAo
IWFyZ3NbM10tPklzVWludDMyKCkpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJUaGlyZCBw
YXJhbWV0ZXIgdG8gb3BlbkRhdGFiYXNlU3luYygpIG11c3QgYmUgYSB1aW50MzIuIiwgVjhQcm94
eTo6VHlwZUVycm9yKTsKKworICAgIFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQgPSBWOFdv
cmtlckNvbnRleHQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworCisgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CisgICAgU3RyaW5nIG5hbWUgPSB0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSk7Cisg
ICAgU3RyaW5nIHZlcnNpb24gPSB0b1dlYkNvcmVTdHJpbmcoYXJnc1sxXSk7CisgICAgU3RyaW5n
IGRpc3BsYXlOYW1lID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMl0pOworICAgIHVuc2lnbmVkIGxv
bmcgZXN0aW1hdGVkU2l6ZSA9IGFyZ3NbM10tPlVpbnQzMlZhbHVlKCk7CisgICAgUmVmUHRyPERh
dGFiYXNlQ2FsbGJhY2s+IGNyZWF0aW9uQ2FsbGJhY2s7CisgICAgaWYgKChhcmdzLkxlbmd0aCgp
ID49IDUpICYmIGFyZ3NbNF0tPklzT2JqZWN0KCkpCisgICAgICAgIGNyZWF0aW9uQ2FsbGJhY2sg
PSBWOERhdGFiYXNlQ2FsbGJhY2s6OmNyZWF0ZShhcmdzWzRdLCAwKTsKKworICAgIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiByZXN1bHQgPSB0b1Y4KHdvcmtlckNvbnRleHQtPm9wZW5EYXRhYmFzZVN5
bmMobmFtZSwgdmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUsIGNyZWF0aW9uQ2Fs
bGJhY2sucmVsZWFzZSgpLCBlYykpOworCisgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKGVj
KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIEVOQUJMRShXT1JLRVJTKQpJbmRleDogV2ViQ29yZS9zdG9yYWdlL0Rh
dGFiYXNlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuaWRsCShy
ZXZpc2lvbiA1ODgwNykKKysrIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDcgKzMwLDggQEAgbW9kdWxlIHN0b3JhZ2UgewogCiAgICAgaW50ZXJmYWNl
IFsKICAgICAgICAgQ29uZGl0aW9uYWw9REFUQUJBU0UsCi0gICAgICAgIE9taXRDb25zdHJ1Y3Rv
cgorICAgICAgICBPbWl0Q29uc3RydWN0b3IsCisgICAgICAgIE5vU3RhdGljVGFibGVzCiAgICAg
XSBEYXRhYmFzZSB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdmVyc2lv
bjsKICAgICAgICAgW0N1c3RvbV0gdm9pZCBjaGFuZ2VWZXJzaW9uKGluIERPTVN0cmluZyBvbGRW
ZXJzaW9uLCBpbiBET01TdHJpbmcgbmV3VmVyc2lvbiwgaW4gU1FMVHJhbnNhY3Rpb25DYWxsYmFj
ayBjYWxsYmFjaywgaW4gU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2ss
IGluIFZvaWRDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2spOwpJbmRleDogV2ViQ29yZS9zdG9yYWdl
L0RhdGFiYXNlQ2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJh
c2VDYWxsYmFjay5oCShyZXZpc2lvbiA1ODgwNykKKysrIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFz
ZUNhbGxiYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEyICszOCwxNCBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBEYXRhYmFzZTsKK2NsYXNzIERhdGFiYXNlU3luYzsKIGNsYXNz
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNsYXNzIERhdGFiYXNlQ2FsbGJhY2sgOiBwdWJs
aWMgVGhyZWFkU2FmZVNoYXJlZDxEYXRhYmFzZUNhbGxiYWNrPiB7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB+RGF0YWJhc2VDYWxsYmFjaygpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVu
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRGF0YWJhc2UqKSA9IDA7CisgICAgdmlydHVhbCBi
b29sIGhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBEYXRhYmFzZVN5bmMqKSA9
IDA7CiB9OwogCiB9CkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VDYWxsYmFjay5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlQ2FsbGJhY2suaWRsCShyZXZp
c2lvbiA1ODgwNykKKysrIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZUNhbGxiYWNrLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMzIsNSArMzIsNiBAQCBtb2R1bGUgc3RvcmFnZSB7CiAgICAgICAgIENh
bGxiYWNrCiAgICAgXSBEYXRhYmFzZUNhbGxiYWNrIHsKICAgICAgICAgYm9vbGVhbiBoYW5kbGVF
dmVudChpbiBEYXRhYmFzZSBkYXRhYmFzZSk7CisgICAgICAgIGJvb2xlYW4gaGFuZGxlRXZlbnQo
aW4gRGF0YWJhc2VTeW5jIGRhdGFiYXNlKTsKICAgICB9OwogfQpJbmRleDogV2ViQ29yZS9zdG9y
YWdlL0RhdGFiYXNlU3luYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL0RhdGFi
YXNlU3luYy5jcHAJKHJldmlzaW9uIDU4ODA3KQorKysgV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNl
U3luYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDEyICs5MSwxMiBAQCBTdHJpbmcgRGF0YWJh
c2VTeW5jOjp2ZXJzaW9uKCkgY29uc3QKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLXZvaWQg
RGF0YWJhc2VTeW5jOjpjaGFuZ2VWZXJzaW9uKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYs
IFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+KQordm9pZCBEYXRhYmFzZVN5
bmM6OmNoYW5nZVZlcnNpb24oY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUGFzc1JlZlB0
cjxTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjaz4sIEV4Y2VwdGlvbkNvZGUmKQogewogICAgIEFT
U0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsKIH0KIAot
dm9pZCBEYXRhYmFzZVN5bmM6OnRyYW5zYWN0aW9uKFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25T
eW5jQ2FsbGJhY2s+LCBib29sKQordm9pZCBEYXRhYmFzZVN5bmM6OnRyYW5zYWN0aW9uKFBhc3NS
ZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+LCBib29sLCBFeGNlcHRpb25Db2RlJikK
IHsKICAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRUaHJlYWQo
KSk7CiB9CkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VTeW5jLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlU3luYy5oCShyZXZpc2lvbiA1ODgwNykKKysrIFdl
YkNvcmUvc3RvcmFnZS9EYXRhYmFzZVN5bmMuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsOCArNTMs
OCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RGF0YWJhc2VTeW5jPiBvcGVuRGF0
YWJhc2VTeW5jKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNp
Z25lZCBsb25nIGVzdGltYXRlZFNpemUsIFBhc3NSZWZQdHI8RGF0YWJhc2VDYWxsYmFjaz4sIEV4
Y2VwdGlvbkNvZGUmKTsKICAgICBTdHJpbmcgdmVyc2lvbigpIGNvbnN0OwotICAgIHZvaWQgY2hh
bmdlVmVyc2lvbihjb25zdCBTdHJpbmcmIG9sZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgbmV3VmVy
c2lvbiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjaz4pOwotICAgIHZvaWQg
dHJhbnNhY3Rpb24oUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjaz4sIGJvb2wg
cmVhZE9ubHkpOworICAgIHZvaWQgY2hhbmdlVmVyc2lvbihjb25zdCBTdHJpbmcmIG9sZFZlcnNp
b24sIGNvbnN0IFN0cmluZyYgbmV3VmVyc2lvbiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvblN5
bmNDYWxsYmFjaz4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHRyYW5zYWN0aW9uKFBhc3NS
ZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+LCBib29sIHJlYWRPbmx5LCBFeGNlcHRp
b25Db2RlJik7CiAKICAgICAvLyBJbnRlcm5hbCBlbmdpbmUgc3VwcG9ydAogICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKSW5kZXg6IFdl
YkNvcmUvc3RvcmFnZS9EYXRhYmFzZVN5bmMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Rv
cmFnZS9EYXRhYmFzZVN5bmMuaWRsCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9zdG9yYWdlL0Rh
dGFiYXNlU3luYy5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMu
ICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgc3Rv
cmFnZSB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1EQVRBQkFTRSwK
KyAgICAgICAgT21pdENvbnN0cnVjdG9yLAorICAgICAgICBOb1N0YXRpY1RhYmxlcworICAgIF0g
RGF0YWJhc2VTeW5jIHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB2ZXJz
aW9uOworICAgICAgICBbQ3VzdG9tXSB2b2lkIGNoYW5nZVZlcnNpb24oaW4gRE9NU3RyaW5nIG9s
ZFZlcnNpb24sIGluIERPTVN0cmluZyBuZXdWZXJzaW9uLCBpbiBTUUxUcmFuc2FjdGlvblN5bmND
YWxsYmFjayBjYWxsYmFjayk7CisgICAgICAgIFtDdXN0b21dIHZvaWQgdHJhbnNhY3Rpb24oaW4g
U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2sgY2FsbGJhY2spOworICAgICAgICBbQ3VzdG9tXSB2
b2lkIHJlYWRUcmFuc2FjdGlvbihpbiBTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjayBjYWxsYmFj
ayk7CisgICAgfTsKKworfQpJbmRleDogV2ViQ29yZS9zdG9yYWdlL1NRTEVycm9yLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU1FMRXJyb3IuaWRsCShyZXZpc2lvbiA1ODgwNykK
KysrIFdlYkNvcmUvc3RvcmFnZS9TUUxFcnJvci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcg
KzMwLDggQEAgbW9kdWxlIHN0b3JhZ2UgewogCiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgQ29u
ZGl0aW9uYWw9REFUQUJBU0UsCi0gICAgICAgIE9taXRDb25zdHJ1Y3RvcgorICAgICAgICBPbWl0
Q29uc3RydWN0b3IsCisgICAgICAgIE5vU3RhdGljVGFibGVzCiAgICAgXSBTUUxFcnJvciB7CiAg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGNvZGU7CiAgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbWVzc2FnZTsKSW5kZXg6IFdlYkNvcmUvc3RvcmFn
ZS9TUUxSZXN1bHRTZXQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TUUxSZXN1
bHRTZXQuaWRsCShyZXZpc2lvbiA1ODgwNykKKysrIFdlYkNvcmUvc3RvcmFnZS9TUUxSZXN1bHRT
ZXQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw4IEBAIG1vZHVsZSBzdG9yYWdlIHsK
IAogICAgIGludGVyZmFjZSBbCiAgICAgICAgIENvbmRpdGlvbmFsPURBVEFCQVNFLAotICAgICAg
ICBPbWl0Q29uc3RydWN0b3IKKyAgICAgICAgT21pdENvbnN0cnVjdG9yLAorICAgICAgICBOb1N0
YXRpY1RhYmxlcwogICAgIF0gU1FMUmVzdWx0U2V0IHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIFNRTFJlc3VsdFNldFJvd0xpc3Qgcm93czsKIApJbmRleDogV2ViQ29yZS9zdG9yYWdlL1NR
TFJlc3VsdFNldFJvd0xpc3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TUUxS
ZXN1bHRTZXRSb3dMaXN0LmlkbAkocmV2aXNpb24gNTg4MDcpCisrKyBXZWJDb3JlL3N0b3JhZ2Uv
U1FMUmVzdWx0U2V0Um93TGlzdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDggQEAg
bW9kdWxlIHN0b3JhZ2UgewogCiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgQ29uZGl0aW9uYWw9
REFUQUJBU0UsCi0gICAgICAgIE9taXRDb25zdHJ1Y3RvcgorICAgICAgICBPbWl0Q29uc3RydWN0
b3IsCisgICAgICAgIE5vU3RhdGljVGFibGVzCiAgICAgXSBTUUxSZXN1bHRTZXRSb3dMaXN0IHsK
ICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwogICAgICAg
ICBbQ3VzdG9tXSBET01PYmplY3QgaXRlbShpbiB1bnNpZ25lZCBsb25nIGluZGV4KTsKSW5kZXg6
IFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmlkbAkocmV2aXNpb24gNTg4MDcpCisrKyBXZWJDb3Jl
L3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw4
IEBAIG1vZHVsZSBzdG9yYWdlIHsKIAogICAgIGludGVyZmFjZSBbCiAgICAgICAgIENvbmRpdGlv
bmFsPURBVEFCQVNFLAotICAgICAgICBPbWl0Q29uc3RydWN0b3IKKyAgICAgICAgT21pdENvbnN0
cnVjdG9yLAorICAgICAgICBOb1N0YXRpY1RhYmxlcwogICAgIF0gU1FMVHJhbnNhY3Rpb24gewog
ICAgICAgICBbQ3VzdG9tXSB2b2lkIGV4ZWN1dGVTcWwoaW4gRE9NU3RyaW5nIHNxbFN0YXRlbWVu
dCwgaW4gT2JqZWN0QXJyYXkgYXJndW1lbnRzLCBpbiBTUUxTdGF0ZW1lbnRDYWxsYmFjayBjYWxs
YmFjaywgaW4gU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKTsKICAgICB9
OwpJbmRleDogV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luYy5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luYy5pZGwJKHJldmlzaW9uIDAp
CisrKyBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5jLmlkbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YK
KyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKK21vZHVsZSBzdG9yYWdlIHsKKworICAgIGludGVyZmFjZSBbCisg
ICAgICAgIENvbmRpdGlvbmFsPURBVEFCQVNFLAorICAgICAgICBPbWl0Q29uc3RydWN0b3IsCisg
ICAgICAgIE5vU3RhdGljVGFibGVzCisgICAgXSBTUUxUcmFuc2FjdGlvblN5bmMgeworICAgICAg
ICBbQ3VzdG9tXSBTUUxSZXN1bHRTZXQgZXhlY3V0ZVNxbChpbiBET01TdHJpbmcgc3FsU3RhdGVt
ZW50LCBpbiBPYmplY3RBcnJheSBhcmd1bWVudHMpOworICAgIH07Cit9CkluZGV4OiBXZWJDb3Jl
L3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaAkocmV2aXNpb24gNTg4MDcp
CisrKyBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBTUUxUcmFuc2FjdGlvblN5bmM7CiBjbGFz
cyBTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPFNRTFRyYW5z
YWN0aW9uU3luY0NhbGxiYWNrPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+U1FMVHJhbnNhY3Rp
b25TeW5jQ2FsbGJhY2soKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFNRTFRyYW5zYWN0aW9uU3luYyosIGJvb2wmIHJhaXNlZEV4Y2Vw
dGlvbikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgU1FMVHJhbnNhY3Rpb25TeW5jKikgPSAwOwogfTsKIAogfQpJbmRleDogV2ViQ29y
ZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaWRsCShyZXZpc2lvbiAw
KQorKysgV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmlkbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5l
aXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUg
bmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBzdG9yYWdlIHsKKyAgICBpbnRlcmZh
Y2UgWworICAgICAgICBDb25kaXRpb25hbD1EQVRBQkFTRSwKKyAgICAgICAgQ2FsbGJhY2sKKyAg
ICBdIFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrIHsKKyAgICAgICAgYm9vbGVhbiBoYW5kbGVF
dmVudChpbiBTUUxUcmFuc2FjdGlvblN5bmMgdHJhbnNhY3Rpb24pOworICAgIH07Cit9CkluZGV4
OiBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCShyZXZpc2lvbiA1ODgwNykKKysrIFdlYkNvcmUv
d29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgxLDYgKzI4MSwy
MCBAQCBQYXNzUmVmUHRyPERhdGFiYXNlPiBXb3JrZXJDb250ZXh0OjpvcGVuCiAKICAgICByZXR1
cm4gRGF0YWJhc2U6Om9wZW5EYXRhYmFzZSh0aGlzLCBuYW1lLCB2ZXJzaW9uLCBkaXNwbGF5TmFt
ZSwgZXN0aW1hdGVkU2l6ZSwgY3JlYXRpb25DYWxsYmFjaywgZWMpOwogfQorCitQYXNzUmVmUHRy
PERhdGFiYXNlU3luYz4gV29ya2VyQ29udGV4dDo6b3BlbkRhdGFiYXNlU3luYyhjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFt
ZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJh
Y2s+IGNyZWF0aW9uQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghc2Vj
dXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRGF0YWJhc2UoKSkgeworICAgICAgICBlYyA9IFNFQ1VS
SVRZX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgQVNTRVJUKERhdGFiYXNl
U3luYzo6aXNBdmFpbGFibGUoKSk7CisgICAgaWYgKCFEYXRhYmFzZVN5bmM6OmlzQXZhaWxhYmxl
KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIERhdGFiYXNlU3luYzo6b3BlbkRh
dGFiYXNlU3luYyh0aGlzLCBuYW1lLCB2ZXJzaW9uLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6
ZSwgY3JlYXRpb25DYWxsYmFjaywgZWMpOworfQogI2VuZGlmCiAKIGJvb2wgV29ya2VyQ29udGV4
dDo6aXNDb250ZXh0VGhyZWFkKCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJD
b250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAko
cmV2aXNpb24gNTg4MDcpCisrKyBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJBdG9taWNTdHJpbmdIYXNo
LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJEYXRhYmFzZVN5bmMuaCIKICNp
bmNsdWRlICJEYXRhYmFzZUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgog
I2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKQEAgLTEwNSw2ICsxMDYsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAjaWYgRU5BQkxFKERBVEFCQVNFKQogICAgICAgICAvLyBIVE1MIDUgY2xpZW50LXNp
ZGUgZGF0YWJhc2UKICAgICAgICAgUGFzc1JlZlB0cjxEYXRhYmFzZT4gb3BlbkRhdGFiYXNlKGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRp
c3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUsIFBhc3NSZWZQdHI8RGF0YWJh
c2VDYWxsYmFjaz4gY3JlYXRpb25DYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICBQ
YXNzUmVmUHRyPERhdGFiYXNlU3luYz4gb3BlbkRhdGFiYXNlU3luYyhjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5z
aWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+IGNy
ZWF0aW9uQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKKwogICAgICAgICAvLyBOb3QgaW1wbGVt
ZW50ZWQgeWV0LgogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNEYXRhYmFzZVJlYWRPbmx5KCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgLy8gTm90IGltcGxlbWVudGVkIHlldC4KSW5k
ZXg6IFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwJKHJldmlzaW9uIDU4ODA3KQorKysgV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00OSw4ICs0OSwx
MSBAQCBtb2R1bGUgdGhyZWFkcyB7CiAgICAgICAgIC8vIFdvcmtlclV0aWxzCiAgICAgICAgIFtD
dXN0b21dIHZvaWQgaW1wb3J0U2NyaXB0cygvKltWYXJpYWRpY10gaW4gRE9NU3RyaW5nIHVybHMg
Ki8pOwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW1JlcGxhY2VhYmxlXSBXb3JrZXJOYXZp
Z2F0b3IgbmF2aWdhdG9yOworCisjaWYgZGVmaW5lZChFTkFCTEVfREFUQUJBU0UpICYmIEVOQUJM
RV9EQVRBQkFTRQogICAgICAgICAvLyBEYXRhYmFzZSBvcGVuRGF0YWJhc2UoaW4gRE9NU3RyaW5n
IG5hbWUsIGluIERPTVN0cmluZyB2ZXJzaW9uLCBpbiBET01TdHJpbmcgZGlzcGxheU5hbWUsIGlu
IHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSk7Ci0gICAgICAgIC8vIERhdGFiYXNlU3luYyBv
cGVuRGF0YWJhc2VTeW5jKGluIERPTVN0cmluZyBuYW1lLCBpbiBET01TdHJpbmcgdmVyc2lvbiwg
aW4gRE9NU3RyaW5nIGRpc3BsYXlOYW1lLCBpbiB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUp
OworICAgICAgICBbRW5hYmxlQXRSdW50aW1lLCBDdXN0b21dIERhdGFiYXNlU3luYyBvcGVuRGF0
YWJhc2VTeW5jKGluIERPTVN0cmluZyBuYW1lLCBpbiBET01TdHJpbmcgdmVyc2lvbiwgaW4gRE9N
U3RyaW5nIGRpc3BsYXlOYW1lLCBpbiB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUsIGluIERh
dGFiYXNlQ2FsbGJhY2sgY3JlYXRpb25DYWxsYmFjayk7CisjZW5kaWYKIAogICAgICAgICAvLyBU
aW1lcnMKICAgICAgICAgW0N1c3RvbV0gbG9uZyBzZXRUaW1lb3V0KGluIFRpbWVvdXRIYW5kbGVy
IGhhbmRsZXIsIGluIGxvbmcgdGltZW91dCk7Cg==
</data>
<flag name="review"
          id="39214"
          type_id="1"
          status="-"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="39215"
          type_id="3"
          status="-"
          setter="dumi"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55292</attachid>
            <date>2010-05-06 13:37:47 -0700</date>
            <delta_ts>2010-05-07 04:05:25 -0700</delta_ts>
            <desc>patch #2: IDL files + JSC and V8 bindings</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>83271</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1ODkwNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzUgQEAKKzIwMTAtMDUtMDUgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRpbmcgdGhlIEpTQyBhbmQgVjggYmluZGluZ3MgYW5kIHRoZSBJREwgZmlsZXMgZm9yIHRo
ZSBzeW5jIFdlYlNRTERhdGFiYXNlcyBBUEkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zNDk5NAorCisgICAgICAgIFRlc3Q6IGZhc3Qvd29ya2Vycy9z
dG9yYWdlL29wZW4tZGF0YWJhc2Utc3luYy1pbnB1dHMuaHRtbAorCisgICAgICAgICogRGVyaXZl
ZFNvdXJjZXMuY3BwOgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICog
R05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNv
cmUucHJpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTRE9NV2luZG93OjpvcGVuRGF0YWJhc2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RGF0YWJhc2VDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNEYXRhYmFzZTo6Y2hhbmdl
VmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVUcmFuc2FjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpKU0RhdGFiYXNlOjp0cmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpK
U0RhdGFiYXNlOjpyZWFkVHJhbnNhY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGF0
YWJhc2VTeW5jQ3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0RhdGFiYXNl
U3luYzo6Y2hhbmdlVmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVUcmFuc2FjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpKU0RhdGFiYXNlU3luYzo6dHJhbnNhY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SlNEYXRhYmFzZVN5bmM6OnJlYWRUcmFuc2FjdGlvbik6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU1NRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3FsKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU1NRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SlNTUUxUcmFuc2FjdGlvblN5bmM6OmV4ZWN1dGVTcWwpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtl
ckNvbnRleHQ6Om9wZW5EYXRhYmFzZVN5bmMpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6
b3BlbkRhdGFiYXNlQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERh
dGFiYXNlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RGF0YWJhc2U6OmNoYW5nZVZl
cnNpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVUcmFuc2FjdGlvbik6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YWJhc2VTeW5jQ3VzdG9tLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpWOERhdGFiYXNlU3luYzo6Y2hhbmdlVmVyc2lvbkNhbGxi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4RGF0YWJhc2VTeW5jOjp0cmFuc2FjdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4RGF0YWJhc2VTeW5jOjpyZWFkVHJhbnNhY3Rpb25DYWxsYmFjayk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VjhTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbENhbGxiYWNrKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlY4U1FMVHJhbnNhY3Rpb25TeW5jOjpleGVjdXRlU3Fs
Q2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhXb3JrZXJDb250ZXh0OjpvcGVuRGF0YWJh
c2VTeW5jQ2FsbGJhY2spOgorICAgICAgICAqIHN0b3JhZ2UvRGF0YWJhc2UuaWRsOgorICAgICAg
ICAqIHN0b3JhZ2UvRGF0YWJhc2VDYWxsYmFjay5oOgorICAgICAgICAqIHN0b3JhZ2UvRGF0YWJh
c2VDYWxsYmFjay5pZGw6CisgICAgICAgICogc3RvcmFnZS9EYXRhYmFzZVN5bmMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2VTeW5jOjpjaGFuZ2VWZXJzaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlU3luYzo6dHJhbnNhY3Rpb24pOgorICAgICAgICAqIHN0b3JhZ2UvRGF0
YWJhc2VTeW5jLmg6CisgICAgICAgICogc3RvcmFnZS9EYXRhYmFzZVN5bmMuaWRsOiBBZGRlZC4K
KyAgICAgICAgKiBzdG9yYWdlL1NRTEVycm9yLmlkbDoKKyAgICAgICAgKiBzdG9yYWdlL1NRTFJl
c3VsdFNldC5pZGw6CisgICAgICAgICogc3RvcmFnZS9TUUxSZXN1bHRTZXRSb3dMaXN0LmlkbDoK
KyAgICAgICAgKiBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmlkbDoKKyAgICAgICAgKiBzdG9yYWdl
L1NRTFRyYW5zYWN0aW9uU3luYy5pZGw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvU1FMVHJh
bnNhY3Rpb25TeW5jQ2FsbGJhY2suaDoKKyAgICAgICAgKiBzdG9yYWdlL1NRTFRyYW5zYWN0aW9u
U3luY0NhbGxiYWNrLmlkbDogQWRkZWQuCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6Om9wZW5EYXRhYmFzZVN5bmMp
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5oOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyQ29udGV4dC5pZGw6CisKIDIwMTAtMDUtMDYgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24u
aGF1c21hbm5Abm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUg
Q2hyaXN0aWFuc2VuLgpJbmRleDogV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAJKHJldmlzaW9uIDU4OTA0KQorKysgV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDYgKzY1LDcgQEAK
ICNpbmNsdWRlICJKU0N1c3RvbUV2ZW50LmNwcCIKICNpbmNsdWRlICJKU0RhdGFiYXNlLmNwcCIK
ICNpbmNsdWRlICJKU0RhdGFiYXNlQ2FsbGJhY2suY3BwIgorI2luY2x1ZGUgIkpTRGF0YWJhc2VT
eW5jLmNwcCIKICNpbmNsdWRlICJKU0RhdGFHcmlkQ29sdW1uLmNwcCIKICNpbmNsdWRlICJKU0Rh
dGFHcmlkQ29sdW1uTGlzdC5jcHAiCiAjaW5jbHVkZSAiSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
LmNwcCIKQEAgLTIxMCw2ICsyMTEsOCBAQAogI2luY2x1ZGUgIkpTU1FMVHJhbnNhY3Rpb24uY3Bw
IgogI2luY2x1ZGUgIkpTU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5jcHAiCiAjaW5jbHVkZSAiSlNT
UUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suY3BwIgorI2luY2x1ZGUgIkpTU1FMVHJhbnNhY3Rp
b25TeW5jLmNwcCIKKyNpbmNsdWRlICJKU1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmNwcCIK
ICNpbmNsdWRlICJKU1N0b3JhZ2UuY3BwIgogI2luY2x1ZGUgIkpTU3RvcmFnZUV2ZW50LmNwcCIK
ICNpbmNsdWRlICJKU1N0eWxlTWVkaWEuY3BwIgpJbmRleDogV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNp
b24gNTg5MDQpCisrKyBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkK
QEAgLTExNiw2ICsxMTYsNyBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBET01XaW5kb3cgXAogICAg
IERhdGFiYXNlIFwKICAgICBEYXRhYmFzZUNhbGxiYWNrIFwKKyAgICBEYXRhYmFzZVN5bmMgXAog
ICAgIERvY3VtZW50IFwKICAgICBEb2N1bWVudEZyYWdtZW50IFwKICAgICBEb2N1bWVudFR5cGUg
XApAQCAtMjU0LDYgKzI1NSw4IEBAIERPTV9DTEFTU0VTID0gXAogICAgIFNRTFRyYW5zYWN0aW9u
IFwKICAgICBTUUxUcmFuc2FjdGlvbkNhbGxiYWNrIFwKICAgICBTUUxUcmFuc2FjdGlvbkVycm9y
Q2FsbGJhY2sgXAorICAgIFNRTFRyYW5zYWN0aW9uU3luYyBcCisgICAgU1FMVHJhbnNhY3Rpb25T
eW5jQ2FsbGJhY2sgXAogICAgIFN0b3JhZ2UgXAogICAgIFN0b3JhZ2VFdmVudCBcCiAgICAgU1ZH
QUVsZW1lbnQgXApJbmRleDogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA1ODkwNCkKKysrIFdlYkNvcmUvR05VbWFr
ZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTIzMDcsNiArMjMwNyw3IEBAIEZFQVRVUkVfREVG
SU5FUyArPSBFTkFCTEVfREFUQUJBU0U9MQogSURMX0JJTkRJTkdTICs9IFwKIAlXZWJDb3JlL3N0
b3JhZ2UvRGF0YWJhc2UuaWRsIFwKIAlXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VDYWxsYmFjay5p
ZGwgXAorCVdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVN5bmMuaWRsIFwKIAlXZWJDb3JlL3N0b3Jh
Z2UvU1FMRXJyb3IuaWRsIFwKIAlXZWJDb3JlL3N0b3JhZ2UvU1FMUmVzdWx0U2V0LmlkbCBcCiAJ
V2ViQ29yZS9zdG9yYWdlL1NRTFJlc3VsdFNldFJvd0xpc3QuaWRsIFwKQEAgLTIzMTQsNyArMjMx
NSw5IEBAIElETF9CSU5ESU5HUyArPSBcCiAJV2ViQ29yZS9zdG9yYWdlL1NRTFN0YXRlbWVudEVy
cm9yQ2FsbGJhY2suaWRsIFwKIAlXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uaWRsIFwK
IAlXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5pZGwgXAotCVdlYkNvcmUv
c3RvcmFnZS9TUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suaWRsCisJV2ViQ29yZS9zdG9yYWdl
L1NRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5pZGwgXAorCVdlYkNvcmUvc3RvcmFnZS9TUUxU
cmFuc2FjdGlvblN5bmMuaWRsIFwKKwlXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5j
Q2FsbGJhY2suaWRsCiAKIHdlYmNvcmVfY3BwZmxhZ3MgKz0gXAogCS1ERU5BQkxFX0RBVEFCQVNF
PTEKQEAgLTIzMjIsOCArMjMyNSwxMCBAQCB3ZWJjb3JlX2NwcGZsYWdzICs9IFwKIHdlYmNvcmVf
c291cmNlcyArPSBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFN0YXRlbWVudEVy
cm9yQ2FsbGJhY2suY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YWJhc2VDdXN0b20u
Y3BwIFwKKwlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YWJhc2VTeW5jQ3VzdG9tLmNwcCBcCiAJ
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwIFwKIAlX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwIFwKKwlXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcCBcCiAJV2ViQ29yZS9w
bGF0Zm9ybS9zcWwvU1FMVmFsdWUuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxWYWx1
ZS5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVBdXRob3JpemVyLmNwcCBcCkluZGV4
OiBXZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZ3lw
aQkocmV2aXNpb24gNTg5MDQpCisrKyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5
KQpAQCAtMjE5LDYgKzIxOSw3IEBACiAgICAgICAgICAgICAncGx1Z2lucy9QbHVnaW5BcnJheS5p
ZGwnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvRGF0YWJhc2UuaWRsJywKICAgICAgICAgICAgICdz
dG9yYWdlL0RhdGFiYXNlQ2FsbGJhY2suaWRsJywKKyAgICAgICAgICAgICdzdG9yYWdlL0RhdGFi
YXNlU3luYy5pZGwnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURCRGF0YWJhc2VFcnJvci5pZGwn
LAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURCRGF0YWJhc2VFeGNlcHRpb24uaWRsJywKICAgICAg
ICAgICAgICdzdG9yYWdlL0lEQkRhdGFiYXNlUmVxdWVzdC5pZGwnLApAQCAtMjMxLDYgKzIzMiw4
IEBACiAgICAgICAgICAgICAnc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5pZGwnLAogICAgICAgICAg
ICAgJ3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5pZGwnLAogICAgICAgICAgICAgJ3N0
b3JhZ2UvU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmlkbCcsCisgICAgICAgICAgICAnc3Rv
cmFnZS9TUUxUcmFuc2FjdGlvblN5bmMuaWRsJywKKyAgICAgICAgICAgICdzdG9yYWdlL1NRTFRy
YW5zYWN0aW9uU3luY0NhbGxiYWNrLmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9TdG9yYWdl
LmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9TdG9yYWdlRXZlbnQuaWRsJywKICAgICAgICAg
ICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldC5pZGwnLApAQCAtNTA3LDYgKzUxMCw3IEBACiAgICAg
ICAgICAgICAnYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwJywKICAgICAg
ICAgICAgICdiaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5oJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy9qcy9KU0RhdGFiYXNlQ3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmlu
ZGluZ3MvanMvSlNEYXRhYmFzZVN5bmNDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5n
cy9qcy9KU0RhdGFHcmlkQ29sdW1uTGlzdEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL2pzL0pTRGF0YUdyaWREYXRhU291cmNlLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
anMvSlNEYXRhR3JpZERhdGFTb3VyY2UuaCcsCkBAIC02MDEsNiArNjA1LDcgQEAKICAgICAgICAg
ICAgICdiaW5kaW5ncy9qcy9KU1NjcmlwdFByb2ZpbGVOb2RlQ3VzdG9tLmNwcCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAnLAorICAgICAg
ICAgICAgJ2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAn
YmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pz
L0pTU3R5bGVTaGVldEN1c3RvbS5jcHAnLApAQCAtNzEyLDYgKzcxNyw3IEBACiAgICAgICAgICAg
ICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tWFBhdGhOU1Jlc29sdmVyLmgnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFiYXNlQ3VzdG9tLmNwcCcsCisg
ICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YWJhc2VTeW5jQ3VzdG9tLmNwcCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YUdyaWRDb2x1bW5MaXN0Q3Vz
dG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGVkaWNhdGVkV29y
a2VyQ29udGV4dEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OERvY3VtZW50TG9jYXRpb25DdXN0b20uY3BwJywKQEAgLTc2NSw2ICs3NzEsNyBAQAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0b3JhZ2VDdXN0b20uY3BwJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25DdXN0b20u
Y3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvblN5
bmNDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhTVkdEb2N1
bWVudEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0Vs
ZW1lbnRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhTVkdM
ZW5ndGhDdXN0b20uY3BwJywKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcmkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9XZWJDb3JlLnByaQkocmV2aXNpb24gNTg5MDQpCisrKyBXZWJDb3JlL1dlYkNv
cmUucHJpCSh3b3JraW5nIGNvcHkpCkBAIC00MzcsNiArNDM3LDcgQEAgSURMX0JJTkRJTkdTICs9
IFwKICAgICBwbHVnaW5zL01pbWVUeXBlQXJyYXkuaWRsIFwKICAgICBzdG9yYWdlL0RhdGFiYXNl
LmlkbCBcCiAgICAgc3RvcmFnZS9EYXRhYmFzZUNhbGxiYWNrLmlkbCBcCisgICAgc3RvcmFnZS9E
YXRhYmFzZVN5bmMuaWRsIFwKICAgICBzdG9yYWdlL1N0b3JhZ2UuaWRsIFwKICAgICBzdG9yYWdl
L1N0b3JhZ2VFdmVudC5pZGwgXAogICAgIHN0b3JhZ2UvU1FMRXJyb3IuaWRsIFwKQEAgLTQ0Nyw2
ICs0NDgsOCBAQCBJRExfQklORElOR1MgKz0gXAogICAgIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb24u
aWRsIFwKICAgICBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2FsbGJhY2suaWRsIFwKICAgICBzdG9y
YWdlL1NRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5pZGwgXAorICAgIHN0b3JhZ2UvU1FMVHJh
bnNhY3Rpb25TeW5jLmlkbCBcCisgICAgc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFj
ay5pZGwgXAogICAgIHN2Zy9TVkdab29tRXZlbnQuaWRsIFwKICAgICBzdmcvU1ZHQUVsZW1lbnQu
aWRsIFwKICAgICBzdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmlkbCBcCkluZGV4OiBXZWJDb3JlL1dl
YkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDU4
OTA0KQorKysgV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtMjMwMCw4ICsy
MzAwLDEwIEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9EQVRBQkFTRT0xKSB7CiAgICAgICAg
IHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5jLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pT
Q3VzdG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5jcHAgXAogICAgICAgICBiaW5kaW5ncy9q
cy9KU0RhdGFiYXNlQ3VzdG9tLmNwcCBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pTRGF0YWJhc2VT
eW5jQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93TGlz
dEN1c3RvbS5jcHAgXAotICAgICAgICBiaW5kaW5ncy9qcy9KU1NRTFRyYW5zYWN0aW9uQ3VzdG9t
LmNwcAorICAgICAgICBiaW5kaW5ncy9qcy9KU1NRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcCBcCisg
ICAgICAgIGJpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcAogfQogCiBj
b250YWlucyhERUZJTkVTLCBFTkFCTEVfRE9NX1NUT1JBR0U9MSkgewpAQCAtMjMyNSw2ICsyMzI3
LDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0RPTV9TVE9SQUdFPTEpIAogICAgICAgICBz
dG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmggXAogICAgICAgICBzdG9yYWdlL1NRTFRyYW5z
YWN0aW9uQ29vcmRpbmF0b3IuaCBcCiAgICAgICAgIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5j
LmggXAorICAgICAgICBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmggXAogICAg
ICAgICBzdG9yYWdlL1N0b3JhZ2VBcmVhLmggXAogICAgICAgICBzdG9yYWdlL1N0b3JhZ2VBcmVh
SW1wbC5oIFwKICAgICAgICAgc3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuaCBcCkluZGV4OiBXZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDU4OTA0KQorKysgV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjUxMyw2
ICsyNTEzLDYyIEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2
ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJj
ZXNcSlNEYXRhYmFzZVN5bmMuY3BwIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0K
KwkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIN
CisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJ
CQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlv
bg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
Ig0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1
cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z19JbnRlcm5hbHxXaW4zMiINCisJCQkJCUV4Y2x1ZGVk
RnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJ
PEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb3xXaW4zMiINCisJCQkJ
CUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvfFdp
bjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9v
bA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVn
X0FsbHxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJ
CQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRp
dmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEpTRGF0YWJhc2VTeW5jLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJ
CQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERl
cml2ZWRTb3VyY2VzXEpTRGF0YUdyaWRDb2x1bW4uY3BwIg0KIAkJCQk+DQogCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbg0KQEAgLTEwMjc4LDYgKzEwMzM0LDYyIEBACiAJCQkJPg0KIAkJCTwvRmlsZT4N
CiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcV2Vi
Q29yZVxEZXJpdmVkU291cmNlc1xKU1NRTFRyYW5zYWN0aW9uU3luYy5jcHAiDQorCQkJCT4NCisJ
CQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1l
PSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4N
CisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnX0ludGVybmFs
fFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8
VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0Zp
bGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRl
YnVnX0NhaXJvfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+
DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0K
KwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJ
CU5hbWU9IlJlbGVhc2VfQ2Fpcm98V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIN
CisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJh
dGlvbg0KKwkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCTwvRmlsZT4N
CisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcV2Vi
Q29yZVxEZXJpdmVkU291cmNlc1xKU1NRTFRyYW5zYWN0aW9uU3luYy5oIg0KKwkJCQk+DQorCQkJ
PC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIp
XG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1N0b3JhZ2UuY3BwIg0KIAkJCQk+
DQogCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KQEAgLTM1Njk5LDYgKzM1ODExLDU4IEBACiAJCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCisJCQkJCVJl
bGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNEYXRhYmFzZVN5bmNDdXN0b20uY3BwIg0KKwkJ
CQkJPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8V2luMzIi
DQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29s
DQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJS
ZWxlYXNlfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4N
CisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+
DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQor
CQkJCQkJTmFtZT0iRGVidWdfSW50ZXJuYWx8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb3xXaW4zMiINCisJCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2Vf
Q2Fpcm98V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0K
KwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4N
CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJ
CQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRv
b2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTwvRmlsZT4N
CisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNEYXRhR3Jp
ZENvbHVtbkxpc3RDdXN0b20uY3BwIg0KIAkJCQkJPg0KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9u
DQpAQCAtMzg5NzksNiArMzkxNDMsNTggQEAKIAkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCiAJ
CQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xq
c1xKU1NRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHAiDQorCQkJCQk+DQorCQkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkND
TENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJ
CQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z19J
bnRlcm5hbHxXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+
DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkv
Pg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0K
KwkJCQkJCU5hbWU9IkRlYnVnX0NhaXJvfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZp
bGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb3xXaW4zMiINCisJCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnX0Fs
bHxXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJ
CQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU1N0b3JhZ2VDdXN0b20uY3BwIg0KIAkJCQkJ
Pg0KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDU4OTA0KQorKysgV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQxNjgsNiArNDE2
OCwxNCBAQAogCQlCNTIzQ0YwOTExODI2NzU0MDBFQkIyOUMgLyogU1FMVHJhbnNhY3Rpb25TeW5j
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1MjND
RjAyMTE4MjY3NTQwMEVCQjI5QyAvKiBTUUxUcmFuc2FjdGlvblN5bmMuY3BwICovOyB9OwogCQlC
NTIzQ0YwQTExODI2NzU0MDBFQkIyOUMgLyogRGF0YWJhc2VTeW5jLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1MjNDRjAzMTE4MjY3NTQwMEVCQjI5
QyAvKiBEYXRhYmFzZVN5bmMuY3BwICovOyB9OwogCQlCNTIzQ0YwQjExODI2NzU0MDBFQkIyOUMg
LyogRGF0YWJhc2VTeW5jLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCNTIzQ0YwNDExODI2NzU0MDBFQkIyOUMgLyogRGF0YWJhc2VTeW5jLmggKi87IH07
CisJCUI1NUQ1QUE0MTE5MTMxRkMwMEJDQzMxNSAvKiBKU1NRTFRyYW5zYWN0aW9uU3luY0NhbGxi
YWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNTVE
NUFBMjExOTEzMUZDMDBCQ0MzMTUgLyogSlNTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5oICov
OyB9OworCQlCNTVENUFBNTExOTEzMUZDMDBCQ0MzMTUgLyogSlNTUUxUcmFuc2FjdGlvblN5bmND
YWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCNTVENUFBMzExOTEzMUZDMDBCQ0MzMTUgLyogSlNTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFj
ay5jcHAgKi87IH07CisJCUI1NUQ1QUE4MTE5MTMyNTAwMEJDQzMxNSAvKiBKU0RhdGFiYXNlU3lu
Y0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCNTVENUFBNjExOTEzMjUwMDBCQ0MzMTUgLyogSlNEYXRhYmFzZVN5bmNDdXN0b20uY3BwICov
OyB9OworCQlCNTVENUFBOTExOTEzMjUwMDBCQ0MzMTUgLyogSlNTUUxUcmFuc2FjdGlvblN5bmND
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjU1RDVBQTcxMTkxMzI1MDAwQkNDMzE1IC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNw
cCAqLzsgfTsKKwkJQjU4Q0VCNjkxMTkxMzYwNzAwMkE2NzkwIC8qIEpTRGF0YWJhc2VTeW5jLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNThDRUI2NzEx
OTEzNjA3MDAyQTY3OTAgLyogSlNEYXRhYmFzZVN5bmMuaCAqLzsgfTsKKwkJQjU4Q0VCNkExMTkx
MzYwNzAwMkE2NzkwIC8qIEpTRGF0YWJhc2VTeW5jLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1OENFQjY4MTE5MTM2MDcwMDJBNjc5MCAvKiBKU0Rh
dGFiYXNlU3luYy5jcHAgKi87IH07CisJCUI1OENFQjZEMTE5MTM2MUMwMDJBNjc5MCAvKiBKU1NR
TFRyYW5zYWN0aW9uU3luYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjU4Q0VCNkIxMTkxMzYxQzAwMkE2NzkwIC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5j
LmggKi87IH07CisJCUI1OENFQjZFMTE5MTM2MUMwMDJBNjc5MCAvKiBKU1NRTFRyYW5zYWN0aW9u
U3luYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
NThDRUI2QzExOTEzNjFDMDAyQTY3OTAgLyogSlNTUUxUcmFuc2FjdGlvblN5bmMuY3BwICovOyB9
OwogCQlCNTlERDY5OTExOTAyOUU1MDA3RTk2ODQgLyogSlNEYXRhYmFzZUNhbGxiYWNrLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNTlERDY5NzExOTAy
OUU1MDA3RTk2ODQgLyogSlNEYXRhYmFzZUNhbGxiYWNrLmggKi87IH07CiAJCUI1OURENjlBMTE5
MDI5RTUwMDdFOTY4NCAvKiBKU0RhdGFiYXNlQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjU5REQ2OTgxMTkwMjlFNTAwN0U5Njg0IC8q
IEpTRGF0YWJhc2VDYWxsYmFjay5jcHAgKi87IH07CiAJCUI1OURENjlEMTE5MDJBNDIwMDdFOTY4
NCAvKiBKU1NRTFRyYW5zYWN0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1OURENjlCMTE5MDJBNDIwMDdFOTY4NCAvKiBKU1NRTFRy
YW5zYWN0aW9uQ2FsbGJhY2suaCAqLzsgfTsKQEAgLTk1MzAsNiArOTUzOCwxNyBAQAogCQlCNTIz
Q0YwMjExODI2NzU0MDBFQkIyOUMgLyogU1FMVHJhbnNhY3Rpb25TeW5jLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNRTFRyYW5zYWN0aW9uU3luYy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI1MjNDRjAzMTE4MjY3NTQwMEVCQjI5QyAvKiBEYXRh
YmFzZVN5bmMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0YWJh
c2VTeW5jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjUyM0NGMDQxMTgyNjc1
NDAwRUJCMjlDIC8qIERhdGFiYXNlU3luYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEYXRhYmFzZVN5bmMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjU1RDVB
QTIxMTkxMzFGQzAwQkNDMzE1IC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFj
ay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCNTVENUFBMzExOTEzMUZDMDBCQ0Mz
MTUgLyogSlNTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjU1RDVBQTYxMTkxMzI1MDAwQkNDMzE1IC8qIEpT
RGF0YWJhc2VTeW5jQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTRGF0YWJhc2VTeW5jQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQjU1RDVBQTcxMTkxMzI1MDAwQkNDMzE1IC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9t
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1FMVHJhbnNhY3Rp
b25TeW5jQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjU1RDVBQkIx
MTkxMzI3MjAwQkNDMzE1IC8qIERhdGFiYXNlU3luYy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gRGF0YWJhc2VTeW5jLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjU1RDVB
QkMxMTkxMzI3MjAwQkNDMzE1IC8qIFNRTFRyYW5zYWN0aW9uU3luYy5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gU1FMVHJhbnNhY3Rpb25TeW5jLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQjU1RDVBQkQxMTkxMzI3MjAwQkNDMzE1IC8qIFNRTFRyYW5zYWN0aW9uU3luY0Nh
bGxiYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTUUxUcmFuc2FjdGlvblN5bmNDYWxs
YmFjay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI1OENFQjY3MTE5MTM2MDcw
MDJBNjc5MCAvKiBKU0RhdGFiYXNlU3luYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0RhdGFiYXNlU3luYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCNThD
RUI2ODExOTEzNjA3MDAyQTY3OTAgLyogSlNEYXRhYmFzZVN5bmMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEYXRhYmFzZVN5bmMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlCNThDRUI2QjExOTEzNjFDMDAyQTY3OTAgLyogSlNTUUxUcmFuc2Fj
dGlvblN5bmMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTUUxUcmFuc2Fj
dGlvblN5bmMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjU4Q0VCNkMxMTkxMzYx
QzAwMkE2NzkwIC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1FMVHJhbnNhY3Rpb25TeW5jLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQjU5REQ2OEQxMTkwMjk4RTAwN0U5Njg0IC8qIERhdGFiYXNlQ2Fs
bGJhY2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERhdGFiYXNlQ2FsbGJhY2suaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNTlERDY4RTExOTAyOThFMDA3RTk2ODQgLyog
U1FMU3RhdGVtZW50Q2FsbGJhY2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNRTFN0YXRl
bWVudENhbGxiYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjU5REQ2OEYx
MTkwMjk4RTAwN0U5Njg0IC8qIFNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTA3NzYsNiArMTA3OTUsNyBAQAogCQkJCTUxMTZEOTc1MENG
MTc3QkQwMEMyQjg0RCAvKiBEYXRhYmFzZURldGFpbHMuaCAqLywKIAkJCQlCNTIzQ0YwMzExODI2
NzU0MDBFQkIyOUMgLyogRGF0YWJhc2VTeW5jLmNwcCAqLywKIAkJCQlCNTIzQ0YwNDExODI2NzU0
MDBFQkIyOUMgLyogRGF0YWJhc2VTeW5jLmggKi8sCisJCQkJQjU1RDVBQkIxMTkxMzI3MjAwQkND
MzE1IC8qIERhdGFiYXNlU3luYy5pZGwgKi8sCiAJCQkJNTE5NjExRTkwQ0FDNzQ5QzAwMTBBODBD
IC8qIERhdGFiYXNlVGFzay5jcHAgKi8sCiAJCQkJNTE5NjExRTgwQ0FDNzQ5QzAwMTBBODBDIC8q
IERhdGFiYXNlVGFzay5oICovLAogCQkJCTUxOTYxMTYxMENBQzU2NTcwMDEwQTgwQyAvKiBEYXRh
YmFzZVRocmVhZC5jcHAgKi8sCkBAIC0xMDgxOCw3ICsxMDgzOCw5IEBACiAJCQkJQjU5REQ2OTEx
MTkwMjk4RTAwN0U5Njg0IC8qIFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5pZGwgKi8sCiAJ
CQkJQjUyM0NGMDIxMTgyNjc1NDAwRUJCMjlDIC8qIFNRTFRyYW5zYWN0aW9uU3luYy5jcHAgKi8s
CiAJCQkJQjUyM0NGMDExMTgyNjc1NDAwRUJCMjlDIC8qIFNRTFRyYW5zYWN0aW9uU3luYy5oICov
LAorCQkJCUI1NUQ1QUJDMTE5MTMyNzIwMEJDQzMxNSAvKiBTUUxUcmFuc2FjdGlvblN5bmMuaWRs
ICovLAogCQkJCUI1MjNDRUZGMTE4MjY3NTQwMEVCQjI5QyAvKiBTUUxUcmFuc2FjdGlvblN5bmND
YWxsYmFjay5oICovLAorCQkJCUI1NUQ1QUJEMTE5MTMyNzIwMEJDQzMxNSAvKiBTUUxUcmFuc2Fj
dGlvblN5bmNDYWxsYmFjay5pZGwgKi8sCiAJCQkJNTFFM0Y5QzUwREEwNTlEQzAwMjUwOTExIC8q
IFN0b3JhZ2UuY3BwICovLAogCQkJCTUxRTNGOUM0MERBMDU5REMwMDI1MDkxMSAvKiBTdG9yYWdl
LmggKi8sCiAJCQkJNTFFM0Y5RDEwREEwNUQ3MTAwMjUwOTExIC8qIFN0b3JhZ2UuaWRsICovLApA
QCAtMTQxMDUsNiArMTQxMjcsMTIgQEAKIAkJCQlCNTlERDZBNDExOTAyQTYyMDA3RTk2ODQgLyog
SlNTUUxTdGF0ZW1lbnRDYWxsYmFjay5jcHAgKi8sCiAJCQkJQjU5REQ2QTcxMTkwMkE3MTAwN0U5
Njg0IC8qIEpTU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5oICovLAogCQkJCUI1OURENkE4MTE5
MDJBNzEwMDdFOTY4NCAvKiBKU1NRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwICovLAorCQkJ
CUI1NUQ1QUEyMTE5MTMxRkMwMEJDQzMxNSAvKiBKU1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNr
LmggKi8sCisJCQkJQjU1RDVBQTMxMTkxMzFGQzAwQkNDMzE1IC8qIEpTU1FMVHJhbnNhY3Rpb25T
eW5jQ2FsbGJhY2suY3BwICovLAorCQkJCUI1OENFQjY3MTE5MTM2MDcwMDJBNjc5MCAvKiBKU0Rh
dGFiYXNlU3luYy5oICovLAorCQkJCUI1OENFQjY4MTE5MTM2MDcwMDJBNjc5MCAvKiBKU0RhdGFi
YXNlU3luYy5jcHAgKi8sCisJCQkJQjU4Q0VCNkIxMTkxMzYxQzAwMkE2NzkwIC8qIEpTU1FMVHJh
bnNhY3Rpb25TeW5jLmggKi8sCisJCQkJQjU4Q0VCNkMxMTkxMzYxQzAwMkE2NzkwIC8qIEpTU1FM
VHJhbnNhY3Rpb25TeW5jLmNwcCAqLywKIAkJCSk7CiAJCQluYW1lID0gU3RvcmFnZTsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNTA0OSw2ICsxNTA3Nyw4IEBACiAJCUJDNEVERUY3
MEMwOEY0MTQwMDdFREQ0OSAvKiBDdXN0b20gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCUI1NUQ1QUE2MTE5MTMyNTAwMEJDQzMxNSAvKiBKU0RhdGFiYXNl
U3luY0N1c3RvbS5jcHAgKi8sCisJCQkJQjU1RDVBQTcxMTkxMzI1MDAwQkNDMzE1IC8qIEpTU1FM
VHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcCAqLywKIAkJCQlCQzJFRDZCQjBDNkJEMkYwMDA5MjBC
RkYgLyogSlNBdHRyQ3VzdG9tLmNwcCAqLywKIAkJCQk0OUVFRDE0QjEwNTE5NzE5MDAwOTlGQUIg
LyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwICovLAogCQkJCTQ5RUVEMTRE
MTA1MTk3MUEwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwICov
LApAQCAtMTg5NTMsNiArMTg5ODMsOSBAQAogCQkJCUI1OURENkExMTE5MDJBNTIwMDdFOTY4NCAv
KiBKU1NRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjU5
REQ2QTUxMTkwMkE2MjAwN0U5Njg0IC8qIEpTU1FMU3RhdGVtZW50Q2FsbGJhY2suaCBpbiBIZWFk
ZXJzICovLAogCQkJCUI1OURENkE5MTE5MDJBNzEwMDdFOTY4NCAvKiBKU1NRTFN0YXRlbWVudEVy
cm9yQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCUI1NUQ1QUE0MTE5MTMxRkMwMEJDQzMx
NSAvKiBKU1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQlC
NThDRUI2OTExOTEzNjA3MDAyQTY3OTAgLyogSlNEYXRhYmFzZVN5bmMuaCBpbiBIZWFkZXJzICov
LAorCQkJCUI1OENFQjZEMTE5MTM2MUMwMDJBNjc5MCAvKiBKU1NRTFRyYW5zYWN0aW9uU3luYy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkBAIC0yMTE5NSw2ICsyMTIyOCwxMSBAQAogCQkJCUI1OURENkEyMTE5
MDJBNTIwMDdFOTY4NCAvKiBKU1NRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCNTlERDZBNjExOTAyQTYyMDA3RTk2ODQgLyogSlNTUUxTdGF0ZW1lbnRD
YWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNTlERDZBQTExOTAyQTcxMDA3RTk2ODQg
LyogSlNTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUI1
NUQ1QUE1MTE5MTMxRkMwMEJDQzMxNSAvKiBKU1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUI1NUQ1QUE4MTE5MTMyNTAwMEJDQzMxNSAvKiBKU0RhdGFi
YXNlU3luY0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCNTVENUFBOTExOTEzMjUwMDBC
Q0MzMTUgLyogSlNTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQjU4Q0VCNkExMTkxMzYwNzAwMkE2NzkwIC8qIEpTRGF0YWJhc2VTeW5jLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUI1OENFQjZFMTE5MTM2MUMwMDJBNjc5MCAvKiBKU1NRTFRyYW5zYWN0aW9u
U3luYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5k
aW5nc0FsbEluT25lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmlu
ZGluZ3NBbGxJbk9uZS5jcHAJKHJldmlzaW9uIDU4OTA0KQorKysgV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw3IEBA
CiAjaW5jbHVkZSAiSlNEYXRhR3JpZENvbHVtbkxpc3RDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpT
RGF0YUdyaWREYXRhU291cmNlLmNwcCIKICNpbmNsdWRlICJKU0RhdGFiYXNlQ3VzdG9tLmNwcCIK
KyNpbmNsdWRlICJKU0RhdGFiYXNlU3luY0N1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNEZWRpY2F0
ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0Rlc2t0b3BOb3RpZmljYXRp
b25zQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0RvY3VtZW50Q3VzdG9tLmNwcCIKQEAgLTEwMiw2
ICsxMDMsNyBAQAogI2luY2x1ZGUgIkpTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAiCiAjaW5j
bHVkZSAiSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1NRTFRy
YW5zYWN0aW9uQ3VzdG9tLmNwcCIKKyNpbmNsdWRlICJKU1NRTFRyYW5zYWN0aW9uU3luY0N1c3Rv
bS5jcHAiCiAjaW5jbHVkZSAiSlNTVkdFbGVtZW50SW5zdGFuY2VDdXN0b20uY3BwIgogI2luY2x1
ZGUgIkpTU1ZHTGVuZ3RoQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1NWR01hdHJpeEN1c3RvbS5j
cHAiCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkocmV2
aXNpb24gNTg5MDQpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTY3LDE4ICs5NjcsNDUgQEAgSlNWYWx1ZSBKU0RPTVdpbmRv
dzo6cmVtb3ZlRXZlbnRMaXN0ZW5lcgogI2lmIEVOQUJMRShEQVRBQkFTRSkKIEpTVmFsdWUgSlNE
T01XaW5kb3c6Om9wZW5EYXRhYmFzZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFy
Z3MpCiB7Ci0gICAgaWYgKCFhbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpIHx8IChhcmdzLnNpemUoKSA8
IDQpKQorICAgIGlmICghYWxsb3dzQWNjZXNzRnJvbShleGVjKSB8fCAoYXJncy5zaXplKCkgPCA0
KSkgeworICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgU1lOVEFYX0VSUik7CiAgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIH0KKworICAgIFN0cmluZyBuYW1lID0gdXN0cmlu
Z1RvU3RyaW5nKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYykpOworICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkgeworICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICBz
ZXRET01FeGNlcHRpb24oZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpOworICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKKyAgICB9CisKKyAgICBTdHJpbmcgdmVyc2lvbiA9IHVzdHJpbmdUb1N0
cmluZyhhcmdzLmF0KDEpLnRvU3RyaW5nKGV4ZWMpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpIHsKKyAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAgc2V0RE9N
RXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKKyAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CisgICAgfQorCisgICAgU3RyaW5nIGRpc3BsYXlOYW1lID0gdXN0cmluZ1RvU3Ry
aW5nKGFyZ3MuYXQoMikudG9TdHJpbmcoZXhlYykpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkgeworICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICBzZXRET01F
eGNlcHRpb24oZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpOworICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKKyAgICB9CisKKyAgICAvLyBhcmdzLmF0KDMpID0gZXN0aW1hdGVkIHNpemUKKyAg
ICBpZiAoIWFyZ3MuYXQoMykuaXNVSW50MzIoKSkgeworICAgICAgICBzZXRET01FeGNlcHRpb24o
ZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
KyAgICB9CisgICAgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplID0gYXJncy5hdCgzKS50b1VJ
bnQzMihleGVjKTsKKwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGNvbnN0IFVTdHJp
bmcmIG5hbWUgPSBhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpOwotICAgIGNvbnN0IFVTdHJpbmcm
IHZlcnNpb24gPSBhcmdzLmF0KDEpLnRvU3RyaW5nKGV4ZWMpOwotICAgIGNvbnN0IFVTdHJpbmcm
IGRpc3BsYXlOYW1lID0gYXJncy5hdCgyKS50b1N0cmluZyhleGVjKTsKLSAgICB1bnNpZ25lZCBs
b25nIGVzdGltYXRlZFNpemUgPSBhcmdzLmF0KDMpLnRvSW50MzIoZXhlYyk7CiAgICAgUmVmUHRy
PERhdGFiYXNlQ2FsbGJhY2s+IGNyZWF0aW9uQ2FsbGJhY2s7CiAgICAgaWYgKChhcmdzLnNpemUo
KSA+PSA1KSAmJiBhcmdzLmF0KDQpLmlzT2JqZWN0KCkpCiAgICAgICAgIGNyZWF0aW9uQ2FsbGJh
Y2sgPSBKU0RhdGFiYXNlQ2FsbGJhY2s6OmNyZWF0ZShhc09iamVjdChhcmdzLmF0KDQpKSwgZ2xv
YmFsT2JqZWN0KCkpOwogCi0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGdsb2JhbE9i
amVjdCgpLCBXVEY6OmdldFB0cihpbXBsKCktPm9wZW5EYXRhYmFzZSh1c3RyaW5nVG9TdHJpbmco
bmFtZSksIHVzdHJpbmdUb1N0cmluZyh2ZXJzaW9uKSwgdXN0cmluZ1RvU3RyaW5nKGRpc3BsYXlO
YW1lKSwgZXN0aW1hdGVkU2l6ZSwgY3JlYXRpb25DYWxsYmFjay5yZWxlYXNlKCksIGVjKSkpOwor
ICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQ
dHIoaW1wbCgpLT5vcGVuRGF0YWJhc2UobmFtZSwgdmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGlt
YXRlZFNpemUsIGNyZWF0aW9uQ2FsbGJhY2sucmVsZWFzZSgpLCBlYykpKTsKIAogICAgIHNldERP
TUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKSW5kZXg6IFdlYkNvcmUv
YmluZGluZ3MvanMvSlNEYXRhYmFzZUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RhdGFiYXNlQ3VzdG9tLmNwcAkocmV2aXNpb24gNTg5MDQpCisrKyBXZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRGF0YWJhc2VDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MCwxNSArNTAsMjYgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIEpTVmFsdWUgSlNEYXRhYmFzZTo6
Y2hhbmdlVmVyc2lvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CiAg
ICAgU3RyaW5nIG9sZFZlcnNpb24gPSB1c3RyaW5nVG9TdHJpbmcoYXJncy5hdCgwKS50b1N0cmlu
ZyhleGVjKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAgIGV4ZWMt
PmNsZWFyRXhjZXB0aW9uKCk7CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBUWVBFX01J
U01BVENIX0VSUik7CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIH0KKwogICAg
IFN0cmluZyBuZXdWZXJzaW9uID0gdXN0cmluZ1RvU3RyaW5nKGFyZ3MuYXQoMSkudG9TdHJpbmco
ZXhlYykpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgeworICAgICAgICBleGVjLT5j
bGVhckV4Y2VwdGlvbigpOworICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQRV9NSVNN
QVRDSF9FUlIpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CiAKLSAgICBK
U09iamVjdCogb2JqZWN0OwotICAgIGlmICghKG9iamVjdCA9IGFyZ3MuYXQoMikuZ2V0T2JqZWN0
KCkpKSB7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFyZ3MuYXQoMikuZ2V0T2JqZWN0KCk7Cisg
ICAgaWYgKCFvYmplY3QpIHsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlT
TUFUQ0hfRVJSKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQogICAgIAot
ICAgIFJlZlB0cjxTUUxUcmFuc2FjdGlvbkNhbGxiYWNrPiBjYWxsYmFjayhKU1NRTFRyYW5zYWN0
aW9uQ2FsbGJhY2s6OmNyZWF0ZShvYmplY3QsIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpKSkpOworICAgIFJlZlB0cjxTUUxUcmFuc2Fj
dGlvbkNhbGxiYWNrPiBjYWxsYmFjayhKU1NRTFRyYW5zYWN0aW9uQ2FsbGJhY2s6OmNyZWF0ZShv
YmplY3QsIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpKSk7
CiAgICAgCiAgICAgUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxs
YmFjazsKICAgICBpZiAoIWFyZ3MuYXQoMykuaXNOdWxsKCkpIHsKQEAgLTY3LDE3ICs3OCwxOCBA
QCBKU1ZhbHVlIEpTRGF0YWJhc2U6OmNoYW5nZVZlcnNpb24oRXhlY1N0CiAgICAgICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgZXJyb3JD
YWxsYmFjayA9IEpTU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrOjpjcmVhdGUob2JqZWN0LCBz
dGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3Qo
KSkpOworICAgICAgICBlcnJvckNhbGxiYWNrID0gSlNTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJh
Y2s6OmNyZWF0ZShvYmplY3QsIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFs
T2JqZWN0KCkpKTsKICAgICB9CiAgICAgCiAgICAgUmVmUHRyPFZvaWRDYWxsYmFjaz4gc3VjY2Vz
c0NhbGxiYWNrOwogICAgIGlmICghYXJncy5hdCg0KS5pc051bGwoKSkgewotICAgICAgICBpZiAo
IShvYmplY3QgPSBhcmdzLmF0KDQpLmdldE9iamVjdCgpKSkgeworICAgICAgICBvYmplY3QgPSBh
cmdzLmF0KDQpLmdldE9iamVjdCgpOworICAgICAgICBpZiAoIW9iamVjdCkgewogICAgICAgICAg
ICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKICAgICAgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICB9CiAKLSAgICAgICAgc3VjY2Vzc0NhbGxi
YWNrID0gSlNDdXN0b21Wb2lkQ2FsbGJhY2s6OmNyZWF0ZShvYmplY3QsIHN0YXRpY19jYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpKSk7CisgICAgICAg
IHN1Y2Nlc3NDYWxsYmFjayA9IEpTQ3VzdG9tVm9pZENhbGxiYWNrOjpjcmVhdGUob2JqZWN0LCBz
dGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKSk7CiAgICAgfQog
CiAgICAgbV9pbXBsLT5jaGFuZ2VWZXJzaW9uKG9sZFZlcnNpb24sIG5ld1ZlcnNpb24sIGNhbGxi
YWNrLnJlbGVhc2UoKSwgZXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIHN1Y2Nlc3NDYWxsYmFjay5y
ZWxlYXNlKCkpOwpAQCAtODcsOSArOTksOSBAQCBKU1ZhbHVlIEpTRGF0YWJhc2U6OmNoYW5nZVZl
cnNpb24oRXhlY1N0CiAKIHN0YXRpYyBKU1ZhbHVlIGNyZWF0ZVRyYW5zYWN0aW9uKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncywgRGF0YWJhc2UqIGRhdGFiYXNlLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBib29sIHJlYWRPbmx5KQogewotICAgIEpTT2JqZWN0
KiBvYmplY3Q7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFyZ3MuYXQoMCkuZ2V0T2JqZWN0KCk7
CiAgICAgCi0gICAgaWYgKCEob2JqZWN0ID0gYXJncy5hdCgwKS5nZXRPYmplY3QoKSkpIHsKKyAg
ICBpZiAoIW9iamVjdCkgewogICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQRV9NSVNN
QVRDSF9FUlIpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9ICAgICAgICAK
QEAgLTk3LDcgKzEwOSw4IEBAIHN0YXRpYyBKU1ZhbHVlIGNyZWF0ZVRyYW5zYWN0aW9uKEV4ZWNT
dGEKICAgICBSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4gY2FsbGJhY2soSlNTUUxUcmFu
c2FjdGlvbkNhbGxiYWNrOjpjcmVhdGUob2JqZWN0LCBnbG9iYWxPYmplY3QpKTsKICAgICBSZWZQ
dHI8U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrOwogICAgIGlmIChh
cmdzLnNpemUoKSA+IDEgJiYgIWFyZ3MuYXQoMSkuaXNOdWxsKCkpIHsKLSAgICAgICAgaWYgKCEo
b2JqZWN0ID0gYXJncy5hdCgxKS5nZXRPYmplY3QoKSkpIHsKKyAgICAgICAgb2JqZWN0ID0gYXJn
cy5hdCgxKS5nZXRPYmplY3QoKTsKKyAgICAgICAgaWYgKCFvYmplY3QpIHsKICAgICAgICAgICAg
IHNldERPTUV4Y2VwdGlvbihleGVjLCBUWVBFX01JU01BVENIX0VSUik7CiAgICAgICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgfQpAQCAtMTA3LDcgKzEyMCw4IEBAIHN0YXRp
YyBKU1ZhbHVlIGNyZWF0ZVRyYW5zYWN0aW9uKEV4ZWNTdGEKIAogICAgIFJlZlB0cjxWb2lkQ2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjazsKICAgICBpZiAoYXJncy5zaXplKCkgPiAyICYmICFhcmdz
LmF0KDIpLmlzTnVsbCgpKSB7Ci0gICAgICAgIGlmICghKG9iamVjdCA9IGFyZ3MuYXQoMikuZ2V0
T2JqZWN0KCkpKSB7CisgICAgICAgIG9iamVjdCA9IGFyZ3MuYXQoMikuZ2V0T2JqZWN0KCk7Cisg
ICAgICAgIGlmICghb2JqZWN0KSB7CiAgICAgICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywg
VFlQRV9NSVNNQVRDSF9FUlIpOwogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAg
ICAgICAgIH0KQEAgLTEyMSwxMiArMTM1LDEyIEBAIHN0YXRpYyBKU1ZhbHVlIGNyZWF0ZVRyYW5z
YWN0aW9uKEV4ZWNTdGEKIAogSlNWYWx1ZSBKU0RhdGFiYXNlOjp0cmFuc2FjdGlvbihFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZVRyYW5z
YWN0aW9uKGV4ZWMsIGFyZ3MsIG1faW1wbC5nZXQoKSwgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkpLCBmYWxzZSk7CisgICAgcmV0dXJu
IGNyZWF0ZVRyYW5zYWN0aW9uKGV4ZWMsIGFyZ3MsIG1faW1wbC5nZXQoKSwgc3RhdGljX2Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSksIGZhbHNlKTsKIH0KICAgICAKIEpT
VmFsdWUgSlNEYXRhYmFzZTo6cmVhZFRyYW5zYWN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
QXJnTGlzdCYgYXJncykKIHsKLSAgICByZXR1cm4gY3JlYXRlVHJhbnNhY3Rpb24oZXhlYywgYXJn
cywgbV9pbXBsLmdldCgpLCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmR5
bmFtaWNHbG9iYWxPYmplY3QoKSksIHRydWUpOworICAgIHJldHVybiBjcmVhdGVUcmFuc2FjdGlv
bihleGVjLCBhcmdzLCBtX2ltcGwuZ2V0KCksIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZ2xvYmFsT2JqZWN0KCkpLCB0cnVlKTsKIH0KIAogfQpJbmRleDogV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RhdGFiYXNlU3luY0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RhdGFiYXNlU3luY0N1c3RvbS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRGF0YWJhc2VTeW5jQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAg
ICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0RhdGFiYXNlU3lu
Yy5oIgorCisjaWYgRU5BQkxFKERBVEFCQVNFKQorCisjaW5jbHVkZSAiRGF0YWJhc2VTeW5jLmgi
CisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkpTU1FMVHJhbnNhY3Rpb25T
eW5jQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlNR
TFZhbHVlLmgiCisjaW5jbHVkZSA8cnVudGltZS9KU0FycmF5Lmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworSlNWYWx1ZSBKU0RhdGFiYXNlU3luYzo6
Y2hhbmdlVmVyc2lvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7Cisg
ICAgU3RyaW5nIG9sZFZlcnNpb24gPSB1c3RyaW5nVG9TdHJpbmcoYXJncy5hdCgwKS50b1N0cmlu
ZyhleGVjKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAgIGV4ZWMt
PmNsZWFyRXhjZXB0aW9uKCk7CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBUWVBFX01J
U01BVENIX0VSUik7CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIH0KKworICAg
IFN0cmluZyBuZXdWZXJzaW9uID0gdXN0cmluZ1RvU3RyaW5nKGFyZ3MuYXQoMSkudG9TdHJpbmco
ZXhlYykpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgeworICAgICAgICBleGVjLT5j
bGVhckV4Y2VwdGlvbigpOworICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQRV9NSVNN
QVRDSF9FUlIpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisKKyAgICBK
U09iamVjdCogb2JqZWN0ID0gYXJncy5hdCgyKS5nZXRPYmplY3QoKTsKKyAgICBpZiAoIW9iamVj
dCkgeworICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpOwor
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisKKyAgICBSZWZQdHI8U1FMVHJh
bnNhY3Rpb25TeW5jQ2FsbGJhY2s+IGNhbGxiYWNrKEpTU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJh
Y2s6OmNyZWF0ZShvYmplY3QsIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFs
T2JqZWN0KCkpKSk7CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBtX2ltcGwtPmNo
YW5nZVZlcnNpb24ob2xkVmVyc2lvbiwgbmV3VmVyc2lvbiwgY2FsbGJhY2sucmVsZWFzZSgpLCBl
Yyk7CisgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKworICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOworfQorCitzdGF0aWMgSlNWYWx1ZSBjcmVhdGVUcmFuc2FjdGlvbihFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIERhdGFiYXNlU3luYyogZGF0YWJhc2UsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGJvb2wgcmVhZE9ubHkpCit7CisgICAgSlNPYmpl
Y3QqIG9iamVjdCA9IGFyZ3MuYXQoMCkuZ2V0T2JqZWN0KCk7CisgICAgaWYgKCFvYmplY3QpIHsK
KyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKKyAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorCisgICAgUmVmUHRyPFNRTFRyYW5zYWN0
aW9uU3luY0NhbGxiYWNrPiBjYWxsYmFjayhKU1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrOjpj
cmVhdGUob2JqZWN0LCBnbG9iYWxPYmplY3QpKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OworICAgIGRhdGFiYXNlLT50cmFuc2FjdGlvbihjYWxsYmFjay5yZWxlYXNlKCksIHJlYWRPbmx5
LCBlYyk7CisgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKworICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOworfQorCitKU1ZhbHVlIEpTRGF0YWJhc2VTeW5jOjp0cmFuc2FjdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAgcmV0dXJuIGNyZWF0ZVRy
YW5zYWN0aW9uKGV4ZWMsIGFyZ3MsIG1faW1wbC5nZXQoKSwgc3RhdGljX2Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSksIGZhbHNlKTsKK30KKworSlNWYWx1ZSBKU0RhdGFi
YXNlU3luYzo6cmVhZFRyYW5zYWN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYg
YXJncykKK3sKKyAgICByZXR1cm4gY3JlYXRlVHJhbnNhY3Rpb24oZXhlYywgYXJncywgbV9pbXBs
LmdldCgpLCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKSwg
dHJ1ZSk7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShEQVRBQkFTRSkKSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24g
NTg5MDQpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01MCw4ICs1MCwxMSBAQCBKU1ZhbHVlIEpTU1FMVHJhbnNhY3Rp
b246OmV4ZWN1dGVTcWwoRXhlCiAgICAgfQogCiAgICAgU3RyaW5nIHNxbFN0YXRlbWVudCA9IHVz
dHJpbmdUb1N0cmluZyhhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpKTsKLSAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAg
IGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBU
WVBFX01JU01BVENIX0VSUik7CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIH0K
IAogICAgIC8vIE5vdyBhc3NlbWJsZSB0aGUgbGlzdCBvZiBTUUwgYXJndW1lbnRzCiAgICAgVmVj
dG9yPFNRTFZhbHVlPiBzcWxWYWx1ZXM7CkBAIC03NCw3ICs3Nyw3IEBAIEpTVmFsdWUgSlNTUUxU
cmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbChFeGUKICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAg
ICAgIAotICAgICAgICAgICAgaWYgKHZhbHVlLmlzTnVsbCgpKQorICAgICAgICAgICAgaWYgKHZh
bHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFwcGVu
ZChTUUxWYWx1ZSgpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlLmlzTnVtYmVyKCkpCiAg
ICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFwcGVuZCh2YWx1ZS51bmNoZWNrZWRHZXROdW1iZXIo
KSk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9t
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25T
eW5jQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxU
cmFuc2FjdGlvblN5bmNDdXN0b20uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwMSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
CisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1NRTFRyYW5zYWN0aW9uU3luYy5oIgor
CisjaWYgRU5BQkxFKERBVEFCQVNFKQorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2lu
Y2x1ZGUgIkpTU1FMUmVzdWx0U2V0LmgiCisjaW5jbHVkZSAiU1FMUmVzdWx0U2V0LmgiCisjaW5j
bHVkZSAiU1FMVHJhbnNhY3Rpb25TeW5jLmgiCisjaW5jbHVkZSAiU1FMVmFsdWUuaCIKKwordXNp
bmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitKU1ZhbHVlIEpTU1FM
VHJhbnNhY3Rpb25TeW5jOjpleGVjdXRlU3FsKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlz
dCYgYXJncykKK3sKKyAgICBpZiAoYXJncy5pc0VtcHR5KCkpIHsKKyAgICAgICAgc2V0RE9NRXhj
ZXB0aW9uKGV4ZWMsIFNZTlRBWF9FUlIpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
KyAgICB9CisKKyAgICBTdHJpbmcgc3FsU3RhdGVtZW50ID0gdXN0cmluZ1RvU3RyaW5nKGFyZ3Mu
YXQoMCkudG9TdHJpbmcoZXhlYykpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgewor
ICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICBzZXRET01FeGNlcHRpb24o
ZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
KyAgICB9CisKKyAgICAvLyBOb3cgYXNzZW1ibGUgdGhlIGxpc3Qgb2YgU1FMIGFyZ3VtZW50cwor
ICAgIFZlY3RvcjxTUUxWYWx1ZT4gc3FsVmFsdWVzOworICAgIGlmICghYXJncy5hdCgxKS5pc1Vu
ZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhcmdzLmF0KDEp
LmdldE9iamVjdCgpOworICAgICAgICBpZiAoIW9iamVjdCkgeworICAgICAgICAgICAgc2V0RE9N
RXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKKyAgICAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOworICAgICAgICB9CisKKyAgICAgICAgSlNWYWx1ZSBsZW5ndGhWYWx1ZSA9
IG9iamVjdC0+Z2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpOworICAgICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKKyAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gbGVuZ3RoVmFsdWUudG9VSW50MzIoZXhl
Yyk7CisgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOworCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDAgOyBpIDwgbGVu
Z3RoOyArK2kpIHsKKyAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldChleGVj
LCBpKTsKKyAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKworICAgICAgICAgICAgaWYgKHZhbHVlLmlzVW5k
ZWZpbmVkT3JOdWxsKCkpCisgICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFwcGVuZChTUUxWYWx1
ZSgpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlLmlzTnVtYmVyKCkpCisgICAgICAgICAg
ICAgICAgc3FsVmFsdWVzLmFwcGVuZCh2YWx1ZS51bmNoZWNrZWRHZXROdW1iZXIoKSk7CisgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHRoZSBhcmd1bWVudCB0
byBhIHN0cmluZyBhbmQgYXBwZW5kIGl0CisgICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFwcGVu
ZCh1c3RyaW5nVG9TdHJpbmcodmFsdWUudG9TdHJpbmcoZXhlYykpKTsKKyAgICAgICAgICAgICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGdsb2Jh
bE9iamVjdCgpLCBXVEY6OmdldFB0cihtX2ltcGwtPmV4ZWN1dGVTUUwoc3FsU3RhdGVtZW50LCBz
cWxWYWx1ZXMsIGVjKSkpOworICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoREFUQUJBU0UpCkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwCShyZXZp
c2lvbiA1ODkwNCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9t
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksMTAgQEAKIAogI2luY2x1ZGUgIkpTV29y
a2VyQ29udGV4dC5oIgogCisjaWYgRU5BQkxFKERBVEFCQVNFKQorI2luY2x1ZGUgIkpTRGF0YWJh
c2VDYWxsYmFjay5oIgorI2luY2x1ZGUgIkpTRGF0YWJhc2VTeW5jLmgiCisjZW5kaWYKICNpbmNs
dWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgogI2lu
Y2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgpAQCAtMTQyLDYgKzE0Niw2MCBAQCBKU1ZhbHVlIEpT
V29ya2VyQ29udGV4dDo6bWVzc2FnZUNoYW5uZWwoCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShE
QVRBQkFTRSkKK0pTVmFsdWUgSlNXb3JrZXJDb250ZXh0OjpvcGVuRGF0YWJhc2VTeW5jKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICBpZiAoYXJncy5zaXplKCkg
PCA0KSB7CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBTWU5UQVhfRVJSKTsKKyAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorCisgICAgU3RyaW5nIG5hbWUgPSB1c3Ry
aW5nVG9TdHJpbmcoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKSk7CisgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKSB7CisgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CisgICAgICAg
IHNldERPTUV4Y2VwdGlvbihleGVjLCBUWVBFX01JU01BVENIX0VSUik7CisgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOworICAgIH0KKworICAgIFN0cmluZyB2ZXJzaW9uID0gdXN0cmluZ1Rv
U3RyaW5nKGFyZ3MuYXQoMSkudG9TdHJpbmcoZXhlYykpOworICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkgeworICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICBzZXRE
T01FeGNlcHRpb24oZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpOworICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKKyAgICB9CisKKyAgICBTdHJpbmcgZGlzcGxheU5hbWUgPSB1c3RyaW5nVG9T
dHJpbmcoYXJncy5hdCgyKS50b1N0cmluZyhleGVjKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKSB7CisgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CisgICAgICAgIHNldERP
TUV4Y2VwdGlvbihleGVjLCBUWVBFX01JU01BVENIX0VSUik7CisgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOworICAgIH0KKworICAgIC8vIGFyZ3MuYXQoMykgPSBlc3RpbWF0ZWQgc2l6ZQor
ICAgIGlmICghYXJncy5hdCgzKS5pc1VJbnQzMigpKSB7CisgICAgICBzZXRET01FeGNlcHRpb24o
ZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpOworICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cisg
ICAgfQorICAgIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSA9IGFyZ3MuYXQoMykudG9VSW50
MzIoZXhlYyk7CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBSZWZQdHI8RGF0YWJh
c2VDYWxsYmFjaz4gY3JlYXRpb25DYWxsYmFjazsKKyAgICBpZiAoYXJncy5zaXplKCkgPj0gNSkg
eworICAgICAgICBpZiAoYXJncy5hdCg0KS5pc09iamVjdCgpKSB7CisgICAgICAgICAgICBjcmVh
dGlvbkNhbGxiYWNrID0gSlNEYXRhYmFzZUNhbGxiYWNrOjpjcmVhdGUoYXNPYmplY3QoYXJncy5h
dCg0KSksIGdsb2JhbE9iamVjdCgpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNl
dERPTUV4Y2VwdGlvbihleGVjLCBUWVBFX01JU01BVENIX0VSUik7CisgICAgICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEpTVmFsdWUgcmVzdWx0
ID0gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbCgpLT5vcGVuRGF0
YWJhc2VTeW5jKG5hbWUsIHZlcnNpb24sIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplLCBjcmVh
dGlvbkNhbGxiYWNrLnJlbGVhc2UoKSwgZWMpKSk7CisKKyAgICBzZXRET01FeGNlcHRpb24oZXhl
YywgZWMpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdPUktFUlMpCkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiA1ODkw
NCkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzE5LDcgKzcxOSwxMCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhET01XaW5kb3c6Om9wZW5ECiB7CiAgICAgSU5DX1NUQVRTKCJET00uRE9NV2luZG93Lm9wZW5E
YXRhYmFzZSIpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgNCkKLSAgICAgICAgcmV0dXJuIHY4
OjpVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoVjhQcm94eTo6U3ludGF4
RXJyb3IpOworCisgICAgaWYgKCFhcmdzWzBdLT5Jc1N0cmluZygpIHx8ICFhcmdzWzFdLT5Jc1N0
cmluZygpIHx8ICFhcmdzWzJdLT5Jc1N0cmluZygpIHx8ICFhcmdzWzNdLT5Jc1VpbnQzMigpKQor
ICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihWOFByb3h5OjpUeXBlRXJyb3IpOwogCiAgICAgRE9N
V2luZG93KiBpbXAgPSBWOERPTVdpbmRvdzo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAg
aWYgKCFWOEJpbmRpbmdTZWN1cml0eTo6Y2FuQWNjZXNzRnJhbWUoVjhCaW5kaW5nU3RhdGU6Ok9u
bHkoKSwgaW1wLT5mcmFtZSgpLCB0cnVlKSkKQEAgLTcyOSw3ICs3MzIsNyBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6Om9wZW5ECiAgICAgU3RyaW5nIG5hbWUgPSB0b1dlYkNv
cmVTdHJpbmcoYXJnc1swXSk7CiAgICAgU3RyaW5nIHZlcnNpb24gPSB0b1dlYkNvcmVTdHJpbmco
YXJnc1sxXSk7CiAgICAgU3RyaW5nIGRpc3BsYXlOYW1lID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3Nb
Ml0pOwotICAgIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSA9IGFyZ3NbM10tPkludGVnZXJW
YWx1ZSgpOworICAgIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSA9IGFyZ3NbM10tPlVpbnQz
MlZhbHVlKCk7CiAgICAgUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+IGNyZWF0aW9uQ2FsbGJhY2s7
CiAgICAgaWYgKChhcmdzLkxlbmd0aCgpID49IDUpICYmIGFyZ3NbNF0tPklzT2JqZWN0KCkpCiAg
ICAgICAgIGNyZWF0aW9uQ2FsbGJhY2sgPSBWOERhdGFiYXNlQ2FsbGJhY2s6OmNyZWF0ZShhcmdz
WzRdLCBpbXAtPmZyYW1lKCkpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhE
YXRhYmFzZUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhEYXRhYmFzZUN1c3RvbS5jcHAJKHJldmlzaW9uIDU4OTA0KQorKysgV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhEYXRhYmFzZUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3
LDEwICs0NywxMCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEYXRhYmFzZTo6Y2hhbmdlCiAg
ICAgSU5DX1NUQVRTKCJET00uRGF0YWJhc2UuY2hhbmdlVmVyc2lvbigpIik7CiAKICAgICBpZiAo
YXJncy5MZW5ndGgoKSA8IDIpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJUaGUgb2xkIGFu
ZCBuZXcgdmVyc2lvbiBzdHJpbmdzIGFyZSByZXF1aXJlZC4iLCBWOFByb3h5OjpTeW50YXhFcnJv
cik7CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFY4UHJveHk6OlN5bnRheEVycm9yKTsKIAog
ICAgIGlmICghKGFyZ3NbMF0tPklzU3RyaW5nKCkgJiYgYXJnc1sxXS0+SXNTdHJpbmcoKSkpCi0g
ICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJUaGUgb2xkIGFuZCBuZXcgdmVyc2lvbnMgbXVzdCBi
ZSBzdHJpbmdzLiIpOworICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihWOFByb3h5OjpUeXBlRXJy
b3IpOwogCiAgICAgRGF0YWJhc2UqIGRhdGFiYXNlID0gVjhEYXRhYmFzZTo6dG9OYXRpdmUoYXJn
cy5Ib2xkZXIoKSk7CiAKQEAgLTYxLDcgKzYxLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
RGF0YWJhc2U6OmNoYW5nZQogICAgIFJlZlB0cjxWOFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2s+IGNh
bGxiYWNrOwogICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMikgewogICAgICAgICBpZiAoIWFyZ3Nb
Ml0tPklzT2JqZWN0KCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiY2hhbmdlVmVy
c2lvbiB0cmFuc2FjdGlvbiBjYWxsYmFjayBtdXN0IGJlIG9mIHZhbGlkIHR5cGUuIik7CisgICAg
ICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihWOFByb3h5OjpUeXBlRXJyb3IpOwogCiAgICAgICAg
IGNhbGxiYWNrID0gVjhTUUxUcmFuc2FjdGlvbkNhbGxiYWNrOjpjcmVhdGUoYXJnc1syXSwgZnJh
bWUpOwogICAgIH0KQEAgLTY5LDcgKzY5LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGF0
YWJhc2U6OmNoYW5nZQogICAgIFJlZlB0cjxWOFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4g
ZXJyb3JDYWxsYmFjazsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDMpIHsKICAgICAgICAgaWYg
KCFhcmdzWzNdLT5Jc09iamVjdCgpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoImNo
YW5nZVZlcnNpb24gZXJyb3IgY2FsbGJhY2sgbXVzdCBiZSBvZiB2YWxpZCB0eXBlLiIpOworICAg
ICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoVjhQcm94eTo6VHlwZUVycm9yKTsKIAogICAgICAg
ICBlcnJvckNhbGxiYWNrID0gVjhTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s6OmNyZWF0ZShh
cmdzWzNdLCBmcmFtZSk7CiAgICAgfQpAQCAtNzcsNyArNzcsNyBAQCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhEYXRhYmFzZTo6Y2hhbmdlCiAgICAgUmVmUHRyPFY4Q3VzdG9tVm9pZENhbGxiYWNr
PiBzdWNjZXNzQ2FsbGJhY2s7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiA0KSB7CiAgICAgICAg
IGlmICghYXJnc1s0XS0+SXNPYmplY3QoKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9y
KCJjaGFuZ2VWZXJzaW9uIHN1Y2Nlc3MgY2FsbGJhY2sgbXVzdCBiZSBvZiB2YWxpZCB0eXBlLiIp
OworICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoVjhQcm94eTo6VHlwZUVycm9yKTsKIAog
ICAgICAgICBzdWNjZXNzQ2FsbGJhY2sgPSBWOEN1c3RvbVZvaWRDYWxsYmFjazo6Y3JlYXRlKGFy
Z3NbNF0sIGZyYW1lKTsKICAgICB9CkBAIC05MCwxMCArOTAsMTAgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4RGF0YWJhc2U6OmNoYW5nZQogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBj
cmVhdGVUcmFuc2FjdGlvbihjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBib29sIHJlYWRPbmx5
KQogewogICAgIGlmICghYXJncy5MZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIHRocm93RXJyb3Io
IlRyYW5zYWN0aW9uIGNhbGxiYWNrIGlzIHJlcXVpcmVkLiIsIFY4UHJveHk6OlN5bnRheEVycm9y
KTsKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoVjhQcm94eTo6U3ludGF4RXJyb3IpOwogCiAg
ICAgaWYgKCFhcmdzWzBdLT5Jc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigi
VHJhbnNhY3Rpb24gY2FsbGJhY2sgbXVzdCBiZSBvZiB2YWxpZCB0eXBlLiIpOworICAgICAgICBy
ZXR1cm4gdGhyb3dFcnJvcihWOFByb3h5OjpUeXBlRXJyb3IpOwogCiAgICAgRGF0YWJhc2UqIGRh
dGFiYXNlID0gVjhEYXRhYmFzZTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAKQEAgLTEwNiw3
ICsxMDYsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNyZWF0ZVRyYW5zCiAgICAg
UmVmUHRyPFY4U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrOwogICAg
IGlmIChhcmdzLkxlbmd0aCgpID4gMSAmJiAhaXNVbmRlZmluZWRPck51bGwoYXJnc1sxXSkpIHsK
ICAgICAgICAgaWYgKCFhcmdzWzFdLT5Jc09iamVjdCgpKQotICAgICAgICAgICAgcmV0dXJuIHRo
cm93RXJyb3IoIlRyYW5zYWN0aW9uIGVycm9yIGNhbGxiYWNrIG11c3QgYmUgb2YgdmFsaWQgdHlw
ZS4iKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFY4UHJveHk6OlR5cGVFcnJvcik7
CiAKICAgICAgICAgZXJyb3JDYWxsYmFjayA9IFY4U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNr
OjpjcmVhdGUoYXJnc1sxXSwgZnJhbWUpOwogICAgIH0KQEAgLTExNCw3ICsxMTQsNyBAQCBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNyZWF0ZVRyYW5zCiAgICAgUmVmUHRyPFY4Q3VzdG9t
Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2s7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAy
ICYmICFpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzJdKSkgewogICAgICAgICBpZiAoIWFyZ3NbMl0t
PklzT2JqZWN0KCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiVHJhbnNhY3Rpb24g
c3VjY2VzcyBjYWxsYmFjayBtdXN0IGJlIG9mIHZhbGlkIHR5cGUuIik7CisgICAgICAgICAgICBy
ZXR1cm4gdGhyb3dFcnJvcihWOFByb3h5OjpUeXBlRXJyb3IpOwogCiAgICAgICAgIHN1Y2Nlc3ND
YWxsYmFjayA9IFY4Q3VzdG9tVm9pZENhbGxiYWNrOjpjcmVhdGUoYXJnc1syXSwgZnJhbWUpOwog
ICAgIH0KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YWJhc2VTeW5jQ3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFi
YXNlU3luY0N1c3RvbS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOERhdGFiYXNlU3luY0N1c3RvbS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKERBVEFCQVNFKQorI2luY2x1ZGUg
IlY4RGF0YWJhc2VTeW5jLmgiCisKKyNpbmNsdWRlICJEYXRhYmFzZVN5bmMuaCIKKyNpbmNsdWRl
ICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAiVjhTUUxUcmFu
c2FjdGlvblN5bmNDYWxsYmFjay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3Y4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOERhdGFiYXNlU3luYzo6Y2hhbmdlVmVyc2lvbkNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uRGF0YWJhc2UuY2hh
bmdlVmVyc2lvbigpIik7CisKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDIpCisgICAgICAgIHJl
dHVybiB0aHJvd0Vycm9yKFY4UHJveHk6OlN5bnRheEVycm9yKTsKKworICAgIGlmICghKGFyZ3Nb
MF0tPklzU3RyaW5nKCkgJiYgYXJnc1sxXS0+SXNTdHJpbmcoKSkpCisgICAgICAgIHJldHVybiB0
aHJvd0Vycm9yKFY4UHJveHk6OlR5cGVFcnJvcik7CisKKyAgICBEYXRhYmFzZVN5bmMqIGRhdGFi
YXNlID0gVjhEYXRhYmFzZVN5bmM6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworCisgICAgUmVm
UHRyPFY4U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+IGNhbGxiYWNrOworICAgIGlmIChhcmdz
Lkxlbmd0aCgpID4gMikgeworICAgICAgICBpZiAoIWFyZ3NbMl0tPklzT2JqZWN0KCkpCisgICAg
ICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihWOFByb3h5OjpUeXBlRXJyb3IpOworCisgICAgICAg
IGNhbGxiYWNrID0gVjhTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjazo6Y3JlYXRlKGFyZ3NbMl0s
IDApOworICAgIH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGRhdGFiYXNlLT5j
aGFuZ2VWZXJzaW9uKHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKSwgdG9XZWJDb3JlU3RyaW5nKGFy
Z3NbMV0pLCBjYWxsYmFjay5yZWxlYXNlKCksIGVjKTsKKyAgICBWOFByb3h5OjpzZXRET01FeGNl
cHRpb24oZWMpOworCisgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKK30KKworc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBjcmVhdGVUcmFuc2FjdGlvbihjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzLCBib29sIHJlYWRPbmx5KQoreworICAgIGlmICghYXJncy5MZW5ndGgoKSkKKyAgICAg
ICAgcmV0dXJuIHRocm93RXJyb3IoVjhQcm94eTo6U3ludGF4RXJyb3IpOworCisgICAgaWYgKCFh
cmdzWzBdLT5Jc09iamVjdCgpKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihWOFByb3h5OjpU
eXBlRXJyb3IpOworCisgICAgRGF0YWJhc2VTeW5jKiBkYXRhYmFzZSA9IFY4RGF0YWJhc2VTeW5j
Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKworICAgIFJlZlB0cjxWOFNRTFRyYW5zYWN0aW9u
U3luY0NhbGxiYWNrPiBjYWxsYmFjayA9IFY4U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s6OmNy
ZWF0ZShhcmdzWzBdLCAwKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGRhdGFi
YXNlLT50cmFuc2FjdGlvbihjYWxsYmFjay5yZWxlYXNlKCksIHJlYWRPbmx5LCBlYyk7CisgICAg
VjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKGVjKTsKKworICAgIHJldHVybiB2ODo6VW5kZWZpbmVk
KCk7Cit9CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERhdGFiYXNlU3luYzo6dHJhbnNhY3Rp
b25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygi
RE9NLkRhdGFiYXNlU3luYy50cmFuc2FjdGlvbigpIik7CisgICAgcmV0dXJuIGNyZWF0ZVRyYW5z
YWN0aW9uKGFyZ3MsIGZhbHNlKTsKK30KKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGF0YWJh
c2VTeW5jOjpyZWFkVHJhbnNhY3Rpb25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQoreworICAgIElOQ19TVEFUUygiRE9NLkRhdGFiYXNlU3luYy5yZWFkVHJhbnNhY3Rpb24oKSIp
OworICAgIHJldHVybiBjcmVhdGVUcmFuc2FjdGlvbihhcmdzLCB0cnVlKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4U1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwCShyZXZpc2lvbiA1ODkw
NCkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25DdXN0b20u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOFNRTFRyYW5zYWN0aW9uOjoKICAgICBJTkNfU1RBVFMoIkRPTS5TUUxUcmFuc2FjdGlvbi5l
eGVjdXRlU3FsKCkiKTsKIAogICAgIGlmIChhcmdzLkxlbmd0aCgpID09IDApCi0gICAgICAgIHJl
dHVybiB0aHJvd0Vycm9yKCJTUUwgc3RhdGVtZW50IGlzIHJlcXVpcmVkLiIsIFY4UHJveHk6OlN5
bnRheEVycm9yKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoVjhQcm94eTo6U3ludGF4RXJy
b3IpOwogCiAgICAgU3RyaW5nIHN0YXRlbWVudCA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKTsK
IApAQCAtOTIsNyArOTIsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhTUUxUcmFuc2FjdGlv
bjo6CiAgICAgICAgICAgICAgICAgICAgIHNxbFZhbHVlcy5hcHBlbmQoU1FMVmFsdWUodG9XZWJD
b3JlU3RyaW5nKHZhbHVlKSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJzcWxBcmdzIHNob3VsZCBiZSBhcnJheSBvciBvYmpl
Y3QhIiwgVjhQcm94eTo6VHlwZUVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9y
KFY4UHJveHk6OlR5cGVFcnJvcik7CiAgICAgfQogCiAgICAgU1FMVHJhbnNhY3Rpb24qIHRyYW5z
YWN0aW9uID0gVjhTUUxUcmFuc2FjdGlvbjo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CkBAIC0x
MDIsNyArMTAyLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4U1FMVHJhbnNhY3Rpb246Ogog
ICAgIFJlZlB0cjxTUUxTdGF0ZW1lbnRDYWxsYmFjaz4gY2FsbGJhY2s7CiAgICAgaWYgKGFyZ3Mu
TGVuZ3RoKCkgPiAyICYmICFpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzJdKSkgewogICAgICAgICBp
ZiAoIWFyZ3NbMl0tPklzT2JqZWN0KCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigi
U3RhdGVtZW50IGNhbGxiYWNrIG11c3QgYmUgb2YgdmFsaWQgdHlwZS4iLCBWOFByb3h5OjpUeXBl
RXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoVjhQcm94eTo6VHlwZUVycm9y
KTsKIAogICAgICAgICBpZiAoZnJhbWUpCiAgICAgICAgICAgICBjYWxsYmFjayA9IFY4U1FMU3Rh
dGVtZW50Q2FsbGJhY2s6OmNyZWF0ZShhcmdzWzJdLCBmcmFtZSk7CkBAIC0xMTEsNyArMTExLDcg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4U1FMVHJhbnNhY3Rpb246OgogICAgIFJlZlB0cjxT
UUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrOwogICAgIGlmIChhcmdzLkxl
bmd0aCgpID4gMyAmJiAhaXNVbmRlZmluZWRPck51bGwoYXJnc1szXSkpIHsKICAgICAgICAgaWYg
KCFhcmdzWzNdLT5Jc09iamVjdCgpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIlN0
YXRlbWVudCBlcnJvciBjYWxsYmFjayBtdXN0IGJlIG9mIHZhbGlkIHR5cGUuIiwgVjhQcm94eTo6
VHlwZUVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFY4UHJveHk6OlR5cGVF
cnJvcik7CiAKICAgICAgICAgaWYgKGZyYW1lKQogICAgICAgICAgICAgZXJyb3JDYWxsYmFjayA9
IFY4U1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjazo6Y3JlYXRlKGFyZ3NbM10sIGZyYW1lKTsKSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9t
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFRyYW5z
YWN0aW9uU3luY0N1c3RvbS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTA4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKERBVEFCQVNFKQor
CisjaW5jbHVkZSAiVjhTUUxUcmFuc2FjdGlvblN5bmMuaCIKKworI2luY2x1ZGUgIkRhdGFiYXNl
U3luYy5oIgorI2luY2x1ZGUgIlNRTFJlc3VsdFNldC5oIgorI2luY2x1ZGUgIlNRTFZhbHVlLmgi
CisjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdURjsKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhTUUxUcmFuc2FjdGlvblN5bmM6OmV4ZWN1
dGVTcWxDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFU
UygiRE9NLlNRTFRyYW5zYWN0aW9uU3luYy5leGVjdXRlU3FsKCkiKTsKKworICAgIGlmIChhcmdz
Lkxlbmd0aCgpID09IDApCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFY4UHJveHk6OlN5bnRh
eEVycm9yKTsKKworICAgIFN0cmluZyBzdGF0ZW1lbnQgPSB0b1dlYkNvcmVTdHJpbmcoYXJnc1sw
XSk7CisKKyAgICBWZWN0b3I8U1FMVmFsdWU+IHNxbFZhbHVlczsKKworICAgIGlmIChhcmdzLkxl
bmd0aCgpID4gMSAmJiAhaXNVbmRlZmluZWRPck51bGwoYXJnc1sxXSkpIHsKKyAgICAgICAgaWYg
KGFyZ3NbMV0tPklzT2JqZWN0KCkpIHsKKyAgICAgICAgICAgIHVpbnQzMl90IHNxbEFyZ3NMZW5n
dGggPSAwOworICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IHNxbEFyZ3NPYmplY3Qg
PSBhcmdzWzFdLT5Ub09iamVjdCgpOworICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
bGVuZ3RoR2V0dGVyOworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHY4OjpUcnlDYXRj
aCBibG9jazsKKyAgICAgICAgICAgICAgICBsZW5ndGhHZXR0ZXIgPSBzcWxBcmdzT2JqZWN0LT5H
ZXQodjg6OlN0cmluZzo6TmV3KCJsZW5ndGgiKSk7CisgICAgICAgICAgICAgICAgaWYgKGJsb2Nr
Lkhhc0NhdWdodCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihibG9j
ay5FeGNlcHRpb24oKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpc1VuZGVm
aW5lZE9yTnVsbChsZW5ndGhHZXR0ZXIpKQorICAgICAgICAgICAgICAgIHNxbEFyZ3NMZW5ndGgg
PSBzcWxBcmdzT2JqZWN0LT5HZXRQcm9wZXJ0eU5hbWVzKCktPkxlbmd0aCgpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHNxbEFyZ3NMZW5ndGggPSBsZW5ndGhHZXR0ZXItPlVp
bnQzMlZhbHVlKCk7CisKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwg
c3FsQXJnc0xlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpJbnRl
Z2VyPiBrZXkgPSB2ODo6SW50ZWdlcjo6TmV3KGkpOworICAgICAgICAgICAgICAgIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHZhbHVlOworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgdjg6OlRyeUNhdGNoIGJsb2NrOworICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHNxbEFy
Z3NPYmplY3QtPkdldChrZXkpOworICAgICAgICAgICAgICAgICAgICBpZiAoYmxvY2suSGFzQ2F1
Z2h0KCkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihibG9jay5F
eGNlcHRpb24oKSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKHZh
bHVlLklzRW1wdHkoKSB8fCB2YWx1ZS0+SXNOdWxsKCkpCisgICAgICAgICAgICAgICAgICAgIHNx
bFZhbHVlcy5hcHBlbmQoU1FMVmFsdWUoKSk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAodmFs
dWUtPklzTnVtYmVyKCkpCisgICAgICAgICAgICAgICAgICAgIHNxbFZhbHVlcy5hcHBlbmQoU1FM
VmFsdWUodmFsdWUtPk51bWJlclZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgICAgIHNxbFZhbHVlcy5hcHBlbmQoU1FMVmFsdWUodG9XZWJDb3JlU3RyaW5n
KHZhbHVlKSkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJl
dHVybiB0aHJvd0Vycm9yKFY4UHJveHk6OlR5cGVFcnJvcik7CisgICAgfQorCisgICAgU1FMVHJh
bnNhY3Rpb25TeW5jKiB0cmFuc2FjdGlvbiA9IFY4U1FMVHJhbnNhY3Rpb25TeW5jOjp0b05hdGl2
ZShhcmdzLkhvbGRlcigpKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIHRyYW5z
YWN0aW9uLT5leGVjdXRlU1FMKHN0YXRlbWVudCwgc3FsVmFsdWVzLCBlYyk7CisgICAgVjhQcm94
eTo6c2V0RE9NRXhjZXB0aW9uKGVjKTsKKworICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAJKHJldmlz
aW9uIDU4OTA0KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0
Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsMTAgQEAKICNpZiBFTkFCTEUo
V09SS0VSUykKICNpbmNsdWRlICJWOFdvcmtlckNvbnRleHQuaCIKIAorI2lmIEVOQUJMRShEQVRB
QkFTRSkKKyNpbmNsdWRlICJWOERhdGFiYXNlQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJWOERhdGFi
YXNlU3luYy5oIgorI2VuZGlmCiAjaW5jbHVkZSAiRE9NVGltZXIuaCIKICNpbmNsdWRlICJFeGNl
cHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiU2NoZWR1bGVkQWN0aW9uLmgiCkBAIC0xMzYsNiArMTQw
LDM4IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFdvcmtlckNvbnRleHQKICAgICByZXR1
cm4gZ2xvYmFsOwogfQogCisjaWYgRU5BQkxFKERBVEFCQVNFKQordjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4V29ya2VyQ29udGV4dDo6b3BlbkRhdGFiYXNlU3luY0NhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uVjhXb3JrZXJDb250ZXh0Lm9w
ZW5EYXRhYmFzZVN5bmMoKSIpOworICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgNCkKKyAgICAgICAg
cmV0dXJuIHRocm93RXJyb3IoVjhQcm94eTo6U3ludGF4RXJyb3IpOworCisgICAgaWYgKCFhcmdz
WzBdLT5Jc1N0cmluZygpIHx8ICFhcmdzWzFdLT5Jc1N0cmluZygpIHx8ICFhcmdzWzJdLT5Jc1N0
cmluZygpIHx8ICFhcmdzWzNdLT5Jc1VpbnQzMigpKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJv
cihWOFByb3h5OjpUeXBlRXJyb3IpOworCisgICAgV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4
dCA9IFY4V29ya2VyQ29udGV4dDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CisKKyAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKKyAgICBTdHJpbmcgbmFtZSA9IHRvV2ViQ29yZVN0cmluZyhhcmdz
WzBdKTsKKyAgICBTdHJpbmcgdmVyc2lvbiA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzFdKTsKKyAg
ICBTdHJpbmcgZGlzcGxheU5hbWUgPSB0b1dlYkNvcmVTdHJpbmcoYXJnc1syXSk7CisgICAgdW5z
aWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplID0gYXJnc1szXS0+VWludDMyVmFsdWUoKTsKKyAgICBS
ZWZQdHI8RGF0YWJhc2VDYWxsYmFjaz4gY3JlYXRpb25DYWxsYmFjazsKKyAgICBpZiAoYXJncy5M
ZW5ndGgoKSA+PSA1KSB7CisgICAgICAgIGlmIChhcmdzWzRdLT5Jc09iamVjdCgpKQorICAgICAg
ICAgICAgY3JlYXRpb25DYWxsYmFjayA9IFY4RGF0YWJhc2VDYWxsYmFjazo6Y3JlYXRlKGFyZ3Nb
NF0sIDApOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihWOFBy
b3h5OjpUeXBlRXJyb3IpOworICAgIH0KKworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXN1
bHQgPSB0b1Y4KHdvcmtlckNvbnRleHQtPm9wZW5EYXRhYmFzZVN5bmMobmFtZSwgdmVyc2lvbiwg
ZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUsIGNyZWF0aW9uQ2FsbGJhY2sucmVsZWFzZSgpLCBl
YykpOworCisgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKGVjKTsKKyAgICByZXR1cm4gcmVz
dWx0OworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShXT1JLRVJTKQpJbmRleDogV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuaWRsCShyZXZpc2lvbiA1ODkwNCkKKysr
IFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMw
LDggQEAgbW9kdWxlIHN0b3JhZ2UgewogCiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgQ29uZGl0
aW9uYWw9REFUQUJBU0UsCi0gICAgICAgIE9taXRDb25zdHJ1Y3RvcgorICAgICAgICBPbWl0Q29u
c3RydWN0b3IsCisgICAgICAgIE5vU3RhdGljVGFibGVzCiAgICAgXSBEYXRhYmFzZSB7CiAgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdmVyc2lvbjsKICAgICAgICAgW0N1c3Rv
bV0gdm9pZCBjaGFuZ2VWZXJzaW9uKGluIERPTVN0cmluZyBvbGRWZXJzaW9uLCBpbiBET01TdHJp
bmcgbmV3VmVyc2lvbiwgaW4gU1FMVHJhbnNhY3Rpb25DYWxsYmFjayBjYWxsYmFjaywgaW4gU1FM
VHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2ssIGluIFZvaWRDYWxsYmFjayBz
dWNjZXNzQ2FsbGJhY2spOwpJbmRleDogV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlQ2FsbGJhY2su
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VDYWxsYmFjay5oCShyZXZp
c2lvbiA1ODkwNCkKKysrIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZUNhbGxiYWNrLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM4LDEyICszOCwxNCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBEYXRhYmFzZTsKK2NsYXNzIERhdGFiYXNlU3luYzsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CiAKIGNsYXNzIERhdGFiYXNlQ2FsbGJhY2sgOiBwdWJsaWMgVGhyZWFkU2FmZVNoYXJl
ZDxEYXRhYmFzZUNhbGxiYWNrPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+RGF0YWJhc2VDYWxs
YmFjaygpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgRGF0YWJhc2UqKSA9IDA7CisgICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBEYXRhYmFzZVN5bmMqKSA9IDA7CiB9OwogCiB9CkluZGV4
OiBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VDYWxsYmFjay5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdG9yYWdlL0RhdGFiYXNlQ2FsbGJhY2suaWRsCShyZXZpc2lvbiA1ODkwNCkKKysrIFdl
YkNvcmUvc3RvcmFnZS9EYXRhYmFzZUNhbGxiYWNrLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzIs
NSArMzIsNiBAQCBtb2R1bGUgc3RvcmFnZSB7CiAgICAgICAgIENhbGxiYWNrCiAgICAgXSBEYXRh
YmFzZUNhbGxiYWNrIHsKICAgICAgICAgYm9vbGVhbiBoYW5kbGVFdmVudChpbiBEYXRhYmFzZSBk
YXRhYmFzZSk7CisgICAgICAgIGJvb2xlYW4gaGFuZGxlRXZlbnQoaW4gRGF0YWJhc2VTeW5jIGRh
dGFiYXNlKTsKICAgICB9OwogfQpJbmRleDogV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlU3luYy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlU3luYy5jcHAJKHJldmlz
aW9uIDU4OTA0KQorKysgV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlU3luYy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTkxLDEyICs5MSwxMiBAQCBTdHJpbmcgRGF0YWJhc2VTeW5jOjp2ZXJzaW9uKCkg
Y29uc3QKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLXZvaWQgRGF0YWJhc2VTeW5jOjpjaGFu
Z2VWZXJzaW9uKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFBhc3NSZWZQdHI8U1FMVHJh
bnNhY3Rpb25TeW5jQ2FsbGJhY2s+KQordm9pZCBEYXRhYmFzZVN5bmM6OmNoYW5nZVZlcnNpb24o
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvblN5
bmNDYWxsYmFjaz4sIEV4Y2VwdGlvbkNvZGUmKQogewogICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsKIH0KIAotdm9pZCBEYXRhYmFzZVN5bmM6
OnRyYW5zYWN0aW9uKFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+LCBib29s
KQordm9pZCBEYXRhYmFzZVN5bmM6OnRyYW5zYWN0aW9uKFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rp
b25TeW5jQ2FsbGJhY2s+LCBib29sLCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBBU1NFUlQobV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSk7CiB9CkluZGV4OiBXZWJD
b3JlL3N0b3JhZ2UvRGF0YWJhc2VTeW5jLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdl
L0RhdGFiYXNlU3luYy5oCShyZXZpc2lvbiA1ODkwNCkKKysrIFdlYkNvcmUvc3RvcmFnZS9EYXRh
YmFzZVN5bmMuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsOCArNTMsOCBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8RGF0YWJhc2VTeW5jPiBvcGVuRGF0YWJhc2VTeW5jKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0
ZWRWZXJzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRl
ZFNpemUsIFBhc3NSZWZQdHI8RGF0YWJhc2VDYWxsYmFjaz4sIEV4Y2VwdGlvbkNvZGUmKTsKICAg
ICBTdHJpbmcgdmVyc2lvbigpIGNvbnN0OwotICAgIHZvaWQgY2hhbmdlVmVyc2lvbihjb25zdCBT
dHJpbmcmIG9sZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgbmV3VmVyc2lvbiwgUGFzc1JlZlB0cjxT
UUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjaz4pOwotICAgIHZvaWQgdHJhbnNhY3Rpb24oUGFzc1Jl
ZlB0cjxTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjaz4sIGJvb2wgcmVhZE9ubHkpOworICAgIHZv
aWQgY2hhbmdlVmVyc2lvbihjb25zdCBTdHJpbmcmIG9sZFZlcnNpb24sIGNvbnN0IFN0cmluZyYg
bmV3VmVyc2lvbiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjaz4sIEV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICB2b2lkIHRyYW5zYWN0aW9uKFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rp
b25TeW5jQ2FsbGJhY2s+LCBib29sIHJlYWRPbmx5LCBFeGNlcHRpb25Db2RlJik7CiAKICAgICAv
LyBJbnRlcm5hbCBlbmdpbmUgc3VwcG9ydAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9EYXRh
YmFzZVN5bmMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVN5bmMu
aWRsCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlU3luYy5pZGwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhl
IG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgc3RvcmFnZSB7CisKKyAgICBpbnRl
cmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1EQVRBQkFTRSwKKyAgICAgICAgT21pdENvbnN0
cnVjdG9yLAorICAgICAgICBOb1N0YXRpY1RhYmxlcworICAgIF0gRGF0YWJhc2VTeW5jIHsKKyAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB2ZXJzaW9uOworICAgICAgICBbQ3Vz
dG9tXSB2b2lkIGNoYW5nZVZlcnNpb24oaW4gRE9NU3RyaW5nIG9sZFZlcnNpb24sIGluIERPTVN0
cmluZyBuZXdWZXJzaW9uLCBpbiBTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjayBjYWxsYmFjayk7
CisgICAgICAgIFtDdXN0b21dIHZvaWQgdHJhbnNhY3Rpb24oaW4gU1FMVHJhbnNhY3Rpb25TeW5j
Q2FsbGJhY2sgY2FsbGJhY2spOworICAgICAgICBbQ3VzdG9tXSB2b2lkIHJlYWRUcmFuc2FjdGlv
bihpbiBTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjayBjYWxsYmFjayk7CisgICAgfTsKKworfQpJ
bmRleDogV2ViQ29yZS9zdG9yYWdlL1NRTEVycm9yLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N0b3JhZ2UvU1FMRXJyb3IuaWRsCShyZXZpc2lvbiA1ODkwNCkKKysrIFdlYkNvcmUvc3RvcmFn
ZS9TUUxFcnJvci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDggQEAgbW9kdWxlIHN0
b3JhZ2UgewogCiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgQ29uZGl0aW9uYWw9REFUQUJBU0Us
Ci0gICAgICAgIE9taXRDb25zdHJ1Y3RvcgorICAgICAgICBPbWl0Q29uc3RydWN0b3IsCisgICAg
ICAgIE5vU3RhdGljVGFibGVzCiAgICAgXSBTUUxFcnJvciB7CiAgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGNvZGU7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
T01TdHJpbmcgbWVzc2FnZTsKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9TUUxSZXN1bHRTZXQuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TUUxSZXN1bHRTZXQuaWRsCShyZXZpc2lv
biA1ODkwNCkKKysrIFdlYkNvcmUvc3RvcmFnZS9TUUxSZXN1bHRTZXQuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCw3ICszMCw4IEBAIG1vZHVsZSBzdG9yYWdlIHsKIAogICAgIGludGVyZmFjZSBb
CiAgICAgICAgIENvbmRpdGlvbmFsPURBVEFCQVNFLAotICAgICAgICBPbWl0Q29uc3RydWN0b3IK
KyAgICAgICAgT21pdENvbnN0cnVjdG9yLAorICAgICAgICBOb1N0YXRpY1RhYmxlcwogICAgIF0g
U1FMUmVzdWx0U2V0IHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFNRTFJlc3VsdFNldFJv
d0xpc3Qgcm93czsKIApJbmRleDogV2ViQ29yZS9zdG9yYWdlL1NRTFJlc3VsdFNldFJvd0xpc3Qu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TUUxSZXN1bHRTZXRSb3dMaXN0Lmlk
bAkocmV2aXNpb24gNTg5MDQpCisrKyBXZWJDb3JlL3N0b3JhZ2UvU1FMUmVzdWx0U2V0Um93TGlz
dC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDggQEAgbW9kdWxlIHN0b3JhZ2Ugewog
CiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgQ29uZGl0aW9uYWw9REFUQUJBU0UsCi0gICAgICAg
IE9taXRDb25zdHJ1Y3RvcgorICAgICAgICBPbWl0Q29uc3RydWN0b3IsCisgICAgICAgIE5vU3Rh
dGljVGFibGVzCiAgICAgXSBTUUxSZXN1bHRTZXRSb3dMaXN0IHsKICAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwogICAgICAgICBbQ3VzdG9tXSBET01PYmpl
Y3QgaXRlbShpbiB1bnNpZ25lZCBsb25nIGluZGV4KTsKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9T
UUxUcmFuc2FjdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5z
YWN0aW9uLmlkbAkocmV2aXNpb24gNTg5MDQpCisrKyBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNh
Y3Rpb24uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw4IEBAIG1vZHVsZSBzdG9yYWdl
IHsKIAogICAgIGludGVyZmFjZSBbCiAgICAgICAgIENvbmRpdGlvbmFsPURBVEFCQVNFLAotICAg
ICAgICBPbWl0Q29uc3RydWN0b3IKKyAgICAgICAgT21pdENvbnN0cnVjdG9yLAorICAgICAgICBO
b1N0YXRpY1RhYmxlcwogICAgIF0gU1FMVHJhbnNhY3Rpb24gewogICAgICAgICBbQ3VzdG9tXSB2
b2lkIGV4ZWN1dGVTcWwoaW4gRE9NU3RyaW5nIHNxbFN0YXRlbWVudCwgaW4gT2JqZWN0QXJyYXkg
YXJndW1lbnRzLCBpbiBTUUxTdGF0ZW1lbnRDYWxsYmFjayBjYWxsYmFjaywgaW4gU1FMU3RhdGVt
ZW50RXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKTsKICAgICB9OwpJbmRleDogV2ViQ29yZS9z
dG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luYy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9y
YWdlL1NRTFRyYW5zYWN0aW9uU3luYy5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3N0b3Jh
Z2UvU1FMVHJhbnNhY3Rpb25TeW5jLmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
CisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
K21vZHVsZSBzdG9yYWdlIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFs
PURBVEFCQVNFLAorICAgICAgICBPbWl0Q29uc3RydWN0b3IsCisgICAgICAgIE5vU3RhdGljVGFi
bGVzCisgICAgXSBTUUxUcmFuc2FjdGlvblN5bmMgeworICAgICAgICBbQ3VzdG9tXSBTUUxSZXN1
bHRTZXQgZXhlY3V0ZVNxbChpbiBET01TdHJpbmcgc3FsU3RhdGVtZW50LCBpbiBPYmplY3RBcnJh
eSBhcmd1bWVudHMpOworICAgIH07Cit9CkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNh
Y3Rpb25TeW5jQ2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJh
bnNhY3Rpb25TeW5jQ2FsbGJhY2suaAkocmV2aXNpb24gNTg5MDQpCisrKyBXZWJDb3JlL3N0b3Jh
Z2UvU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyAr
NDIsNyBAQCBjbGFzcyBTUUxUcmFuc2FjdGlvblN5bmM7CiBjbGFzcyBTUUxUcmFuc2FjdGlvblN5
bmNDYWxsYmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNr
PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2soKSB7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFNRTFRyYW5zYWN0aW9uU3luYyosIGJvb2wmIHJhaXNlZEV4Y2VwdGlvbikgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgU1FMVHJhbnNh
Y3Rpb25TeW5jKikgPSAwOwogfTsKIAogfQpJbmRleDogV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5z
YWN0aW9uU3luY0NhbGxiYWNrLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU1FM
VHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaWRsCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9zdG9y
YWdlL1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBp
dHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKK21vZHVsZSBzdG9yYWdlIHsKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25k
aXRpb25hbD1EQVRBQkFTRSwKKyAgICAgICAgQ2FsbGJhY2sKKyAgICBdIFNRTFRyYW5zYWN0aW9u
U3luY0NhbGxiYWNrIHsKKyAgICAgICAgYm9vbGVhbiBoYW5kbGVFdmVudChpbiBTUUxUcmFuc2Fj
dGlvblN5bmMgdHJhbnNhY3Rpb24pOworICAgIH07Cit9CkluZGV4OiBXZWJDb3JlL3dvcmtlcnMv
V29ya2VyQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93b3JrZXJzL1dvcmtlckNv
bnRleHQuY3BwCShyZXZpc2lvbiA1ODkwNCkKKysrIFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250
ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgxLDYgKzI4MSwyMCBAQCBQYXNzUmVmUHRyPERh
dGFiYXNlPiBXb3JrZXJDb250ZXh0OjpvcGVuCiAKICAgICByZXR1cm4gRGF0YWJhc2U6Om9wZW5E
YXRhYmFzZSh0aGlzLCBuYW1lLCB2ZXJzaW9uLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSwg
Y3JlYXRpb25DYWxsYmFjaywgZWMpOwogfQorCitQYXNzUmVmUHRyPERhdGFiYXNlU3luYz4gV29y
a2VyQ29udGV4dDo6b3BlbkRhdGFiYXNlU3luYyhjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgdmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBl
c3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+IGNyZWF0aW9uQ2FsbGJh
Y2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghc2VjdXJpdHlPcmlnaW4oKS0+Y2Fu
QWNjZXNzRGF0YWJhc2UoKSkgeworICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQorCisgICAgQVNTRVJUKERhdGFiYXNlU3luYzo6aXNBdmFpbGFibGUo
KSk7CisgICAgaWYgKCFEYXRhYmFzZVN5bmM6OmlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVy
biAwOworCisgICAgcmV0dXJuIERhdGFiYXNlU3luYzo6b3BlbkRhdGFiYXNlU3luYyh0aGlzLCBu
YW1lLCB2ZXJzaW9uLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSwgY3JlYXRpb25DYWxsYmFj
aywgZWMpOworfQogI2VuZGlmCiAKIGJvb2wgV29ya2VyQ29udGV4dDo6aXNDb250ZXh0VGhyZWFk
KCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAkocmV2aXNpb24gNTg5MDQpCisr
KyBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2
ICszMSw3IEBACiAKICNpbmNsdWRlICJBdG9taWNTdHJpbmdIYXNoLmgiCiAjaW5jbHVkZSAiRGF0
YWJhc2UuaCIKKyNpbmNsdWRlICJEYXRhYmFzZVN5bmMuaCIKICNpbmNsdWRlICJEYXRhYmFzZUNh
bGxiYWNrLmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkV2ZW50TmFt
ZXMuaCIKQEAgLTEwNSw2ICsxMDYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxF
KERBVEFCQVNFKQogICAgICAgICAvLyBIVE1MIDUgY2xpZW50LXNpZGUgZGF0YWJhc2UKICAgICAg
ICAgUGFzc1JlZlB0cjxEYXRhYmFzZT4gb3BlbkRhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25l
ZCBsb25nIGVzdGltYXRlZFNpemUsIFBhc3NSZWZQdHI8RGF0YWJhc2VDYWxsYmFjaz4gY3JlYXRp
b25DYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICBQYXNzUmVmUHRyPERhdGFiYXNl
U3luYz4gb3BlbkRhdGFiYXNlU3luYyhjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
dmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0
ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+IGNyZWF0aW9uQ2FsbGJhY2ssIEV4
Y2VwdGlvbkNvZGUmKTsKKwogICAgICAgICAvLyBOb3QgaW1wbGVtZW50ZWQgeWV0LgogICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNEYXRhYmFzZVJlYWRPbmx5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICAgICAgICAgLy8gTm90IGltcGxlbWVudGVkIHlldC4KSW5kZXg6IFdlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJDb250ZXh0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dvcmtlcnMvV29ya2Vy
Q29udGV4dC5pZGwJKHJldmlzaW9uIDU4OTA0KQorKysgV2ViQ29yZS93b3JrZXJzL1dvcmtlckNv
bnRleHQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00OSw4ICs0OSwxMSBAQCBtb2R1bGUgdGhyZWFk
cyB7CiAgICAgICAgIC8vIFdvcmtlclV0aWxzCiAgICAgICAgIFtDdXN0b21dIHZvaWQgaW1wb3J0
U2NyaXB0cygvKltWYXJpYWRpY10gaW4gRE9NU3RyaW5nIHVybHMgKi8pOwogICAgICAgICAgICAg
ICAgICBhdHRyaWJ1dGUgW1JlcGxhY2VhYmxlXSBXb3JrZXJOYXZpZ2F0b3IgbmF2aWdhdG9yOwor
CisjaWYgZGVmaW5lZChFTkFCTEVfREFUQUJBU0UpICYmIEVOQUJMRV9EQVRBQkFTRQogICAgICAg
ICAvLyBEYXRhYmFzZSBvcGVuRGF0YWJhc2UoaW4gRE9NU3RyaW5nIG5hbWUsIGluIERPTVN0cmlu
ZyB2ZXJzaW9uLCBpbiBET01TdHJpbmcgZGlzcGxheU5hbWUsIGluIHVuc2lnbmVkIGxvbmcgZXN0
aW1hdGVkU2l6ZSk7Ci0gICAgICAgIC8vIERhdGFiYXNlU3luYyBvcGVuRGF0YWJhc2VTeW5jKGlu
IERPTVN0cmluZyBuYW1lLCBpbiBET01TdHJpbmcgdmVyc2lvbiwgaW4gRE9NU3RyaW5nIGRpc3Bs
YXlOYW1lLCBpbiB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpOworICAgICAgICBbRW5hYmxl
QXRSdW50aW1lLCBDdXN0b21dIERhdGFiYXNlU3luYyBvcGVuRGF0YWJhc2VTeW5jKGluIERPTVN0
cmluZyBuYW1lLCBpbiBET01TdHJpbmcgdmVyc2lvbiwgaW4gRE9NU3RyaW5nIGRpc3BsYXlOYW1l
LCBpbiB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUsIGluIERhdGFiYXNlQ2FsbGJhY2sgY3Jl
YXRpb25DYWxsYmFjayk7CisjZW5kaWYKIAogICAgICAgICAvLyBUaW1lcnMKICAgICAgICAgW0N1
c3RvbV0gbG9uZyBzZXRUaW1lb3V0KGluIFRpbWVvdXRIYW5kbGVyIGhhbmRsZXIsIGluIGxvbmcg
dGltZW91dCk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1ODkwNCkKKysrIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDEwLTA1LTA1ICBEdW1pdHJ1
IERhbmlsaXVjICA8ZHVtaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdCB0aGF0IG9wZW5EYXRhYmFzZVN5bmMoKSB0aHJv
d3MgYW4gZXJyb3Igd2hlbiBhbiBhcmd1bWVudCBpcyBpbnZhbGlkLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQ5OTQKKworICAgICAgICAqIGZhc3Qv
d29ya2Vycy9zdG9yYWdlOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvc3RvcmFnZS9v
cGVuLWRhdGFiYXNlLXN5bmMtaW5wdXRzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC93b3JrZXJzL3N0b3JhZ2Uvb3Blbi1kYXRhYmFzZS1zeW5jLWlucHV0cy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvc3RvcmFnZS9yZXNvdXJjZXM6IEFkZGVkLgorICAg
ICAgICAqIGZhc3Qvd29ya2Vycy9zdG9yYWdlL3Jlc291cmNlcy9vcGVuLWRhdGFiYXNlLXN5bmMt
aW5wdXRzLmpzOiBBZGRlZC4KKyAgICAgICAgKG5vdEFTdHJpbmcudG9TdHJpbmcpOgorICAgICAg
ICAqIGZhc3Qvd29ya2Vycy9zdG9yYWdlL3Jlc291cmNlcy90ZXN0LWlucHV0cy1jb21tb24uanM6
IEFkZGVkLgorICAgICAgICAobG9nKToKKyAgICAgICAgKGZpbmlzaFRlc3QpOgorICAgICAgICAo
cnVuVGVzdC53b3JrZXIub25tZXNzYWdlKToKKyAgICAgICAgKHJ1blRlc3QpOgorCiAyMDEwLTA1
LTA2ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgR2VvZmZyZXkgR2FyZW4uCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc3RvcmFn
ZS9vcGVuLWRhdGFiYXNlLXN5bmMtaW5wdXRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc3RvcmFnZS9vcGVuLWRhdGFiYXNlLXN5bmMtaW5wdXRz
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9z
dG9yYWdlL29wZW4tZGF0YWJhc2Utc3luYy1pbnB1dHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDggQEAKK1RoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgb3BlbkRhdGFiYXNl
U3luYygpIGFjY2VwdHMgb25seSB2YWxpZCBwYXJhbWV0ZXJzLgorUEFTUzogU1lOVEFYX0VSUjog
RE9NIEV4Y2VwdGlvbiAxMgorUEFTUzogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMgorUEFT
UzogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcKK1BBU1M6IFRZUEVfTUlTTUFU
Q0hfRVJSOiBET00gRXhjZXB0aW9uIDE3CitQQVNTOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4
Y2VwdGlvbiAxNworUEFTUzogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcKKwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3N0b3JhZ2Uvb3Blbi1kYXRhYmFzZS1zeW5j
LWlucHV0cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zdG9y
YWdlL29wZW4tZGF0YWJhc2Utc3luYy1pbnB1dHMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3Qvd29ya2Vycy9zdG9yYWdlL29wZW4tZGF0YWJhc2Utc3luYy1pbnB1dHMuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMiBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90ZXN0LWlucHV0cy1jb21tb24uanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoJ3Jlc291cmNlcy9vcGVu
LWRhdGFiYXNlLXN5bmMtaW5wdXRzLmpzJykiPgorVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBv
cGVuRGF0YWJhc2VTeW5jKCkgYWNjZXB0cyBvbmx5IHZhbGlkIHBhcmFtZXRlcnMuCis8cHJlIGlk
PSJjb25zb2xlIj4KKzwvcHJlPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC93b3JrZXJzL3N0b3JhZ2UvcmVzb3VyY2VzL29wZW4tZGF0YWJhc2Utc3luYy1pbnB1dHMu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3N0b3JhZ2UvcmVzb3Vy
Y2VzL29wZW4tZGF0YWJhc2Utc3luYy1pbnB1dHMuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L3dvcmtlcnMvc3RvcmFnZS9yZXNvdXJjZXMvb3Blbi1kYXRhYmFzZS1zeW5jLWlu
cHV0cy5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NCBAQAordmFyIGRiOworCit2YXIgbm90
QVN0cmluZyA9IHsKKyAgICB0b1N0cmluZzogZnVuY3Rpb24oKSB7IHRocm93IDE7IH0KK307CisK
K3RyeSB7CisgICAgZGIgPSBvcGVuRGF0YWJhc2VTeW5jKCk7CisgICAgcG9zdE1lc3NhZ2UoIkZB
SUw6IGNhbGxpbmcgb3BlbkRhdGFiYXNlU3luYygpIHdpdGhvdXQgYW55IGFyZ3VtZW50IHNob3Vs
ZCB0aHJvdyBhbiBleGNlcHRpb24uIik7Cit9IGNhdGNoIChlcnIpIHsKKyAgICBwb3N0TWVzc2Fn
ZSgiUEFTUzogIiArIGVyci5tZXNzYWdlKTsKK30KKwordHJ5IHsKKyAgICBkYiA9IG9wZW5EYXRh
YmFzZVN5bmMoIkRCTmFtZSIsICJEQlZlcnNpb24iKTsKKyAgICBwb3N0TWVzc2FnZSgiRkFJTDog
Y2FsbGluZyBvcGVuRGF0YWJhc2VTeW5jKCkgd2l0aCBmZXdlciB0aGFuIGZvdXIgYXJndW1lbnRz
IHNob3VsZCB0aHJvdyBhbiBleGNlcHRpb24uIik7Cit9IGNhdGNoIChlcnIpIHsKKyAgICBwb3N0
TWVzc2FnZSgiUEFTUzogIiArIGVyci5tZXNzYWdlKTsKK30KKwordHJ5IHsKKyAgICBkYiA9IG9w
ZW5EYXRhYmFzZVN5bmMobm90QVN0cmluZywgIkRCVmVyc2lvbiIsICJEQkRlc2NyaXB0aW9uIiwg
MTAyNCk7CisgICAgcG9zdE1lc3NhZ2UoIkZBSUw6IHRoZSBmaXJzdCBhcmd1bWVudCB0byBvcGVu
RGF0YWJhc2VTeW5jKCkgbXVzdCBiZSBhIHN0cmluZy4iKTsKK30gY2F0Y2ggKGVycikgeworICAg
IHBvc3RNZXNzYWdlKCJQQVNTOiAiICsgZXJyLm1lc3NhZ2UpOworfQorCit0cnkgeworICAgIGRi
ID0gb3BlbkRhdGFiYXNlU3luYygiREJOYW1lIiwgbm90QVN0cmluZywgIkRCRGVzY3JpcHRpb24i
LCAxMDI0KTsKKyAgICBwb3N0TWVzc2FnZSgiRkFJTDogdGhlIHNlY29uZCBhcmd1bWVudCB0byBv
cGVuRGF0YWJhc2VTeW5jKCkgbXVzdCBiZSBhIHN0cmluZy4iKTsKK30gY2F0Y2ggKGVycikgewor
ICAgIHBvc3RNZXNzYWdlKCJQQVNTOiAiICsgZXJyLm1lc3NhZ2UpOworfQorCit0cnkgeworICAg
IGRiID0gb3BlbkRhdGFiYXNlU3luYygiREJOYW1lIiwgIkRCVmVyc2lvbiIsIG5vdEFTdHJpbmcs
IDEwMjQpOworICAgIHBvc3RNZXNzYWdlKCJGQUlMOiB0aGUgZm91cnRoIGFyZ3VtZW50IHRvIG9w
ZW5EYXRhYmFzZVN5bmMoKSBtdXN0IGJlIGFuIGludGVnZXIuIik7Cit9IGNhdGNoIChlcnIpIHsK
KyAgICBwb3N0TWVzc2FnZSgiUEFTUzogIiArIGVyci5tZXNzYWdlKTsKK30KKwordHJ5IHsKKyAg
ICBkYiA9IG9wZW5EYXRhYmFzZVN5bmMoIkRCTmFtZSIsICJEQlZlcnNpb24iLCAiREJEZXNjcmlw
dGlvbiIsIDEwMjQsIDApOworICAgIHBvc3RNZXNzYWdlKCJGQUlMOiB0aGUgZmlmdGggYXJndW1l
bnQgdG8gb3BlbkRhdGFiYXNlU3luYygpIG11c3QgYmUgYW4gb2JqZWN0LCBpZiBwcmVzZW50LiIp
OworfSBjYXRjaCAoZXJyKSB7CisgICAgcG9zdE1lc3NhZ2UoIlBBU1M6ICIgKyBlcnIubWVzc2Fn
ZSk7Cit9CisKKy8vIEZJWE1FOiBVbmNvbW1lbnQgdGhlc2UgdGVzdHMgd2hlbiB0aGUgc3luYyBE
QiBBUEkgaXMgaW1wbGVtZW50ZWQuCisvL3RyeSB7CisvLyAgICBkYiA9IG9wZW5EYXRhYmFzZVN5
bmMoIkRCTmFtZSIsICJEQlZlcnNpb24iLCAiREJEZXNjcmlwdGlvbiIsIDEwMjQpOworLy8gICAg
cG9zdE1lc3NhZ2UoIlBBU1M6IG9wZW5EYXRhYmFzZVN5bmMoKSBzdWNjZWVkZWQuIik7CisvL30g
Y2F0Y2ggKGVycikgeworLy8gICAgcG9zdE1lc3NhZ2UoIkZBSUw6ICIgKyBlcnIubWVzc2FnZSk7
CisvL30KKy8vCisvL3RyeSB7CisvLyAgICBkYiA9IG9wZW5EYXRhYmFzZVN5bmMoIkRCTmFtZSIs
ICJEQlZlcnNpb24iLCAiREJEZXNjcmlwdGlvbiIsIDEwMjQsIGZ1bmN0aW9uKGRiKSB7IH0pOwor
Ly8gICAgcG9zdE1lc3NhZ2UoIlBBU1M6IGNhbGxpbmcgb3BlbkRhdGFiYXNlU3luYygpIHdpdGgg
YSBjcmVhdGlvbiBjYWxsYmFjayBzdWNjZWVkZWQuIik7CisvL30gY2F0Y2ggKGVycikgeworLy8g
ICAgcG9zdE1lc3NhZ2UoIkZBSUw6ICIgKyBlcnIubWVzc2FnZSk7CisvL30KKworcG9zdE1lc3Nh
Z2UoImRvbmUiKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zdG9yYWdlL3Jlc291
cmNlcy90ZXN0LWlucHV0cy1jb21tb24uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC93b3JrZXJzL3N0b3JhZ2UvcmVzb3VyY2VzL3Rlc3QtaW5wdXRzLWNvbW1vbi5qcwkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zdG9yYWdlL3Jlc291cmNlcy90ZXN0
LWlucHV0cy1jb21tb24uanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzAgQEAKK2Z1bmN0aW9u
IGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIiku
aW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7Cit9CisKK2Z1bmN0aW9uIGZpbmlzaFRlc3Qo
KQoreworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCh3b3Jr
ZXJKU0ZpbGUpCit7CisgICAgaWYgKCF3b3JrZXJKU0ZpbGUpIHsKKyAgICAgICAgbG9nKCJGQUlM
OiBubyBKUyBmaWxlIHNwZWNpZmllZCBmb3IgdGhlIHdvcmtlci4iKTsKKyAgICB9CisKKyAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworICAgIH0KKworICAgIHZhciB3b3JrZXIgPSBuZXcgV29ya2VyKHdvcmtlckpT
RmlsZSk7CisgICAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAg
IGlmIChldmVudC5kYXRhID09ICJkb25lIikKKyAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgbG9nKGV2ZW50LmRhdGEpOworICAgIH0KK30K
</data>
<flag name="review"
          id="39445"
          type_id="1"
          status="-"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="39446"
          type_id="3"
          status="-"
          setter="dumi"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55358</attachid>
            <date>2010-05-07 04:05:25 -0700</date>
            <delta_ts>2010-05-07 15:58:19 -0700</delta_ts>
            <desc>patch #2: IDL files + JSC and V8 bindings</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>89917</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1ODk0MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzUgQEAKKzIwMTAtMDUtMDUgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRpbmcgdGhlIEpTQyBhbmQgVjggYmluZGluZ3MgYW5kIHRoZSBJREwgZmlsZXMgZm9yIHRo
ZSBzeW5jIFdlYlNRTERhdGFiYXNlcyBBUEkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zNDk5NAorCisgICAgICAgIFRlc3Q6IGZhc3Qvd29ya2Vycy9z
dG9yYWdlL29wZW4tZGF0YWJhc2Utc3luYy1pbnB1dHMuaHRtbAorCisgICAgICAgICogRGVyaXZl
ZFNvdXJjZXMuY3BwOgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICog
R05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNv
cmUucHJpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTRE9NV2luZG93OjpvcGVuRGF0YWJhc2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RGF0YWJhc2VDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNEYXRhYmFzZTo6Y2hhbmdl
VmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVUcmFuc2FjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpKU0RhdGFiYXNlOjp0cmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpK
U0RhdGFiYXNlOjpyZWFkVHJhbnNhY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGF0
YWJhc2VTeW5jQ3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0RhdGFiYXNl
U3luYzo6Y2hhbmdlVmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVUcmFuc2FjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpKU0RhdGFiYXNlU3luYzo6dHJhbnNhY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SlNEYXRhYmFzZVN5bmM6OnJlYWRUcmFuc2FjdGlvbik6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU1NRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3FsKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU1NRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SlNTUUxUcmFuc2FjdGlvblN5bmM6OmV4ZWN1dGVTcWwpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtl
ckNvbnRleHQ6Om9wZW5EYXRhYmFzZVN5bmMpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6
b3BlbkRhdGFiYXNlQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERh
dGFiYXNlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RGF0YWJhc2U6OmNoYW5nZVZl
cnNpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVUcmFuc2FjdGlvbik6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YWJhc2VTeW5jQ3VzdG9tLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpWOERhdGFiYXNlU3luYzo6Y2hhbmdlVmVyc2lvbkNhbGxi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4RGF0YWJhc2VTeW5jOjp0cmFuc2FjdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4RGF0YWJhc2VTeW5jOjpyZWFkVHJhbnNhY3Rpb25DYWxsYmFjayk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VjhTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbENhbGxiYWNrKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlY4U1FMVHJhbnNhY3Rpb25TeW5jOjpleGVjdXRlU3Fs
Q2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhXb3JrZXJDb250ZXh0OjpvcGVuRGF0YWJh
c2VTeW5jQ2FsbGJhY2spOgorICAgICAgICAqIHN0b3JhZ2UvRGF0YWJhc2UuaWRsOgorICAgICAg
ICAqIHN0b3JhZ2UvRGF0YWJhc2VDYWxsYmFjay5oOgorICAgICAgICAqIHN0b3JhZ2UvRGF0YWJh
c2VDYWxsYmFjay5pZGw6CisgICAgICAgICogc3RvcmFnZS9EYXRhYmFzZVN5bmMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2VTeW5jOjpjaGFuZ2VWZXJzaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlU3luYzo6dHJhbnNhY3Rpb24pOgorICAgICAgICAqIHN0b3JhZ2UvRGF0
YWJhc2VTeW5jLmg6CisgICAgICAgICogc3RvcmFnZS9EYXRhYmFzZVN5bmMuaWRsOiBBZGRlZC4K
KyAgICAgICAgKiBzdG9yYWdlL1NRTEVycm9yLmlkbDoKKyAgICAgICAgKiBzdG9yYWdlL1NRTFJl
c3VsdFNldC5pZGw6CisgICAgICAgICogc3RvcmFnZS9TUUxSZXN1bHRTZXRSb3dMaXN0LmlkbDoK
KyAgICAgICAgKiBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmlkbDoKKyAgICAgICAgKiBzdG9yYWdl
L1NRTFRyYW5zYWN0aW9uU3luYy5pZGw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvU1FMVHJh
bnNhY3Rpb25TeW5jQ2FsbGJhY2suaDoKKyAgICAgICAgKiBzdG9yYWdlL1NRTFRyYW5zYWN0aW9u
U3luY0NhbGxiYWNrLmlkbDogQWRkZWQuCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6Om9wZW5EYXRhYmFzZVN5bmMp
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5oOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyQ29udGV4dC5pZGw6CisKIDIwMTAtMDUtMDYgIEZ1bWl0b3NoaSBVa2FpICA8dWthaUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4K
SW5kZXg6IFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
RGVyaXZlZFNvdXJjZXMuY3BwCShyZXZpc2lvbiA1ODk0MSkKKysrIFdlYkNvcmUvRGVyaXZlZFNv
dXJjZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSw3IEBACiAjaW5jbHVkZSAiSlND
dXN0b21FdmVudC5jcHAiCiAjaW5jbHVkZSAiSlNEYXRhYmFzZS5jcHAiCiAjaW5jbHVkZSAiSlNE
YXRhYmFzZUNhbGxiYWNrLmNwcCIKKyNpbmNsdWRlICJKU0RhdGFiYXNlU3luYy5jcHAiCiAjaW5j
bHVkZSAiSlNEYXRhR3JpZENvbHVtbi5jcHAiCiAjaW5jbHVkZSAiSlNEYXRhR3JpZENvbHVtbkxp
c3QuY3BwIgogI2luY2x1ZGUgIkpTRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAiCkBAIC0yMTAs
NiArMjExLDggQEAKICNpbmNsdWRlICJKU1NRTFRyYW5zYWN0aW9uLmNwcCIKICNpbmNsdWRlICJK
U1NRTFRyYW5zYWN0aW9uQ2FsbGJhY2suY3BwIgogI2luY2x1ZGUgIkpTU1FMVHJhbnNhY3Rpb25F
cnJvckNhbGxiYWNrLmNwcCIKKyNpbmNsdWRlICJKU1NRTFRyYW5zYWN0aW9uU3luYy5jcHAiCisj
aW5jbHVkZSAiSlNTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5jcHAiCiAjaW5jbHVkZSAiSlNT
dG9yYWdlLmNwcCIKICNpbmNsdWRlICJKU1N0b3JhZ2VFdmVudC5jcHAiCiAjaW5jbHVkZSAiSlNT
dHlsZU1lZGlhLmNwcCIKSW5kZXg6IFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDU4OTQxKQorKysg
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNiArMTE2
LDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgRE9NV2luZG93IFwKICAgICBEYXRhYmFzZSBcCiAg
ICAgRGF0YWJhc2VDYWxsYmFjayBcCisgICAgRGF0YWJhc2VTeW5jIFwKICAgICBEb2N1bWVudCBc
CiAgICAgRG9jdW1lbnRGcmFnbWVudCBcCiAgICAgRG9jdW1lbnRUeXBlIFwKQEAgLTI1NCw2ICsy
NTUsOCBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBTUUxUcmFuc2FjdGlvbiBcCiAgICAgU1FMVHJh
bnNhY3Rpb25DYWxsYmFjayBcCiAgICAgU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrIFwKKyAg
ICBTUUxUcmFuc2FjdGlvblN5bmMgXAorICAgIFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrIFwK
ICAgICBTdG9yYWdlIFwKICAgICBTdG9yYWdlRXZlbnQgXAogICAgIFNWR0FFbGVtZW50IFwKSW5k
ZXg6IFdlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9HTlVtYWtl
ZmlsZS5hbQkocmV2aXNpb24gNTg5NDEpCisrKyBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMzA3LDYgKzIzMDcsNyBAQCBGRUFUVVJFX0RFRklORVMgKz0gRU5BQkxF
X0RBVEFCQVNFPTEKIElETF9CSU5ESU5HUyArPSBcCiAJV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNl
LmlkbCBcCiAJV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlQ2FsbGJhY2suaWRsIFwKKwlXZWJDb3Jl
L3N0b3JhZ2UvRGF0YWJhc2VTeW5jLmlkbCBcCiAJV2ViQ29yZS9zdG9yYWdlL1NRTEVycm9yLmlk
bCBcCiAJV2ViQ29yZS9zdG9yYWdlL1NRTFJlc3VsdFNldC5pZGwgXAogCVdlYkNvcmUvc3RvcmFn
ZS9TUUxSZXN1bHRTZXRSb3dMaXN0LmlkbCBcCkBAIC0yMzE0LDcgKzIzMTUsOSBAQCBJRExfQklO
RElOR1MgKz0gXAogCVdlYkNvcmUvc3RvcmFnZS9TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmlk
bCBcCiAJV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmlkbCBcCiAJV2ViQ29yZS9zdG9y
YWdlL1NRTFRyYW5zYWN0aW9uQ2FsbGJhY2suaWRsIFwKLQlXZWJDb3JlL3N0b3JhZ2UvU1FMVHJh
bnNhY3Rpb25FcnJvckNhbGxiYWNrLmlkbAorCVdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlv
bkVycm9yQ2FsbGJhY2suaWRsIFwKKwlXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5j
LmlkbCBcCisJV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmlkbAog
CiB3ZWJjb3JlX2NwcGZsYWdzICs9IFwKIAktREVOQUJMRV9EQVRBQkFTRT0xCkBAIC0yMzIyLDgg
KzIzMjUsMTAgQEAgd2ViY29yZV9jcHBmbGFncyArPSBcCiB3ZWJjb3JlX3NvdXJjZXMgKz0gXAog
CVdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNw
cCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFiYXNlQ3VzdG9tLmNwcCBcCisJV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RhdGFiYXNlU3luY0N1c3RvbS5jcHAgXAogCVdlYkNvcmUvYmluZGlu
Z3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1NRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcCBcCisJV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1NRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vc3FsL1NR
TFZhbHVlLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMVmFsdWUuaCBcCiAJV2ViQ29y
ZS9wbGF0Zm9ybS9zcWwvU1FMaXRlQXV0aG9yaXplci5jcHAgXApJbmRleDogV2ViQ29yZS9XZWJD
b3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDU4
OTQxKQorKysgV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTIxOSw2ICsy
MTksNyBAQAogICAgICAgICAgICAgJ3BsdWdpbnMvUGx1Z2luQXJyYXkuaWRsJywKICAgICAgICAg
ICAgICdzdG9yYWdlL0RhdGFiYXNlLmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9EYXRhYmFz
ZUNhbGxiYWNrLmlkbCcsCisgICAgICAgICAgICAnc3RvcmFnZS9EYXRhYmFzZVN5bmMuaWRsJywK
ICAgICAgICAgICAgICdzdG9yYWdlL0lEQkRhdGFiYXNlRXJyb3IuaWRsJywKICAgICAgICAgICAg
ICdzdG9yYWdlL0lEQkRhdGFiYXNlRXhjZXB0aW9uLmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFn
ZS9JREJEYXRhYmFzZVJlcXVlc3QuaWRsJywKQEAgLTIzMSw2ICsyMzIsOCBAQAogICAgICAgICAg
ICAgJ3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uaWRsJywKICAgICAgICAgICAgICdzdG9yYWdlL1NR
TFRyYW5zYWN0aW9uQ2FsbGJhY2suaWRsJywKICAgICAgICAgICAgICdzdG9yYWdlL1NRTFRyYW5z
YWN0aW9uRXJyb3JDYWxsYmFjay5pZGwnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvU1FMVHJhbnNh
Y3Rpb25TeW5jLmlkbCcsCisgICAgICAgICAgICAnc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmND
YWxsYmFjay5pZGwnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvU3RvcmFnZS5pZGwnLAogICAgICAg
ICAgICAgJ3N0b3JhZ2UvU3RvcmFnZUV2ZW50LmlkbCcsCiAgICAgICAgICAgICAnd2Vic29ja2V0
cy9XZWJTb2NrZXQuaWRsJywKQEAgLTUwNyw2ICs1MTAsNyBAQAogICAgICAgICAgICAgJ2JpbmRp
bmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcCcsCiAgICAgICAgICAgICAnYmluZGlu
Z3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
anMvSlNEYXRhYmFzZUN1c3RvbS5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRGF0
YWJhc2VTeW5jQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNEYXRhR3Jp
ZENvbHVtbkxpc3RDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RhdGFH
cmlkRGF0YVNvdXJjZS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRGF0YUdyaWRE
YXRhU291cmNlLmgnLApAQCAtNjAxLDYgKzYwNSw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3Mv
anMvSlNTY3JpcHRQcm9maWxlTm9kZUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L2pzL0pTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5n
cy9qcy9KU1NRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pT
U3RvcmFnZUN1c3RvbS5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRD
dXN0b20uY3BwJywKQEAgLTY5Miw2ICs2OTcsNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOFdlYkdMVW5zaWduZWRTaG9ydEFycmF5Q3VzdG9tLmNwcCcsCiAgICAgICAgICAg
ICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNw
cCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250
ZXh0Q3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmluZGlu
Z01hY3Jvcy5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhDbGlwYm9hcmRD
dXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhDb25zb2xlQ3Vz
dG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29vcmRpbmF0ZXND
dXN0b20uY3BwJywKQEAgLTcxMiw2ICs3MTgsNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEN1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVhQYXRoTlNSZXNvbHZlci5oJywKICAgICAgICAgICAgICdi
aW5kaW5ncy92OC9jdXN0b20vVjhEYXRhYmFzZUN1c3RvbS5jcHAnLAorICAgICAgICAgICAgJ2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFiYXNlU3luY0N1c3RvbS5jcHAnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFHcmlkQ29sdW1uTGlzdEN1c3RvbS5jcHAnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0
b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudExvY2F0
aW9uQ3VzdG9tLmNwcCcsCkBAIC03NjUsNiArNzcyLDcgQEAKICAgICAgICAgICAgICdiaW5kaW5n
cy92OC9jdXN0b20vVjhTdG9yYWdlQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
djgvY3VzdG9tL1Y4U1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcCcsCisgICAgICAg
ICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHRG9jdW1lbnRDdXN0b20uY3Bw
JywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhTVkdFbGVtZW50Q3VzdG9tLmNw
cCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHTGVuZ3RoQ3VzdG9tLmNw
cCcsCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2Vi
Q29yZS5wcmkJKHJldmlzaW9uIDU4OTQxKQorKysgV2ViQ29yZS9XZWJDb3JlLnByaQkod29ya2lu
ZyBjb3B5KQpAQCAtNDM3LDYgKzQzNyw3IEBAIElETF9CSU5ESU5HUyArPSBcCiAgICAgcGx1Z2lu
cy9NaW1lVHlwZUFycmF5LmlkbCBcCiAgICAgc3RvcmFnZS9EYXRhYmFzZS5pZGwgXAogICAgIHN0
b3JhZ2UvRGF0YWJhc2VDYWxsYmFjay5pZGwgXAorICAgIHN0b3JhZ2UvRGF0YWJhc2VTeW5jLmlk
bCBcCiAgICAgc3RvcmFnZS9TdG9yYWdlLmlkbCBcCiAgICAgc3RvcmFnZS9TdG9yYWdlRXZlbnQu
aWRsIFwKICAgICBzdG9yYWdlL1NRTEVycm9yLmlkbCBcCkBAIC00NDcsNiArNDQ4LDggQEAgSURM
X0JJTkRJTkdTICs9IFwKICAgICBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmlkbCBcCiAgICAgc3Rv
cmFnZS9TUUxUcmFuc2FjdGlvbkNhbGxiYWNrLmlkbCBcCiAgICAgc3RvcmFnZS9TUUxUcmFuc2Fj
dGlvbkVycm9yQ2FsbGJhY2suaWRsIFwKKyAgICBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luYy5p
ZGwgXAorICAgIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaWRsIFwKICAgICBz
dmcvU1ZHWm9vbUV2ZW50LmlkbCBcCiAgICAgc3ZnL1NWR0FFbGVtZW50LmlkbCBcCiAgICAgc3Zn
L1NWR0FsdEdseXBoRWxlbWVudC5pZGwgXApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA1ODk0MSkKKysrIFdlYkNv
cmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTIzMDAsOCArMjMwMCwxMCBAQCBjb250
YWlucyhERUZJTkVTLCBFTkFCTEVfREFUQUJBU0U9MSkgewogICAgICAgICBzdG9yYWdlL1NRTFRy
YW5zYWN0aW9uU3luYy5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFN0YXRl
bWVudEVycm9yQ2FsbGJhY2suY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNEYXRhYmFzZUN1
c3RvbS5jcHAgXAorICAgICAgICBiaW5kaW5ncy9qcy9KU0RhdGFiYXNlU3luY0N1c3RvbS5jcHAg
XAogICAgICAgICBiaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwIFwK
LSAgICAgICAgYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKKyAgICAgICAg
YmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAgXAorICAgICAgICBiaW5kaW5n
cy9qcy9KU1NRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHAKIH0KIAogY29udGFpbnMoREVGSU5F
UywgRU5BQkxFX0RPTV9TVE9SQUdFPTEpIHsKQEAgLTIzMjUsNiArMjMyNyw3IEBAIGNvbnRhaW5z
KERFRklORVMsIEVOQUJMRV9ET01fU1RPUkFHRT0xKSAKICAgICAgICAgc3RvcmFnZS9TUUxUcmFu
c2FjdGlvbkNsaWVudC5oIFwKICAgICAgICAgc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNvb3JkaW5h
dG9yLmggXAogICAgICAgICBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luYy5oIFwKKyAgICAgICAg
c3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5oIFwKICAgICAgICAgc3RvcmFnZS9T
dG9yYWdlQXJlYS5oIFwKICAgICAgICAgc3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaCBcCiAgICAg
ICAgIHN0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmggXApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA1ODk0MSkKKysrIFdlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTI1MTMsNiArMjUxMyw2MiBAQAog
CQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktp
dE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRGF0YWJhc2VT
eW5jLmNwcCINCisJCQkJPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRl
YnVnfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJ
CQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8
L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9
IlJlbGVhc2V8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4N
CisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQor
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJ
TmFtZT0iRGVidWdfSW50ZXJuYWx8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIN
CisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJh
dGlvbg0KKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm98V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxl
Q29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb3xXaW4zMiINCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1l
PSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4N
CisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiDQor
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJL
aXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0RhdGFiYXNl
U3luYy5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0
aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xK
U0RhdGFHcmlkQ29sdW1uLmNwcCINCiAJCQkJPg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCkBA
IC0xMDI3OCw2ICsxMDMzNCw2MiBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJ
CQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXFdlYkNvcmVcRGVyaXZlZFNv
dXJjZXNcSlNTUUxUcmFuc2FjdGlvblN5bmMuY3BwIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmln
dXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZp
bGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z19JbnRlcm5hbHxXaW4zMiINCisJCQkJ
CUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb3xXaW4z
MiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wN
CisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNl
X0NhaXJvfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQor
CQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJ
CQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5h
bWU9IkRlYnVnX0FsbHxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJ
CQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJ
Lz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJ
CQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXFdlYkNvcmVcRGVyaXZlZFNv
dXJjZXNcSlNTUUxUcmFuc2FjdGlvblN5bmMuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8
RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNTdG9yYWdlLmNwcCINCiAJCQkJPg0KIAkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24NCkBAIC0zNTY5OSw2ICszNTgxMSw1OCBAQAogCQkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGJpbmRpbmdzXGpzXEpTRGF0YWJhc2VTeW5jQ3VzdG9tLmNwcCINCisJCQkJCT4NCisJCQkJCTxG
aWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1l
PSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
Pg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIN
CisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wN
CisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRl
YnVnX0ludGVybmFsfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJ
CQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJ
CQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0
aW9uDQorCQkJCQkJTmFtZT0iRGVidWdfQ2Fpcm98V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xD
b21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMyIg0K
KwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0K
KwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVi
dWdfQWxsfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4N
CisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+
DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQog
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTRGF0YUdyaWRDb2x1bW5MaXN0Q3Vz
dG9tLmNwcCINCiAJCQkJCT4NCiAJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KQEAgLTM4OTc5LDYg
KzM5MTQzLDU4IEBACiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQogCQkJCTwvRmlsZT4NCiAJ
CQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNTUUxUcmFuc2Fj
dGlvblN5bmNDdXN0b20uY3BwIg0KKwkJCQkJPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQor
CQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUi
DQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
DQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJ
CQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWdfSW50ZXJuYWx8V2luMzIi
DQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29s
DQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJE
ZWJ1Z19DYWlyb3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJ
CQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJ
CQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlv
bg0KKwkJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm98V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xD
b21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiDQorCQkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0i
Li5cYmluZGluZ3NcanNcSlNTdG9yYWdlQ3VzdG9tLmNwcCINCiAJCQkJCT4NCiAJCQkJCTxGaWxl
Q29uZmlndXJhdGlvbg0KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiA1ODk0MSkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MTY4LDYgKzQxNjgsMTQgQEAKIAkJQjUy
M0NGMDkxMTgyNjc1NDAwRUJCMjlDIC8qIFNRTFRyYW5zYWN0aW9uU3luYy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNTIzQ0YwMjExODI2NzU0MDBF
QkIyOUMgLyogU1FMVHJhbnNhY3Rpb25TeW5jLmNwcCAqLzsgfTsKIAkJQjUyM0NGMEExMTgyNjc1
NDAwRUJCMjlDIC8qIERhdGFiYXNlU3luYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCNTIzQ0YwMzExODI2NzU0MDBFQkIyOUMgLyogRGF0YWJhc2VT
eW5jLmNwcCAqLzsgfTsKIAkJQjUyM0NGMEIxMTgyNjc1NDAwRUJCMjlDIC8qIERhdGFiYXNlU3lu
Yy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjUyM0NG
MDQxMTgyNjc1NDAwRUJCMjlDIC8qIERhdGFiYXNlU3luYy5oICovOyB9OworCQlCNTVENUFBNDEx
OTEzMUZDMDBCQ0MzMTUgLyogSlNTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjU1RDVBQTIxMTkxMzFGQzAw
QkNDMzE1IC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaCAqLzsgfTsKKwkJQjU1RDVB
QTUxMTkxMzFGQzAwQkNDMzE1IC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjU1RDVBQTMxMTkx
MzFGQzAwQkNDMzE1IC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suY3BwICovOyB9Owor
CQlCNTVENUFBODExOTEzMjUwMDBCQ0MzMTUgLyogSlNEYXRhYmFzZVN5bmNDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjU1RDVBQTYxMTkx
MzI1MDAwQkNDMzE1IC8qIEpTRGF0YWJhc2VTeW5jQ3VzdG9tLmNwcCAqLzsgfTsKKwkJQjU1RDVB
QTkxMTkxMzI1MDAwQkNDMzE1IC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1NUQ1QUE3MTE5MTMy
NTAwMEJDQzMxNSAvKiBKU1NRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHAgKi87IH07CisJCUI1
OENFQjY5MTE5MTM2MDcwMDJBNjc5MCAvKiBKU0RhdGFiYXNlU3luYy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjU4Q0VCNjcxMTkxMzYwNzAwMkE2Nzkw
IC8qIEpTRGF0YWJhc2VTeW5jLmggKi87IH07CisJCUI1OENFQjZBMTE5MTM2MDcwMDJBNjc5MCAv
KiBKU0RhdGFiYXNlU3luYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCNThDRUI2ODExOTEzNjA3MDAyQTY3OTAgLyogSlNEYXRhYmFzZVN5bmMuY3Bw
ICovOyB9OworCQlCNThDRUI2RDExOTEzNjFDMDAyQTY3OTAgLyogSlNTUUxUcmFuc2FjdGlvblN5
bmMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1OENF
QjZCMTE5MTM2MUMwMDJBNjc5MCAvKiBKU1NRTFRyYW5zYWN0aW9uU3luYy5oICovOyB9OworCQlC
NThDRUI2RTExOTEzNjFDMDAyQTY3OTAgLyogSlNTUUxUcmFuc2FjdGlvblN5bmMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjU4Q0VCNkMxMTkxMzYx
QzAwMkE2NzkwIC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5jLmNwcCAqLzsgfTsKIAkJQjU5REQ2OTkx
MTkwMjlFNTAwN0U5Njg0IC8qIEpTRGF0YWJhc2VDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjU5REQ2OTcxMTkwMjlFNTAwN0U5Njg0IC8q
IEpTRGF0YWJhc2VDYWxsYmFjay5oICovOyB9OwogCQlCNTlERDY5QTExOTAyOUU1MDA3RTk2ODQg
LyogSlNEYXRhYmFzZUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEI1OURENjk4MTE5MDI5RTUwMDdFOTY4NCAvKiBKU0RhdGFiYXNlQ2Fs
bGJhY2suY3BwICovOyB9OwogCQlCNTlERDY5RDExOTAyQTQyMDA3RTk2ODQgLyogSlNTUUxUcmFu
c2FjdGlvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCNTlERDY5QjExOTAyQTQyMDA3RTk2ODQgLyogSlNTUUxUcmFuc2FjdGlvbkNhbGxi
YWNrLmggKi87IH07CkBAIC05NTMwLDYgKzk1MzgsMTcgQEAKIAkJQjUyM0NGMDIxMTgyNjc1NDAw
RUJCMjlDIC8qIFNRTFRyYW5zYWN0aW9uU3luYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTUUxUcmFuc2FjdGlvblN5bmMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCNTIzQ0YwMzExODI2NzU0MDBFQkIyOUMgLyogRGF0YWJhc2VTeW5jLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGFiYXNlU3luYy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI1MjNDRjA0MTE4MjY3NTQwMEVCQjI5QyAvKiBE
YXRhYmFzZVN5bmMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YWJhc2VT
eW5jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI1NUQ1QUEyMTE5MTMxRkMwMEJD
QzMxNSAvKiBKU1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjU1RDVBQTMxMTkxMzFGQzAwQkNDMzE1IC8qIEpTU1FMVHJh
bnNhY3Rpb25TeW5jQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUI1NUQ1QUE2MTE5MTMyNTAwMEJDQzMxNSAvKiBKU0RhdGFiYXNlU3luY0N1
c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RhdGFiYXNl
U3luY0N1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI1NUQ1QUE3MTE5
MTMyNTAwMEJDQzMxNSAvKiBKU1NRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI1NUQ1QUJCMTE5MTMyNzIwMEJDQzMx
NSAvKiBEYXRhYmFzZVN5bmMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERhdGFiYXNlU3lu
Yy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI1NUQ1QUJDMTE5MTMyNzIwMEJD
QzMxNSAvKiBTUUxUcmFuc2FjdGlvblN5bmMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNR
TFRyYW5zYWN0aW9uU3luYy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI1NUQ1
QUJEMTE5MTMyNzIwMEJDQzMxNSAvKiBTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCNThDRUI2NzExOTEzNjA3MDAyQTY3OTAgLyogSlNE
YXRhYmFzZVN5bmMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEYXRhYmFz
ZVN5bmMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjU4Q0VCNjgxMTkxMzYwNzAw
MkE2NzkwIC8qIEpTRGF0YWJhc2VTeW5jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTRGF0YWJhc2VTeW5jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQjU4Q0VCNkIxMTkxMzYxQzAwMkE2NzkwIC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5jLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1FMVHJhbnNhY3Rpb25TeW5jLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI1OENFQjZDMTE5MTM2MUMwMDJBNjc5MCAvKiBK
U1NRTFRyYW5zYWN0aW9uU3luYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1NRTFRyYW5zYWN0aW9uU3luYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUI1OURENjhEMTE5MDI5OEUwMDdFOTY4NCAvKiBEYXRhYmFzZUNhbGxiYWNrLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBEYXRhYmFzZUNhbGxiYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQjU5REQ2OEUxMTkwMjk4RTAwN0U5Njg0IC8qIFNRTFN0YXRlbWVudENh
bGxiYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTUUxTdGF0ZW1lbnRDYWxsYmFjay5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI1OURENjhGMTE5MDI5OEUwMDdFOTY4
NCAvKiBTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTEwNzc2LDYgKzEwNzk1LDcgQEAKIAkJCQk1MTE2RDk3NTBDRjE3N0JEMDBDMkI4NEQg
LyogRGF0YWJhc2VEZXRhaWxzLmggKi8sCiAJCQkJQjUyM0NGMDMxMTgyNjc1NDAwRUJCMjlDIC8q
IERhdGFiYXNlU3luYy5jcHAgKi8sCiAJCQkJQjUyM0NGMDQxMTgyNjc1NDAwRUJCMjlDIC8qIERh
dGFiYXNlU3luYy5oICovLAorCQkJCUI1NUQ1QUJCMTE5MTMyNzIwMEJDQzMxNSAvKiBEYXRhYmFz
ZVN5bmMuaWRsICovLAogCQkJCTUxOTYxMUU5MENBQzc0OUMwMDEwQTgwQyAvKiBEYXRhYmFzZVRh
c2suY3BwICovLAogCQkJCTUxOTYxMUU4MENBQzc0OUMwMDEwQTgwQyAvKiBEYXRhYmFzZVRhc2su
aCAqLywKIAkJCQk1MTk2MTE2MTBDQUM1NjU3MDAxMEE4MEMgLyogRGF0YWJhc2VUaHJlYWQuY3Bw
ICovLApAQCAtMTA4MTgsNyArMTA4MzgsOSBAQAogCQkJCUI1OURENjkxMTE5MDI5OEUwMDdFOTY4
NCAvKiBTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suaWRsICovLAogCQkJCUI1MjNDRjAyMTE4
MjY3NTQwMEVCQjI5QyAvKiBTUUxUcmFuc2FjdGlvblN5bmMuY3BwICovLAogCQkJCUI1MjNDRjAx
MTE4MjY3NTQwMEVCQjI5QyAvKiBTUUxUcmFuc2FjdGlvblN5bmMuaCAqLywKKwkJCQlCNTVENUFC
QzExOTEzMjcyMDBCQ0MzMTUgLyogU1FMVHJhbnNhY3Rpb25TeW5jLmlkbCAqLywKIAkJCQlCNTIz
Q0VGRjExODI2NzU0MDBFQkIyOUMgLyogU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaCAqLywK
KwkJCQlCNTVENUFCRDExOTEzMjcyMDBCQ0MzMTUgLyogU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJh
Y2suaWRsICovLAogCQkJCTUxRTNGOUM1MERBMDU5REMwMDI1MDkxMSAvKiBTdG9yYWdlLmNwcCAq
LywKIAkJCQk1MUUzRjlDNDBEQTA1OURDMDAyNTA5MTEgLyogU3RvcmFnZS5oICovLAogCQkJCTUx
RTNGOUQxMERBMDVENzEwMDI1MDkxMSAvKiBTdG9yYWdlLmlkbCAqLywKQEAgLTE0MTA1LDYgKzE0
MTI3LDEyIEBACiAJCQkJQjU5REQ2QTQxMTkwMkE2MjAwN0U5Njg0IC8qIEpTU1FMU3RhdGVtZW50
Q2FsbGJhY2suY3BwICovLAogCQkJCUI1OURENkE3MTE5MDJBNzEwMDdFOTY4NCAvKiBKU1NRTFN0
YXRlbWVudEVycm9yQ2FsbGJhY2suaCAqLywKIAkJCQlCNTlERDZBODExOTAyQTcxMDA3RTk2ODQg
LyogSlNTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcCAqLywKKwkJCQlCNTVENUFBMjExOTEz
MUZDMDBCQ0MzMTUgLyogSlNTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5oICovLAorCQkJCUI1
NUQ1QUEzMTE5MTMxRkMwMEJDQzMxNSAvKiBKU1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmNw
cCAqLywKKwkJCQlCNThDRUI2NzExOTEzNjA3MDAyQTY3OTAgLyogSlNEYXRhYmFzZVN5bmMuaCAq
LywKKwkJCQlCNThDRUI2ODExOTEzNjA3MDAyQTY3OTAgLyogSlNEYXRhYmFzZVN5bmMuY3BwICov
LAorCQkJCUI1OENFQjZCMTE5MTM2MUMwMDJBNjc5MCAvKiBKU1NRTFRyYW5zYWN0aW9uU3luYy5o
ICovLAorCQkJCUI1OENFQjZDMTE5MTM2MUMwMDJBNjc5MCAvKiBKU1NRTFRyYW5zYWN0aW9uU3lu
Yy5jcHAgKi8sCiAJCQkpOwogCQkJbmFtZSA9IFN0b3JhZ2U7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwpAQCAtMTUwNDksNiArMTUwNzcsOCBAQAogCQlCQzRFREVGNzBDMDhGNDE0MDA3RURE
NDkgLyogQ3VzdG9tICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
KwkJCQlCNTVENUFBNjExOTEzMjUwMDBCQ0MzMTUgLyogSlNEYXRhYmFzZVN5bmNDdXN0b20uY3Bw
ICovLAorCQkJCUI1NUQ1QUE3MTE5MTMyNTAwMEJDQzMxNSAvKiBKU1NRTFRyYW5zYWN0aW9uU3lu
Y0N1c3RvbS5jcHAgKi8sCiAJCQkJQkMyRUQ2QkIwQzZCRDJGMDAwOTIwQkZGIC8qIEpTQXR0ckN1
c3RvbS5jcHAgKi8sCiAJCQkJNDlFRUQxNEIxMDUxOTcxOTAwMDk5RkFCIC8qIEpTQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCAqLywKIAkJCQk0OUVFRDE0RDEwNTE5NzFBMDAwOTlG
QUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCAqLywKQEAgLTE4OTUzLDYg
KzE4OTgzLDkgQEAKIAkJCQlCNTlERDZBMTExOTAyQTUyMDA3RTk2ODQgLyogSlNTUUxUcmFuc2Fj
dGlvbkVycm9yQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUI1OURENkE1MTE5MDJBNjIw
MDdFOTY4NCAvKiBKU1NRTFN0YXRlbWVudENhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
NTlERDZBOTExOTAyQTcxMDA3RTk2ODQgLyogSlNTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlCNTVENUFBNDExOTEzMUZDMDBCQ0MzMTUgLyogSlNTUUxUcmFu
c2FjdGlvblN5bmNDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjU4Q0VCNjkxMTkxMzYw
NzAwMkE2NzkwIC8qIEpTRGF0YWJhc2VTeW5jLmggaW4gSGVhZGVycyAqLywKKwkJCQlCNThDRUI2
RDExOTEzNjFDMDAyQTY3OTAgLyogSlNTUUxUcmFuc2FjdGlvblN5bmMuaCBpbiBIZWFkZXJzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpAQCAtMjExOTUsNiArMjEyMjgsMTEgQEAKIAkJCQlCNTlERDZBMjExOTAyQTUyMDA3RTk2ODQg
LyogSlNTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QjU5REQ2QTYxMTkwMkE2MjAwN0U5Njg0IC8qIEpTU1FMU3RhdGVtZW50Q2FsbGJhY2suY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQjU5REQ2QUExMTkwMkE3MTAwN0U5Njg0IC8qIEpTU1FMU3RhdGVt
ZW50RXJyb3JDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCNTVENUFBNTExOTEzMUZD
MDBCQ0MzMTUgLyogSlNTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlCNTVENUFBODExOTEzMjUwMDBCQ0MzMTUgLyogSlNEYXRhYmFzZVN5bmNDdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjU1RDVBQTkxMTkxMzI1MDAwQkNDMzE1IC8qIEpTU1FM
VHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUI1OENFQjZBMTE5
MTM2MDcwMDJBNjc5MCAvKiBKU0RhdGFiYXNlU3luYy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlC
NThDRUI2RTExOTEzNjFDMDAyQTY3OTAgLyogSlNTUUxUcmFuc2FjdGlvblN5bmMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUu
Y3BwCShyZXZpc2lvbiA1ODk0MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0Fs
bEluT25lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIkpT
RGF0YUdyaWRDb2x1bW5MaXN0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0RhdGFHcmlkRGF0YVNv
dXJjZS5jcHAiCiAjaW5jbHVkZSAiSlNEYXRhYmFzZUN1c3RvbS5jcHAiCisjaW5jbHVkZSAiSlNE
YXRhYmFzZVN5bmNDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTRGVkaWNhdGVkV29ya2VyQ29udGV4
dEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNEZXNrdG9wTm90aWZpY2F0aW9uc0N1c3RvbS5jcHAi
CiAjaW5jbHVkZSAiSlNEb2N1bWVudEN1c3RvbS5jcHAiCkBAIC0xMDIsNiArMTAzLDcgQEAKICNp
bmNsdWRlICJKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwIgogI2luY2x1ZGUgIkpTU1FMUmVz
dWx0U2V0Um93TGlzdEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNTUUxUcmFuc2FjdGlvbkN1c3Rv
bS5jcHAiCisjaW5jbHVkZSAiSlNTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwIgogI2luY2x1
ZGUgIkpTU1ZHRWxlbWVudEluc3RhbmNlQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1NWR0xlbmd0
aEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNTVkdNYXRyaXhDdXN0b20uY3BwIgpJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9uIDU4OTQxKQor
KysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTk2NywxOCArOTY3LDQwIEBAIEpTVmFsdWUgSlNET01XaW5kb3c6OnJlbW92ZUV2ZW50
TGlzdGVuZXIKICNpZiBFTkFCTEUoREFUQUJBU0UpCiBKU1ZhbHVlIEpTRE9NV2luZG93OjpvcGVu
RGF0YWJhc2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogewotICAgIGlm
ICghYWxsb3dzQWNjZXNzRnJvbShleGVjKSB8fCAoYXJncy5zaXplKCkgPCA0KSkKKyAgICBpZiAo
IWFsbG93c0FjY2Vzc0Zyb20oZXhlYykgfHwgKGFyZ3Muc2l6ZSgpIDwgNCkpIHsKKyAgICAgICAg
c2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFNZTlRBWF9FUlIpOwogICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBjb25zdCBVU3RyaW5nJiBu
YW1lID0gYXJncy5hdCgwKS50b1N0cmluZyhleGVjKTsKLSAgICBjb25zdCBVU3RyaW5nJiB2ZXJz
aW9uID0gYXJncy5hdCgxKS50b1N0cmluZyhleGVjKTsKLSAgICBjb25zdCBVU3RyaW5nJiBkaXNw
bGF5TmFtZSA9IGFyZ3MuYXQoMikudG9TdHJpbmcoZXhlYyk7Ci0gICAgdW5zaWduZWQgbG9uZyBl
c3RpbWF0ZWRTaXplID0gYXJncy5hdCgzKS50b0ludDMyKGV4ZWMpOworICAgIH0KKworICAgIFN0
cmluZyBuYW1lID0gdXN0cmluZ1RvU3RyaW5nKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYykpOwor
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CisKKyAgICBTdHJpbmcgdmVyc2lvbiA9IHVzdHJpbmdUb1N0cmluZyhhcmdzLmF0KDEpLnRv
U3RyaW5nKGV4ZWMpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOworCisgICAgU3RyaW5nIGRpc3BsYXlOYW1lID0gdXN0cmluZ1Rv
U3RyaW5nKGFyZ3MuYXQoMikudG9TdHJpbmcoZXhlYykpOworICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAgICAvLyBhcmdzLmF0
KDMpID0gZXN0aW1hdGVkIHNpemUKKyAgICB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUgPSBh
cmdzLmF0KDMpLnRvVUludDMyKGV4ZWMpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
KyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKICAgICBSZWZQdHI8RGF0YWJhc2VDYWxs
YmFjaz4gY3JlYXRpb25DYWxsYmFjazsKLSAgICBpZiAoKGFyZ3Muc2l6ZSgpID49IDUpICYmIGFy
Z3MuYXQoNCkuaXNPYmplY3QoKSkKKyAgICBpZiAoYXJncy5zaXplKCkgPj0gNSkgeworICAgICAg
ICBpZiAoIWFyZ3MuYXQoNCkuaXNPYmplY3QoKSkgeworICAgICAgICAgICAgc2V0RE9NRXhjZXB0
aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKKyAgICAgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOworICAgICAgICB9CisKICAgICAgICAgY3JlYXRpb25DYWxsYmFjayA9IEpTRGF0YWJh
c2VDYWxsYmFjazo6Y3JlYXRlKGFzT2JqZWN0KGFyZ3MuYXQoNCkpLCBnbG9iYWxPYmplY3QoKSk7
CisgICAgfQogCi0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgp
LCBXVEY6OmdldFB0cihpbXBsKCktPm9wZW5EYXRhYmFzZSh1c3RyaW5nVG9TdHJpbmcobmFtZSks
IHVzdHJpbmdUb1N0cmluZyh2ZXJzaW9uKSwgdXN0cmluZ1RvU3RyaW5nKGRpc3BsYXlOYW1lKSwg
ZXN0aW1hdGVkU2l6ZSwgY3JlYXRpb25DYWxsYmFjay5yZWxlYXNlKCksIGVjKSkpOworICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhleGVjLCBnbG9i
YWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbCgpLT5vcGVuRGF0YWJhc2UobmFtZSwgdmVyc2lv
biwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUsIGNyZWF0aW9uQ2FsbGJhY2sucmVsZWFzZSgp
LCBlYykpKTsKIAogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICAgcmV0dXJuIHJl
c3VsdDsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhYmFzZUN1c3RvbS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFiYXNlQ3VzdG9tLmNwcAkocmV2
aXNpb24gNTg5NDEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YWJhc2VDdXN0b20uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01MCw1NCArNTAsNjIgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsK
IEpTVmFsdWUgSlNEYXRhYmFzZTo6Y2hhbmdlVmVyc2lvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IEFyZ0xpc3QmIGFyZ3MpCiB7CiAgICAgU3RyaW5nIG9sZFZlcnNpb24gPSB1c3RyaW5nVG9TdHJp
bmcoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKwogICAgIFN0cmluZyBuZXdWZXJz
aW9uID0gdXN0cmluZ1RvU3RyaW5nKGFyZ3MuYXQoMSkudG9TdHJpbmcoZXhlYykpOworICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAK
LSAgICBKU09iamVjdCogb2JqZWN0OwotICAgIGlmICghKG9iamVjdCA9IGFyZ3MuYXQoMikuZ2V0
T2JqZWN0KCkpKSB7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFyZ3MuYXQoMikuZ2V0T2JqZWN0
KCk7CisgICAgaWYgKCFvYmplY3QpIHsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZ
UEVfTUlTTUFUQ0hfRVJSKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQot
ICAgIAotICAgIFJlZlB0cjxTUUxUcmFuc2FjdGlvbkNhbGxiYWNrPiBjYWxsYmFjayhKU1NRTFRy
YW5zYWN0aW9uQ2FsbGJhY2s6OmNyZWF0ZShvYmplY3QsIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpKSkpOwotICAgIAorCisgICAgUmVm
UHRyPFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2s+IGNhbGxiYWNrKEpTU1FMVHJhbnNhY3Rpb25DYWxs
YmFjazo6Y3JlYXRlKG9iamVjdCwgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QoKSkpKTsKKwogICAgIFJlZlB0cjxTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+
IGVycm9yQ2FsbGJhY2s7CiAgICAgaWYgKCFhcmdzLmF0KDMpLmlzTnVsbCgpKSB7Ci0gICAgICAg
IGlmICghKG9iamVjdCA9IGFyZ3MuYXQoMykuZ2V0T2JqZWN0KCkpKSB7CisgICAgICAgIG9iamVj
dCA9IGFyZ3MuYXQoMykuZ2V0T2JqZWN0KCk7CisgICAgICAgIGlmICghb2JqZWN0KSB7CiAgICAg
ICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpOwogICAgICAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAg
IGVycm9yQ2FsbGJhY2sgPSBKU1NRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjazo6Y3JlYXRlKG9i
amVjdCwgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5keW5hbWljR2xvYmFs
T2JqZWN0KCkpKTsKKworICAgICAgICBlcnJvckNhbGxiYWNrID0gSlNTUUxUcmFuc2FjdGlvbkVy
cm9yQ2FsbGJhY2s6OmNyZWF0ZShvYmplY3QsIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZ2xvYmFsT2JqZWN0KCkpKTsKICAgICB9Ci0gICAgCisKICAgICBSZWZQdHI8Vm9pZENhbGxi
YWNrPiBzdWNjZXNzQ2FsbGJhY2s7CiAgICAgaWYgKCFhcmdzLmF0KDQpLmlzTnVsbCgpKSB7Ci0g
ICAgICAgIGlmICghKG9iamVjdCA9IGFyZ3MuYXQoNCkuZ2V0T2JqZWN0KCkpKSB7CisgICAgICAg
IG9iamVjdCA9IGFyZ3MuYXQoNCkuZ2V0T2JqZWN0KCk7CisgICAgICAgIGlmICghb2JqZWN0KSB7
CiAgICAgICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpOwog
ICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgIH0KIAotICAgICAgICBz
dWNjZXNzQ2FsbGJhY2sgPSBKU0N1c3RvbVZvaWRDYWxsYmFjazo6Y3JlYXRlKG9iamVjdCwgc3Rh
dGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkp
KTsKKyAgICAgICAgc3VjY2Vzc0NhbGxiYWNrID0gSlNDdXN0b21Wb2lkQ2FsbGJhY2s6OmNyZWF0
ZShvYmplY3QsIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkp
KTsKICAgICB9CiAKICAgICBtX2ltcGwtPmNoYW5nZVZlcnNpb24ob2xkVmVyc2lvbiwgbmV3VmVy
c2lvbiwgY2FsbGJhY2sucmVsZWFzZSgpLCBlcnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgc3VjY2Vz
c0NhbGxiYWNrLnJlbGVhc2UoKSk7Ci0gICAgCisKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
IH0KIAogc3RhdGljIEpTVmFsdWUgY3JlYXRlVHJhbnNhY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBBcmdMaXN0JiBhcmdzLCBEYXRhYmFzZSogZGF0YWJhc2UsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGJvb2wgcmVhZE9ubHkpCiB7Ci0gICAgSlNPYmplY3QqIG9iamVjdDsK
LSAgICAKLSAgICBpZiAoIShvYmplY3QgPSBhcmdzLmF0KDApLmdldE9iamVjdCgpKSkgeworICAg
IEpTT2JqZWN0KiBvYmplY3QgPSBhcmdzLmF0KDApLmdldE9iamVjdCgpOworCisgICAgaWYgKCFv
YmplY3QpIHsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJS
KTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgfSAgICAgICAgCi0gICAgIAor
ICAgIH0KKwogICAgIFJlZlB0cjxTUUxUcmFuc2FjdGlvbkNhbGxiYWNrPiBjYWxsYmFjayhKU1NR
TFRyYW5zYWN0aW9uQ2FsbGJhY2s6OmNyZWF0ZShvYmplY3QsIGdsb2JhbE9iamVjdCkpOwogICAg
IFJlZlB0cjxTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2s7CiAgICAg
aWYgKGFyZ3Muc2l6ZSgpID4gMSAmJiAhYXJncy5hdCgxKS5pc051bGwoKSkgewotICAgICAgICBp
ZiAoIShvYmplY3QgPSBhcmdzLmF0KDEpLmdldE9iamVjdCgpKSkgeworICAgICAgICBvYmplY3Qg
PSBhcmdzLmF0KDEpLmdldE9iamVjdCgpOworICAgICAgICBpZiAoIW9iamVjdCkgewogICAgICAg
ICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKICAgICAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICB9CkBAIC0xMDcsMjYgKzExNSwyNyBA
QCBzdGF0aWMgSlNWYWx1ZSBjcmVhdGVUcmFuc2FjdGlvbihFeGVjU3RhCiAKICAgICBSZWZQdHI8
Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2s7CiAgICAgaWYgKGFyZ3Muc2l6ZSgpID4gMiAm
JiAhYXJncy5hdCgyKS5pc051bGwoKSkgewotICAgICAgICBpZiAoIShvYmplY3QgPSBhcmdzLmF0
KDIpLmdldE9iamVjdCgpKSkgeworICAgICAgICBvYmplY3QgPSBhcmdzLmF0KDIpLmdldE9iamVj
dCgpOworICAgICAgICBpZiAoIW9iamVjdCkgewogICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9u
KGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwogICAgICAgICB9CiAKICAgICAgICAgc3VjY2Vzc0NhbGxiYWNrID0gSlNDdXN0b21Wb2lk
Q2FsbGJhY2s6OmNyZWF0ZShvYmplY3QsIGdsb2JhbE9iamVjdCk7CiAgICAgfQotICAgIAorCiAg
ICAgZGF0YWJhc2UtPnRyYW5zYWN0aW9uKGNhbGxiYWNrLnJlbGVhc2UoKSwgZXJyb3JDYWxsYmFj
ay5yZWxlYXNlKCksIHN1Y2Nlc3NDYWxsYmFjay5yZWxlYXNlKCksIHJlYWRPbmx5KTsKICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIAogSlNWYWx1ZSBKU0RhdGFiYXNlOjp0cmFuc2FjdGlv
bihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7Ci0gICAgcmV0dXJuIGNy
ZWF0ZVRyYW5zYWN0aW9uKGV4ZWMsIGFyZ3MsIG1faW1wbC5nZXQoKSwgc3RhdGljX2Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkpLCBmYWxzZSk7Cisg
ICAgcmV0dXJuIGNyZWF0ZVRyYW5zYWN0aW9uKGV4ZWMsIGFyZ3MsIG1faW1wbC5nZXQoKSwgc3Rh
dGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSksIGZhbHNlKTsKIH0K
LSAgICAKKwogSlNWYWx1ZSBKU0RhdGFiYXNlOjpyZWFkVHJhbnNhY3Rpb24oRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogewotICAgIHJldHVybiBjcmVhdGVUcmFuc2FjdGlv
bihleGVjLCBhcmdzLCBtX2ltcGwuZ2V0KCksIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpKSwgdHJ1ZSk7CisgICAgcmV0dXJuIGNyZWF0
ZVRyYW5zYWN0aW9uKGV4ZWMsIGFyZ3MsIG1faW1wbC5nZXQoKSwgc3RhdGljX2Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSksIHRydWUpOwogfQogCiB9CkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRGF0YWJhc2VTeW5jQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YWJhc2VTeW5jQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkK
KysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhYmFzZVN5bmNDdXN0b20uY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVz
IG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNE
YXRhYmFzZVN5bmMuaCIKKworI2lmIEVOQUJMRShEQVRBQkFTRSkKKworI2luY2x1ZGUgIkRhdGFi
YXNlU3luYy5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJKU1NRTFRy
YW5zYWN0aW9uU3luY0NhbGxiYWNrLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNp
bmNsdWRlICJTUUxWYWx1ZS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNBcnJheS5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK0pTVmFsdWUgSlNEYXRh
YmFzZVN5bmM6OmNoYW5nZVZlcnNpb24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBh
cmdzKQoreworICAgIFN0cmluZyBvbGRWZXJzaW9uID0gdXN0cmluZ1RvU3RyaW5nKGFyZ3MuYXQo
MCkudG9TdHJpbmcoZXhlYykpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAgICBTdHJpbmcgbmV3VmVyc2lvbiA9IHVzdHJp
bmdUb1N0cmluZyhhcmdzLmF0KDEpLnRvU3RyaW5nKGV4ZWMpKTsKKyAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworCisgICAgSlNPYmpl
Y3QqIG9iamVjdCA9IGFyZ3MuYXQoMikuZ2V0T2JqZWN0KCk7CisgICAgaWYgKCFvYmplY3QpIHsK
KyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKKyAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorCisgICAgUmVmUHRyPFNRTFRyYW5zYWN0
aW9uU3luY0NhbGxiYWNrPiBjYWxsYmFjayhKU1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrOjpj
cmVhdGUob2JqZWN0LCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVj
dCgpKSkpOworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgbV9pbXBsLT5jaGFuZ2VW
ZXJzaW9uKG9sZFZlcnNpb24sIG5ld1ZlcnNpb24sIGNhbGxiYWNrLnJlbGVhc2UoKSwgZWMpOwor
ICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisKKyAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKK30KKworc3RhdGljIEpTVmFsdWUgY3JlYXRlVHJhbnNhY3Rpb24oRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBBcmdMaXN0JiBhcmdzLCBEYXRhYmFzZVN5bmMqIGRhdGFiYXNlLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBib29sIHJlYWRPbmx5KQoreworICAgIEpTT2JqZWN0KiBv
YmplY3QgPSBhcmdzLmF0KDApLmdldE9iamVjdCgpOworICAgIGlmICghb2JqZWN0KSB7CisgICAg
ICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBUWVBFX01JU01BVENIX0VSUik7CisgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOworICAgIH0KKworICAgIFJlZlB0cjxTUUxUcmFuc2FjdGlvblN5
bmNDYWxsYmFjaz4gY2FsbGJhY2soSlNTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjazo6Y3JlYXRl
KG9iamVjdCwgZ2xvYmFsT2JqZWN0KSk7CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAg
ICBkYXRhYmFzZS0+dHJhbnNhY3Rpb24oY2FsbGJhY2sucmVsZWFzZSgpLCByZWFkT25seSwgZWMp
OworICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisKKyAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKK30KKworSlNWYWx1ZSBKU0RhdGFiYXNlU3luYzo6dHJhbnNhY3Rpb24oRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIHJldHVybiBjcmVhdGVUcmFuc2Fj
dGlvbihleGVjLCBhcmdzLCBtX2ltcGwuZ2V0KCksIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLCBmYWxzZSk7Cit9CisKK0pTVmFsdWUgSlNEYXRhYmFzZVN5
bmM6OnJlYWRUcmFuc2FjdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3Mp
Cit7CisgICAgcmV0dXJuIGNyZWF0ZVRyYW5zYWN0aW9uKGV4ZWMsIGFyZ3MsIG1faW1wbC5nZXQo
KSwgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSksIHRydWUp
OworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoREFUQUJBU0UpCkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDU4OTQx
KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewotICAgIAorCiBKU1ZhbHVlIEpTU1FMVHJhbnNhY3Rpb246OmV4ZWN1
dGVTcWwoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogewogICAgIGlmIChh
cmdzLmlzRW1wdHkoKSkgewpAQCAtNjgsMTMgKzY4LDEzIEBAIEpTVmFsdWUgSlNTUUxUcmFuc2Fj
dGlvbjo6ZXhlY3V0ZVNxbChFeGUKICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gbGVuZ3RoVmFs
dWUudG9VSW50MzIoZXhlYyk7CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgICAgICAKKwogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwIDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICBKU1ZhbHVl
IHZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgaSk7CiAgICAgICAgICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAg
ICAgICAgICAKLSAgICAgICAgICAgIGlmICh2YWx1ZS5pc051bGwoKSkKKworICAgICAgICAgICAg
aWYgKHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgICAgICAgICAgc3FsVmFsdWVz
LmFwcGVuZChTUUxWYWx1ZSgpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlLmlzTnVtYmVy
KCkpCiAgICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFwcGVuZCh2YWx1ZS51bmNoZWNrZWRHZXRO
dW1iZXIoKSk7CkBAIC05NCwxMCArOTQsMTAgQEAgSlNWYWx1ZSBKU1NRTFRyYW5zYWN0aW9uOjpl
eGVjdXRlU3FsKEV4ZQogICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlT
TUFUQ0hfRVJSKTsKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICB9
Ci0gICAgICAgIAorCiAgICAgICAgIGNhbGxiYWNrID0gSlNTUUxTdGF0ZW1lbnRDYWxsYmFjazo6
Y3JlYXRlKG9iamVjdCwgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5keW5h
bWljR2xvYmFsT2JqZWN0KCkpKTsKICAgICB9Ci0gICAgCisKICAgICBSZWZQdHI8U1FMU3RhdGVt
ZW50RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjazsKICAgICBpZiAoIWFyZ3MuYXQoMykuaXNV
bmRlZmluZWRPck51bGwoKSkgewogICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXJncy5hdCgz
KS5nZXRPYmplY3QoKTsKQEAgLTEwNSwxNCArMTA1LDE0IEBAIEpTVmFsdWUgSlNTUUxUcmFuc2Fj
dGlvbjo6ZXhlY3V0ZVNxbChFeGUKICAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBU
WVBFX01JU01BVENIX0VSUik7CiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAg
ICAgICAgfQotICAgICAgICAKKwogICAgICAgICBlcnJvckNhbGxiYWNrID0gSlNTUUxTdGF0ZW1l
bnRFcnJvckNhbGxiYWNrOjpjcmVhdGUob2JqZWN0LCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKSkpOwogICAgIH0KLSAgICAKKwogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIG1faW1wbC0+ZXhlY3V0ZVNRTChzcWxTdGF0ZW1l
bnQsIHNxbFZhbHVlcywgY2FsbGJhY2sucmVsZWFzZSgpLCBlcnJvckNhbGxiYWNrLnJlbGVhc2Uo
KSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7Ci0gICAgCisKICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKIH0KIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFRy
YW5zYWN0aW9uU3luY0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1NRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YK
KyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1NRTFRy
YW5zYWN0aW9uU3luYy5oIgorCisjaWYgRU5BQkxFKERBVEFCQVNFKQorCisjaW5jbHVkZSAiRXhj
ZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkpTU1FMUmVzdWx0U2V0LmgiCisjaW5jbHVkZSAiU1FM
UmVzdWx0U2V0LmgiCisjaW5jbHVkZSAiU1FMVHJhbnNhY3Rpb25TeW5jLmgiCisjaW5jbHVkZSAi
U1FMVmFsdWUuaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitKU1ZhbHVlIEpTU1FMVHJhbnNhY3Rpb25TeW5jOjpleGVjdXRlU3FsKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICBpZiAoYXJncy5pc0VtcHR5KCkpIHsK
KyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFNZTlRBWF9FUlIpOworICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisKKyAgICBTdHJpbmcgc3FsU3RhdGVtZW50ID0gdXN0
cmluZ1RvU3RyaW5nKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYykpOworICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAgICAvLyBO
b3cgYXNzZW1ibGUgdGhlIGxpc3Qgb2YgU1FMIGFyZ3VtZW50cworICAgIFZlY3RvcjxTUUxWYWx1
ZT4gc3FsVmFsdWVzOworICAgIGlmICghYXJncy5hdCgxKS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7
CisgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhcmdzLmF0KDEpLmdldE9iamVjdCgpOworICAg
ICAgICBpZiAoIW9iamVjdCkgeworICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZ
UEVfTUlTTUFUQ0hfRVJSKTsKKyAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAg
ICAgICB9CisKKyAgICAgICAgSlNWYWx1ZSBsZW5ndGhWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMs
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpOworICAgICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAgICAgdW5z
aWduZWQgbGVuZ3RoID0gbGVuZ3RoVmFsdWUudG9VSW50MzIoZXhlYyk7CisgICAgICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwor
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDAgOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgICAgIEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBpKTsKKyAgICAgICAgICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKKworICAgICAgICAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCisg
ICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFwcGVuZChTUUxWYWx1ZSgpKTsKKyAgICAgICAgICAg
IGVsc2UgaWYgKHZhbHVlLmlzTnVtYmVyKCkpCisgICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFw
cGVuZCh2YWx1ZS51bmNoZWNrZWRHZXROdW1iZXIoKSk7CisgICAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAvLyBDb252ZXJ0IHRoZSBhcmd1bWVudCB0byBhIHN0cmluZyBhbmQgYXBw
ZW5kIGl0CisgICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFwcGVuZCh1c3RyaW5nVG9TdHJpbmco
dmFsdWUudG9TdHJpbmcoZXhlYykpKTsKKyAgICAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBXVEY6Omdl
dFB0cihtX2ltcGwtPmV4ZWN1dGVTUUwoc3FsU3RhdGVtZW50LCBzcWxWYWx1ZXMsIGVjKSkpOwor
ICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQor
Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoREFUQUJBU0UpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwCShyZXZpc2lvbiA1ODk0MSkKKysrIFdl
YkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjksNiArMjksMTAgQEAKIAogI2luY2x1ZGUgIkpTV29ya2VyQ29udGV4dC5oIgogCisj
aWYgRU5BQkxFKERBVEFCQVNFKQorI2luY2x1ZGUgIkpTRGF0YWJhc2VDYWxsYmFjay5oIgorI2lu
Y2x1ZGUgIkpTRGF0YWJhc2VTeW5jLmgiCisjZW5kaWYKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcu
aCIKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTRXZlbnRMaXN0
ZW5lci5oIgpAQCAtMTQyLDYgKzE0Niw0OSBAQCBKU1ZhbHVlIEpTV29ya2VyQ29udGV4dDo6bWVz
c2FnZUNoYW5uZWwoCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShEQVRBQkFTRSkKK0pTVmFsdWUg
SlNXb3JrZXJDb250ZXh0OjpvcGVuRGF0YWJhc2VTeW5jKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
QXJnTGlzdCYgYXJncykKK3sKKyAgICBpZiAoYXJncy5zaXplKCkgPCA0KSB7CisgICAgICAgIHNl
dERPTUV4Y2VwdGlvbihleGVjLCBTWU5UQVhfRVJSKTsKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CisgICAgfQorCisgICAgU3RyaW5nIG5hbWUgPSB1c3RyaW5nVG9TdHJpbmcoYXJncy5h
dCgwKS50b1N0cmluZyhleGVjKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKworICAgIFN0cmluZyB2ZXJzaW9uID0gdXN0cmlu
Z1RvU3RyaW5nKGFyZ3MuYXQoMSkudG9TdHJpbmcoZXhlYykpOworICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAgICBTdHJpbmcg
ZGlzcGxheU5hbWUgPSB1c3RyaW5nVG9TdHJpbmcoYXJncy5hdCgyKS50b1N0cmluZyhleGVjKSk7
CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKKworICAgIC8vIGFyZ3MuYXQoMykgPSBlc3RpbWF0ZWQgc2l6ZQorICAgIHVuc2lnbmVk
IGxvbmcgZXN0aW1hdGVkU2l6ZSA9IGFyZ3MuYXQoMykudG9VSW50MzIoZXhlYyk7CisgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKwor
ICAgIFJlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiBjcmVhdGlvbkNhbGxiYWNrOworICAgIGlmIChh
cmdzLnNpemUoKSA+PSA1KSB7CisgICAgICAgIGlmICghYXJncy5hdCg0KS5pc09iamVjdCgpKSB7
CisgICAgICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpOwor
ICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgICAgIH0KKworICAgICAgICBj
cmVhdGlvbkNhbGxiYWNrID0gSlNEYXRhYmFzZUNhbGxiYWNrOjpjcmVhdGUoYXNPYmplY3QoYXJn
cy5hdCg0KSksIGdsb2JhbE9iamVjdCgpKTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIFdU
Rjo6Z2V0UHRyKGltcGwoKS0+b3BlbkRhdGFiYXNlU3luYyhuYW1lLCB2ZXJzaW9uLCBkaXNwbGF5
TmFtZSwgZXN0aW1hdGVkU2l6ZSwgY3JlYXRpb25DYWxsYmFjay5yZWxlYXNlKCksIGVjKSkpOwor
CisgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQor
I2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXT1JL
RVJTKQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhCaW5kaW5nTWFjcm9zLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhCaW5kaW5nTWFjcm9z
LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEJpbmRpbmdN
YWNyb3MuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOCBAQAorLyoNCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisgKg0KKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dA0KKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUNCisgKiBtZXQ6DQorICoNCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0K
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4NCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlDQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcg0KKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUNCisgKiBkaXN0
cmlidXRpb24uDQorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cw0KKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tDQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCisgKg0KKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMNCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVA0KKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUg0KKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUDQorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsDQorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVA0KKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLA0KKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQ0KKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQNCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UNCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0K
KyAqLw0KKw0KKyNkZWZpbmUgRVhDRVBUSU9OX0JMT0NLKHR5cGUsIHZhciwgdmFsdWUpICAgICAg
ICAgXA0KKyAgICB0eXBlIHZhcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XA0KKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0K
KyAgICAgICAgdjg6OlRyeUNhdGNoIGJsb2NrOyAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAg
ICAgICAgdmFyID0gdmFsdWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICAg
ICAgaWYgKGJsb2NrLkhhc0NhdWdodCgpKSAgICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAg
ICAgIHJldHVybiB0aHJvd0Vycm9yKGJsb2NrLkV4Y2VwdGlvbigpKTsgXA0KKyAgICB9DQpJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNw
cAkocmV2aXNpb24gNTg5NDEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdp
bmRvd0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRl
ICJTdG9yYWdlLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5n
RE9NV2luZG93LmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nTWFjcm9zLmgiCiAjaW5jbHVkZSAiVjhC
aW5kaW5nU3RhdGUuaCIKICNpbmNsdWRlICJWOEN1c3RvbUV2ZW50TGlzdGVuZXIuaCIKICNpbmNs
dWRlICJWOERhdGFiYXNlLmgiCkBAIC03MTksMjEgKzcyMCwyNiBAQCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhET01XaW5kb3c6Om9wZW5ECiB7CiAgICAgSU5DX1NUQVRTKCJET00uRE9NV2luZG93
Lm9wZW5EYXRhYmFzZSIpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgNCkKLSAgICAgICAgcmV0
dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoU1lOVEFYX0VS
Uik7CisKKyAgICBFWENFUFRJT05fQkxPQ0soU3RyaW5nLCBuYW1lLCB0b1dlYkNvcmVTdHJpbmco
YXJnc1swXSkpOworICAgIEVYQ0VQVElPTl9CTE9DSyhTdHJpbmcsIHZlcnNpb24sIHRvV2ViQ29y
ZVN0cmluZyhhcmdzWzFdKSk7CisgICAgRVhDRVBUSU9OX0JMT0NLKFN0cmluZywgZGlzcGxheU5h
bWUsIHRvV2ViQ29yZVN0cmluZyhhcmdzWzJdKSk7CisgICAgRVhDRVBUSU9OX0JMT0NLKHVuc2ln
bmVkIGxvbmcsIGVzdGltYXRlZFNpemUsIGFyZ3NbM10tPlVpbnQzMlZhbHVlKCkpOwogCiAgICAg
RE9NV2luZG93KiBpbXAgPSBWOERPTVdpbmRvdzo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAg
ICAgaWYgKCFWOEJpbmRpbmdTZWN1cml0eTo6Y2FuQWNjZXNzRnJhbWUoVjhCaW5kaW5nU3RhdGU6
Ok9ubHkoKSwgaW1wLT5mcmFtZSgpLCB0cnVlKSkKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmlu
ZWQoKTsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFN0cmluZyBuYW1lID0gdG9X
ZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOwotICAgIFN0cmluZyB2ZXJzaW9uID0gdG9XZWJDb3JlU3Ry
aW5nKGFyZ3NbMV0pOwotICAgIFN0cmluZyBkaXNwbGF5TmFtZSA9IHRvV2ViQ29yZVN0cmluZyhh
cmdzWzJdKTsKLSAgICB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUgPSBhcmdzWzNdLT5JbnRl
Z2VyVmFsdWUoKTsKICAgICBSZWZQdHI8RGF0YWJhc2VDYWxsYmFjaz4gY3JlYXRpb25DYWxsYmFj
azsKLSAgICBpZiAoKGFyZ3MuTGVuZ3RoKCkgPj0gNSkgJiYgYXJnc1s0XS0+SXNPYmplY3QoKSkK
KyAgICBpZiAoYXJncy5MZW5ndGgoKSA+PSA1KSB7CisgICAgICAgIGlmICghYXJnc1s0XS0+SXNP
YmplY3QoKSkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFRZUEVfTUlTTUFUQ0hfRVJS
KTsKKwogICAgICAgICBjcmVhdGlvbkNhbGxiYWNrID0gVjhEYXRhYmFzZUNhbGxiYWNrOjpjcmVh
dGUoYXJnc1s0XSwgaW1wLT5mcmFtZSgpKTsKKyAgICB9CiAKKyAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVzdWx0ID0gdG9WOChpbXAtPm9wZW5E
YXRhYmFzZShuYW1lLCB2ZXJzaW9uLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSwgY3JlYXRp
b25DYWxsYmFjay5yZWxlYXNlKCksIGVjKSk7CiAKICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRp
b24oZWMpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhYmFzZUN1c3Rv
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhYmFz
ZUN1c3RvbS5jcHAJKHJldmlzaW9uIDU4OTQxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhEYXRhYmFzZUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAK
IAogI2luY2x1ZGUgIkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVk
ZSAiVjhCaW5kaW5nTWFjcm9zLmgiCiAjaW5jbHVkZSAiVjhTUUxUcmFuc2FjdGlvbkNhbGxiYWNr
LmgiCiAjaW5jbHVkZSAiVjhTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suaCIKICNpbmNsdWRl
ICJWOEN1c3RvbVZvaWRDYWxsYmFjay5oIgpAQCAtNDcsMTAgKzQ4LDEwIEBAIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOERhdGFiYXNlOjpjaGFuZ2UKICAgICBJTkNfU1RBVFMoIkRPTS5EYXRhYmFz
ZS5jaGFuZ2VWZXJzaW9uKCkiKTsKIAogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMikKLSAgICAg
ICAgcmV0dXJuIHRocm93RXJyb3IoIlRoZSBvbGQgYW5kIG5ldyB2ZXJzaW9uIHN0cmluZ3MgYXJl
IHJlcXVpcmVkLiIsIFY4UHJveHk6OlN5bnRheEVycm9yKTsKKyAgICAgICAgcmV0dXJuIHRocm93
RXJyb3IoU1lOVEFYX0VSUik7CiAKLSAgICBpZiAoIShhcmdzWzBdLT5Jc1N0cmluZygpICYmIGFy
Z3NbMV0tPklzU3RyaW5nKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiVGhlIG9sZCBh
bmQgbmV3IHZlcnNpb25zIG11c3QgYmUgc3RyaW5ncy4iKTsKKyAgICBFWENFUFRJT05fQkxPQ0so
U3RyaW5nLCBvbGRWZXJzaW9uLCB0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSkpOworICAgIEVYQ0VQ
VElPTl9CTE9DSyhTdHJpbmcsIG5ld1ZlcnNpb24sIHRvV2ViQ29yZVN0cmluZyhhcmdzWzFdKSk7
CiAKICAgICBEYXRhYmFzZSogZGF0YWJhc2UgPSBWOERhdGFiYXNlOjp0b05hdGl2ZShhcmdzLkhv
bGRlcigpKTsKIApAQCAtNjEsNyArNjIsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEYXRh
YmFzZTo6Y2hhbmdlCiAgICAgUmVmUHRyPFY4U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4gY2FsbGJh
Y2s7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAyKSB7CiAgICAgICAgIGlmICghYXJnc1syXS0+
SXNPYmplY3QoKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJjaGFuZ2VWZXJzaW9u
IHRyYW5zYWN0aW9uIGNhbGxiYWNrIG11c3QgYmUgb2YgdmFsaWQgdHlwZS4iKTsKKyAgICAgICAg
ICAgIHJldHVybiB0aHJvd0Vycm9yKFRZUEVfTUlTTUFUQ0hfRVJSKTsKIAogICAgICAgICBjYWxs
YmFjayA9IFY4U1FMVHJhbnNhY3Rpb25DYWxsYmFjazo6Y3JlYXRlKGFyZ3NbMl0sIGZyYW1lKTsK
ICAgICB9CkBAIC02OSw3ICs3MCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERhdGFiYXNl
OjpjaGFuZ2UKICAgICBSZWZQdHI8VjhTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+IGVycm9y
Q2FsbGJhY2s7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAzKSB7CiAgICAgICAgIGlmICghYXJn
c1szXS0+SXNPYmplY3QoKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJjaGFuZ2VW
ZXJzaW9uIGVycm9yIGNhbGxiYWNrIG11c3QgYmUgb2YgdmFsaWQgdHlwZS4iKTsKKyAgICAgICAg
ICAgIHJldHVybiB0aHJvd0Vycm9yKFRZUEVfTUlTTUFUQ0hfRVJSKTsKIAogICAgICAgICBlcnJv
ckNhbGxiYWNrID0gVjhTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s6OmNyZWF0ZShhcmdzWzNd
LCBmcmFtZSk7CiAgICAgfQpAQCAtNzcsMTIgKzc4LDEyIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOERhdGFiYXNlOjpjaGFuZ2UKICAgICBSZWZQdHI8VjhDdXN0b21Wb2lkQ2FsbGJhY2s+IHN1
Y2Nlc3NDYWxsYmFjazsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDQpIHsKICAgICAgICAgaWYg
KCFhcmdzWzRdLT5Jc09iamVjdCgpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoImNo
YW5nZVZlcnNpb24gc3VjY2VzcyBjYWxsYmFjayBtdXN0IGJlIG9mIHZhbGlkIHR5cGUuIik7Cisg
ICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihUWVBFX01JU01BVENIX0VSUik7CiAKICAgICAg
ICAgc3VjY2Vzc0NhbGxiYWNrID0gVjhDdXN0b21Wb2lkQ2FsbGJhY2s6OmNyZWF0ZShhcmdzWzRd
LCBmcmFtZSk7CiAgICAgfQogCi0gICAgZGF0YWJhc2UtPmNoYW5nZVZlcnNpb24odG9XZWJDb3Jl
U3RyaW5nKGFyZ3NbMF0pLCB0b1dlYkNvcmVTdHJpbmcoYXJnc1sxXSksIGNhbGxiYWNrLnJlbGVh
c2UoKSwgZXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIHN1Y2Nlc3NDYWxsYmFjay5yZWxlYXNlKCkp
OworICAgIGRhdGFiYXNlLT5jaGFuZ2VWZXJzaW9uKG9sZFZlcnNpb24sIG5ld1ZlcnNpb24sIGNh
bGxiYWNrLnJlbGVhc2UoKSwgZXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIHN1Y2Nlc3NDYWxsYmFj
ay5yZWxlYXNlKCkpOwogCiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KQEAgLTkwLDEw
ICs5MSwxMCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEYXRhYmFzZTo6Y2hhbmdlCiBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNyZWF0ZVRyYW5zYWN0aW9uKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MsIGJvb2wgcmVhZE9ubHkpCiB7CiAgICAgaWYgKCFhcmdzLkxlbmd0aCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiVHJhbnNhY3Rpb24gY2FsbGJhY2sgaXMgcmVxdWly
ZWQuIiwgVjhQcm94eTo6U3ludGF4RXJyb3IpOworICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihT
WU5UQVhfRVJSKTsKIAogICAgIGlmICghYXJnc1swXS0+SXNPYmplY3QoKSkKLSAgICAgICAgcmV0
dXJuIHRocm93RXJyb3IoIlRyYW5zYWN0aW9uIGNhbGxiYWNrIG11c3QgYmUgb2YgdmFsaWQgdHlw
ZS4iKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoVFlQRV9NSVNNQVRDSF9FUlIpOwogCiAg
ICAgRGF0YWJhc2UqIGRhdGFiYXNlID0gVjhEYXRhYmFzZTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIo
KSk7CiAKQEAgLTEwNiw3ICsxMDcsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNy
ZWF0ZVRyYW5zCiAgICAgUmVmUHRyPFY4U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiBlcnJv
ckNhbGxiYWNrOwogICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMSAmJiAhaXNVbmRlZmluZWRPck51
bGwoYXJnc1sxXSkpIHsKICAgICAgICAgaWYgKCFhcmdzWzFdLT5Jc09iamVjdCgpKQotICAgICAg
ICAgICAgcmV0dXJuIHRocm93RXJyb3IoIlRyYW5zYWN0aW9uIGVycm9yIGNhbGxiYWNrIG11c3Qg
YmUgb2YgdmFsaWQgdHlwZS4iKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFRZUEVf
TUlTTUFUQ0hfRVJSKTsKIAogICAgICAgICBlcnJvckNhbGxiYWNrID0gVjhTUUxUcmFuc2FjdGlv
bkVycm9yQ2FsbGJhY2s6OmNyZWF0ZShhcmdzWzFdLCBmcmFtZSk7CiAgICAgfQpAQCAtMTE0LDcg
KzExNSw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3JlYXRlVHJhbnMKICAgICBS
ZWZQdHI8VjhDdXN0b21Wb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjazsKICAgICBpZiAoYXJn
cy5MZW5ndGgoKSA+IDIgJiYgIWlzVW5kZWZpbmVkT3JOdWxsKGFyZ3NbMl0pKSB7CiAgICAgICAg
IGlmICghYXJnc1syXS0+SXNPYmplY3QoKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9y
KCJUcmFuc2FjdGlvbiBzdWNjZXNzIGNhbGxiYWNrIG11c3QgYmUgb2YgdmFsaWQgdHlwZS4iKTsK
KyAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFRZUEVfTUlTTUFUQ0hfRVJSKTsKIAogICAg
ICAgICBzdWNjZXNzQ2FsbGJhY2sgPSBWOEN1c3RvbVZvaWRDYWxsYmFjazo6Y3JlYXRlKGFyZ3Nb
Ml0sIGZyYW1lKTsKICAgICB9CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERh
dGFiYXNlU3luY0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhEYXRhYmFzZVN5bmNDdXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhEYXRhYmFzZVN5bmNDdXN0b20uY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDEwNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShEQVRBQkFT
RSkKKyNpbmNsdWRlICJWOERhdGFiYXNlU3luYy5oIgorCisjaW5jbHVkZSAiRGF0YWJhc2VTeW5j
LmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nTWFjcm9zLmgi
CisjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUgIlY4U1FMVHJhbnNhY3Rpb25TeW5jQ2Fs
bGJhY2suaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhEYXRhYmFzZVN5bmM6OmNoYW5nZVZlcnNpb25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLkRhdGFiYXNlLmNoYW5nZVZlcnNpb24oKSIp
OworCisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAyKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJv
cihTWU5UQVhfRVJSKTsKKworICAgIEVYQ0VQVElPTl9CTE9DSyhTdHJpbmcsIG9sZFZlcnNpb24s
IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKSk7CisgICAgRVhDRVBUSU9OX0JMT0NLKFN0cmluZywg
bmV3VmVyc2lvbiwgdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pKTsKKworICAgIERhdGFiYXNlU3lu
YyogZGF0YWJhc2UgPSBWOERhdGFiYXNlU3luYzo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CisK
KyAgICBSZWZQdHI8VjhTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjaz4gY2FsbGJhY2s7CisgICAg
aWYgKGFyZ3MuTGVuZ3RoKCkgPiAyKSB7CisgICAgICAgIGlmICghYXJnc1syXS0+SXNPYmplY3Qo
KSkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFRZUEVfTUlTTUFUQ0hfRVJSKTsKKwor
ICAgICAgICBjYWxsYmFjayA9IFY4U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s6OmNyZWF0ZShh
cmdzWzJdLCAwKTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBkYXRh
YmFzZS0+Y2hhbmdlVmVyc2lvbih0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSksIHRvV2ViQ29yZVN0
cmluZyhhcmdzWzFdKSwgY2FsbGJhY2sucmVsZWFzZSgpLCBlYyk7CisgICAgVjhQcm94eTo6c2V0
RE9NRXhjZXB0aW9uKGVjKTsKKworICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Cit9CisKK3N0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3JlYXRlVHJhbnNhY3Rpb24oY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncywgYm9vbCByZWFkT25seSkKK3sKKyAgICBpZiAoIWFyZ3MuTGVuZ3RoKCkp
CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFNZTlRBWF9FUlIpOworCisgICAgaWYgKCFhcmdz
WzBdLT5Jc09iamVjdCgpKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihUWVBFX01JU01BVENI
X0VSUik7CisKKyAgICBEYXRhYmFzZVN5bmMqIGRhdGFiYXNlID0gVjhEYXRhYmFzZVN5bmM6OnRv
TmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworCisgICAgUmVmUHRyPFY4U1FMVHJhbnNhY3Rpb25TeW5j
Q2FsbGJhY2s+IGNhbGxiYWNrID0gVjhTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjazo6Y3JlYXRl
KGFyZ3NbMF0sIDApOworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgZGF0YWJhc2Ut
PnRyYW5zYWN0aW9uKGNhbGxiYWNrLnJlbGVhc2UoKSwgcmVhZE9ubHksIGVjKTsKKyAgICBWOFBy
b3h5OjpzZXRET01FeGNlcHRpb24oZWMpOworCisgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsK
K30KKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGF0YWJhc2VTeW5jOjp0cmFuc2FjdGlvbkNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00u
RGF0YWJhc2VTeW5jLnRyYW5zYWN0aW9uKCkiKTsKKyAgICByZXR1cm4gY3JlYXRlVHJhbnNhY3Rp
b24oYXJncywgZmFsc2UpOworfQorCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEYXRhYmFzZVN5
bmM6OnJlYWRUcmFuc2FjdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7
CisgICAgSU5DX1NUQVRTKCJET00uRGF0YWJhc2VTeW5jLnJlYWRUcmFuc2FjdGlvbigpIik7Cisg
ICAgcmV0dXJuIGNyZWF0ZVRyYW5zYWN0aW9uKGFyZ3MsIHRydWUpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDU4OTQxKQor
KysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJEYXRhYmFzZS5oIgog
I2luY2x1ZGUgIlNRTFZhbHVlLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAi
VjhCaW5kaW5nTWFjcm9zLmgiCiAjaW5jbHVkZSAiVjhTUUxTdGF0ZW1lbnRDYWxsYmFjay5oIgog
I2luY2x1ZGUgIlY4U1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5oIgogI2luY2x1ZGUgIlY4UHJv
eHkuaCIKQEAgLTUxLDQ4ICs1Miw0NSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhTUUxUcmFu
c2FjdGlvbjo6CiAgICAgSU5DX1NUQVRTKCJET00uU1FMVHJhbnNhY3Rpb24uZXhlY3V0ZVNxbCgp
Iik7CiAKICAgICBpZiAoYXJncy5MZW5ndGgoKSA9PSAwKQotICAgICAgICByZXR1cm4gdGhyb3dF
cnJvcigiU1FMIHN0YXRlbWVudCBpcyByZXF1aXJlZC4iLCBWOFByb3h5OjpTeW50YXhFcnJvcik7
CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFNZTlRBWF9FUlIpOwogCi0gICAgU3RyaW5nIHN0
YXRlbWVudCA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKTsKKyAgICBFWENFUFRJT05fQkxPQ0so
U3RyaW5nLCBzdGF0ZW1lbnQsIHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKSk7CiAKICAgICBWZWN0
b3I8U1FMVmFsdWU+IHNxbFZhbHVlczsKIAogICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMSAmJiAh
aXNVbmRlZmluZWRPck51bGwoYXJnc1sxXSkpIHsKLSAgICAgICAgaWYgKGFyZ3NbMV0tPklzT2Jq
ZWN0KCkpIHsKLSAgICAgICAgICAgIHVpbnQzMl90IHNxbEFyZ3NMZW5ndGggPSAwOwotICAgICAg
ICAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IHNxbEFyZ3NPYmplY3QgPSBhcmdzWzFdLT5Ub09i
amVjdCgpOwotICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gbGVuZ3RoR2V0dGVyOwor
ICAgICAgICBpZiAoIWFyZ3NbMV0tPklzT2JqZWN0KCkpCisgICAgICAgICAgICByZXR1cm4gdGhy
b3dFcnJvcihUWVBFX01JU01BVENIX0VSUik7CisKKyAgICAgICAgdWludDMyX3Qgc3FsQXJnc0xl
bmd0aCA9IDA7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBzcWxBcmdzT2JqZWN0ID0g
YXJnc1sxXS0+VG9PYmplY3QoKTsKKyAgICAgICAgRVhDRVBUSU9OX0JMT0NLKHY4OjpMb2NhbDx2
ODo6VmFsdWU+LCBsZW5ndGgsIHNxbEFyZ3NPYmplY3QtPkdldCh2ODo6U3RyaW5nOjpOZXcoImxl
bmd0aCIpKSk7CisKKyAgICAgICAgaWYgKGlzVW5kZWZpbmVkT3JOdWxsKGxlbmd0aCkpCisgICAg
ICAgICAgICBzcWxBcmdzTGVuZ3RoID0gc3FsQXJnc09iamVjdC0+R2V0UHJvcGVydHlOYW1lcygp
LT5MZW5ndGgoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc3FsQXJnc0xlbmd0aCA9IGxl
bmd0aC0+VWludDMyVmFsdWUoKTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg
aSA8IHNxbEFyZ3NMZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpJbnRl
Z2VyPiBrZXkgPSB2ODo6SW50ZWdlcjo6TmV3KGkpOworICAgICAgICAgICAgdjg6OkxvY2FsPHY4
OjpWYWx1ZT4gdmFsdWU7CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgdjg6OlRyeUNh
dGNoIGJsb2NrOwotICAgICAgICAgICAgICAgIGxlbmd0aEdldHRlciA9IHNxbEFyZ3NPYmplY3Qt
PkdldCh2ODo6U3RyaW5nOjpOZXcoImxlbmd0aCIpKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9
IHNxbEFyZ3NPYmplY3QtPkdldChrZXkpOwogICAgICAgICAgICAgICAgIGlmIChibG9jay5IYXND
YXVnaHQoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoYmxvY2suRXhj
ZXB0aW9uKCkpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoaXNVbmRlZmluZWRP
ck51bGwobGVuZ3RoR2V0dGVyKSkKLSAgICAgICAgICAgICAgICBzcWxBcmdzTGVuZ3RoID0gc3Fs
QXJnc09iamVjdC0+R2V0UHJvcGVydHlOYW1lcygpLT5MZW5ndGgoKTsKLSAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICBzcWxBcmdzTGVuZ3RoID0gbGVuZ3RoR2V0dGVyLT5VaW50MzJW
YWx1ZSgpOwotCi0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHNxbEFy
Z3NMZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6SW50ZWdlcj4g
a2V5ID0gdjg6OkludGVnZXI6Ok5ldyhpKTsKLSAgICAgICAgICAgICAgICB2ODo6TG9jYWw8djg6
OlZhbHVlPiB2YWx1ZTsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHY4
OjpUcnlDYXRjaCBibG9jazsKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBzcWxBcmdzT2Jq
ZWN0LT5HZXQoa2V5KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGJsb2NrLkhhc0NhdWdodCgp
KQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoYmxvY2suRXhjZXB0
aW9uKCkpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5J
c0VtcHR5KCkgfHwgdmFsdWUtPklzTnVsbCgpKQotICAgICAgICAgICAgICAgICAgICBzcWxWYWx1
ZXMuYXBwZW5kKFNRTFZhbHVlKCkpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlLT5J
c051bWJlcigpKQotICAgICAgICAgICAgICAgICAgICBzcWxWYWx1ZXMuYXBwZW5kKFNRTFZhbHVl
KHZhbHVlLT5OdW1iZXJWYWx1ZSgpKSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgICAgICBzcWxWYWx1ZXMuYXBwZW5kKFNRTFZhbHVlKHRvV2ViQ29yZVN0cmluZyh2YWx1
ZSkpKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZS5Jc0VtcHR5KCkgfHwgdmFsdWUtPklzTnVsbCgp
KQorICAgICAgICAgICAgICAgIHNxbFZhbHVlcy5hcHBlbmQoU1FMVmFsdWUoKSk7CisgICAgICAg
ICAgICBlbHNlIGlmICh2YWx1ZS0+SXNOdW1iZXIoKSkgeworICAgICAgICAgICAgICAgIEVYQ0VQ
VElPTl9CTE9DSyhkb3VibGUsIHNxbFZhbHVlLCB2YWx1ZS0+TnVtYmVyVmFsdWUoKSk7CisgICAg
ICAgICAgICAgICAgc3FsVmFsdWVzLmFwcGVuZChTUUxWYWx1ZShzcWxWYWx1ZSkpOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBFWENFUFRJT05fQkxPQ0soU3RyaW5nLCBz
cWxWYWx1ZSwgdG9XZWJDb3JlU3RyaW5nKHZhbHVlKSk7CisgICAgICAgICAgICAgICAgc3FsVmFs
dWVzLmFwcGVuZChTUUxWYWx1ZShzcWxWYWx1ZSkpOwogICAgICAgICAgICAgfQotICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJzcWxBcmdzIHNob3VsZCBiZSBh
cnJheSBvciBvYmplY3QhIiwgVjhQcm94eTo6VHlwZUVycm9yKTsKKyAgICAgICAgfQogICAgIH0K
IAogICAgIFNRTFRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiA9IFY4U1FMVHJhbnNhY3Rpb246OnRv
TmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwpAQCAtMTAyLDcgKzEwMCw3IEBAIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOFNRTFRyYW5zYWN0aW9uOjoKICAgICBSZWZQdHI8U1FMU3RhdGVtZW50Q2FsbGJh
Y2s+IGNhbGxiYWNrOwogICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMiAmJiAhaXNVbmRlZmluZWRP
ck51bGwoYXJnc1syXSkpIHsKICAgICAgICAgaWYgKCFhcmdzWzJdLT5Jc09iamVjdCgpKQotICAg
ICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIlN0YXRlbWVudCBjYWxsYmFjayBtdXN0IGJlIG9m
IHZhbGlkIHR5cGUuIiwgVjhQcm94eTo6VHlwZUVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiB0
aHJvd0Vycm9yKFRZUEVfTUlTTUFUQ0hfRVJSKTsKIAogICAgICAgICBpZiAoZnJhbWUpCiAgICAg
ICAgICAgICBjYWxsYmFjayA9IFY4U1FMU3RhdGVtZW50Q2FsbGJhY2s6OmNyZWF0ZShhcmdzWzJd
LCBmcmFtZSk7CkBAIC0xMTEsNyArMTA5LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4U1FM
VHJhbnNhY3Rpb246OgogICAgIFJlZlB0cjxTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrPiBlcnJv
ckNhbGxiYWNrOwogICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMyAmJiAhaXNVbmRlZmluZWRPck51
bGwoYXJnc1szXSkpIHsKICAgICAgICAgaWYgKCFhcmdzWzNdLT5Jc09iamVjdCgpKQotICAgICAg
ICAgICAgcmV0dXJuIHRocm93RXJyb3IoIlN0YXRlbWVudCBlcnJvciBjYWxsYmFjayBtdXN0IGJl
IG9mIHZhbGlkIHR5cGUuIiwgVjhQcm94eTo6VHlwZUVycm9yKTsKKyAgICAgICAgICAgIHJldHVy
biB0aHJvd0Vycm9yKFRZUEVfTUlTTUFUQ0hfRVJSKTsKIAogICAgICAgICBpZiAoZnJhbWUpCiAg
ICAgICAgICAgICBlcnJvckNhbGxiYWNrID0gVjhTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrOjpj
cmVhdGUoYXJnc1szXSwgZnJhbWUpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcAkocmV2aXNpb24g
MCkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25TeW5jQ3Vz
dG9tLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpZiBFTkFCTEUoREFUQUJBU0UpCisKKyNpbmNsdWRlICJWOFNRTFRyYW5zYWN0aW9uU3lu
Yy5oIgorCisjaW5jbHVkZSAiRGF0YWJhc2VTeW5jLmgiCisjaW5jbHVkZSAiU1FMUmVzdWx0U2V0
LmgiCisjaW5jbHVkZSAiU1FMVmFsdWUuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNs
dWRlICJWOEJpbmRpbmdNYWNyb3MuaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgorCit1c2luZyBuYW1lc3BhY2UgV1RGOworCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFNRTFRyYW5zYWN0aW9uU3luYzo6ZXhlY3V0
ZVNxbENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRT
KCJET00uU1FMVHJhbnNhY3Rpb25TeW5jLmV4ZWN1dGVTcWwoKSIpOworCisgICAgaWYgKCFhcmdz
Lkxlbmd0aCgpKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihTWU5UQVhfRVJSKTsKKworICAg
IEVYQ0VQVElPTl9CTE9DSyhTdHJpbmcsIHN0YXRlbWVudCwgdG9XZWJDb3JlU3RyaW5nKGFyZ3Nb
MF0pKTsKKworICAgIFZlY3RvcjxTUUxWYWx1ZT4gc3FsVmFsdWVzOworCisgICAgaWYgKGFyZ3Mu
TGVuZ3RoKCkgPiAxICYmICFpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzFdKSkgeworICAgICAgICBp
ZiAoIWFyZ3NbMV0tPklzT2JqZWN0KCkpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihU
WVBFX01JU01BVENIX0VSUik7CisKKyAgICAgICAgdWludDMyX3Qgc3FsQXJnc0xlbmd0aCA9IDA7
CisgICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBzcWxBcmdzT2JqZWN0ID0gYXJnc1sxXS0+
VG9PYmplY3QoKTsKKyAgICAgICAgRVhDRVBUSU9OX0JMT0NLKHY4OjpMb2NhbDx2ODo6VmFsdWU+
LCBsZW5ndGgsIHNxbEFyZ3NPYmplY3QtPkdldCh2ODo6U3RyaW5nOjpOZXcoImxlbmd0aCIpKSk7
CisKKyAgICAgICAgaWYgKGlzVW5kZWZpbmVkT3JOdWxsKGxlbmd0aCkpCisgICAgICAgICAgICBz
cWxBcmdzTGVuZ3RoID0gc3FsQXJnc09iamVjdC0+R2V0UHJvcGVydHlOYW1lcygpLT5MZW5ndGgo
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc3FsQXJnc0xlbmd0aCA9IGxlbmd0aC0+VWlu
dDMyVmFsdWUoKTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHNxbEFy
Z3NMZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpJbnRlZ2VyPiBrZXkg
PSB2ODo6SW50ZWdlcjo6TmV3KGkpOworICAgICAgICAgICAgRVhDRVBUSU9OX0JMT0NLKHY4OjpM
b2NhbDx2ODo6VmFsdWU+LCB2YWx1ZSwgc3FsQXJnc09iamVjdC0+R2V0KGtleSkpOworCisgICAg
ICAgICAgICBpZiAodmFsdWUuSXNFbXB0eSgpIHx8IHZhbHVlLT5Jc051bGwoKSkKKyAgICAgICAg
ICAgICAgICBzcWxWYWx1ZXMuYXBwZW5kKFNRTFZhbHVlKCkpOworICAgICAgICAgICAgZWxzZSBp
ZiAodmFsdWUtPklzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgICAgICBFWENFUFRJT05fQkxPQ0so
ZG91YmxlLCBzcWxWYWx1ZSwgdmFsdWUtPk51bWJlclZhbHVlKCkpOworICAgICAgICAgICAgICAg
IHNxbFZhbHVlcy5hcHBlbmQoU1FMVmFsdWUoc3FsVmFsdWUpKTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgRVhDRVBUSU9OX0JMT0NLKFN0cmluZywgc3FsVmFsdWUsIHRv
V2ViQ29yZVN0cmluZyh2YWx1ZSkpOworICAgICAgICAgICAgICAgIHNxbFZhbHVlcy5hcHBlbmQo
U1FMVmFsdWUoc3FsVmFsdWUpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKwor
ICAgIFNRTFRyYW5zYWN0aW9uU3luYyogdHJhbnNhY3Rpb24gPSBWOFNRTFRyYW5zYWN0aW9uU3lu
Yzo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
KyAgICB0cmFuc2FjdGlvbi0+ZXhlY3V0ZVNRTChzdGF0ZW1lbnQsIHNxbFZhbHVlcywgZWMpOwor
ICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYyk7CisKKyAgICByZXR1cm4gdjg6OlVuZGVm
aW5lZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20u
Y3BwCShyZXZpc2lvbiA1ODk0MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29y
a2VyQ29udGV4dEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEwICszMywxNSBAQAog
I2lmIEVOQUJMRShXT1JLRVJTKQogI2luY2x1ZGUgIlY4V29ya2VyQ29udGV4dC5oIgogCisjaWYg
RU5BQkxFKERBVEFCQVNFKQorI2luY2x1ZGUgIlY4RGF0YWJhc2VDYWxsYmFjay5oIgorI2luY2x1
ZGUgIlY4RGF0YWJhc2VTeW5jLmgiCisjZW5kaWYKICNpbmNsdWRlICJET01UaW1lci5oIgogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJTY2hlZHVsZWRBY3Rpb24uaCIKICNp
bmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmdNYWNyb3MuaCIKICNpbmNs
dWRlICJWOFByb3h5LmgiCiAjaW5jbHVkZSAiVjhVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJWOFdv
cmtlckNvbnRleHRFdmVudExpc3RlbmVyLmgiCkBAIC0xMzYsNiArMTQxLDM2IEBAIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB0b1Y4KFdvcmtlckNvbnRleHQKICAgICByZXR1cm4gZ2xvYmFsOwogfQog
CisjaWYgRU5BQkxFKERBVEFCQVNFKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V29ya2VyQ29u
dGV4dDo6b3BlbkRhdGFiYXNlU3luY0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
Cit7CisgICAgSU5DX1NUQVRTKCJET00uVjhXb3JrZXJDb250ZXh0Lm9wZW5EYXRhYmFzZVN5bmMo
KSIpOworICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgNCkKKyAgICAgICAgcmV0dXJuIHRocm93RXJy
b3IoU1lOVEFYX0VSUik7CisKKyAgICBFWENFUFRJT05fQkxPQ0soU3RyaW5nLCBuYW1lLCB0b1dl
YkNvcmVTdHJpbmcoYXJnc1swXSkpOworICAgIEVYQ0VQVElPTl9CTE9DSyhTdHJpbmcsIHZlcnNp
b24sIHRvV2ViQ29yZVN0cmluZyhhcmdzWzFdKSk7CisgICAgRVhDRVBUSU9OX0JMT0NLKFN0cmlu
ZywgZGlzcGxheU5hbWUsIHRvV2ViQ29yZVN0cmluZyhhcmdzWzJdKSk7CisgICAgRVhDRVBUSU9O
X0JMT0NLKHVuc2lnbmVkIGxvbmcsIGVzdGltYXRlZFNpemUsIGFyZ3NbM10tPlVpbnQzMlZhbHVl
KCkpOworCisgICAgV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9IFY4V29ya2VyQ29udGV4
dDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CisKKyAgICBSZWZQdHI8RGF0YWJhc2VDYWxsYmFj
az4gY3JlYXRpb25DYWxsYmFjazsKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA+PSA1KSB7CisgICAg
ICAgIGlmICghYXJnc1s0XS0+SXNPYmplY3QoKSkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd0Vy
cm9yKFRZUEVfTUlTTUFUQ0hfRVJSKTsKKworICAgICAgICBjcmVhdGlvbkNhbGxiYWNrID0gVjhE
YXRhYmFzZUNhbGxiYWNrOjpjcmVhdGUoYXJnc1s0XSwgMCk7CisgICAgfQorCisgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlc3VsdCA9IHRvVjgo
d29ya2VyQ29udGV4dC0+b3BlbkRhdGFiYXNlU3luYyhuYW1lLCB2ZXJzaW9uLCBkaXNwbGF5TmFt
ZSwgZXN0aW1hdGVkU2l6ZSwgY3JlYXRpb25DYWxsYmFjay5yZWxlYXNlKCksIGVjKSk7CisKKyAg
ICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMpOworICAgIHJldHVybiByZXN1bHQ7Cit9Cisj
ZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdPUktF
UlMpCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5pZGwJKHJldmlzaW9uIDU4OTQxKQorKysgV2ViQ29yZS9z
dG9yYWdlL0RhdGFiYXNlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsOCBAQCBtb2R1
bGUgc3RvcmFnZSB7CiAKICAgICBpbnRlcmZhY2UgWwogICAgICAgICBDb25kaXRpb25hbD1EQVRB
QkFTRSwKLSAgICAgICAgT21pdENvbnN0cnVjdG9yCisgICAgICAgIE9taXRDb25zdHJ1Y3RvciwK
KyAgICAgICAgTm9TdGF0aWNUYWJsZXMKICAgICBdIERhdGFiYXNlIHsKICAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIERPTVN0cmluZyB2ZXJzaW9uOwogICAgICAgICBbQ3VzdG9tXSB2b2lkIGNo
YW5nZVZlcnNpb24oaW4gRE9NU3RyaW5nIG9sZFZlcnNpb24sIGluIERPTVN0cmluZyBuZXdWZXJz
aW9uLCBpbiBTUUxUcmFuc2FjdGlvbkNhbGxiYWNrIGNhbGxiYWNrLCBpbiBTUUxUcmFuc2FjdGlv
bkVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjaywgaW4gVm9pZENhbGxiYWNrIHN1Y2Nlc3NDYWxs
YmFjayk7CkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VDYWxsYmFjay5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZUNhbGxiYWNrLmgJKHJldmlzaW9uIDU4OTQx
KQorKysgV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlQ2FsbGJhY2suaAkod29ya2luZyBjb3B5KQpA
QCAtMzgsMTIgKzM4LDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERhdGFiYXNl
OworY2xhc3MgRGF0YWJhc2VTeW5jOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAog
Y2xhc3MgRGF0YWJhc2VDYWxsYmFjayA6IHB1YmxpYyBUaHJlYWRTYWZlU2hhcmVkPERhdGFiYXNl
Q2FsbGJhY2s+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5EYXRhYmFzZUNhbGxiYWNrKCkgeyB9
CiAgICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBE
YXRhYmFzZSopID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIERhdGFiYXNlU3luYyopID0gMDsKIH07CiAKIH0KSW5kZXg6IFdlYkNvcmUv
c3RvcmFnZS9EYXRhYmFzZUNhbGxiYWNrLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3Jh
Z2UvRGF0YWJhc2VDYWxsYmFjay5pZGwJKHJldmlzaW9uIDU4OTQxKQorKysgV2ViQ29yZS9zdG9y
YWdlL0RhdGFiYXNlQ2FsbGJhY2suaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw1ICszMiw2IEBA
IG1vZHVsZSBzdG9yYWdlIHsKICAgICAgICAgQ2FsbGJhY2sKICAgICBdIERhdGFiYXNlQ2FsbGJh
Y2sgewogICAgICAgICBib29sZWFuIGhhbmRsZUV2ZW50KGluIERhdGFiYXNlIGRhdGFiYXNlKTsK
KyAgICAgICAgYm9vbGVhbiBoYW5kbGVFdmVudChpbiBEYXRhYmFzZVN5bmMgZGF0YWJhc2UpOwog
ICAgIH07CiB9CkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VTeW5jLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VTeW5jLmNwcAkocmV2aXNpb24gNTg5NDEp
CisrKyBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VTeW5jLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTEsMTIgKzkxLDEyIEBAIFN0cmluZyBEYXRhYmFzZVN5bmM6OnZlcnNpb24oKSBjb25zdAogICAg
IHJldHVybiBTdHJpbmcoKTsKIH0KIAotdm9pZCBEYXRhYmFzZVN5bmM6OmNoYW5nZVZlcnNpb24o
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvblN5
bmNDYWxsYmFjaz4pCit2b2lkIERhdGFiYXNlU3luYzo6Y2hhbmdlVmVyc2lvbihjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNr
PiwgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+aXNDb250ZXh0VGhyZWFkKCkpOwogfQogCi12b2lkIERhdGFiYXNlU3luYzo6dHJhbnNhY3Rp
b24oUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjaz4sIGJvb2wpCit2b2lkIERh
dGFiYXNlU3luYzo6dHJhbnNhY3Rpb24oUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvblN5bmNDYWxs
YmFjaz4sIGJvb2wsIEV4Y2VwdGlvbkNvZGUmKQogewogICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsKIH0KSW5kZXg6IFdlYkNvcmUvc3RvcmFn
ZS9EYXRhYmFzZVN5bmMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VT
eW5jLmgJKHJldmlzaW9uIDU4OTQxKQorKysgV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlU3luYy5o
CSh3b3JraW5nIGNvcHkpCkBAIC01Myw4ICs1Myw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxEYXRhYmFzZVN5bmM+IG9wZW5EYXRhYmFzZVN5bmMoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwgUGFz
c1JlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFN0cmluZyB2
ZXJzaW9uKCkgY29uc3Q7Ci0gICAgdm9pZCBjaGFuZ2VWZXJzaW9uKGNvbnN0IFN0cmluZyYgb2xk
VmVyc2lvbiwgY29uc3QgU3RyaW5nJiBuZXdWZXJzaW9uLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0
aW9uU3luY0NhbGxiYWNrPik7Ci0gICAgdm9pZCB0cmFuc2FjdGlvbihQYXNzUmVmUHRyPFNRTFRy
YW5zYWN0aW9uU3luY0NhbGxiYWNrPiwgYm9vbCByZWFkT25seSk7CisgICAgdm9pZCBjaGFuZ2VW
ZXJzaW9uKGNvbnN0IFN0cmluZyYgb2xkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBuZXdWZXJzaW9u
LCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrPiwgRXhjZXB0aW9uQ29kZSYp
OworICAgIHZvaWQgdHJhbnNhY3Rpb24oUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvblN5bmNDYWxs
YmFjaz4sIGJvb2wgcmVhZE9ubHksIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIC8vIEludGVybmFs
IGVuZ2luZSBzdXBwb3J0CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlU3luYy5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlU3luYy5pZGwJKHJldmlz
aW9uIDApCisrKyBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VTeW5jLmlkbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YK
KyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKK21vZHVsZSBzdG9yYWdlIHsKKworICAgIGludGVyZmFjZSBbCisg
ICAgICAgIENvbmRpdGlvbmFsPURBVEFCQVNFLAorICAgICAgICBPbWl0Q29uc3RydWN0b3IsCisg
ICAgICAgIE5vU3RhdGljVGFibGVzCisgICAgXSBEYXRhYmFzZVN5bmMgeworICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZlcnNpb247CisgICAgICAgIFtDdXN0b21dIHZvaWQg
Y2hhbmdlVmVyc2lvbihpbiBET01TdHJpbmcgb2xkVmVyc2lvbiwgaW4gRE9NU3RyaW5nIG5ld1Zl
cnNpb24sIGluIFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrIGNhbGxiYWNrKTsKKyAgICAgICAg
W0N1c3RvbV0gdm9pZCB0cmFuc2FjdGlvbihpbiBTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjayBj
YWxsYmFjayk7CisgICAgICAgIFtDdXN0b21dIHZvaWQgcmVhZFRyYW5zYWN0aW9uKGluIFNRTFRy
YW5zYWN0aW9uU3luY0NhbGxiYWNrIGNhbGxiYWNrKTsKKyAgICB9OworCit9CkluZGV4OiBXZWJD
b3JlL3N0b3JhZ2UvU1FMRXJyb3IuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9T
UUxFcnJvci5pZGwJKHJldmlzaW9uIDU4OTQxKQorKysgV2ViQ29yZS9zdG9yYWdlL1NRTEVycm9y
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsOCBAQCBtb2R1bGUgc3RvcmFnZSB7CiAK
ICAgICBpbnRlcmZhY2UgWwogICAgICAgICBDb25kaXRpb25hbD1EQVRBQkFTRSwKLSAgICAgICAg
T21pdENvbnN0cnVjdG9yCisgICAgICAgIE9taXRDb25zdHJ1Y3RvciwKKyAgICAgICAgTm9TdGF0
aWNUYWJsZXMKICAgICBdIFNRTEVycm9yIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVu
c2lnbmVkIGxvbmcgY29kZTsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBt
ZXNzYWdlOwpJbmRleDogV2ViQ29yZS9zdG9yYWdlL1NRTFJlc3VsdFNldC5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdG9yYWdlL1NRTFJlc3VsdFNldC5pZGwJKHJldmlzaW9uIDU4OTQxKQor
KysgV2ViQ29yZS9zdG9yYWdlL1NRTFJlc3VsdFNldC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDcgKzMwLDggQEAgbW9kdWxlIHN0b3JhZ2UgewogCiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAg
Q29uZGl0aW9uYWw9REFUQUJBU0UsCi0gICAgICAgIE9taXRDb25zdHJ1Y3RvcgorICAgICAgICBP
bWl0Q29uc3RydWN0b3IsCisgICAgICAgIE5vU3RhdGljVGFibGVzCiAgICAgXSBTUUxSZXN1bHRT
ZXQgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgU1FMUmVzdWx0U2V0Um93TGlzdCByb3dz
OwogCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvU1FMUmVzdWx0U2V0Um93TGlzdC5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL1NRTFJlc3VsdFNldFJvd0xpc3QuaWRsCShyZXZpc2lv
biA1ODk0MSkKKysrIFdlYkNvcmUvc3RvcmFnZS9TUUxSZXN1bHRTZXRSb3dMaXN0LmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNyArMzAsOCBAQCBtb2R1bGUgc3RvcmFnZSB7CiAKICAgICBpbnRl
cmZhY2UgWwogICAgICAgICBDb25kaXRpb25hbD1EQVRBQkFTRSwKLSAgICAgICAgT21pdENvbnN0
cnVjdG9yCisgICAgICAgIE9taXRDb25zdHJ1Y3RvciwKKyAgICAgICAgTm9TdGF0aWNUYWJsZXMK
ICAgICBdIFNRTFJlc3VsdFNldFJvd0xpc3QgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
dW5zaWduZWQgbG9uZyBsZW5ndGg7CiAgICAgICAgIFtDdXN0b21dIERPTU9iamVjdCBpdGVtKGlu
IHVuc2lnbmVkIGxvbmcgaW5kZXgpOwpJbmRleDogV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0
aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uaWRs
CShyZXZpc2lvbiA1ODk0MSkKKysrIFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDggQEAgbW9kdWxlIHN0b3JhZ2UgewogCiAgICAg
aW50ZXJmYWNlIFsKICAgICAgICAgQ29uZGl0aW9uYWw9REFUQUJBU0UsCi0gICAgICAgIE9taXRD
b25zdHJ1Y3RvcgorICAgICAgICBPbWl0Q29uc3RydWN0b3IsCisgICAgICAgIE5vU3RhdGljVGFi
bGVzCiAgICAgXSBTUUxUcmFuc2FjdGlvbiB7CiAgICAgICAgIFtDdXN0b21dIHZvaWQgZXhlY3V0
ZVNxbChpbiBET01TdHJpbmcgc3FsU3RhdGVtZW50LCBpbiBPYmplY3RBcnJheSBhcmd1bWVudHMs
IGluIFNRTFN0YXRlbWVudENhbGxiYWNrIGNhbGxiYWNrLCBpbiBTUUxTdGF0ZW1lbnRFcnJvckNh
bGxiYWNrIGVycm9yQ2FsbGJhY2spOwogICAgIH07CkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvU1FM
VHJhbnNhY3Rpb25TeW5jLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJh
bnNhY3Rpb25TeW5jLmlkbAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFu
c2FjdGlvblN5bmMuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5j
LiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIHN0
b3JhZ2UgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9REFUQUJBU0Us
CisgICAgICAgIE9taXRDb25zdHJ1Y3RvciwKKyAgICAgICAgTm9TdGF0aWNUYWJsZXMKKyAgICBd
IFNRTFRyYW5zYWN0aW9uU3luYyB7CisgICAgICAgIFtDdXN0b21dIFNRTFJlc3VsdFNldCBleGVj
dXRlU3FsKGluIERPTVN0cmluZyBzcWxTdGF0ZW1lbnQsIGluIE9iamVjdEFycmF5IGFyZ3VtZW50
cyk7CisgICAgfTsKK30KSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmND
YWxsYmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5
bmNDYWxsYmFjay5oCShyZXZpc2lvbiA1ODk0MSkKKysrIFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFu
c2FjdGlvblN5bmNDYWxsYmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIGNs
YXNzIFNRTFRyYW5zYWN0aW9uU3luYzsKIGNsYXNzIFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNr
IDogcHVibGljIFJlZkNvdW50ZWQ8U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+IHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5TUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjaygpIHsgfQotICAgIHZp
cnR1YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgU1FMVHJhbnNh
Y3Rpb25TeW5jKiwgYm9vbCYgcmFpc2VkRXhjZXB0aW9uKSA9IDA7CisgICAgdmlydHVhbCBib29s
IGhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBTUUxUcmFuc2FjdGlvblN5bmMq
KSA9IDA7CiB9OwogCiB9CkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5j
Q2FsbGJhY2suaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlv
blN5bmNDYWxsYmFjay5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJh
bnNhY3Rpb25TeW5jQ2FsbGJhY2suaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21w
dXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQK
KyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
bW9kdWxlIHN0b3JhZ2UgeworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPURB
VEFCQVNFLAorICAgICAgICBDYWxsYmFjaworICAgIF0gU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJh
Y2sgeworICAgICAgICBib29sZWFuIGhhbmRsZUV2ZW50KGluIFNRTFRyYW5zYWN0aW9uU3luYyB0
cmFuc2FjdGlvbik7CisgICAgfTsKK30KSW5kZXg6IFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250
ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAJ
KHJldmlzaW9uIDU4OTQxKQorKysgV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yODEsNiArMjgxLDIwIEBAIFBhc3NSZWZQdHI8RGF0YWJhc2U+IFdv
cmtlckNvbnRleHQ6Om9wZW4KIAogICAgIHJldHVybiBEYXRhYmFzZTo6b3BlbkRhdGFiYXNlKHRo
aXMsIG5hbWUsIHZlcnNpb24sIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplLCBjcmVhdGlvbkNh
bGxiYWNrLCBlYyk7CiB9CisKK1Bhc3NSZWZQdHI8RGF0YWJhc2VTeW5jPiBXb3JrZXJDb250ZXh0
OjpvcGVuRGF0YWJhc2VTeW5jKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJz
aW9uLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNp
emUsIFBhc3NSZWZQdHI8RGF0YWJhc2VDYWxsYmFjaz4gY3JlYXRpb25DYWxsYmFjaywgRXhjZXB0
aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFzZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NEYXRh
YmFzZSgpKSB7CisgICAgICAgIGVjID0gU0VDVVJJVFlfRVJSOworICAgICAgICByZXR1cm4gMDsK
KyAgICB9CisKKyAgICBBU1NFUlQoRGF0YWJhc2VTeW5jOjppc0F2YWlsYWJsZSgpKTsKKyAgICBp
ZiAoIURhdGFiYXNlU3luYzo6aXNBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICByZXR1cm4gRGF0YWJhc2VTeW5jOjpvcGVuRGF0YWJhc2VTeW5jKHRoaXMsIG5hbWUsIHZlcnNp
b24sIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplLCBjcmVhdGlvbkNhbGxiYWNrLCBlYyk7Cit9
CiAjZW5kaWYKIAogYm9vbCBXb3JrZXJDb250ZXh0Ojppc0NvbnRleHRUaHJlYWQoKSBjb25zdApJ
bmRleDogV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCShyZXZpc2lvbiA1ODk0MSkKKysrIFdlYkNvcmUv
d29ya2Vycy9Xb3JrZXJDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAK
IAogI2luY2x1ZGUgIkF0b21pY1N0cmluZ0hhc2guaCIKICNpbmNsdWRlICJEYXRhYmFzZS5oIgor
I2luY2x1ZGUgIkRhdGFiYXNlU3luYy5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQ2FsbGJhY2suaCIK
ICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgpAQCAt
MTA1LDYgKzEwNiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoREFUQUJBU0Up
CiAgICAgICAgIC8vIEhUTUwgNSBjbGllbnQtc2lkZSBkYXRhYmFzZQogICAgICAgICBQYXNzUmVm
UHRyPERhdGFiYXNlPiBvcGVuRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIHZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0
aW1hdGVkU2l6ZSwgUGFzc1JlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiBjcmVhdGlvbkNhbGxiYWNr
LCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgIFBhc3NSZWZQdHI8RGF0YWJhc2VTeW5jPiBvcGVu
RGF0YWJhc2VTeW5jKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBj
b25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUsIFBh
c3NSZWZQdHI8RGF0YWJhc2VDYWxsYmFjaz4gY3JlYXRpb25DYWxsYmFjaywgRXhjZXB0aW9uQ29k
ZSYpOworCiAgICAgICAgIC8vIE5vdCBpbXBsZW1lbnRlZCB5ZXQuCiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBpc0RhdGFiYXNlUmVhZE9ubHkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAg
ICAvLyBOb3QgaW1wbGVtZW50ZWQgeWV0LgpJbmRleDogV2ViQ29yZS93b3JrZXJzL1dvcmtlckNv
bnRleHQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0Lmlk
bAkocmV2aXNpb24gNTg5NDEpCisrKyBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5LDggKzQ5LDExIEBAIG1vZHVsZSB0aHJlYWRzIHsKICAgICAg
ICAgLy8gV29ya2VyVXRpbHMKICAgICAgICAgW0N1c3RvbV0gdm9pZCBpbXBvcnRTY3JpcHRzKC8q
W1ZhcmlhZGljXSBpbiBET01TdHJpbmcgdXJscyAqLyk7CiAgICAgICAgICAgICAgICAgIGF0dHJp
YnV0ZSBbUmVwbGFjZWFibGVdIFdvcmtlck5hdmlnYXRvciBuYXZpZ2F0b3I7CisKKyNpZiBkZWZp
bmVkKEVOQUJMRV9EQVRBQkFTRSkgJiYgRU5BQkxFX0RBVEFCQVNFCiAgICAgICAgIC8vIERhdGFi
YXNlIG9wZW5EYXRhYmFzZShpbiBET01TdHJpbmcgbmFtZSwgaW4gRE9NU3RyaW5nIHZlcnNpb24s
IGluIERPTVN0cmluZyBkaXNwbGF5TmFtZSwgaW4gdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXpl
KTsKLSAgICAgICAgLy8gRGF0YWJhc2VTeW5jIG9wZW5EYXRhYmFzZVN5bmMoaW4gRE9NU3RyaW5n
IG5hbWUsIGluIERPTVN0cmluZyB2ZXJzaW9uLCBpbiBET01TdHJpbmcgZGlzcGxheU5hbWUsIGlu
IHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSk7CisgICAgICAgIFtFbmFibGVBdFJ1bnRpbWUs
IEN1c3RvbV0gRGF0YWJhc2VTeW5jIG9wZW5EYXRhYmFzZVN5bmMoaW4gRE9NU3RyaW5nIG5hbWUs
IGluIERPTVN0cmluZyB2ZXJzaW9uLCBpbiBET01TdHJpbmcgZGlzcGxheU5hbWUsIGluIHVuc2ln
bmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwgaW4gRGF0YWJhc2VDYWxsYmFjayBjcmVhdGlvbkNhbGxi
YWNrKTsKKyNlbmRpZgogCiAgICAgICAgIC8vIFRpbWVycwogICAgICAgICBbQ3VzdG9tXSBsb25n
IHNldFRpbWVvdXQoaW4gVGltZW91dEhhbmRsZXIgaGFuZGxlciwgaW4gbG9uZyB0aW1lb3V0KTsK
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU4OTQxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMDUtMDUgIER1bWl0cnUgRGFuaWxpdWMg
IDxkdW1pQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUZXN0IHRoYXQgb3BlbkRhdGFiYXNlU3luYygpIHRocm93cyBhbiBlcnJv
ciB3aGVuIGFuIGFyZ3VtZW50IGlzIGludmFsaWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDk5NAorCisgICAgICAgICogZmFzdC93b3JrZXJzL3N0
b3JhZ2U6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd29ya2Vycy9zdG9yYWdlL29wZW4tZGF0YWJh
c2Utc3luYy1pbnB1dHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3dvcmtl
cnMvc3RvcmFnZS9vcGVuLWRhdGFiYXNlLXN5bmMtaW5wdXRzLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3Qvd29ya2Vycy9zdG9yYWdlL3Jlc291cmNlczogQWRkZWQuCisgICAgICAgICogZmFz
dC93b3JrZXJzL3N0b3JhZ2UvcmVzb3VyY2VzL29wZW4tZGF0YWJhc2Utc3luYy1pbnB1dHMuanM6
IEFkZGVkLgorICAgICAgICAobm90QVN0cmluZy50b1N0cmluZyk6CisgICAgICAgICogZmFzdC93
b3JrZXJzL3N0b3JhZ2UvcmVzb3VyY2VzL3Rlc3QtaW5wdXRzLWNvbW1vbi5qczogQWRkZWQuCisg
ICAgICAgIChsb2cpOgorICAgICAgICAoZmluaXNoVGVzdCk6CisgICAgICAgIChydW5UZXN0Lndv
cmtlci5vbm1lc3NhZ2UpOgorICAgICAgICAocnVuVGVzdCk6CisKIDIwMTAtMDUtMDYgIERhbiBC
ZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBTa2lwIGNvbXBvc2l0aW5nL2xh
eWVyLWNyZWF0aW9uL292ZXJmbG93LXNjcm9sbC1vdmVybGFwLmh0bWwgZnJvbSByNTg5MzYsIHNp
bmNlIGhhcmR3YXJlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc3RvcmFnZS9vcGVu
LWRhdGFiYXNlLXN5bmMtaW5wdXRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L3dvcmtlcnMvc3RvcmFnZS9vcGVuLWRhdGFiYXNlLXN5bmMtaW5wdXRzLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zdG9yYWdl
L29wZW4tZGF0YWJhc2Utc3luYy1pbnB1dHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDggQEAKK1RoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgb3BlbkRhdGFiYXNlU3luYygp
IGFjY2VwdHMgb25seSB2YWxpZCBwYXJhbWV0ZXJzLgorUEFTUzogU1lOVEFYX0VSUjogRE9NIEV4
Y2VwdGlvbiAxMgorUEFTUzogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMgorUEFTUzogdW5k
ZWZpbmVkCitQQVNTOiB1bmRlZmluZWQKK1BBU1M6IHVuZGVmaW5lZAorUEFTUzogVFlQRV9NSVNN
QVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC93b3Jr
ZXJzL3N0b3JhZ2Uvb3Blbi1kYXRhYmFzZS1zeW5jLWlucHV0cy5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zdG9yYWdlL29wZW4tZGF0YWJhc2Utc3luYy1pbnB1
dHMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zdG9yYWdl
L29wZW4tZGF0YWJhc2Utc3luYy1pbnB1dHMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
MiBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy90ZXN0LWlucHV0cy1jb21tb24uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBv
bmxvYWQ9InJ1blRlc3QoJ3Jlc291cmNlcy9vcGVuLWRhdGFiYXNlLXN5bmMtaW5wdXRzLmpzJyki
PgorVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBvcGVuRGF0YWJhc2VTeW5jKCkgYWNjZXB0cyBv
bmx5IHZhbGlkIHBhcmFtZXRlcnMuCis8cHJlIGlkPSJjb25zb2xlIj4KKzwvcHJlPgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3N0b3JhZ2UvcmVzb3Vy
Y2VzL29wZW4tZGF0YWJhc2Utc3luYy1pbnB1dHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC93b3JrZXJzL3N0b3JhZ2UvcmVzb3VyY2VzL29wZW4tZGF0YWJhc2Utc3luYy1pbnB1
dHMuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc3RvcmFnZS9y
ZXNvdXJjZXMvb3Blbi1kYXRhYmFzZS1zeW5jLWlucHV0cy5qcwkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw2NCBAQAordmFyIGRiOworCit2YXIgbm90QVN0cmluZyA9IHsKKyAgICB0b1N0cmluZzog
ZnVuY3Rpb24oKSB7IHRocm93ICJmb28iOyB9Cit9OworCit0cnkgeworICAgIGRiID0gb3BlbkRh
dGFiYXNlU3luYygpOworICAgIHBvc3RNZXNzYWdlKCJGQUlMOiBjYWxsaW5nIG9wZW5EYXRhYmFz
ZVN5bmMoKSB3aXRob3V0IGFueSBhcmd1bWVudCBzaG91bGQgdGhyb3cgYW4gZXhjZXB0aW9uLiIp
OworfSBjYXRjaCAoZXJyKSB7CisgICAgcG9zdE1lc3NhZ2UoIlBBU1M6ICIgKyBlcnIubWVzc2Fn
ZSk7Cit9CisKK3RyeSB7CisgICAgZGIgPSBvcGVuRGF0YWJhc2VTeW5jKCJEQk5hbWUiLCAiREJW
ZXJzaW9uIik7CisgICAgcG9zdE1lc3NhZ2UoIkZBSUw6IGNhbGxpbmcgb3BlbkRhdGFiYXNlU3lu
YygpIHdpdGggZmV3ZXIgdGhhbiBmb3VyIGFyZ3VtZW50cyBzaG91bGQgdGhyb3cgYW4gZXhjZXB0
aW9uLiIpOworfSBjYXRjaCAoZXJyKSB7CisgICAgcG9zdE1lc3NhZ2UoIlBBU1M6ICIgKyBlcnIu
bWVzc2FnZSk7Cit9CisKK3RyeSB7CisgICAgZGIgPSBvcGVuRGF0YWJhc2VTeW5jKG5vdEFTdHJp
bmcsICJEQlZlcnNpb24iLCAiREJEZXNjcmlwdGlvbiIsIDEwMjQpOworICAgIHBvc3RNZXNzYWdl
KCJGQUlMOiB0aGUgZmlyc3QgYXJndW1lbnQgdG8gb3BlbkRhdGFiYXNlU3luYygpIG11c3QgYmUg
YSBzdHJpbmcuIik7Cit9IGNhdGNoIChlcnIpIHsKKyAgICBwb3N0TWVzc2FnZSgiUEFTUzogIiAr
IGVyci5tZXNzYWdlKTsKK30KKwordHJ5IHsKKyAgICBkYiA9IG9wZW5EYXRhYmFzZVN5bmMoIkRC
TmFtZSIsIG5vdEFTdHJpbmcsICJEQkRlc2NyaXB0aW9uIiwgMTAyNCk7CisgICAgcG9zdE1lc3Nh
Z2UoIkZBSUw6IHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gb3BlbkRhdGFiYXNlU3luYygpIG11c3Qg
YmUgYSBzdHJpbmcuIik7Cit9IGNhdGNoIChlcnIpIHsKKyAgICBwb3N0TWVzc2FnZSgiUEFTUzog
IiArIGVyci5tZXNzYWdlKTsKK30KKwordHJ5IHsKKyAgICBkYiA9IG9wZW5EYXRhYmFzZVN5bmMo
IkRCTmFtZSIsICJEQlZlcnNpb24iLCBub3RBU3RyaW5nLCAxMDI0KTsKKyAgICBwb3N0TWVzc2Fn
ZSgiRkFJTDogdGhlIGZvdXJ0aCBhcmd1bWVudCB0byBvcGVuRGF0YWJhc2VTeW5jKCkgbXVzdCBi
ZSBhbiBpbnRlZ2VyLiIpOworfSBjYXRjaCAoZXJyKSB7CisgICAgcG9zdE1lc3NhZ2UoIlBBU1M6
ICIgKyBlcnIubWVzc2FnZSk7Cit9CisKK3RyeSB7CisgICAgZGIgPSBvcGVuRGF0YWJhc2VTeW5j
KCJEQk5hbWUiLCAiREJWZXJzaW9uIiwgIkRCRGVzY3JpcHRpb24iLCAxMDI0LCAwKTsKKyAgICBw
b3N0TWVzc2FnZSgiRkFJTDogdGhlIGZpZnRoIGFyZ3VtZW50IHRvIG9wZW5EYXRhYmFzZVN5bmMo
KSBtdXN0IGJlIGFuIG9iamVjdCwgaWYgcHJlc2VudC4iKTsKK30gY2F0Y2ggKGVycikgeworICAg
IHBvc3RNZXNzYWdlKCJQQVNTOiAiICsgZXJyLm1lc3NhZ2UpOworfQorCisvLyBGSVhNRTogVW5j
b21tZW50IHRoZXNlIHRlc3RzIHdoZW4gdGhlIHN5bmMgREIgQVBJIGlzIGltcGxlbWVudGVkLgor
Ly90cnkgeworLy8gICAgZGIgPSBvcGVuRGF0YWJhc2VTeW5jKCJEQk5hbWUiLCAiREJWZXJzaW9u
IiwgIkRCRGVzY3JpcHRpb24iLCAxMDI0KTsKKy8vICAgIHBvc3RNZXNzYWdlKCJQQVNTOiBvcGVu
RGF0YWJhc2VTeW5jKCkgc3VjY2VlZGVkLiIpOworLy99IGNhdGNoIChlcnIpIHsKKy8vICAgIHBv
c3RNZXNzYWdlKCJGQUlMOiAiICsgZXJyLm1lc3NhZ2UpOworLy99CisvLworLy90cnkgeworLy8g
ICAgZGIgPSBvcGVuRGF0YWJhc2VTeW5jKCJEQk5hbWUiLCAiREJWZXJzaW9uIiwgIkRCRGVzY3Jp
cHRpb24iLCAxMDI0LCBmdW5jdGlvbihkYikgeyB9KTsKKy8vICAgIHBvc3RNZXNzYWdlKCJQQVNT
OiBjYWxsaW5nIG9wZW5EYXRhYmFzZVN5bmMoKSB3aXRoIGEgY3JlYXRpb24gY2FsbGJhY2sgc3Vj
Y2VlZGVkLiIpOworLy99IGNhdGNoIChlcnIpIHsKKy8vICAgIHBvc3RNZXNzYWdlKCJGQUlMOiAi
ICsgZXJyLm1lc3NhZ2UpOworLy99CisKK3Bvc3RNZXNzYWdlKCJkb25lIik7CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L3dvcmtlcnMvc3RvcmFnZS9yZXNvdXJjZXMvdGVzdC1pbnB1dHMtY29tbW9u
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zdG9yYWdlL3Jlc291
cmNlcy90ZXN0LWlucHV0cy1jb21tb24uanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L3dvcmtlcnMvc3RvcmFnZS9yZXNvdXJjZXMvdGVzdC1pbnB1dHMtY29tbW9uLmpzCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDMwIEBACitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCArPSBtZXNzYWdlICsg
Ijxicj4iOworfQorCitmdW5jdGlvbiBmaW5pc2hUZXN0KCkKK3sKKyAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3Qod29ya2VySlNGaWxlKQoreworICAgIGlmICgh
d29ya2VySlNGaWxlKSB7CisgICAgICAgIGxvZygiRkFJTDogbm8gSlMgZmlsZSBzcGVjaWZpZWQg
Zm9yIHRoZSB3b3JrZXIuIik7CisgICAgfQorCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisKKyAg
ICB2YXIgd29ya2VyID0gbmV3IFdvcmtlcih3b3JrZXJKU0ZpbGUpOworICAgIHdvcmtlci5vbm1l
c3NhZ2UgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBpZiAoZXZlbnQuZGF0YSA9PSAiZG9u
ZSIpCisgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGxvZyhldmVudC5kYXRhKTsKKyAgICB9Cit9Cg==
</data>
<flag name="review"
          id="39528"
          type_id="1"
          status="-"
          setter="beidson"
    />
    <flag name="commit-queue"
          id="39529"
          type_id="3"
          status="-"
          setter="dumi"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55426</attachid>
            <date>2010-05-07 15:58:19 -0700</date>
            <delta_ts>2010-05-07 17:02:09 -0700</delta_ts>
            <desc>patch #2: IDL files + JSC and V8 bindings stubs</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>55817</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1ODk3NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTggQEAKKzIwMTAtMDUtMDcgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRpbmcgdGhlIElETCBmaWxlcyBmb3IgdGhlIHN5bmMgREIgQVBJIGFuZCB0aGUgc3R1YnMg
Zm9yIHRoZSBKUyBhbmQgVjggYmluZGluZ3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zNDk5NAorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMuY3Bw
OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZpbGUu
YW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJpOgorICAg
ICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRGF0YWJhc2VTeW5jQ3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpKU0RhdGFiYXNlU3luYzo6Y2hhbmdlVmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU0RhdGFiYXNlU3luYzo6dHJhbnNh
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNEYXRhYmFzZVN5bmM6OnJlYWRUcmFuc2FjdGlv
bik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTU1FMVHJhbnNhY3Rpb25TeW5jOjpleGVjdXRl
U3FsKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJDb250ZXh0OjpvcGVuRGF0YWJhc2VTeW5jKToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhCaW5kaW5nTWFjcm9zLmg6IEFkZGVkLgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFiYXNlU3luY0N1c3RvbS5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6VjhEYXRhYmFzZVN5bmM6OmNoYW5nZVZlcnNpb25DYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpWOERhdGFiYXNlU3luYzo6dHJhbnNhY3Rpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpWOERhdGFiYXNlU3luYzo6cmVhZFRyYW5zYWN0aW9uQ2FsbGJhY2spOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6VjhTUUxUcmFuc2FjdGlvblN5bmM6OmV4ZWN1dGVTcWxDYWxs
YmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFdvcmtlckNvbnRleHQ6Om9wZW5EYXRhYmFzZVN5
bmNDYWxsYmFjayk6CisgICAgICAgICogc3RvcmFnZS9EYXRhYmFzZS5pZGw6CisgICAgICAgICog
c3RvcmFnZS9EYXRhYmFzZUNhbGxiYWNrLmg6CisgICAgICAgICogc3RvcmFnZS9EYXRhYmFzZUNh
bGxiYWNrLmlkbDoKKyAgICAgICAgKiBzdG9yYWdlL0RhdGFiYXNlU3luYy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhYmFzZVN5bmM6OmNoYW5nZVZlcnNpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2VTeW5jOjp0cmFuc2FjdGlvbik6CisgICAgICAgICogc3RvcmFnZS9EYXRhYmFz
ZVN5bmMuaDoKKyAgICAgICAgKiBzdG9yYWdlL0RhdGFiYXNlU3luYy5pZGw6IEFkZGVkLgorICAg
ICAgICAqIHN0b3JhZ2UvU1FMRXJyb3IuaWRsOgorICAgICAgICAqIHN0b3JhZ2UvU1FMUmVzdWx0
U2V0LmlkbDoKKyAgICAgICAgKiBzdG9yYWdlL1NRTFJlc3VsdFNldFJvd0xpc3QuaWRsOgorICAg
ICAgICAqIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uaWRsOgorICAgICAgICAqIHN0b3JhZ2UvU1FM
VHJhbnNhY3Rpb25TeW5jLmlkbDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9TUUxUcmFuc2Fj
dGlvblN5bmNDYWxsYmFjay5oOgorICAgICAgICAqIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5j
Q2FsbGJhY2suaWRsOiBBZGRlZC4KKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dDo6b3BlbkRhdGFiYXNlU3luYyk6Cisg
ICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0Lmg6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJDb250ZXh0LmlkbDoKKwogMjAxMC0wNS0wNyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3
LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjU4OTYz
LgpJbmRleDogV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5jcHAJKHJldmlzaW9uIDU4OTc0KQorKysgV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDYgKzY1LDcgQEAKICNpbmNsdWRlICJK
U0N1c3RvbUV2ZW50LmNwcCIKICNpbmNsdWRlICJKU0RhdGFiYXNlLmNwcCIKICNpbmNsdWRlICJK
U0RhdGFiYXNlQ2FsbGJhY2suY3BwIgorI2luY2x1ZGUgIkpTRGF0YWJhc2VTeW5jLmNwcCIKICNp
bmNsdWRlICJKU0RhdGFHcmlkQ29sdW1uLmNwcCIKICNpbmNsdWRlICJKU0RhdGFHcmlkQ29sdW1u
TGlzdC5jcHAiCiAjaW5jbHVkZSAiSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcCIKQEAgLTIx
MCw2ICsyMTEsOCBAQAogI2luY2x1ZGUgIkpTU1FMVHJhbnNhY3Rpb24uY3BwIgogI2luY2x1ZGUg
IkpTU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5jcHAiCiAjaW5jbHVkZSAiSlNTUUxUcmFuc2FjdGlv
bkVycm9yQ2FsbGJhY2suY3BwIgorI2luY2x1ZGUgIkpTU1FMVHJhbnNhY3Rpb25TeW5jLmNwcCIK
KyNpbmNsdWRlICJKU1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmNwcCIKICNpbmNsdWRlICJK
U1N0b3JhZ2UuY3BwIgogI2luY2x1ZGUgIkpTU3RvcmFnZUV2ZW50LmNwcCIKICNpbmNsdWRlICJK
U1N0eWxlTWVkaWEuY3BwIgpJbmRleDogV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gNTg5NzQpCisr
KyBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTExNiw2ICsx
MTYsNyBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBET01XaW5kb3cgXAogICAgIERhdGFiYXNlIFwK
ICAgICBEYXRhYmFzZUNhbGxiYWNrIFwKKyAgICBEYXRhYmFzZVN5bmMgXAogICAgIERvY3VtZW50
IFwKICAgICBEb2N1bWVudEZyYWdtZW50IFwKICAgICBEb2N1bWVudFR5cGUgXApAQCAtMjU0LDYg
KzI1NSw4IEBAIERPTV9DTEFTU0VTID0gXAogICAgIFNRTFRyYW5zYWN0aW9uIFwKICAgICBTUUxU
cmFuc2FjdGlvbkNhbGxiYWNrIFwKICAgICBTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2sgXAor
ICAgIFNRTFRyYW5zYWN0aW9uU3luYyBcCisgICAgU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2sg
XAogICAgIFN0b3JhZ2UgXAogICAgIFN0b3JhZ2VFdmVudCBcCiAgICAgU1ZHQUVsZW1lbnQgXApJ
bmRleDogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCShyZXZpc2lvbiA1ODk3NCkKKysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdv
cmtpbmcgY29weSkKQEAgLTIzMDcsNiArMjMwNyw3IEBAIEZFQVRVUkVfREVGSU5FUyArPSBFTkFC
TEVfREFUQUJBU0U9MQogSURMX0JJTkRJTkdTICs9IFwKIAlXZWJDb3JlL3N0b3JhZ2UvRGF0YWJh
c2UuaWRsIFwKIAlXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VDYWxsYmFjay5pZGwgXAorCVdlYkNv
cmUvc3RvcmFnZS9EYXRhYmFzZVN5bmMuaWRsIFwKIAlXZWJDb3JlL3N0b3JhZ2UvU1FMRXJyb3Iu
aWRsIFwKIAlXZWJDb3JlL3N0b3JhZ2UvU1FMUmVzdWx0U2V0LmlkbCBcCiAJV2ViQ29yZS9zdG9y
YWdlL1NRTFJlc3VsdFNldFJvd0xpc3QuaWRsIFwKQEAgLTIzMTQsNyArMjMxNSw5IEBAIElETF9C
SU5ESU5HUyArPSBcCiAJV2ViQ29yZS9zdG9yYWdlL1NRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2su
aWRsIFwKIAlXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uaWRsIFwKIAlXZWJDb3JlL3N0
b3JhZ2UvU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5pZGwgXAotCVdlYkNvcmUvc3RvcmFnZS9TUUxU
cmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suaWRsCisJV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0
aW9uRXJyb3JDYWxsYmFjay5pZGwgXAorCVdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5
bmMuaWRsIFwKKwlXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaWRs
CiAKIHdlYmNvcmVfY3BwZmxhZ3MgKz0gXAogCS1ERU5BQkxFX0RBVEFCQVNFPTEKQEAgLTIzMjIs
OCArMjMyNSwxMCBAQCB3ZWJjb3JlX2NwcGZsYWdzICs9IFwKIHdlYmNvcmVfc291cmNlcyArPSBc
CiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2su
Y3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YWJhc2VDdXN0b20uY3BwIFwKKwlXZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRGF0YWJhc2VTeW5jQ3VzdG9tLmNwcCBcCiAJV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwIFwKIAlXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwIFwKKwlXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTU1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMVmFsdWUuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxWYWx1ZS5oIFwKIAlXZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVBdXRob3JpemVyLmNwcCBcCkluZGV4OiBXZWJDb3JlL1dl
YkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24g
NTg5NzQpCisrKyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMjE5LDYg
KzIxOSw3IEBACiAgICAgICAgICAgICAncGx1Z2lucy9QbHVnaW5BcnJheS5pZGwnLAogICAgICAg
ICAgICAgJ3N0b3JhZ2UvRGF0YWJhc2UuaWRsJywKICAgICAgICAgICAgICdzdG9yYWdlL0RhdGFi
YXNlQ2FsbGJhY2suaWRsJywKKyAgICAgICAgICAgICdzdG9yYWdlL0RhdGFiYXNlU3luYy5pZGwn
LAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURCRGF0YWJhc2VFcnJvci5pZGwnLAogICAgICAgICAg
ICAgJ3N0b3JhZ2UvSURCRGF0YWJhc2VFeGNlcHRpb24uaWRsJywKICAgICAgICAgICAgICdzdG9y
YWdlL0lEQkRhdGFiYXNlUmVxdWVzdC5pZGwnLApAQCAtMjMxLDYgKzIzMiw4IEBACiAgICAgICAg
ICAgICAnc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5pZGwnLAogICAgICAgICAgICAgJ3N0b3JhZ2Uv
U1FMVHJhbnNhY3Rpb25DYWxsYmFjay5pZGwnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvU1FMVHJh
bnNhY3Rpb25FcnJvckNhbGxiYWNrLmlkbCcsCisgICAgICAgICAgICAnc3RvcmFnZS9TUUxUcmFu
c2FjdGlvblN5bmMuaWRsJywKKyAgICAgICAgICAgICdzdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3lu
Y0NhbGxiYWNrLmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9TdG9yYWdlLmlkbCcsCiAgICAg
ICAgICAgICAnc3RvcmFnZS9TdG9yYWdlRXZlbnQuaWRsJywKICAgICAgICAgICAgICd3ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5pZGwnLApAQCAtNTA3LDYgKzUxMCw3IEBACiAgICAgICAgICAgICAnYmlu
ZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwJywKICAgICAgICAgICAgICdiaW5k
aW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5oJywKICAgICAgICAgICAgICdiaW5kaW5n
cy9qcy9KU0RhdGFiYXNlQ3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNE
YXRhYmFzZVN5bmNDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RhdGFH
cmlkQ29sdW1uTGlzdEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRGF0
YUdyaWREYXRhU291cmNlLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNEYXRhR3Jp
ZERhdGFTb3VyY2UuaCcsCkBAIC02MDEsNiArNjA1LDcgQEAKICAgICAgICAgICAgICdiaW5kaW5n
cy9qcy9KU1NjcmlwdFByb2ZpbGVOb2RlQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGlu
Z3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAnLAorICAgICAgICAgICAgJ2JpbmRp
bmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMv
SlNTdG9yYWdlQ3VzdG9tLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVl
dEN1c3RvbS5jcHAnLApAQCAtNjkyLDYgKzY5Nyw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3Mv
djgvY3VzdG9tL1Y4V2ViR0xVbnNpZ25lZFNob3J0QXJyYXlDdXN0b20uY3BwJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20u
Y3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0Nv
bnRleHRDdXN0b20uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhCaW5k
aW5nTWFjcm9zLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENsaXBib2Fy
ZEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENvbnNvbGVD
dXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhDb29yZGluYXRl
c0N1c3RvbS5jcHAnLApAQCAtNzEyLDYgKzcxOCw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3Mv
djgvY3VzdG9tL1Y4Q3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tWFBhdGhOU1Jlc29sdmVyLmgnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFiYXNlQ3VzdG9tLmNwcCcsCisgICAgICAgICAgICAn
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YWJhc2VTeW5jQ3VzdG9tLmNwcCcsCiAgICAgICAgICAg
ICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YUdyaWRDb2x1bW5MaXN0Q3VzdG9tLmNwcCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGVkaWNhdGVkV29ya2VyQ29udGV4dEN1
c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50TG9j
YXRpb25DdXN0b20uY3BwJywKQEAgLTc2NSw2ICs3NzIsNyBAQAogICAgICAgICAgICAgJ2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFN0b3JhZ2VDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5n
cy92OC9jdXN0b20vVjhTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcCcsCiAgICAgICAgICAg
ICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwJywKKyAgICAg
ICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3Bw
JywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhTVkdEb2N1bWVudEN1c3RvbS5j
cHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0VsZW1lbnRDdXN0b20u
Y3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhTVkdMZW5ndGhDdXN0b20u
Y3BwJywKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9X
ZWJDb3JlLnByaQkocmV2aXNpb24gNTg5NzQpCisrKyBXZWJDb3JlL1dlYkNvcmUucHJpCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MzcsNiArNDM3LDcgQEAgSURMX0JJTkRJTkdTICs9IFwKICAgICBwbHVn
aW5zL01pbWVUeXBlQXJyYXkuaWRsIFwKICAgICBzdG9yYWdlL0RhdGFiYXNlLmlkbCBcCiAgICAg
c3RvcmFnZS9EYXRhYmFzZUNhbGxiYWNrLmlkbCBcCisgICAgc3RvcmFnZS9EYXRhYmFzZVN5bmMu
aWRsIFwKICAgICBzdG9yYWdlL1N0b3JhZ2UuaWRsIFwKICAgICBzdG9yYWdlL1N0b3JhZ2VFdmVu
dC5pZGwgXAogICAgIHN0b3JhZ2UvU1FMRXJyb3IuaWRsIFwKQEAgLTQ0Nyw2ICs0NDgsOCBAQCBJ
RExfQklORElOR1MgKz0gXAogICAgIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uaWRsIFwKICAgICBz
dG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2FsbGJhY2suaWRsIFwKICAgICBzdG9yYWdlL1NRTFRyYW5z
YWN0aW9uRXJyb3JDYWxsYmFjay5pZGwgXAorICAgIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5j
LmlkbCBcCisgICAgc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5pZGwgXAogICAg
IHN2Zy9TVkdab29tRXZlbnQuaWRsIFwKICAgICBzdmcvU1ZHQUVsZW1lbnQuaWRsIFwKICAgICBz
dmcvU1ZHQWx0R2x5cGhFbGVtZW50LmlkbCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUucHJvCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDU4OTc0KQorKysgV2Vi
Q29yZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtMjMwMCw4ICsyMzAwLDEwIEBAIGNv
bnRhaW5zKERFRklORVMsIEVOQUJMRV9EQVRBQkFTRT0xKSB7CiAgICAgICAgIHN0b3JhZ2UvU1FM
VHJhbnNhY3Rpb25TeW5jLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3Rh
dGVtZW50RXJyb3JDYWxsYmFjay5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU0RhdGFiYXNl
Q3VzdG9tLmNwcCBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pTRGF0YWJhc2VTeW5jQ3VzdG9tLmNw
cCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAg
XAotICAgICAgICBiaW5kaW5ncy9qcy9KU1NRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcAorICAgICAg
ICBiaW5kaW5ncy9qcy9KU1NRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcCBcCisgICAgICAgIGJpbmRp
bmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcAogfQogCiBjb250YWlucyhERUZJ
TkVTLCBFTkFCTEVfRE9NX1NUT1JBR0U9MSkgewpAQCAtMjMyNSw2ICsyMzI3LDcgQEAgY29udGFp
bnMoREVGSU5FUywgRU5BQkxFX0RPTV9TVE9SQUdFPTEpIAogICAgICAgICBzdG9yYWdlL1NRTFRy
YW5zYWN0aW9uQ2xpZW50LmggXAogICAgICAgICBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ29vcmRp
bmF0b3IuaCBcCiAgICAgICAgIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5jLmggXAorICAgICAg
ICBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmggXAogICAgICAgICBzdG9yYWdl
L1N0b3JhZ2VBcmVhLmggXAogICAgICAgICBzdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oIFwKICAg
ICAgICAgc3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuaCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDU4OTc0KQorKysgV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjUxMyw2ICsyNTEzLDYyIEBA
CiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2Vi
S2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNEYXRhYmFz
ZVN5bmMuY3BwIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0i
RGVidWd8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJ
CQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFt
ZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJ
Pg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4N
CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJ
CQlOYW1lPSJEZWJ1Z19JbnRlcm5hbHxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
Ig0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1
cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZp
bGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMyIg0KKwkJCQkJ
RXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
Pg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIN
CisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJ
CQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdl
YktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRGF0YWJh
c2VTeW5jLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQ
YXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XEpTRGF0YUdyaWRDb2x1bW4uY3BwIg0KIAkJCQk+DQogCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0K
QEAgLTEwMjc4LDYgKzEwMzM0LDYyIEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0K
KwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcV2ViQ29yZVxEZXJpdmVk
U291cmNlc1xKU1NRTFRyYW5zYWN0aW9uU3luYy5jcHAiDQorCQkJCT4NCisJCQkJPEZpbGVDb25m
aWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1
aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVD
b25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xD
b21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnX0ludGVybmFsfFdpbjMyIg0KKwkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvfFdp
bjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9v
bA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVh
c2VfQ2Fpcm98V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4N
CisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQor
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJ
TmFtZT0iRGVidWdfQWxsfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQor
CQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJ
CQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0K
KwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcV2ViQ29yZVxEZXJpdmVk
U291cmNlc1xKU1NRTFRyYW5zYWN0aW9uU3luYy5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJ
CTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2pl
Y3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1N0b3JhZ2UuY3BwIg0KIAkJCQk+DQogCQkJCTxGaWxl
Q29uZmlndXJhdGlvbg0KQEAgLTM1Njk5LDYgKzM1ODExLDU4IEBACiAJCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0i
Li5cYmluZGluZ3NcanNcSlNEYXRhYmFzZVN5bmNDdXN0b20uY3BwIg0KKwkJCQkJPg0KKwkJCQkJ
PEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMy
Ig0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9v
bA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0Zp
bGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0i
RGVidWdfSW50ZXJuYWx8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQor
CQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQor
CQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkND
TENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJ
CQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm98V2luMzIi
DQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29s
DQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJE
ZWJ1Z19BbGx8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJ
Pg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJ
Lz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUN
CiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNEYXRhR3JpZENvbHVtbkxpc3RD
dXN0b20uY3BwIg0KIAkJCQkJPg0KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQpAQCAtMzg5Nzks
NiArMzkxNDMsNTggQEAKIAkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCiAJCQkJPC9GaWxlPg0K
IAkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU1NRTFRyYW5z
YWN0aW9uU3luY0N1c3RvbS5jcHAiDQorCQkJCQk+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24N
CisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQor
CQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z19JbnRlcm5hbHxXaW4z
MiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRv
b2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9
IkRlYnVnX0NhaXJvfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJ
CQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJ
CQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0
aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkND
TENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJ
CQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiINCisJ
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJ
CQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxiaW5kaW5nc1xqc1xKU1N0b3JhZ2VDdXN0b20uY3BwIg0KIAkJCQkJPg0KIAkJCQkJPEZp
bGVDb25maWd1cmF0aW9uDQpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDU4OTc0KQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQxNjgsNiArNDE2OCwxNCBAQAogCQlC
NTIzQ0YwOTExODI2NzU0MDBFQkIyOUMgLyogU1FMVHJhbnNhY3Rpb25TeW5jLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1MjNDRjAyMTE4MjY3NTQw
MEVCQjI5QyAvKiBTUUxUcmFuc2FjdGlvblN5bmMuY3BwICovOyB9OwogCQlCNTIzQ0YwQTExODI2
NzU0MDBFQkIyOUMgLyogRGF0YWJhc2VTeW5jLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1MjNDRjAzMTE4MjY3NTQwMEVCQjI5QyAvKiBEYXRhYmFz
ZVN5bmMuY3BwICovOyB9OwogCQlCNTIzQ0YwQjExODI2NzU0MDBFQkIyOUMgLyogRGF0YWJhc2VT
eW5jLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNTIz
Q0YwNDExODI2NzU0MDBFQkIyOUMgLyogRGF0YWJhc2VTeW5jLmggKi87IH07CisJCUI1NUQ1QUE0
MTE5MTMxRkMwMEJDQzMxNSAvKiBKU1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNTVENUFBMjExOTEzMUZD
MDBCQ0MzMTUgLyogSlNTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5oICovOyB9OworCQlCNTVE
NUFBNTExOTEzMUZDMDBCQ0MzMTUgLyogSlNTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNTVENUFBMzEx
OTEzMUZDMDBCQ0MzMTUgLyogSlNTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5jcHAgKi87IH07
CisJCUI1NUQ1QUE4MTE5MTMyNTAwMEJDQzMxNSAvKiBKU0RhdGFiYXNlU3luY0N1c3RvbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNTVENUFBNjEx
OTEzMjUwMDBCQ0MzMTUgLyogSlNEYXRhYmFzZVN5bmNDdXN0b20uY3BwICovOyB9OworCQlCNTVE
NUFBOTExOTEzMjUwMDBCQ0MzMTUgLyogSlNTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjU1RDVBQTcxMTkx
MzI1MDAwQkNDMzE1IC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcCAqLzsgfTsKKwkJ
QjU4Q0VCNjkxMTkxMzYwNzAwMkE2NzkwIC8qIEpTRGF0YWJhc2VTeW5jLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNThDRUI2NzExOTEzNjA3MDAyQTY3
OTAgLyogSlNEYXRhYmFzZVN5bmMuaCAqLzsgfTsKKwkJQjU4Q0VCNkExMTkxMzYwNzAwMkE2Nzkw
IC8qIEpTRGF0YWJhc2VTeW5jLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEI1OENFQjY4MTE5MTM2MDcwMDJBNjc5MCAvKiBKU0RhdGFiYXNlU3luYy5j
cHAgKi87IH07CisJCUI1OENFQjZEMTE5MTM2MUMwMDJBNjc5MCAvKiBKU1NRTFRyYW5zYWN0aW9u
U3luYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjU4
Q0VCNkIxMTkxMzYxQzAwMkE2NzkwIC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5jLmggKi87IH07CisJ
CUI1OENFQjZFMTE5MTM2MUMwMDJBNjc5MCAvKiBKU1NRTFRyYW5zYWN0aW9uU3luYy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNThDRUI2QzExOTEz
NjFDMDAyQTY3OTAgLyogSlNTUUxUcmFuc2FjdGlvblN5bmMuY3BwICovOyB9OwogCQlCNTlERDY5
OTExOTAyOUU1MDA3RTk2ODQgLyogSlNEYXRhYmFzZUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNTlERDY5NzExOTAyOUU1MDA3RTk2ODQg
LyogSlNEYXRhYmFzZUNhbGxiYWNrLmggKi87IH07CiAJCUI1OURENjlBMTE5MDI5RTUwMDdFOTY4
NCAvKiBKU0RhdGFiYXNlQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQjU5REQ2OTgxMTkwMjlFNTAwN0U5Njg0IC8qIEpTRGF0YWJhc2VD
YWxsYmFjay5jcHAgKi87IH07CiAJCUI1OURENjlEMTE5MDJBNDIwMDdFOTY4NCAvKiBKU1NRTFRy
YW5zYWN0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEI1OURENjlCMTE5MDJBNDIwMDdFOTY4NCAvKiBKU1NRTFRyYW5zYWN0aW9uQ2Fs
bGJhY2suaCAqLzsgfTsKQEAgLTk1MzAsNiArOTUzOCwxNyBAQAogCQlCNTIzQ0YwMjExODI2NzU0
MDBFQkIyOUMgLyogU1FMVHJhbnNhY3Rpb25TeW5jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNRTFRyYW5zYWN0aW9uU3luYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUI1MjNDRjAzMTE4MjY3NTQwMEVCQjI5QyAvKiBEYXRhYmFzZVN5bmMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0YWJhc2VTeW5jLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjUyM0NGMDQxMTgyNjc1NDAwRUJCMjlDIC8q
IERhdGFiYXNlU3luYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhYmFz
ZVN5bmMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjU1RDVBQTIxMTkxMzFGQzAw
QkNDMzE1IC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlCNTVENUFBMzExOTEzMUZDMDBCQ0MzMTUgLyogSlNTUUxU
cmFuc2FjdGlvblN5bmNDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQjU1RDVBQTYxMTkxMzI1MDAwQkNDMzE1IC8qIEpTRGF0YWJhc2VTeW5j
Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRGF0YWJh
c2VTeW5jQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjU1RDVBQTcx
MTkxMzI1MDAwQkNDMzE1IC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9t
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjU1RDVBQkIxMTkxMzI3MjAwQkND
MzE1IC8qIERhdGFiYXNlU3luYy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRGF0YWJhc2VT
eW5jLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjU1RDVBQkMxMTkxMzI3MjAw
QkNDMzE1IC8qIFNRTFRyYW5zYWN0aW9uU3luYy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
U1FMVHJhbnNhY3Rpb25TeW5jLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjU1
RDVBQkQxMTkxMzI3MjAwQkNDMzE1IC8qIFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI1OENFQjY3MTE5MTM2MDcwMDJBNjc5MCAvKiBK
U0RhdGFiYXNlU3luYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RhdGFi
YXNlU3luYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCNThDRUI2ODExOTEzNjA3
MDAyQTY3OTAgLyogSlNEYXRhYmFzZVN5bmMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNEYXRhYmFzZVN5bmMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlCNThDRUI2QjExOTEzNjFDMDAyQTY3OTAgLyogSlNTUUxUcmFuc2FjdGlvblN5bmMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTUUxUcmFuc2FjdGlvblN5bmMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjU4Q0VCNkMxMTkxMzYxQzAwMkE2NzkwIC8q
IEpTU1FMVHJhbnNhY3Rpb25TeW5jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTU1FMVHJhbnNhY3Rpb25TeW5jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQjU5REQ2OEQxMTkwMjk4RTAwN0U5Njg0IC8qIERhdGFiYXNlQ2FsbGJhY2suaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IERhdGFiYXNlQ2FsbGJhY2suaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCNTlERDY4RTExOTAyOThFMDA3RTk2ODQgLyogU1FMU3RhdGVtZW50
Q2FsbGJhY2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNRTFN0YXRlbWVudENhbGxiYWNr
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjU5REQ2OEYxMTkwMjk4RTAwN0U5
Njg0IC8qIFNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTA3NzYsNiArMTA3OTUsNyBAQAogCQkJCTUxMTZEOTc1MENGMTc3QkQwMEMyQjg0
RCAvKiBEYXRhYmFzZURldGFpbHMuaCAqLywKIAkJCQlCNTIzQ0YwMzExODI2NzU0MDBFQkIyOUMg
LyogRGF0YWJhc2VTeW5jLmNwcCAqLywKIAkJCQlCNTIzQ0YwNDExODI2NzU0MDBFQkIyOUMgLyog
RGF0YWJhc2VTeW5jLmggKi8sCisJCQkJQjU1RDVBQkIxMTkxMzI3MjAwQkNDMzE1IC8qIERhdGFi
YXNlU3luYy5pZGwgKi8sCiAJCQkJNTE5NjExRTkwQ0FDNzQ5QzAwMTBBODBDIC8qIERhdGFiYXNl
VGFzay5jcHAgKi8sCiAJCQkJNTE5NjExRTgwQ0FDNzQ5QzAwMTBBODBDIC8qIERhdGFiYXNlVGFz
ay5oICovLAogCQkJCTUxOTYxMTYxMENBQzU2NTcwMDEwQTgwQyAvKiBEYXRhYmFzZVRocmVhZC5j
cHAgKi8sCkBAIC0xMDgxOCw3ICsxMDgzOCw5IEBACiAJCQkJQjU5REQ2OTExMTkwMjk4RTAwN0U5
Njg0IC8qIFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5pZGwgKi8sCiAJCQkJQjUyM0NGMDIx
MTgyNjc1NDAwRUJCMjlDIC8qIFNRTFRyYW5zYWN0aW9uU3luYy5jcHAgKi8sCiAJCQkJQjUyM0NG
MDExMTgyNjc1NDAwRUJCMjlDIC8qIFNRTFRyYW5zYWN0aW9uU3luYy5oICovLAorCQkJCUI1NUQ1
QUJDMTE5MTMyNzIwMEJDQzMxNSAvKiBTUUxUcmFuc2FjdGlvblN5bmMuaWRsICovLAogCQkJCUI1
MjNDRUZGMTE4MjY3NTQwMEVCQjI5QyAvKiBTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5oICov
LAorCQkJCUI1NUQ1QUJEMTE5MTMyNzIwMEJDQzMxNSAvKiBTUUxUcmFuc2FjdGlvblN5bmNDYWxs
YmFjay5pZGwgKi8sCiAJCQkJNTFFM0Y5QzUwREEwNTlEQzAwMjUwOTExIC8qIFN0b3JhZ2UuY3Bw
ICovLAogCQkJCTUxRTNGOUM0MERBMDU5REMwMDI1MDkxMSAvKiBTdG9yYWdlLmggKi8sCiAJCQkJ
NTFFM0Y5RDEwREEwNUQ3MTAwMjUwOTExIC8qIFN0b3JhZ2UuaWRsICovLApAQCAtMTQxMDUsNiAr
MTQxMjcsMTIgQEAKIAkJCQlCNTlERDZBNDExOTAyQTYyMDA3RTk2ODQgLyogSlNTUUxTdGF0ZW1l
bnRDYWxsYmFjay5jcHAgKi8sCiAJCQkJQjU5REQ2QTcxMTkwMkE3MTAwN0U5Njg0IC8qIEpTU1FM
U3RhdGVtZW50RXJyb3JDYWxsYmFjay5oICovLAogCQkJCUI1OURENkE4MTE5MDJBNzEwMDdFOTY4
NCAvKiBKU1NRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwICovLAorCQkJCUI1NUQ1QUEyMTE5
MTMxRkMwMEJDQzMxNSAvKiBKU1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmggKi8sCisJCQkJ
QjU1RDVBQTMxMTkxMzFGQzAwQkNDMzE1IC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2su
Y3BwICovLAorCQkJCUI1OENFQjY3MTE5MTM2MDcwMDJBNjc5MCAvKiBKU0RhdGFiYXNlU3luYy5o
ICovLAorCQkJCUI1OENFQjY4MTE5MTM2MDcwMDJBNjc5MCAvKiBKU0RhdGFiYXNlU3luYy5jcHAg
Ki8sCisJCQkJQjU4Q0VCNkIxMTkxMzYxQzAwMkE2NzkwIC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5j
LmggKi8sCisJCQkJQjU4Q0VCNkMxMTkxMzYxQzAwMkE2NzkwIC8qIEpTU1FMVHJhbnNhY3Rpb25T
eW5jLmNwcCAqLywKIAkJCSk7CiAJCQluYW1lID0gU3RvcmFnZTsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CkBAIC0xNTA0OSw2ICsxNTA3Nyw4IEBACiAJCUJDNEVERUY3MEMwOEY0MTQwMDdF
REQ0OSAvKiBDdXN0b20gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAorCQkJCUI1NUQ1QUE2MTE5MTMyNTAwMEJDQzMxNSAvKiBKU0RhdGFiYXNlU3luY0N1c3RvbS5j
cHAgKi8sCisJCQkJQjU1RDVBQTcxMTkxMzI1MDAwQkNDMzE1IC8qIEpTU1FMVHJhbnNhY3Rpb25T
eW5jQ3VzdG9tLmNwcCAqLywKIAkJCQlCQzJFRDZCQjBDNkJEMkYwMDA5MjBCRkYgLyogSlNBdHRy
Q3VzdG9tLmNwcCAqLywKIAkJCQk0OUVFRDE0QjEwNTE5NzE5MDAwOTlGQUIgLyogSlNDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwICovLAogCQkJCTQ5RUVEMTREMTA1MTk3MUEwMDA5
OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwICovLApAQCAtMTg5NTMs
NiArMTg5ODMsOSBAQAogCQkJCUI1OURENkExMTE5MDJBNTIwMDdFOTY4NCAvKiBKU1NRTFRyYW5z
YWN0aW9uRXJyb3JDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjU5REQ2QTUxMTkwMkE2
MjAwN0U5Njg0IC8qIEpTU1FMU3RhdGVtZW50Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJ
CUI1OURENkE5MTE5MDJBNzEwMDdFOTY4NCAvKiBKU1NRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2su
aCBpbiBIZWFkZXJzICovLAorCQkJCUI1NUQ1QUE0MTE5MTMxRkMwMEJDQzMxNSAvKiBKU1NRTFRy
YW5zYWN0aW9uU3luY0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQlCNThDRUI2OTExOTEz
NjA3MDAyQTY3OTAgLyogSlNEYXRhYmFzZVN5bmMuaCBpbiBIZWFkZXJzICovLAorCQkJCUI1OENF
QjZEMTE5MTM2MUMwMDJBNjc5MCAvKiBKU1NRTFRyYW5zYWN0aW9uU3luYy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkBAIC0yMTE5NSw2ICsyMTIyOCwxMSBAQAogCQkJCUI1OURENkEyMTE5MDJBNTIwMDdFOTY4
NCAvKiBKU1NRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCNTlERDZBNjExOTAyQTYyMDA3RTk2ODQgLyogSlNTUUxTdGF0ZW1lbnRDYWxsYmFjay5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCNTlERDZBQTExOTAyQTcxMDA3RTk2ODQgLyogSlNTUUxTdGF0
ZW1lbnRFcnJvckNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUI1NUQ1QUE1MTE5MTMx
RkMwMEJDQzMxNSAvKiBKU1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUI1NUQ1QUE4MTE5MTMyNTAwMEJDQzMxNSAvKiBKU0RhdGFiYXNlU3luY0N1c3Rv
bS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCNTVENUFBOTExOTEzMjUwMDBCQ0MzMTUgLyogSlNT
UUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjU4Q0VCNkEx
MTkxMzYwNzAwMkE2NzkwIC8qIEpTRGF0YWJhc2VTeW5jLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUI1OENFQjZFMTE5MTM2MUMwMDJBNjc5MCAvKiBKU1NRTFRyYW5zYWN0aW9uU3luYy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25l
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9u
ZS5jcHAJKHJldmlzaW9uIDU4OTc0KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdz
QWxsSW5PbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAi
SlNEYXRhR3JpZENvbHVtbkxpc3RDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTRGF0YUdyaWREYXRh
U291cmNlLmNwcCIKICNpbmNsdWRlICJKU0RhdGFiYXNlQ3VzdG9tLmNwcCIKKyNpbmNsdWRlICJK
U0RhdGFiYXNlU3luY0N1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0Rlc2t0b3BOb3RpZmljYXRpb25zQ3VzdG9tLmNw
cCIKICNpbmNsdWRlICJKU0RvY3VtZW50Q3VzdG9tLmNwcCIKQEAgLTEwMiw2ICsxMDMsNyBAQAog
I2luY2x1ZGUgIkpTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAiCiAjaW5jbHVkZSAiSlNTUUxS
ZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1NRTFRyYW5zYWN0aW9uQ3Vz
dG9tLmNwcCIKKyNpbmNsdWRlICJKU1NRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHAiCiAjaW5j
bHVkZSAiSlNTVkdFbGVtZW50SW5zdGFuY2VDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTU1ZHTGVu
Z3RoQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1NWR01hdHJpeEN1c3RvbS5jcHAiCkluZGV4OiBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YWJhc2VTeW5jQ3VzdG9tLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YWJhc2VTeW5jQ3VzdG9tLmNwcAkocmV2aXNpb24g
MCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhYmFzZVN5bmNDdXN0b20uY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBu
YW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkpTRGF0YWJhc2VTeW5jLmgiCisKKyNpZiBFTkFCTEUoREFUQUJBU0UpCisKKyNpbmNsdWRlICJE
YXRhYmFzZVN5bmMuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiSlNT
UUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgi
CisjaW5jbHVkZSAiU1FMVmFsdWUuaCIKKyNpbmNsdWRlIDxydW50aW1lL0pTQXJyYXkuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgSlNDOworCitKU1ZhbHVlIEpT
RGF0YWJhc2VTeW5jOjpjaGFuZ2VWZXJzaW9uKEV4ZWNTdGF0ZSosIGNvbnN0IEFyZ0xpc3QmKQor
eworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCitzdGF0aWMgSlNWYWx1ZSBjcmVhdGVU
cmFuc2FjdGlvbihFeGVjU3RhdGUqLCBjb25zdCBBcmdMaXN0JiwgRGF0YWJhc2VTeW5jKiwgSlNE
T01HbG9iYWxPYmplY3QqLCBib29sKQoreworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQor
CitKU1ZhbHVlIEpTRGF0YWJhc2VTeW5jOjp0cmFuc2FjdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAgcmV0dXJuIGNyZWF0ZVRyYW5zYWN0aW9uKGV4ZWMs
IGFyZ3MsIG1faW1wbC5nZXQoKSwgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QoKSksIGZhbHNlKTsKK30KKworSlNWYWx1ZSBKU0RhdGFiYXNlU3luYzo6cmVhZFRy
YW5zYWN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICBy
ZXR1cm4gY3JlYXRlVHJhbnNhY3Rpb24oZXhlYywgYXJncywgbV9pbXBsLmdldCgpLCBzdGF0aWNf
Y2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKSwgdHJ1ZSk7Cit9CisKK30K
KworI2VuZGlmIC8vIEVOQUJMRShEQVRBQkFTRSkKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMv
SlNTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysg
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0
aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5h
bWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
SlNTUUxUcmFuc2FjdGlvblN5bmMuaCIKKworI2lmIEVOQUJMRShEQVRBQkFTRSkKKworI2luY2x1
ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJKU1NRTFJlc3VsdFNldC5oIgorI2luY2x1
ZGUgIlNRTFJlc3VsdFNldC5oIgorI2luY2x1ZGUgIlNRTFRyYW5zYWN0aW9uU3luYy5oIgorI2lu
Y2x1ZGUgIlNRTFZhbHVlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworSlNWYWx1ZSBKU1NRTFRyYW5zYWN0aW9uU3luYzo6ZXhlY3V0ZVNxbChFeGVj
U3RhdGUqLCBjb25zdCBBcmdMaXN0JikKK3sKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30K
KworfQorCisjZW5kaWYgLy8gRU5BQkxFKERBVEFCQVNFKQpJbmRleDogV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAkocmV2aXNpb24gNTg5NzQpCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE0Miw2ICsxNDIsMTMgQEAgSlNWYWx1ZSBKU1dvcmtlckNvbnRleHQ6Om1lc3NhZ2VD
aGFubmVsKAogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoREFUQUJBU0UpCitKU1ZhbHVlIEpTV29y
a2VyQ29udGV4dDo6b3BlbkRhdGFiYXNlU3luYyhFeGVjU3RhdGUqLCBjb25zdCBBcmdMaXN0JikK
K3sKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykKSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4QmluZGluZ01hY3Jvcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4QmluZGluZ01hY3Jvcy5oCShyZXZpc2lvbiAwKQorKysgV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhCaW5kaW5nTWFjcm9zLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjZGVmaW5lIEVYQ0VQVElPTl9CTE9DSyh0eXBlLCB2YXIsIHZhbHVlKSAg
ICAgICAgIFwKKyAgICB0eXBlIHZhcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgIHY4OjpUcnlDYXRjaCBibG9jazsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgdmFyID0gdmFsdWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBpZiAoYmxvY2suSGFzQ2F1Z2h0KCkpICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg
ICByZXR1cm4gdGhyb3dFcnJvcihibG9jay5FeGNlcHRpb24oKSk7IFwKKyAgICB9CkluZGV4OiBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFiYXNlU3luY0N1c3RvbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhYmFzZVN5bmNDdXN0b20u
Y3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhYmFz
ZVN5bmNDdXN0b20uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaWYgRU5BQkxFKERBVEFCQVNFKQorI2luY2x1ZGUgIlY4RGF0YWJhc2VTeW5j
LmgiCisKKyNpbmNsdWRlICJEYXRhYmFzZVN5bmMuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIK
KyNpbmNsdWRlICJWOEJpbmRpbmdNYWNyb3MuaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5j
bHVkZSAiVjhTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERhdGFiYXNlU3luYzo6Y2hhbmdlVmVyc2lv
bkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJE
T00uRGF0YWJhc2VTeW5jLmNoYW5nZVZlcnNpb24oKSIpOworICAgIHJldHVybiB2ODo6VW5kZWZp
bmVkKCk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3JlYXRlVHJhbnNhY3Rp
b24oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywgYm9vbCByZWFkT25seSkKK3sKKyAgICByZXR1
cm4gdjg6OlVuZGVmaW5lZCgpOworfQorCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEYXRhYmFz
ZVN5bmM6OnRyYW5zYWN0aW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sK
KyAgICBJTkNfU1RBVFMoIkRPTS5EYXRhYmFzZVN5bmMudHJhbnNhY3Rpb24oKSIpOworICAgIHJl
dHVybiBjcmVhdGVUcmFuc2FjdGlvbihhcmdzLCBmYWxzZSk7Cit9CisKK3Y4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOERhdGFiYXNlU3luYzo6cmVhZFRyYW5zYWN0aW9uQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5EYXRhYmFzZVN5bmMucmVh
ZFRyYW5zYWN0aW9uKCkiKTsKKyAgICByZXR1cm4gY3JlYXRlVHJhbnNhY3Rpb24oYXJncywgdHJ1
ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvblN5bmND
dXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhT
UUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
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
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKERBVEFCQVNFKQorCisjaW5jbHVkZSAi
VjhTUUxUcmFuc2FjdGlvblN5bmMuaCIKKworI2luY2x1ZGUgIkRhdGFiYXNlU3luYy5oIgorI2lu
Y2x1ZGUgIlNRTFJlc3VsdFNldC5oIgorI2luY2x1ZGUgIlNRTFZhbHVlLmgiCisjaW5jbHVkZSAi
VjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nTWFjcm9zLmgiCisjaW5jbHVkZSAiVjhQ
cm94eS5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdURjsK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhTUUxUcmFu
c2FjdGlvblN5bmM6OmV4ZWN1dGVTcWxDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQoreworICAgIElOQ19TVEFUUygiRE9NLlNRTFRyYW5zYWN0aW9uU3luYy5leGVjdXRlU3FsKCki
KTsKKyAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJD
b250ZXh0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwCShyZXZpc2lvbiA1ODk3NCkKKysrIFdlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEzNiw2ICsxMzYsMTQgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoV29ya2Vy
Q29udGV4dAogICAgIHJldHVybiBnbG9iYWw7CiB9CiAKKyNpZiBFTkFCTEUoREFUQUJBU0UpCit2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXb3JrZXJDb250ZXh0OjpvcGVuRGF0YWJhc2VTeW5jQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5W
OFdvcmtlckNvbnRleHQub3BlbkRhdGFiYXNlU3luYygpIik7CisgICAgcmV0dXJuIHY4OjpVbmRl
ZmluZWQoKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBFTkFCTEUoV09SS0VSUykKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmlkbAkocmV2aXNpb24gNTg5NzQp
CisrKyBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3
ICszMCw4IEBAIG1vZHVsZSBzdG9yYWdlIHsKIAogICAgIGludGVyZmFjZSBbCiAgICAgICAgIENv
bmRpdGlvbmFsPURBVEFCQVNFLAotICAgICAgICBPbWl0Q29uc3RydWN0b3IKKyAgICAgICAgT21p
dENvbnN0cnVjdG9yLAorICAgICAgICBOb1N0YXRpY1RhYmxlcwogICAgIF0gRGF0YWJhc2Ugewog
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZlcnNpb247CiAgICAgICAgIFtD
dXN0b21dIHZvaWQgY2hhbmdlVmVyc2lvbihpbiBET01TdHJpbmcgb2xkVmVyc2lvbiwgaW4gRE9N
U3RyaW5nIG5ld1ZlcnNpb24sIGluIFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2sgY2FsbGJhY2ssIGlu
IFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrLCBpbiBWb2lkQ2FsbGJh
Y2sgc3VjY2Vzc0NhbGxiYWNrKTsKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZUNhbGxi
YWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlQ2FsbGJhY2suaAko
cmV2aXNpb24gNTg5NzQpCisrKyBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VDYWxsYmFjay5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOCwxMiArMzgsMTQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgRGF0YWJhc2U7CitjbGFzcyBEYXRhYmFzZVN5bmM7CiBjbGFzcyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OwogCiBjbGFzcyBEYXRhYmFzZUNhbGxiYWNrIDogcHVibGljIFRocmVhZFNhZmVT
aGFyZWQ8RGF0YWJhc2VDYWxsYmFjaz4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkRhdGFiYXNl
Q2FsbGJhY2soKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIERhdGFiYXNlKikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVu
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRGF0YWJhc2VTeW5jKikgPSAwOwogfTsKIAogfQpJ
bmRleDogV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlQ2FsbGJhY2suaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZUNhbGxiYWNrLmlkbAkocmV2aXNpb24gNTg5NzQpCisr
KyBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VDYWxsYmFjay5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTMyLDUgKzMyLDYgQEAgbW9kdWxlIHN0b3JhZ2UgewogICAgICAgICBDYWxsYmFjawogICAgIF0g
RGF0YWJhc2VDYWxsYmFjayB7CiAgICAgICAgIGJvb2xlYW4gaGFuZGxlRXZlbnQoaW4gRGF0YWJh
c2UgZGF0YWJhc2UpOworICAgICAgICBib29sZWFuIGhhbmRsZUV2ZW50KGluIERhdGFiYXNlU3lu
YyBkYXRhYmFzZSk7CiAgICAgfTsKIH0KSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVN5
bmMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVN5bmMuY3BwCShy
ZXZpc2lvbiA1ODk3NCkKKysrIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVN5bmMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MSwxMiArOTEsMTIgQEAgU3RyaW5nIERhdGFiYXNlU3luYzo6dmVyc2lv
bigpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi12b2lkIERhdGFiYXNlU3luYzo6
Y2hhbmdlVmVyc2lvbihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRyPFNR
TFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrPikKK3ZvaWQgRGF0YWJhc2VTeW5jOjpjaGFuZ2VWZXJz
aW9uKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rp
b25TeW5jQ2FsbGJhY2s+LCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBBU1NFUlQobV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSk7CiB9CiAKLXZvaWQgRGF0YWJhc2VT
eW5jOjp0cmFuc2FjdGlvbihQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrPiwg
Ym9vbCkKK3ZvaWQgRGF0YWJhc2VTeW5jOjp0cmFuc2FjdGlvbihQYXNzUmVmUHRyPFNRTFRyYW5z
YWN0aW9uU3luY0NhbGxiYWNrPiwgYm9vbCwgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgQVNTRVJU
KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNDb250ZXh0VGhyZWFkKCkpOwogfQpJbmRleDog
V2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlU3luYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Rv
cmFnZS9EYXRhYmFzZVN5bmMuaAkocmV2aXNpb24gNTg5NzQpCisrKyBXZWJDb3JlL3N0b3JhZ2Uv
RGF0YWJhc2VTeW5jLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDggKzUzLDggQEAgcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPERhdGFiYXNlU3luYz4gb3BlbkRhdGFiYXNlU3luYyhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4
cGVjdGVkVmVyc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3Rp
bWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+LCBFeGNlcHRpb25Db2RlJik7
CiAgICAgU3RyaW5nIHZlcnNpb24oKSBjb25zdDsKLSAgICB2b2lkIGNoYW5nZVZlcnNpb24oY29u
c3QgU3RyaW5nJiBvbGRWZXJzaW9uLCBjb25zdCBTdHJpbmcmIG5ld1ZlcnNpb24sIFBhc3NSZWZQ
dHI8U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+KTsKLSAgICB2b2lkIHRyYW5zYWN0aW9uKFBh
c3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+LCBib29sIHJlYWRPbmx5KTsKKyAg
ICB2b2lkIGNoYW5nZVZlcnNpb24oY29uc3QgU3RyaW5nJiBvbGRWZXJzaW9uLCBjb25zdCBTdHJp
bmcmIG5ld1ZlcnNpb24sIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+LCBF
eGNlcHRpb25Db2RlJik7CisgICAgdm9pZCB0cmFuc2FjdGlvbihQYXNzUmVmUHRyPFNRTFRyYW5z
YWN0aW9uU3luY0NhbGxiYWNrPiwgYm9vbCByZWFkT25seSwgRXhjZXB0aW9uQ29kZSYpOwogCiAg
ICAgLy8gSW50ZXJuYWwgZW5naW5lIHN1cHBvcnQKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CkluZGV4OiBXZWJDb3JlL3N0b3JhZ2Uv
RGF0YWJhc2VTeW5jLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VT
eW5jLmlkbAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVN5bmMuaWRs
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAz
LiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIHN0b3JhZ2UgeworCisgICAg
aW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9REFUQUJBU0UsCisgICAgICAgIE9taXRD
b25zdHJ1Y3RvciwKKyAgICAgICAgTm9TdGF0aWNUYWJsZXMKKyAgICBdIERhdGFiYXNlU3luYyB7
CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdmVyc2lvbjsKKyAgICAgICAg
W0N1c3RvbV0gdm9pZCBjaGFuZ2VWZXJzaW9uKGluIERPTVN0cmluZyBvbGRWZXJzaW9uLCBpbiBE
T01TdHJpbmcgbmV3VmVyc2lvbiwgaW4gU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2sgY2FsbGJh
Y2spOworICAgICAgICBbQ3VzdG9tXSB2b2lkIHRyYW5zYWN0aW9uKGluIFNRTFRyYW5zYWN0aW9u
U3luY0NhbGxiYWNrIGNhbGxiYWNrKTsKKyAgICAgICAgW0N1c3RvbV0gdm9pZCByZWFkVHJhbnNh
Y3Rpb24oaW4gU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2sgY2FsbGJhY2spOworICAgIH07CisK
K30KSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9TUUxFcnJvci5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdG9yYWdlL1NRTEVycm9yLmlkbAkocmV2aXNpb24gNTg5NzQpCisrKyBXZWJDb3JlL3N0
b3JhZ2UvU1FMRXJyb3IuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw4IEBAIG1vZHVs
ZSBzdG9yYWdlIHsKIAogICAgIGludGVyZmFjZSBbCiAgICAgICAgIENvbmRpdGlvbmFsPURBVEFC
QVNFLAotICAgICAgICBPbWl0Q29uc3RydWN0b3IKKyAgICAgICAgT21pdENvbnN0cnVjdG9yLAor
ICAgICAgICBOb1N0YXRpY1RhYmxlcwogICAgIF0gU1FMRXJyb3IgewogICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBjb2RlOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIG1lc3NhZ2U7CkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvU1FMUmVzdWx0U2V0
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU1FMUmVzdWx0U2V0LmlkbAkocmV2
aXNpb24gNTg5NzQpCisrKyBXZWJDb3JlL3N0b3JhZ2UvU1FMUmVzdWx0U2V0LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsNyArMzAsOCBAQCBtb2R1bGUgc3RvcmFnZSB7CiAKICAgICBpbnRlcmZh
Y2UgWwogICAgICAgICBDb25kaXRpb25hbD1EQVRBQkFTRSwKLSAgICAgICAgT21pdENvbnN0cnVj
dG9yCisgICAgICAgIE9taXRDb25zdHJ1Y3RvciwKKyAgICAgICAgTm9TdGF0aWNUYWJsZXMKICAg
ICBdIFNRTFJlc3VsdFNldCB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTUUxSZXN1bHRT
ZXRSb3dMaXN0IHJvd3M7CiAKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9TUUxSZXN1bHRTZXRSb3dM
aXN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU1FMUmVzdWx0U2V0Um93TGlz
dC5pZGwJKHJldmlzaW9uIDU4OTc0KQorKysgV2ViQ29yZS9zdG9yYWdlL1NRTFJlc3VsdFNldFJv
d0xpc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw4IEBAIG1vZHVsZSBzdG9yYWdl
IHsKIAogICAgIGludGVyZmFjZSBbCiAgICAgICAgIENvbmRpdGlvbmFsPURBVEFCQVNFLAotICAg
ICAgICBPbWl0Q29uc3RydWN0b3IKKyAgICAgICAgT21pdENvbnN0cnVjdG9yLAorICAgICAgICBO
b1N0YXRpY1RhYmxlcwogICAgIF0gU1FMUmVzdWx0U2V0Um93TGlzdCB7CiAgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICAgICAgW0N1c3RvbV0gRE9N
T2JqZWN0IGl0ZW0oaW4gdW5zaWduZWQgbG9uZyBpbmRleCk7CkluZGV4OiBXZWJDb3JlL3N0b3Jh
Z2UvU1FMVHJhbnNhY3Rpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TUUxU
cmFuc2FjdGlvbi5pZGwJKHJldmlzaW9uIDU4OTc0KQorKysgV2ViQ29yZS9zdG9yYWdlL1NRTFRy
YW5zYWN0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsOCBAQCBtb2R1bGUgc3Rv
cmFnZSB7CiAKICAgICBpbnRlcmZhY2UgWwogICAgICAgICBDb25kaXRpb25hbD1EQVRBQkFTRSwK
LSAgICAgICAgT21pdENvbnN0cnVjdG9yCisgICAgICAgIE9taXRDb25zdHJ1Y3RvciwKKyAgICAg
ICAgTm9TdGF0aWNUYWJsZXMKICAgICBdIFNRTFRyYW5zYWN0aW9uIHsKICAgICAgICAgW0N1c3Rv
bV0gdm9pZCBleGVjdXRlU3FsKGluIERPTVN0cmluZyBzcWxTdGF0ZW1lbnQsIGluIE9iamVjdEFy
cmF5IGFyZ3VtZW50cywgaW4gU1FMU3RhdGVtZW50Q2FsbGJhY2sgY2FsbGJhY2ssIGluIFNRTFN0
YXRlbWVudEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7CiAgICAgfTsKSW5kZXg6IFdlYkNv
cmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmMuaWRsCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9z
dG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luYy5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxl
IENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCittb2R1bGUgc3RvcmFnZSB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRp
b25hbD1EQVRBQkFTRSwKKyAgICAgICAgT21pdENvbnN0cnVjdG9yLAorICAgICAgICBOb1N0YXRp
Y1RhYmxlcworICAgIF0gU1FMVHJhbnNhY3Rpb25TeW5jIHsKKyAgICAgICAgW0N1c3RvbV0gU1FM
UmVzdWx0U2V0IGV4ZWN1dGVTcWwoaW4gRE9NU3RyaW5nIHNxbFN0YXRlbWVudCwgaW4gT2JqZWN0
QXJyYXkgYXJndW1lbnRzKTsKKyAgICB9OworfQpJbmRleDogV2ViQ29yZS9zdG9yYWdlL1NRTFRy
YW5zYWN0aW9uU3luY0NhbGxiYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL1NR
TFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmgJKHJldmlzaW9uIDU4OTc0KQorKysgV2ViQ29yZS9z
dG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQy
LDcgKzQyLDcgQEAgY2xhc3MgU1FMVHJhbnNhY3Rpb25TeW5jOwogY2xhc3MgU1FMVHJhbnNhY3Rp
b25TeW5jQ2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxTUUxUcmFuc2FjdGlvblN5bmNDYWxs
YmFjaz4gewogcHVibGljOgogICAgIHZpcnR1YWwgflNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNr
KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBTUUxUcmFuc2FjdGlvblN5bmMqLCBib29sJiByYWlzZWRFeGNlcHRpb24pID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFNRTFRy
YW5zYWN0aW9uU3luYyopID0gMDsKIH07CiAKIH0KSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9TUUxU
cmFuc2FjdGlvblN5bmNDYWxsYmFjay5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdl
L1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmlkbAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUv
c3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5pZGwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAg
ICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCittb2R1bGUgc3RvcmFnZSB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAg
Q29uZGl0aW9uYWw9REFUQUJBU0UsCisgICAgICAgIENhbGxiYWNrCisgICAgXSBTUUxUcmFuc2Fj
dGlvblN5bmNDYWxsYmFjayB7CisgICAgICAgIGJvb2xlYW4gaGFuZGxlRXZlbnQoaW4gU1FMVHJh
bnNhY3Rpb25TeW5jIHRyYW5zYWN0aW9uKTsKKyAgICB9OworfQpJbmRleDogV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJDb250ZXh0LmNwcAkocmV2aXNpb24gNTg5NzQpCisrKyBXZWJDb3JlL3dvcmtlcnMvV29ya2Vy
Q29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4MSw2ICsyODEsMjAgQEAgUGFzc1JlZlB0
cjxEYXRhYmFzZT4gV29ya2VyQ29udGV4dDo6b3BlbgogCiAgICAgcmV0dXJuIERhdGFiYXNlOjpv
cGVuRGF0YWJhc2UodGhpcywgbmFtZSwgdmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNp
emUsIGNyZWF0aW9uQ2FsbGJhY2ssIGVjKTsKIH0KKworUGFzc1JlZlB0cjxEYXRhYmFzZVN5bmM+
IFdvcmtlckNvbnRleHQ6Om9wZW5EYXRhYmFzZVN5bmMoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIHZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxv
bmcgZXN0aW1hdGVkU2l6ZSwgUGFzc1JlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiBjcmVhdGlvbkNh
bGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIXNlY3VyaXR5T3JpZ2luKCkt
PmNhbkFjY2Vzc0RhdGFiYXNlKCkpIHsKKyAgICAgICAgZWMgPSBTRUNVUklUWV9FUlI7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KKworICAgIEFTU0VSVChEYXRhYmFzZVN5bmM6OmlzQXZhaWxh
YmxlKCkpOworICAgIGlmICghRGF0YWJhc2VTeW5jOjppc0F2YWlsYWJsZSgpKQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIHJldHVybiBEYXRhYmFzZVN5bmM6Om9wZW5EYXRhYmFzZVN5bmModGhp
cywgbmFtZSwgdmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUsIGNyZWF0aW9uQ2Fs
bGJhY2ssIGVjKTsKK30KICNlbmRpZgogCiBib29sIFdvcmtlckNvbnRleHQ6OmlzQ29udGV4dFRo
cmVhZCgpIGNvbnN0CkluZGV4OiBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgJKHJldmlzaW9uIDU4OTc0
KQorKysgV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAt
MzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiQXRvbWljU3RyaW5nSGFzaC5oIgogI2luY2x1ZGUg
IkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VTeW5jLmgiCiAjaW5jbHVkZSAiRGF0YWJh
c2VDYWxsYmFjay5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVu
dE5hbWVzLmgiCkBAIC0xMDUsNiArMTA2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVO
QUJMRShEQVRBQkFTRSkKICAgICAgICAgLy8gSFRNTCA1IGNsaWVudC1zaWRlIGRhdGFiYXNlCiAg
ICAgICAgIFBhc3NSZWZQdHI8RGF0YWJhc2U+IG9wZW5EYXRhYmFzZShjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5z
aWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+IGNy
ZWF0aW9uQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgUGFzc1JlZlB0cjxEYXRh
YmFzZVN5bmM+IG9wZW5EYXRhYmFzZVN5bmMoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIHZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0
aW1hdGVkU2l6ZSwgUGFzc1JlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiBjcmVhdGlvbkNhbGxiYWNr
LCBFeGNlcHRpb25Db2RlJik7CisKICAgICAgICAgLy8gTm90IGltcGxlbWVudGVkIHlldC4KICAg
ICAgICAgdmlydHVhbCBib29sIGlzRGF0YWJhc2VSZWFkT25seSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgICAgIC8vIE5vdCBpbXBsZW1lbnRlZCB5ZXQuCkluZGV4OiBXZWJDb3JlL3dv
cmtlcnMvV29ya2VyQ29udGV4dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93b3JrZXJzL1dv
cmtlckNvbnRleHQuaWRsCShyZXZpc2lvbiA1ODk3NCkKKysrIFdlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJDb250ZXh0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDksOCArNDksMTEgQEAgbW9kdWxlIHRo
cmVhZHMgewogICAgICAgICAvLyBXb3JrZXJVdGlscwogICAgICAgICBbQ3VzdG9tXSB2b2lkIGlt
cG9ydFNjcmlwdHMoLypbVmFyaWFkaWNdIGluIERPTVN0cmluZyB1cmxzICovKTsKICAgICAgICAg
ICAgICAgICAgYXR0cmlidXRlIFtSZXBsYWNlYWJsZV0gV29ya2VyTmF2aWdhdG9yIG5hdmlnYXRv
cjsKKworI2lmIGRlZmluZWQoRU5BQkxFX0RBVEFCQVNFKSAmJiBFTkFCTEVfREFUQUJBU0UKICAg
ICAgICAgLy8gRGF0YWJhc2Ugb3BlbkRhdGFiYXNlKGluIERPTVN0cmluZyBuYW1lLCBpbiBET01T
dHJpbmcgdmVyc2lvbiwgaW4gRE9NU3RyaW5nIGRpc3BsYXlOYW1lLCBpbiB1bnNpZ25lZCBsb25n
IGVzdGltYXRlZFNpemUpOwotICAgICAgICAvLyBEYXRhYmFzZVN5bmMgb3BlbkRhdGFiYXNlU3lu
YyhpbiBET01TdHJpbmcgbmFtZSwgaW4gRE9NU3RyaW5nIHZlcnNpb24sIGluIERPTVN0cmluZyBk
aXNwbGF5TmFtZSwgaW4gdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKTsKKyAgICAgICAgW0Vu
YWJsZUF0UnVudGltZSwgQ3VzdG9tXSBEYXRhYmFzZVN5bmMgb3BlbkRhdGFiYXNlU3luYyhpbiBE
T01TdHJpbmcgbmFtZSwgaW4gRE9NU3RyaW5nIHZlcnNpb24sIGluIERPTVN0cmluZyBkaXNwbGF5
TmFtZSwgaW4gdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBpbiBEYXRhYmFzZUNhbGxiYWNr
IGNyZWF0aW9uQ2FsbGJhY2spOworI2VuZGlmCiAKICAgICAgICAgLy8gVGltZXJzCiAgICAgICAg
IFtDdXN0b21dIGxvbmcgc2V0VGltZW91dChpbiBUaW1lb3V0SGFuZGxlciBoYW5kbGVyLCBpbiBs
b25nIHRpbWVvdXQpOwo=
</data>
<flag name="review"
          id="39606"
          type_id="1"
          status="+"
          setter="beidson"
    />
    <flag name="commit-queue"
          id="39607"
          type_id="3"
          status="-"
          setter="dumi"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55448</attachid>
            <date>2010-05-07 18:54:17 -0700</date>
            <delta_ts>2010-05-08 00:34:12 -0700</delta_ts>
            <desc>patch #3: JSC bindings implementation</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>4807</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1ODk4OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTAtMDUtMDcgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbXBsZW1lbnQgdGhlIEpTQyBiaW5kaW5ncyBmb3IgdGhlIHN5bmMgREIgQVBJLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQ5OTQKKworICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRGF0YWJhc2VTeW5jQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTRGF0YWJhc2VTeW5jOjpjaGFuZ2VWZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1NRTFRyYW5zYWN0aW9u
U3luY0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1NRTFRyYW5zYWN0aW9uU3luYzo6
ZXhlY3V0ZVNxbCk6CisKIDIwMTAtMDUtMDcgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBCcmFkeSBFaWRzb24uCkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRGF0YWJhc2VTeW5jQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YWJhc2VTeW5jQ3VzdG9tLmNwcAkocmV2aXNpb24gNTg5
ODkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YWJhc2VTeW5jQ3VzdG9tLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDIsMTMgKzQyLDQ1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNp
bmcgbmFtZXNwYWNlIEpTQzsKIAotSlNWYWx1ZSBKU0RhdGFiYXNlU3luYzo6Y2hhbmdlVmVyc2lv
bihFeGVjU3RhdGUqLCBjb25zdCBBcmdMaXN0JikKK0pTVmFsdWUgSlNEYXRhYmFzZVN5bmM6OmNo
YW5nZVZlcnNpb24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogeworICAg
IFN0cmluZyBvbGRWZXJzaW9uID0gdXN0cmluZ1RvU3RyaW5nKGFyZ3MuYXQoMCkudG9TdHJpbmco
ZXhlYykpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CisKKyAgICBTdHJpbmcgbmV3VmVyc2lvbiA9IHVzdHJpbmdUb1N0cmluZyhh
cmdzLmF0KDEpLnRvU3RyaW5nKGV4ZWMpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworCisgICAgSlNPYmplY3QqIG9iamVjdCA9
IGFyZ3MuYXQoMikuZ2V0T2JqZWN0KCk7CisgICAgaWYgKCFvYmplY3QpIHsKKyAgICAgICAgc2V0
RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKKyAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CisgICAgfQorCisgICAgUmVmUHRyPFNRTFRyYW5zYWN0aW9uU3luY0NhbGxi
YWNrPiBjYWxsYmFjayhKU1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrOjpjcmVhdGUob2JqZWN0
LCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKSkpOworCisg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgbV9pbXBsLT5jaGFuZ2VWZXJzaW9uKG9sZFZl
cnNpb24sIG5ld1ZlcnNpb24sIGNhbGxiYWNrLnJlbGVhc2UoKSwgZWMpOworICAgIHNldERPTUV4
Y2VwdGlvbihleGVjLCBlYyk7CisKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIAotc3Rh
dGljIEpTVmFsdWUgY3JlYXRlVHJhbnNhY3Rpb24oRXhlY1N0YXRlKiwgY29uc3QgQXJnTGlzdCYs
IERhdGFiYXNlU3luYyosIEpTRE9NR2xvYmFsT2JqZWN0KiwgYm9vbCkKK3N0YXRpYyBKU1ZhbHVl
IGNyZWF0ZVRyYW5zYWN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncywg
RGF0YWJhc2VTeW5jKiBkYXRhYmFzZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Ym9vbCByZWFkT25seSkKIHsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gYXJncy5hdCgwKS5nZXRP
YmplY3QoKTsKKyAgICBpZiAoIW9iamVjdCkgeworICAgICAgICBzZXRET01FeGNlcHRpb24oZXhl
YywgVFlQRV9NSVNNQVRDSF9FUlIpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAg
ICB9CisKKyAgICBSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+IGNhbGxiYWNrKEpT
U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s6OmNyZWF0ZShvYmplY3QsIGdsb2JhbE9iamVjdCkp
OworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgZGF0YWJhc2UtPnRyYW5zYWN0aW9u
KGNhbGxiYWNrLnJlbGVhc2UoKSwgcmVhZE9ubHksIGVjKTsKKyAgICBzZXRET01FeGNlcHRpb24o
ZXhlYywgZWMpOworCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwCShy
ZXZpc2lvbiA1ODk4OSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvblN5
bmNDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw5ICs0MSw1NiBAQCB1c2luZyBuYW1l
c3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUpTVmFsdWUgSlNTUUxUcmFuc2Fj
dGlvblN5bmM6OmV4ZWN1dGVTcWwoRXhlY1N0YXRlKiwgY29uc3QgQXJnTGlzdCYpCitKU1ZhbHVl
IEpTU1FMVHJhbnNhY3Rpb25TeW5jOjpleGVjdXRlU3FsKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
QXJnTGlzdCYgYXJncykKIHsKLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBpZiAoYXJn
cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFNZTlRBWF9FUlIp
OworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisKKyAgICBTdHJpbmcgc3Fs
U3RhdGVtZW50ID0gdXN0cmluZ1RvU3RyaW5nKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYykpOwor
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CisKKyAgICAvLyBOb3cgYXNzZW1ibGUgdGhlIGxpc3Qgb2YgU1FMIGFyZ3VtZW50cworICAg
IFZlY3RvcjxTUUxWYWx1ZT4gc3FsVmFsdWVzOworICAgIGlmICghYXJncy5hdCgxKS5pc1VuZGVm
aW5lZE9yTnVsbCgpKSB7CisgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhcmdzLmF0KDEpLmdl
dE9iamVjdCgpOworICAgICAgICBpZiAoIW9iamVjdCkgeworICAgICAgICAgICAgc2V0RE9NRXhj
ZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKKyAgICAgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOworICAgICAgICB9CisKKyAgICAgICAgSlNWYWx1ZSBsZW5ndGhWYWx1ZSA9IG9i
amVjdC0+Z2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpOworICAgICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKKyAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gbGVuZ3RoVmFsdWUudG9VSW50MzIoZXhlYyk7
CisgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOworCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDAgOyBpIDwgbGVuZ3Ro
OyArK2kpIHsKKyAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBp
KTsKKyAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKKworICAgICAgICAgICAgaWYgKHZhbHVlLmlzVW5kZWZp
bmVkT3JOdWxsKCkpCisgICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFwcGVuZChTUUxWYWx1ZSgp
KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlLmlzTnVtYmVyKCkpCisgICAgICAgICAgICAg
ICAgc3FsVmFsdWVzLmFwcGVuZCh2YWx1ZS51bmNoZWNrZWRHZXROdW1iZXIoKSk7CisgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHRoZSBhcmd1bWVudCB0byBh
IHN0cmluZyBhbmQgYXBwZW5kIGl0CisgICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFwcGVuZCh1
c3RyaW5nVG9TdHJpbmcodmFsdWUudG9TdHJpbmcoZXhlYykpKTsKKyAgICAgICAgICAgICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGdsb2JhbE9i
amVjdCgpLCBXVEY6OmdldFB0cihtX2ltcGwtPmV4ZWN1dGVTUUwoc3FsU3RhdGVtZW50LCBzcWxW
YWx1ZXMsIGVjKSkpOworICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisKKyAgICByZXR1
cm4gcmVzdWx0OwogfQogCiB9Cg==
</data>
<flag name="commit-queue"
          id="39633"
          type_id="3"
          status="-"
          setter="dumi"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55453</attachid>
            <date>2010-05-07 19:57:58 -0700</date>
            <delta_ts>2010-05-07 20:17:48 -0700</delta_ts>
            <desc>patch #4: V8 bindings implementation</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>4700</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1ODk5MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTAtMDUtMDcgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbXBsZW1lbnQgdGhlIFY4IGJpbmRpbmdzIGZvciB0aGUgc3luYyBEQiBBUEkuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnLnNob3dfYnVnLmNnaT9pZD0zNDk5NAorCisgICAgICAg
ICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YWJhc2VTeW5jQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlY4RGF0YWJhc2VTeW5jOjpjaGFuZ2VWZXJzaW9uQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlVHJhbnNhY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1
c3RvbS9WOFNRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OFNRTFRyYW5zYWN0aW9uU3luYzo6ZXhlY3V0ZVNxbENhbGxiYWNrKToKKwogMjAxMC0wNS0wNyAg
RHVtaXRydSBEYW5pbGl1YyAgPGR1bWlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEJyYWR5IEVpZHNvbi4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0
YWJhc2VTeW5jQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOERhdGFiYXNlU3luY0N1c3RvbS5jcHAJKHJldmlzaW9uIDU4OTg5KQorKysgV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhYmFzZVN5bmNDdXN0b20uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00NCwxMSArNDQsNDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4RGF0YWJhc2VTeW5jOjpjaGFuZ2VWZXJzaW9uQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5EYXRhYmFzZVN5bmMuY2hh
bmdlVmVyc2lvbigpIik7CisKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDIpCisgICAgICAgIHJl
dHVybiB0aHJvd0Vycm9yKFNZTlRBWF9FUlIpOworCisgICAgRVhDRVBUSU9OX0JMT0NLKFN0cmlu
Zywgb2xkVmVyc2lvbiwgdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pKTsKKyAgICBFWENFUFRJT05f
QkxPQ0soU3RyaW5nLCBuZXdWZXJzaW9uLCB0b1dlYkNvcmVTdHJpbmcoYXJnc1sxXSkpOworCisg
ICAgRGF0YWJhc2VTeW5jKiBkYXRhYmFzZSA9IFY4RGF0YWJhc2VTeW5jOjp0b05hdGl2ZShhcmdz
LkhvbGRlcigpKTsKKworICAgIFJlZlB0cjxWOFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrPiBj
YWxsYmFjazsKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDIpIHsKKyAgICAgICAgaWYgKCFhcmdz
WzJdLT5Jc09iamVjdCgpKQorICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoVFlQRV9NSVNN
QVRDSF9FUlIpOworCisgICAgICAgIGNhbGxiYWNrID0gVjhTUUxUcmFuc2FjdGlvblN5bmNDYWxs
YmFjazo6Y3JlYXRlKGFyZ3NbMl0sIDApOworICAgIH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOworICAgIGRhdGFiYXNlLT5jaGFuZ2VWZXJzaW9uKG9sZFZlcnNpb24sIG5ld1ZlcnNpb24s
IGNhbGxiYWNrLnJlbGVhc2UoKSwgZWMpOworICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihl
Yyk7CisKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCiBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGNyZWF0ZVRyYW5zYWN0aW9uKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Ms
IGJvb2wgcmVhZE9ubHkpCiB7CisgICAgaWYgKCFhcmdzLkxlbmd0aCgpKQorICAgICAgICByZXR1
cm4gdGhyb3dFcnJvcihTWU5UQVhfRVJSKTsKKworICAgIGlmICghYXJnc1swXS0+SXNPYmplY3Qo
KSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoVFlQRV9NSVNNQVRDSF9FUlIpOworCisgICAg
RGF0YWJhc2VTeW5jKiBkYXRhYmFzZSA9IFY4RGF0YWJhc2VTeW5jOjp0b05hdGl2ZShhcmdzLkhv
bGRlcigpKTsKKworICAgIFJlZlB0cjxWOFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrPiBjYWxs
YmFjayA9IFY4U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s6OmNyZWF0ZShhcmdzWzBdLCAwKTsK
KworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGRhdGFiYXNlLT50cmFuc2FjdGlvbihj
YWxsYmFjay5yZWxlYXNlKCksIHJlYWRPbmx5LCBlYyk7CisgICAgVjhQcm94eTo6c2V0RE9NRXhj
ZXB0aW9uKGVjKTsKKwogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKQEAgLTY1LDUg
KzEwMCwzIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERhdGFiYXNlU3luYzo6cmUKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHAJ
KHJldmlzaW9uIDU4OTg5KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFu
c2FjdGlvblN5bmNDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw0OSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhTUUxUcmFuc2FjdGlv
blN5bmM6OmV4ZWN1dGVTcWxDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewog
ICAgIElOQ19TVEFUUygiRE9NLlNRTFRyYW5zYWN0aW9uU3luYy5leGVjdXRlU3FsKCkiKTsKKwor
ICAgIGlmICghYXJncy5MZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoU1lOVEFY
X0VSUik7CisKKyAgICBFWENFUFRJT05fQkxPQ0soU3RyaW5nLCBzdGF0ZW1lbnQsIHRvV2ViQ29y
ZVN0cmluZyhhcmdzWzBdKSk7CisKKyAgICBWZWN0b3I8U1FMVmFsdWU+IHNxbFZhbHVlczsKKwor
ICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMSAmJiAhaXNVbmRlZmluZWRPck51bGwoYXJnc1sxXSkp
IHsKKyAgICAgICAgaWYgKCFhcmdzWzFdLT5Jc09iamVjdCgpKQorICAgICAgICAgICAgcmV0dXJu
IHRocm93RXJyb3IoVFlQRV9NSVNNQVRDSF9FUlIpOworCisgICAgICAgIHVpbnQzMl90IHNxbEFy
Z3NMZW5ndGggPSAwOworICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gc3FsQXJnc09iamVj
dCA9IGFyZ3NbMV0tPlRvT2JqZWN0KCk7CisgICAgICAgIEVYQ0VQVElPTl9CTE9DSyh2ODo6TG9j
YWw8djg6OlZhbHVlPiwgbGVuZ3RoLCBzcWxBcmdzT2JqZWN0LT5HZXQodjg6OlN0cmluZzo6TmV3
KCJsZW5ndGgiKSkpOworCisgICAgICAgIGlmIChpc1VuZGVmaW5lZE9yTnVsbChsZW5ndGgpKQor
ICAgICAgICAgICAgc3FsQXJnc0xlbmd0aCA9IHNxbEFyZ3NPYmplY3QtPkdldFByb3BlcnR5TmFt
ZXMoKS0+TGVuZ3RoKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNxbEFyZ3NMZW5ndGgg
PSBsZW5ndGgtPlVpbnQzMlZhbHVlKCk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9
IDA7IGkgPCBzcWxBcmdzTGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6
SW50ZWdlcj4ga2V5ID0gdjg6OkludGVnZXI6Ok5ldyhpKTsKKyAgICAgICAgICAgIEVYQ0VQVElP
Tl9CTE9DSyh2ODo6TG9jYWw8djg6OlZhbHVlPiwgdmFsdWUsIHNxbEFyZ3NPYmplY3QtPkdldChr
ZXkpKTsKKworICAgICAgICAgICAgaWYgKHZhbHVlLklzRW1wdHkoKSB8fCB2YWx1ZS0+SXNOdWxs
KCkpCisgICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFwcGVuZChTUUxWYWx1ZSgpKTsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKHZhbHVlLT5Jc051bWJlcigpKSB7CisgICAgICAgICAgICAgICAgRVhD
RVBUSU9OX0JMT0NLKGRvdWJsZSwgc3FsVmFsdWUsIHZhbHVlLT5OdW1iZXJWYWx1ZSgpKTsKKyAg
ICAgICAgICAgICAgICBzcWxWYWx1ZXMuYXBwZW5kKFNRTFZhbHVlKHNxbFZhbHVlKSk7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIEVYQ0VQVElPTl9CTE9DSyhTdHJpbmcs
IHNxbFZhbHVlLCB0b1dlYkNvcmVTdHJpbmcodmFsdWUpKTsKKyAgICAgICAgICAgICAgICBzcWxW
YWx1ZXMuYXBwZW5kKFNRTFZhbHVlKHNxbFZhbHVlKSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBTUUxUcmFuc2FjdGlvblN5bmMqIHRyYW5zYWN0aW9uID0gVjhTUUxU
cmFuc2FjdGlvblN5bmM6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworCisgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CisgICAgdHJhbnNhY3Rpb24tPmV4ZWN1dGVTUUwoc3RhdGVtZW50LCBzcWxW
YWx1ZXMsIGVjKTsKKyAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMpOworCiAgICAgcmV0
dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAo=
</data>
<flag name="commit-queue"
          id="39638"
          type_id="3"
          status="-"
          setter="dumi"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55454</attachid>
            <date>2010-05-07 19:59:15 -0700</date>
            <delta_ts>2010-05-10 15:47:40 -0700</delta_ts>
            <desc>patch #5: openDatabaseSync() inputs test</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>5631</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU4OTg5KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMDUtMDcgIER1bWl0cnUgRGFuaWxpdWMg
IDxkdW1pQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRpbmcgYSB0ZXN0IHRoYXQgbWFrZXMgc3VyZSBvcGVuRGF0YWJhc2VT
eW5jKCkgZGVhbHMgY29ycmVjdGx5IHdpdGggaW52YWxpZCBpbnB1dHMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDk5NAorCisgICAgICAgICogZmFz
dC93b3JrZXJzL3N0b3JhZ2U6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd29ya2Vycy9zdG9yYWdl
L29wZW4tZGF0YWJhc2Utc3luYy1pbnB1dHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3dvcmtlcnMvc3RvcmFnZS9vcGVuLWRhdGFiYXNlLXN5bmMtaW5wdXRzLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3Qvd29ya2Vycy9zdG9yYWdlL3Jlc291cmNlczogQWRkZWQuCisg
ICAgICAgICogZmFzdC93b3JrZXJzL3N0b3JhZ2UvcmVzb3VyY2VzL29wZW4tZGF0YWJhc2Utc3lu
Yy1pbnB1dHMuanM6IEFkZGVkLgorICAgICAgICAobm90QVN0cmluZy50b1N0cmluZyk6CisgICAg
ICAgICogZmFzdC93b3JrZXJzL3N0b3JhZ2UvcmVzb3VyY2VzL3Rlc3QtaW5wdXRzLWNvbW1vbi5q
czogQWRkZWQuCisgICAgICAgIChsb2cpOgorICAgICAgICAoZmluaXNoVGVzdCk6CisgICAgICAg
IChydW5UZXN0Lndvcmtlci5vbm1lc3NhZ2UpOgorICAgICAgICAocnVuVGVzdCk6CisKIDIwMTAt
MDUtMDYgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvd29y
a2Vycy9zdG9yYWdlL29wZW4tZGF0YWJhc2Utc3luYy1pbnB1dHMtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zdG9yYWdlL29wZW4tZGF0YWJhc2Ut
c3luYy1pbnB1dHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC93b3JrZXJzL3N0b3JhZ2Uvb3Blbi1kYXRhYmFzZS1zeW5jLWlucHV0cy1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOCBAQAorVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBv
cGVuRGF0YWJhc2VTeW5jKCkgYWNjZXB0cyBvbmx5IHZhbGlkIHBhcmFtZXRlcnMuCitQQVNTOiBT
WU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyCitQQVNTOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0
aW9uIDEyCitQQVNTOiB1bmRlZmluZWQKK1BBU1M6IHVuZGVmaW5lZAorUEFTUzogdW5kZWZpbmVk
CitQQVNTOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNworCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L3dvcmtlcnMvc3RvcmFnZS9vcGVuLWRhdGFiYXNlLXN5bmMtaW5wdXRzLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3N0b3JhZ2Uvb3Blbi1k
YXRhYmFzZS1zeW5jLWlucHV0cy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC93b3JrZXJzL3N0b3JhZ2Uvb3Blbi1kYXRhYmFzZS1zeW5jLWlucHV0cy5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDEyIEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Rlc3QtaW5wdXRzLWNvbW1vbi5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0icnVuVGVzdCgncmVzb3VyY2VzL29wZW4tZGF0YWJhc2Ut
c3luYy1pbnB1dHMuanMnKSI+CitUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IG9wZW5EYXRhYmFz
ZVN5bmMoKSBhY2NlcHRzIG9ubHkgdmFsaWQgcGFyYW1ldGVycy4KKzxwcmUgaWQ9ImNvbnNvbGUi
PgorPC9wcmU+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3dvcmtl
cnMvc3RvcmFnZS9yZXNvdXJjZXMvb3Blbi1kYXRhYmFzZS1zeW5jLWlucHV0cy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc3RvcmFnZS9yZXNvdXJjZXMvb3Blbi1k
YXRhYmFzZS1zeW5jLWlucHV0cy5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
d29ya2Vycy9zdG9yYWdlL3Jlc291cmNlcy9vcGVuLWRhdGFiYXNlLXN5bmMtaW5wdXRzLmpzCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY0IEBACit2YXIgZGI7CisKK3ZhciBub3RBU3RyaW5nID0g
eworICAgIHRvU3RyaW5nOiBmdW5jdGlvbigpIHsgdGhyb3cgImZvbyI7IH0KK307CisKK3RyeSB7
CisgICAgZGIgPSBvcGVuRGF0YWJhc2VTeW5jKCk7CisgICAgcG9zdE1lc3NhZ2UoIkZBSUw6IGNh
bGxpbmcgb3BlbkRhdGFiYXNlU3luYygpIHdpdGhvdXQgYW55IGFyZ3VtZW50IHNob3VsZCB0aHJv
dyBhbiBleGNlcHRpb24uIik7Cit9IGNhdGNoIChlcnIpIHsKKyAgICBwb3N0TWVzc2FnZSgiUEFT
UzogIiArIGVyci5tZXNzYWdlKTsKK30KKwordHJ5IHsKKyAgICBkYiA9IG9wZW5EYXRhYmFzZVN5
bmMoIkRCTmFtZSIsICJEQlZlcnNpb24iKTsKKyAgICBwb3N0TWVzc2FnZSgiRkFJTDogY2FsbGlu
ZyBvcGVuRGF0YWJhc2VTeW5jKCkgd2l0aCBmZXdlciB0aGFuIGZvdXIgYXJndW1lbnRzIHNob3Vs
ZCB0aHJvdyBhbiBleGNlcHRpb24uIik7Cit9IGNhdGNoIChlcnIpIHsKKyAgICBwb3N0TWVzc2Fn
ZSgiUEFTUzogIiArIGVyci5tZXNzYWdlKTsKK30KKwordHJ5IHsKKyAgICBkYiA9IG9wZW5EYXRh
YmFzZVN5bmMobm90QVN0cmluZywgIkRCVmVyc2lvbiIsICJEQkRlc2NyaXB0aW9uIiwgMTAyNCk7
CisgICAgcG9zdE1lc3NhZ2UoIkZBSUw6IHRoZSBmaXJzdCBhcmd1bWVudCB0byBvcGVuRGF0YWJh
c2VTeW5jKCkgbXVzdCBiZSBhIHN0cmluZy4iKTsKK30gY2F0Y2ggKGVycikgeworICAgIHBvc3RN
ZXNzYWdlKCJQQVNTOiAiICsgZXJyLm1lc3NhZ2UpOworfQorCit0cnkgeworICAgIGRiID0gb3Bl
bkRhdGFiYXNlU3luYygiREJOYW1lIiwgbm90QVN0cmluZywgIkRCRGVzY3JpcHRpb24iLCAxMDI0
KTsKKyAgICBwb3N0TWVzc2FnZSgiRkFJTDogdGhlIHNlY29uZCBhcmd1bWVudCB0byBvcGVuRGF0
YWJhc2VTeW5jKCkgbXVzdCBiZSBhIHN0cmluZy4iKTsKK30gY2F0Y2ggKGVycikgeworICAgIHBv
c3RNZXNzYWdlKCJQQVNTOiAiICsgZXJyLm1lc3NhZ2UpOworfQorCit0cnkgeworICAgIGRiID0g
b3BlbkRhdGFiYXNlU3luYygiREJOYW1lIiwgIkRCVmVyc2lvbiIsIG5vdEFTdHJpbmcsIDEwMjQp
OworICAgIHBvc3RNZXNzYWdlKCJGQUlMOiB0aGUgZm91cnRoIGFyZ3VtZW50IHRvIG9wZW5EYXRh
YmFzZVN5bmMoKSBtdXN0IGJlIGFuIGludGVnZXIuIik7Cit9IGNhdGNoIChlcnIpIHsKKyAgICBw
b3N0TWVzc2FnZSgiUEFTUzogIiArIGVyci5tZXNzYWdlKTsKK30KKwordHJ5IHsKKyAgICBkYiA9
IG9wZW5EYXRhYmFzZVN5bmMoIkRCTmFtZSIsICJEQlZlcnNpb24iLCAiREJEZXNjcmlwdGlvbiIs
IDEwMjQsIDApOworICAgIHBvc3RNZXNzYWdlKCJGQUlMOiB0aGUgZmlmdGggYXJndW1lbnQgdG8g
b3BlbkRhdGFiYXNlU3luYygpIG11c3QgYmUgYW4gb2JqZWN0LCBpZiBwcmVzZW50LiIpOworfSBj
YXRjaCAoZXJyKSB7CisgICAgcG9zdE1lc3NhZ2UoIlBBU1M6ICIgKyBlcnIubWVzc2FnZSk7Cit9
CisKKy8vIEZJWE1FOiBVbmNvbW1lbnQgdGhlc2UgdGVzdHMgd2hlbiB0aGUgc3luYyBEQiBBUEkg
aXMgaW1wbGVtZW50ZWQuCisvL3RyeSB7CisvLyAgICBkYiA9IG9wZW5EYXRhYmFzZVN5bmMoIkRC
TmFtZSIsICJEQlZlcnNpb24iLCAiREJEZXNjcmlwdGlvbiIsIDEwMjQpOworLy8gICAgcG9zdE1l
c3NhZ2UoIlBBU1M6IG9wZW5EYXRhYmFzZVN5bmMoKSBzdWNjZWVkZWQuIik7CisvL30gY2F0Y2gg
KGVycikgeworLy8gICAgcG9zdE1lc3NhZ2UoIkZBSUw6ICIgKyBlcnIubWVzc2FnZSk7CisvL30K
Ky8vCisvL3RyeSB7CisvLyAgICBkYiA9IG9wZW5EYXRhYmFzZVN5bmMoIkRCTmFtZSIsICJEQlZl
cnNpb24iLCAiREJEZXNjcmlwdGlvbiIsIDEwMjQsIGZ1bmN0aW9uKGRiKSB7IH0pOworLy8gICAg
cG9zdE1lc3NhZ2UoIlBBU1M6IGNhbGxpbmcgb3BlbkRhdGFiYXNlU3luYygpIHdpdGggYSBjcmVh
dGlvbiBjYWxsYmFjayBzdWNjZWVkZWQuIik7CisvL30gY2F0Y2ggKGVycikgeworLy8gICAgcG9z
dE1lc3NhZ2UoIkZBSUw6ICIgKyBlcnIubWVzc2FnZSk7CisvL30KKworcG9zdE1lc3NhZ2UoImRv
bmUiKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zdG9yYWdlL3Jlc291cmNlcy90
ZXN0LWlucHV0cy1jb21tb24uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC93b3Jr
ZXJzL3N0b3JhZ2UvcmVzb3VyY2VzL3Rlc3QtaW5wdXRzLWNvbW1vbi5qcwkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zdG9yYWdlL3Jlc291cmNlcy90ZXN0LWlucHV0
cy1jb21tb24uanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzAgQEAKK2Z1bmN0aW9uIGxvZyht
ZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJI
VE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7Cit9CisKK2Z1bmN0aW9uIGZpbmlzaFRlc3QoKQorewor
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCh3b3JrZXJKU0Zp
bGUpCit7CisgICAgaWYgKCF3b3JrZXJKU0ZpbGUpIHsKKyAgICAgICAgbG9nKCJGQUlMOiBubyBK
UyBmaWxlIHNwZWNpZmllZCBmb3IgdGhlIHdvcmtlci4iKTsKKyAgICB9CisKKyAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOworICAgIH0KKworICAgIHZhciB3b3JrZXIgPSBuZXcgV29ya2VyKHdvcmtlckpTRmlsZSk7
CisgICAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGlmIChl
dmVudC5kYXRhID09ICJkb25lIikKKyAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgbG9nKGV2ZW50LmRhdGEpOworICAgIH0KK30K
</data>
<flag name="review"
          id="39639"
          type_id="1"
          status="+"
          setter="beidson"
    />
    <flag name="commit-queue"
          id="39640"
          type_id="3"
          status="-"
          setter="dumi"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55455</attachid>
            <date>2010-05-07 20:17:48 -0700</date>
            <delta_ts>2010-05-07 20:32:31 -0700</delta_ts>
            <desc>patch #4: V8 bindings implementation</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>4601</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1ODk5MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTAtMDUtMDcgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbXBsZW1lbnQgdGhlIFY4IGJpbmRpbmdzIGZvciB0aGUgc3luYyBEQiBBUEkuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnLnNob3dfYnVnLmNnaT9pZD0zNDk5NAorCisgICAgICAg
ICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YWJhc2VTeW5jQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlY4RGF0YWJhc2VTeW5jOjpjaGFuZ2VWZXJzaW9uQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlVHJhbnNhY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1
c3RvbS9WOFNRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OFNRTFRyYW5zYWN0aW9uU3luYzo6ZXhlY3V0ZVNxbENhbGxiYWNrKToKKwogMjAxMC0wNS0wNyAg
RHVtaXRydSBEYW5pbGl1YyAgPGR1bWlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEJyYWR5IEVpZHNvbi4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0
YWJhc2VTeW5jQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOERhdGFiYXNlU3luY0N1c3RvbS5jcHAJKHJldmlzaW9uIDU4OTkxKQorKysgV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhYmFzZVN5bmNDdXN0b20uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00NCwxMSArNDQsNDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4RGF0YWJhc2VTeW5jOjpjaGFuZ2VWZXJzaW9uQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5EYXRhYmFzZVN5bmMuY2hh
bmdlVmVyc2lvbigpIik7CisKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDIpCisgICAgICAgIHJl
dHVybiB0aHJvd0Vycm9yKFNZTlRBWF9FUlIpOworCisgICAgRVhDRVBUSU9OX0JMT0NLKFN0cmlu
Zywgb2xkVmVyc2lvbiwgdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pKTsKKyAgICBFWENFUFRJT05f
QkxPQ0soU3RyaW5nLCBuZXdWZXJzaW9uLCB0b1dlYkNvcmVTdHJpbmcoYXJnc1sxXSkpOworCisg
ICAgRGF0YWJhc2VTeW5jKiBkYXRhYmFzZSA9IFY4RGF0YWJhc2VTeW5jOjp0b05hdGl2ZShhcmdz
LkhvbGRlcigpKTsKKworICAgIFJlZlB0cjxWOFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrPiBj
YWxsYmFjazsKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDIpIHsKKyAgICAgICAgaWYgKCFhcmdz
WzJdLT5Jc09iamVjdCgpKQorICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoVFlQRV9NSVNN
QVRDSF9FUlIpOworCisgICAgICAgIGNhbGxiYWNrID0gVjhTUUxUcmFuc2FjdGlvblN5bmNDYWxs
YmFjazo6Y3JlYXRlKGFyZ3NbMl0sIDApOworICAgIH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOworICAgIGRhdGFiYXNlLT5jaGFuZ2VWZXJzaW9uKG9sZFZlcnNpb24sIG5ld1ZlcnNpb24s
IGNhbGxiYWNrLnJlbGVhc2UoKSwgZWMpOworICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihl
Yyk7CisKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCiBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGNyZWF0ZVRyYW5zYWN0aW9uKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Ms
IGJvb2wgcmVhZE9ubHkpCiB7CisgICAgaWYgKCFhcmdzLkxlbmd0aCgpKQorICAgICAgICByZXR1
cm4gdGhyb3dFcnJvcihTWU5UQVhfRVJSKTsKKworICAgIGlmICghYXJnc1swXS0+SXNPYmplY3Qo
KSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoVFlQRV9NSVNNQVRDSF9FUlIpOworCisgICAg
RGF0YWJhc2VTeW5jKiBkYXRhYmFzZSA9IFY4RGF0YWJhc2VTeW5jOjp0b05hdGl2ZShhcmdzLkhv
bGRlcigpKTsKKworICAgIFJlZlB0cjxWOFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrPiBjYWxs
YmFjayA9IFY4U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s6OmNyZWF0ZShhcmdzWzBdLCAwKTsK
KworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGRhdGFiYXNlLT50cmFuc2FjdGlvbihj
YWxsYmFjay5yZWxlYXNlKCksIHJlYWRPbmx5LCBlYyk7CisgICAgVjhQcm94eTo6c2V0RE9NRXhj
ZXB0aW9uKGVjKTsKKwogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9u
U3luY0N1c3RvbS5jcHAJKHJldmlzaW9uIDU4OTkxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
OSw2ICs0OSw0OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhTUUxUcmFuc2FjdGlvblN5bmM6OmV4ZWN1dGVTcWxDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLlNRTFRyYW5zYWN0aW9uU3luYy5leGVj
dXRlU3FsKCkiKTsKKworICAgIGlmICghYXJncy5MZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIHRo
cm93RXJyb3IoU1lOVEFYX0VSUik7CisKKyAgICBFWENFUFRJT05fQkxPQ0soU3RyaW5nLCBzdGF0
ZW1lbnQsIHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKSk7CisKKyAgICBWZWN0b3I8U1FMVmFsdWU+
IHNxbFZhbHVlczsKKworICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMSAmJiAhaXNVbmRlZmluZWRP
ck51bGwoYXJnc1sxXSkpIHsKKyAgICAgICAgaWYgKCFhcmdzWzFdLT5Jc09iamVjdCgpKQorICAg
ICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoVFlQRV9NSVNNQVRDSF9FUlIpOworCisgICAgICAg
IHVpbnQzMl90IHNxbEFyZ3NMZW5ndGggPSAwOworICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVj
dD4gc3FsQXJnc09iamVjdCA9IGFyZ3NbMV0tPlRvT2JqZWN0KCk7CisgICAgICAgIEVYQ0VQVElP
Tl9CTE9DSyh2ODo6TG9jYWw8djg6OlZhbHVlPiwgbGVuZ3RoLCBzcWxBcmdzT2JqZWN0LT5HZXQo
djg6OlN0cmluZzo6TmV3KCJsZW5ndGgiKSkpOworCisgICAgICAgIGlmIChpc1VuZGVmaW5lZE9y
TnVsbChsZW5ndGgpKQorICAgICAgICAgICAgc3FsQXJnc0xlbmd0aCA9IHNxbEFyZ3NPYmplY3Qt
PkdldFByb3BlcnR5TmFtZXMoKS0+TGVuZ3RoKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHNxbEFyZ3NMZW5ndGggPSBsZW5ndGgtPlVpbnQzMlZhbHVlKCk7CisKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBzcWxBcmdzTGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAg
IHY4OjpMb2NhbDx2ODo6SW50ZWdlcj4ga2V5ID0gdjg6OkludGVnZXI6Ok5ldyhpKTsKKyAgICAg
ICAgICAgIEVYQ0VQVElPTl9CTE9DSyh2ODo6TG9jYWw8djg6OlZhbHVlPiwgdmFsdWUsIHNxbEFy
Z3NPYmplY3QtPkdldChrZXkpKTsKKworICAgICAgICAgICAgaWYgKHZhbHVlLklzRW1wdHkoKSB8
fCB2YWx1ZS0+SXNOdWxsKCkpCisgICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFwcGVuZChTUUxW
YWx1ZSgpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlLT5Jc051bWJlcigpKSB7CisgICAg
ICAgICAgICAgICAgRVhDRVBUSU9OX0JMT0NLKGRvdWJsZSwgc3FsVmFsdWUsIHZhbHVlLT5OdW1i
ZXJWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBzcWxWYWx1ZXMuYXBwZW5kKFNRTFZhbHVlKHNx
bFZhbHVlKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIEVYQ0VQVElP
Tl9CTE9DSyhTdHJpbmcsIHNxbFZhbHVlLCB0b1dlYkNvcmVTdHJpbmcodmFsdWUpKTsKKyAgICAg
ICAgICAgICAgICBzcWxWYWx1ZXMuYXBwZW5kKFNRTFZhbHVlKHNxbFZhbHVlKSk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBTUUxUcmFuc2FjdGlvblN5bmMqIHRyYW5z
YWN0aW9uID0gVjhTUUxUcmFuc2FjdGlvblN5bmM6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwor
CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgdHJhbnNhY3Rpb24tPmV4ZWN1dGVTUUwo
c3RhdGVtZW50LCBzcWxWYWx1ZXMsIGVjKTsKKyAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24o
ZWMpOworCiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAo=
</data>
<flag name="commit-queue"
          id="39642"
          type_id="3"
          status="-"
          setter="dumi"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55456</attachid>
            <date>2010-05-07 20:32:31 -0700</date>
            <delta_ts>2010-05-08 00:35:07 -0700</delta_ts>
            <desc>patch #4: V8 bindings implementation</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>6255</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1ODk5MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTAtMDUtMDcgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbXBsZW1lbnQgdGhlIFY4IGJpbmRpbmdzIGZvciB0aGUgc3luYyBEQiBBUEkuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnLnNob3dfYnVnLmNnaT9pZD0zNDk5NAorCisgICAgICAg
ICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YWJhc2VTeW5jQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlY4RGF0YWJhc2VTeW5jOjpjaGFuZ2VWZXJzaW9uQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlVHJhbnNhY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1
c3RvbS9WOFNRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OFNRTFRyYW5zYWN0aW9uU3luYzo6ZXhlY3V0ZVNxbENhbGxiYWNrKToKKwogMjAxMC0wNS0wNyAg
RHVtaXRydSBEYW5pbGl1YyAgPGR1bWlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEJyYWR5IEVpZHNvbi4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0
YWJhc2VTeW5jQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOERhdGFiYXNlU3luY0N1c3RvbS5jcHAJKHJldmlzaW9uIDU4OTkxKQorKysgV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhYmFzZVN5bmNDdXN0b20uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00NCwxMSArNDQsNDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4RGF0YWJhc2VTeW5jOjpjaGFuZ2VWZXJzaW9uQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5EYXRhYmFzZVN5bmMuY2hh
bmdlVmVyc2lvbigpIik7CisKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDIpCisgICAgICAgIHJl
dHVybiB0aHJvd0Vycm9yKFNZTlRBWF9FUlIpOworCisgICAgRVhDRVBUSU9OX0JMT0NLKFN0cmlu
Zywgb2xkVmVyc2lvbiwgdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pKTsKKyAgICBFWENFUFRJT05f
QkxPQ0soU3RyaW5nLCBuZXdWZXJzaW9uLCB0b1dlYkNvcmVTdHJpbmcoYXJnc1sxXSkpOworCisg
ICAgRGF0YWJhc2VTeW5jKiBkYXRhYmFzZSA9IFY4RGF0YWJhc2VTeW5jOjp0b05hdGl2ZShhcmdz
LkhvbGRlcigpKTsKKworICAgIFJlZlB0cjxWOFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrPiBj
YWxsYmFjazsKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDIpIHsKKyAgICAgICAgaWYgKCFhcmdz
WzJdLT5Jc09iamVjdCgpKQorICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoVFlQRV9NSVNN
QVRDSF9FUlIpOworCisgICAgICAgIGNhbGxiYWNrID0gVjhTUUxUcmFuc2FjdGlvblN5bmNDYWxs
YmFjazo6Y3JlYXRlKGFyZ3NbMl0sIDApOworICAgIH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOworICAgIGRhdGFiYXNlLT5jaGFuZ2VWZXJzaW9uKG9sZFZlcnNpb24sIG5ld1ZlcnNpb24s
IGNhbGxiYWNrLnJlbGVhc2UoKSwgZWMpOworICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihl
Yyk7CisKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCiBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGNyZWF0ZVRyYW5zYWN0aW9uKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Ms
IGJvb2wgcmVhZE9ubHkpCiB7CisgICAgaWYgKCFhcmdzLkxlbmd0aCgpKQorICAgICAgICByZXR1
cm4gdGhyb3dFcnJvcihTWU5UQVhfRVJSKTsKKworICAgIGlmICghYXJnc1swXS0+SXNPYmplY3Qo
KSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoVFlQRV9NSVNNQVRDSF9FUlIpOworCisgICAg
RGF0YWJhc2VTeW5jKiBkYXRhYmFzZSA9IFY4RGF0YWJhc2VTeW5jOjp0b05hdGl2ZShhcmdzLkhv
bGRlcigpKTsKKworICAgIFJlZlB0cjxWOFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrPiBjYWxs
YmFjayA9IFY4U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s6OmNyZWF0ZShhcmdzWzBdLCAwKTsK
KworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGRhdGFiYXNlLT50cmFuc2FjdGlvbihj
YWxsYmFjay5yZWxlYXNlKCksIHJlYWRPbmx5LCBlYyk7CisgICAgVjhQcm94eTo6c2V0RE9NRXhj
ZXB0aW9uKGVjKTsKKwogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9u
U3luY0N1c3RvbS5jcHAJKHJldmlzaW9uIDU4OTkxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
OSw2ICs0OSw0OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhTUUxUcmFuc2FjdGlvblN5bmM6OmV4ZWN1dGVTcWxDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLlNRTFRyYW5zYWN0aW9uU3luYy5leGVj
dXRlU3FsKCkiKTsKKworICAgIGlmICghYXJncy5MZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIHRo
cm93RXJyb3IoU1lOVEFYX0VSUik7CisKKyAgICBFWENFUFRJT05fQkxPQ0soU3RyaW5nLCBzdGF0
ZW1lbnQsIHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKSk7CisKKyAgICBWZWN0b3I8U1FMVmFsdWU+
IHNxbFZhbHVlczsKKworICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMSAmJiAhaXNVbmRlZmluZWRP
ck51bGwoYXJnc1sxXSkpIHsKKyAgICAgICAgaWYgKCFhcmdzWzFdLT5Jc09iamVjdCgpKQorICAg
ICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoVFlQRV9NSVNNQVRDSF9FUlIpOworCisgICAgICAg
IHVpbnQzMl90IHNxbEFyZ3NMZW5ndGggPSAwOworICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVj
dD4gc3FsQXJnc09iamVjdCA9IGFyZ3NbMV0tPlRvT2JqZWN0KCk7CisgICAgICAgIEVYQ0VQVElP
Tl9CTE9DSyh2ODo6TG9jYWw8djg6OlZhbHVlPiwgbGVuZ3RoLCBzcWxBcmdzT2JqZWN0LT5HZXQo
djg6OlN0cmluZzo6TmV3KCJsZW5ndGgiKSkpOworCisgICAgICAgIGlmIChpc1VuZGVmaW5lZE9y
TnVsbChsZW5ndGgpKQorICAgICAgICAgICAgc3FsQXJnc0xlbmd0aCA9IHNxbEFyZ3NPYmplY3Qt
PkdldFByb3BlcnR5TmFtZXMoKS0+TGVuZ3RoKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHNxbEFyZ3NMZW5ndGggPSBsZW5ndGgtPlVpbnQzMlZhbHVlKCk7CisKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBzcWxBcmdzTGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAg
IHY4OjpMb2NhbDx2ODo6SW50ZWdlcj4ga2V5ID0gdjg6OkludGVnZXI6Ok5ldyhpKTsKKyAgICAg
ICAgICAgIEVYQ0VQVElPTl9CTE9DSyh2ODo6TG9jYWw8djg6OlZhbHVlPiwgdmFsdWUsIHNxbEFy
Z3NPYmplY3QtPkdldChrZXkpKTsKKworICAgICAgICAgICAgaWYgKHZhbHVlLklzRW1wdHkoKSB8
fCB2YWx1ZS0+SXNOdWxsKCkpCisgICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFwcGVuZChTUUxW
YWx1ZSgpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlLT5Jc051bWJlcigpKSB7CisgICAg
ICAgICAgICAgICAgRVhDRVBUSU9OX0JMT0NLKGRvdWJsZSwgc3FsVmFsdWUsIHZhbHVlLT5OdW1i
ZXJWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBzcWxWYWx1ZXMuYXBwZW5kKFNRTFZhbHVlKHNx
bFZhbHVlKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIEVYQ0VQVElP
Tl9CTE9DSyhTdHJpbmcsIHNxbFZhbHVlLCB0b1dlYkNvcmVTdHJpbmcodmFsdWUpKTsKKyAgICAg
ICAgICAgICAgICBzcWxWYWx1ZXMuYXBwZW5kKFNRTFZhbHVlKHNxbFZhbHVlKSk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBTUUxUcmFuc2FjdGlvblN5bmMqIHRyYW5z
YWN0aW9uID0gVjhTUUxUcmFuc2FjdGlvblN5bmM6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwor
CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgdHJhbnNhY3Rpb24tPmV4ZWN1dGVTUUwo
c3RhdGVtZW50LCBzcWxWYWx1ZXMsIGVjKTsKKyAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24o
ZWMpOworCiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIApJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwCShy
ZXZpc2lvbiA1ODk5MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29u
dGV4dEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRl
ICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiU2NoZWR1bGVkQWN0aW9uLmgiCiAjaW5jbHVk
ZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nTWFjcm9zLmgiCiAjaW5jbHVkZSAi
VjhQcm94eS5oIgogI2luY2x1ZGUgIlY4VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiVjhXb3JrZXJD
b250ZXh0RXZlbnRMaXN0ZW5lci5oIgpAQCAtMTQwLDcgKzE0MSwyOSBAQCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdG9WOChXb3JrZXJDb250ZXh0CiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXb3Jr
ZXJDb250ZXh0OjpvcGVuRGF0YWJhc2VTeW5jQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5WOFdvcmtlckNvbnRleHQub3BlbkRhdGFiYXNl
U3luYygpIik7Ci0gICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICBpZiAoYXJncy5MZW5n
dGgoKSA8IDQpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFNZTlRBWF9FUlIpOworCisgICAg
RVhDRVBUSU9OX0JMT0NLKFN0cmluZywgbmFtZSwgdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pKTsK
KyAgICBFWENFUFRJT05fQkxPQ0soU3RyaW5nLCB2ZXJzaW9uLCB0b1dlYkNvcmVTdHJpbmcoYXJn
c1sxXSkpOworICAgIEVYQ0VQVElPTl9CTE9DSyhTdHJpbmcsIGRpc3BsYXlOYW1lLCB0b1dlYkNv
cmVTdHJpbmcoYXJnc1syXSkpOworICAgIEVYQ0VQVElPTl9CTE9DSyh1bnNpZ25lZCBsb25nLCBl
c3RpbWF0ZWRTaXplLCBhcmdzWzNdLT5VaW50MzJWYWx1ZSgpKTsKKworICAgIFdvcmtlckNvbnRl
eHQqIHdvcmtlckNvbnRleHQgPSBWOFdvcmtlckNvbnRleHQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVy
KCkpOworCisgICAgUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+IGNyZWF0aW9uQ2FsbGJhY2s7Cisg
ICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPj0gNSkgeworICAgICAgICBpZiAoIWFyZ3NbNF0tPklzT2Jq
ZWN0KCkpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihUWVBFX01JU01BVENIX0VSUik7
CisKKyAgICAgICAgY3JlYXRpb25DYWxsYmFjayA9IFY4RGF0YWJhc2VDYWxsYmFjazo6Y3JlYXRl
KGFyZ3NbNF0sIDApOworICAgIH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiByZXN1bHQgPSB0b1Y4KHdvcmtlckNvbnRleHQtPm9wZW5EYXRh
YmFzZVN5bmMobmFtZSwgdmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUsIGNyZWF0
aW9uQ2FsbGJhY2sucmVsZWFzZSgpLCBlYykpOworCisgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0
aW9uKGVjKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogI2VuZGlmCiAK
</data>
<flag name="commit-queue"
          id="39644"
          type_id="3"
          status="-"
          setter="dumi"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55466</attachid>
            <date>2010-05-08 00:34:12 -0700</date>
            <delta_ts>2010-05-08 01:06:00 -0700</delta_ts>
            <desc>patch #3: JSC bindings implementation</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>6572</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1ODk5MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTAtMDUtMDcgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbXBsZW1lbnQgdGhlIEpTQyBiaW5kaW5ncyBmb3IgdGhlIHN5bmMgREIgQVBJLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQ5OTQKKworICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRGF0YWJhc2VTeW5jQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTRGF0YWJhc2VTeW5jOjpjaGFuZ2VWZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1NRTFRyYW5zYWN0aW9u
U3luY0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1NRTFRyYW5zYWN0aW9uU3luYzo6
ZXhlY3V0ZVNxbCk6CisKIDIwMTAtMDUtMDcgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRGF0YWJhc2VTeW5jQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRGF0YWJhc2VTeW5jQ3VzdG9tLmNwcAkocmV2aXNpb24gNTg5OTMpCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YWJhc2VTeW5jQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDIsMTMgKzQyLDQ1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNw
YWNlIEpTQzsKIAotSlNWYWx1ZSBKU0RhdGFiYXNlU3luYzo6Y2hhbmdlVmVyc2lvbihFeGVjU3Rh
dGUqLCBjb25zdCBBcmdMaXN0JikKK0pTVmFsdWUgSlNEYXRhYmFzZVN5bmM6OmNoYW5nZVZlcnNp
b24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogeworICAgIFN0cmluZyBv
bGRWZXJzaW9uID0gdXN0cmluZ1RvU3RyaW5nKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYykpOwor
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CisKKyAgICBTdHJpbmcgbmV3VmVyc2lvbiA9IHVzdHJpbmdUb1N0cmluZyhhcmdzLmF0KDEp
LnRvU3RyaW5nKGV4ZWMpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOworCisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFyZ3MuYXQo
MikuZ2V0T2JqZWN0KCk7CisgICAgaWYgKCFvYmplY3QpIHsKKyAgICAgICAgc2V0RE9NRXhjZXB0
aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CisgICAgfQorCisgICAgUmVmUHRyPFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrPiBjYWxs
YmFjayhKU1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrOjpjcmVhdGUob2JqZWN0LCBzdGF0aWNf
Y2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKSkpOworCisgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CisgICAgbV9pbXBsLT5jaGFuZ2VWZXJzaW9uKG9sZFZlcnNpb24sIG5l
d1ZlcnNpb24sIGNhbGxiYWNrLnJlbGVhc2UoKSwgZWMpOworICAgIHNldERPTUV4Y2VwdGlvbihl
eGVjLCBlYyk7CisKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIAotc3RhdGljIEpTVmFs
dWUgY3JlYXRlVHJhbnNhY3Rpb24oRXhlY1N0YXRlKiwgY29uc3QgQXJnTGlzdCYsIERhdGFiYXNl
U3luYyosIEpTRE9NR2xvYmFsT2JqZWN0KiwgYm9vbCkKK3N0YXRpYyBKU1ZhbHVlIGNyZWF0ZVRy
YW5zYWN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncywgRGF0YWJhc2VT
eW5jKiBkYXRhYmFzZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgYm9vbCByZWFk
T25seSkKIHsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gYXJncy5hdCgwKS5nZXRPYmplY3QoKTsK
KyAgICBpZiAoIW9iamVjdCkgeworICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQRV9N
SVNNQVRDSF9FUlIpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisKKyAg
ICBSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+IGNhbGxiYWNrKEpTU1FMVHJhbnNh
Y3Rpb25TeW5jQ2FsbGJhY2s6OmNyZWF0ZShvYmplY3QsIGdsb2JhbE9iamVjdCkpOworCisgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgZGF0YWJhc2UtPnRyYW5zYWN0aW9uKGNhbGxiYWNr
LnJlbGVhc2UoKSwgcmVhZE9ubHksIGVjKTsKKyAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMp
OworCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwCShyZXZpc2lvbiA1
ODk5MykKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw5ICs0MSw1NiBAQCB1c2luZyBuYW1lc3BhY2UgSlND
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUpTVmFsdWUgSlNTUUxUcmFuc2FjdGlvblN5bmM6
OmV4ZWN1dGVTcWwoRXhlY1N0YXRlKiwgY29uc3QgQXJnTGlzdCYpCitKU1ZhbHVlIEpTU1FMVHJh
bnNhY3Rpb25TeW5jOjpleGVjdXRlU3FsKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYg
YXJncykKIHsKLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBpZiAoYXJncy5pc0VtcHR5
KCkpIHsKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFNZTlRBWF9FUlIpOworICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisKKyAgICBTdHJpbmcgc3FsU3RhdGVtZW50
ID0gdXN0cmluZ1RvU3RyaW5nKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYykpOworICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAg
ICAvLyBOb3cgYXNzZW1ibGUgdGhlIGxpc3Qgb2YgU1FMIGFyZ3VtZW50cworICAgIFZlY3RvcjxT
UUxWYWx1ZT4gc3FsVmFsdWVzOworICAgIGlmICghYXJncy5hdCgxKS5pc1VuZGVmaW5lZE9yTnVs
bCgpKSB7CisgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhcmdzLmF0KDEpLmdldE9iamVjdCgp
OworICAgICAgICBpZiAoIW9iamVjdCkgeworICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4
ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKKyAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OworICAgICAgICB9CisKKyAgICAgICAgSlNWYWx1ZSBsZW5ndGhWYWx1ZSA9IG9iamVjdC0+Z2V0
KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpOworICAgICAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAg
ICAgdW5zaWduZWQgbGVuZ3RoID0gbGVuZ3RoVmFsdWUudG9VSW50MzIoZXhlYyk7CisgICAgICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOworCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDAgOyBpIDwgbGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBpKTsKKyAgICAg
ICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKKworICAgICAgICAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxs
KCkpCisgICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFwcGVuZChTUUxWYWx1ZSgpKTsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKHZhbHVlLmlzTnVtYmVyKCkpCisgICAgICAgICAgICAgICAgc3FsVmFs
dWVzLmFwcGVuZCh2YWx1ZS51bmNoZWNrZWRHZXROdW1iZXIoKSk7CisgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHRoZSBhcmd1bWVudCB0byBhIHN0cmluZyBh
bmQgYXBwZW5kIGl0CisgICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFwcGVuZCh1c3RyaW5nVG9T
dHJpbmcodmFsdWUudG9TdHJpbmcoZXhlYykpKTsKKyAgICAgICAgICAgICAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBX
VEY6OmdldFB0cihtX2ltcGwtPmV4ZWN1dGVTUUwoc3FsU3RhdGVtZW50LCBzcWxWYWx1ZXMsIGVj
KSkpOworICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisKKyAgICByZXR1cm4gcmVzdWx0
OwogfQogCiB9CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3Rv
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRD
dXN0b20uY3BwCShyZXZpc2lvbiA1ODk5MykKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNXb3Jr
ZXJDb250ZXh0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDkgKzE0Myw0NSBAQCBK
U1ZhbHVlIEpTV29ya2VyQ29udGV4dDo6bWVzc2FnZUNoYW5uZWwoCiAjZW5kaWYKIAogI2lmIEVO
QUJMRShEQVRBQkFTRSkKLUpTVmFsdWUgSlNXb3JrZXJDb250ZXh0OjpvcGVuRGF0YWJhc2VTeW5j
KEV4ZWNTdGF0ZSosIGNvbnN0IEFyZ0xpc3QmKQorSlNWYWx1ZSBKU1dvcmtlckNvbnRleHQ6Om9w
ZW5EYXRhYmFzZVN5bmMoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogewot
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIGlmIChhcmdzLnNpemUoKSA8IDQpIHsKKyAg
ICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFNZTlRBWF9FUlIpOworICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKKyAgICB9CisKKyAgICBTdHJpbmcgbmFtZSA9IHVzdHJpbmdUb1N0cmlu
ZyhhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworCisgICAgU3RyaW5nIHZlcnNpb24g
PSB1c3RyaW5nVG9TdHJpbmcoYXJncy5hdCgxKS50b1N0cmluZyhleGVjKSk7CisgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKworICAg
IFN0cmluZyBkaXNwbGF5TmFtZSA9IHVzdHJpbmdUb1N0cmluZyhhcmdzLmF0KDIpLnRvU3RyaW5n
KGV4ZWMpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOworCisgICAgLy8gYXJncy5hdCgzKSA9IGVzdGltYXRlZCBzaXplCisgICAg
dW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplID0gYXJncy5hdCgzKS50b1VJbnQzMihleGVjKTsK
KyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOworCisgICAgUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+IGNyZWF0aW9uQ2FsbGJhY2s7Cisg
ICAgaWYgKGFyZ3Muc2l6ZSgpID49IDUpIHsKKyAgICAgICAgaWYgKCFhcmdzLmF0KDQpLmlzT2Jq
ZWN0KCkpIHsKKyAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBUWVBFX01JU01BVENI
X0VSUik7CisgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGNyZWF0aW9uQ2FsbGJhY2sgPSBKU0RhdGFiYXNlQ2FsbGJhY2s6OmNyZWF0ZShhc09i
amVjdChhcmdzLmF0KDQpKSwgZ2xvYmFsT2JqZWN0KCkpOworICAgIH0KKworICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhleGVjLCBnbG9iYWxPYmpl
Y3QoKSwgV1RGOjpnZXRQdHIoaW1wbCgpLT5vcGVuRGF0YWJhc2VTeW5jKG5hbWUsIHZlcnNpb24s
IGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplLCBjcmVhdGlvbkNhbGxiYWNrLnJlbGVhc2UoKSwg
ZWMpKSk7CisKKyAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAgIHJldHVybiByZXN1
bHQ7CiB9CiAjZW5kaWYKIAo=
</data>
<flag name="commit-queue"
          id="39658"
          type_id="3"
          status="-"
          setter="dumi"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55467</attachid>
            <date>2010-05-08 00:35:07 -0700</date>
            <delta_ts>2010-05-08 01:45:51 -0700</delta_ts>
            <desc>patch #4: V8 bindings implementation</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>6549</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1ODk5MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTAtMDUtMDcgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbXBsZW1lbnQgdGhlIFY4IGJpbmRpbmdzIGZvciB0aGUgc3luYyBEQiBBUEkuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnLnNob3dfYnVnLmNnaT9pZD0zNDk5NAorCisgICAgICAg
ICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YWJhc2VTeW5jQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlY4RGF0YWJhc2VTeW5jOjpjaGFuZ2VWZXJzaW9uQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlVHJhbnNhY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1
c3RvbS9WOFNRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OFNRTFRyYW5zYWN0aW9uU3luYzo6ZXhlY3V0ZVNxbENhbGxiYWNrKToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4V29ya2VyQ29udGV4dEN1c3RvbTo6b3BlbkRhdGFiYXNlU3luY0NhbGxiYWNrKToKKwog
MjAxMC0wNS0wNyAgRHVtaXRydSBEYW5pbGl1YyAgPGR1bWlAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbi4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RGF0YWJhc2VTeW5jQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFiYXNlU3luY0N1c3RvbS5jcHAJKHJldmlzaW9uIDU4OTkx
KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhYmFzZVN5bmNDdXN0b20uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMSArNDQsNDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGF0YWJhc2VTeW5jOjpjaGFuZ2VWZXJzaW9uQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5EYXRh
YmFzZVN5bmMuY2hhbmdlVmVyc2lvbigpIik7CisKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDIp
CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFNZTlRBWF9FUlIpOworCisgICAgRVhDRVBUSU9O
X0JMT0NLKFN0cmluZywgb2xkVmVyc2lvbiwgdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pKTsKKyAg
ICBFWENFUFRJT05fQkxPQ0soU3RyaW5nLCBuZXdWZXJzaW9uLCB0b1dlYkNvcmVTdHJpbmcoYXJn
c1sxXSkpOworCisgICAgRGF0YWJhc2VTeW5jKiBkYXRhYmFzZSA9IFY4RGF0YWJhc2VTeW5jOjp0
b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKworICAgIFJlZlB0cjxWOFNRTFRyYW5zYWN0aW9uU3lu
Y0NhbGxiYWNrPiBjYWxsYmFjazsKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDIpIHsKKyAgICAg
ICAgaWYgKCFhcmdzWzJdLT5Jc09iamVjdCgpKQorICAgICAgICAgICAgcmV0dXJuIHRocm93RXJy
b3IoVFlQRV9NSVNNQVRDSF9FUlIpOworCisgICAgICAgIGNhbGxiYWNrID0gVjhTUUxUcmFuc2Fj
dGlvblN5bmNDYWxsYmFjazo6Y3JlYXRlKGFyZ3NbMl0sIDApOworICAgIH0KKworICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOworICAgIGRhdGFiYXNlLT5jaGFuZ2VWZXJzaW9uKG9sZFZlcnNpb24s
IG5ld1ZlcnNpb24sIGNhbGxiYWNrLnJlbGVhc2UoKSwgZWMpOworICAgIFY4UHJveHk6OnNldERP
TUV4Y2VwdGlvbihlYyk7CisKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCiBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNyZWF0ZVRyYW5zYWN0aW9uKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MsIGJvb2wgcmVhZE9ubHkpCiB7CisgICAgaWYgKCFhcmdzLkxlbmd0aCgpKQor
ICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihTWU5UQVhfRVJSKTsKKworICAgIGlmICghYXJnc1sw
XS0+SXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoVFlQRV9NSVNNQVRDSF9F
UlIpOworCisgICAgRGF0YWJhc2VTeW5jKiBkYXRhYmFzZSA9IFY4RGF0YWJhc2VTeW5jOjp0b05h
dGl2ZShhcmdzLkhvbGRlcigpKTsKKworICAgIFJlZlB0cjxWOFNRTFRyYW5zYWN0aW9uU3luY0Nh
bGxiYWNrPiBjYWxsYmFjayA9IFY4U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s6OmNyZWF0ZShh
cmdzWzBdLCAwKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGRhdGFiYXNlLT50
cmFuc2FjdGlvbihjYWxsYmFjay5yZWxlYXNlKCksIHJlYWRPbmx5LCBlYyk7CisgICAgVjhQcm94
eTo6c2V0RE9NRXhjZXB0aW9uKGVjKTsKKwogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9
CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25TeW5j
Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNR
TFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHAJKHJldmlzaW9uIDU4OTkxKQorKysgV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00OSw2ICs0OSw0OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhTUUxUcmFuc2FjdGlvblN5bmM6OmV4ZWN1dGVTcWxDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLlNRTFRyYW5zYWN0
aW9uU3luYy5leGVjdXRlU3FsKCkiKTsKKworICAgIGlmICghYXJncy5MZW5ndGgoKSkKKyAgICAg
ICAgcmV0dXJuIHRocm93RXJyb3IoU1lOVEFYX0VSUik7CisKKyAgICBFWENFUFRJT05fQkxPQ0so
U3RyaW5nLCBzdGF0ZW1lbnQsIHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKSk7CisKKyAgICBWZWN0
b3I8U1FMVmFsdWU+IHNxbFZhbHVlczsKKworICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMSAmJiAh
aXNVbmRlZmluZWRPck51bGwoYXJnc1sxXSkpIHsKKyAgICAgICAgaWYgKCFhcmdzWzFdLT5Jc09i
amVjdCgpKQorICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoVFlQRV9NSVNNQVRDSF9FUlIp
OworCisgICAgICAgIHVpbnQzMl90IHNxbEFyZ3NMZW5ndGggPSAwOworICAgICAgICB2ODo6TG9j
YWw8djg6Ok9iamVjdD4gc3FsQXJnc09iamVjdCA9IGFyZ3NbMV0tPlRvT2JqZWN0KCk7CisgICAg
ICAgIEVYQ0VQVElPTl9CTE9DSyh2ODo6TG9jYWw8djg6OlZhbHVlPiwgbGVuZ3RoLCBzcWxBcmdz
T2JqZWN0LT5HZXQodjg6OlN0cmluZzo6TmV3KCJsZW5ndGgiKSkpOworCisgICAgICAgIGlmIChp
c1VuZGVmaW5lZE9yTnVsbChsZW5ndGgpKQorICAgICAgICAgICAgc3FsQXJnc0xlbmd0aCA9IHNx
bEFyZ3NPYmplY3QtPkdldFByb3BlcnR5TmFtZXMoKS0+TGVuZ3RoKCk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHNxbEFyZ3NMZW5ndGggPSBsZW5ndGgtPlVpbnQzMlZhbHVlKCk7CisKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBzcWxBcmdzTGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6SW50ZWdlcj4ga2V5ID0gdjg6OkludGVnZXI6Ok5l
dyhpKTsKKyAgICAgICAgICAgIEVYQ0VQVElPTl9CTE9DSyh2ODo6TG9jYWw8djg6OlZhbHVlPiwg
dmFsdWUsIHNxbEFyZ3NPYmplY3QtPkdldChrZXkpKTsKKworICAgICAgICAgICAgaWYgKHZhbHVl
LklzRW1wdHkoKSB8fCB2YWx1ZS0+SXNOdWxsKCkpCisgICAgICAgICAgICAgICAgc3FsVmFsdWVz
LmFwcGVuZChTUUxWYWx1ZSgpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlLT5Jc051bWJl
cigpKSB7CisgICAgICAgICAgICAgICAgRVhDRVBUSU9OX0JMT0NLKGRvdWJsZSwgc3FsVmFsdWUs
IHZhbHVlLT5OdW1iZXJWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBzcWxWYWx1ZXMuYXBwZW5k
KFNRTFZhbHVlKHNxbFZhbHVlKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIEVYQ0VQVElPTl9CTE9DSyhTdHJpbmcsIHNxbFZhbHVlLCB0b1dlYkNvcmVTdHJpbmcodmFs
dWUpKTsKKyAgICAgICAgICAgICAgICBzcWxWYWx1ZXMuYXBwZW5kKFNRTFZhbHVlKHNxbFZhbHVl
KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBTUUxUcmFuc2FjdGlv
blN5bmMqIHRyYW5zYWN0aW9uID0gVjhTUUxUcmFuc2FjdGlvblN5bmM6OnRvTmF0aXZlKGFyZ3Mu
SG9sZGVyKCkpOworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgdHJhbnNhY3Rpb24t
PmV4ZWN1dGVTUUwoc3RhdGVtZW50LCBzcWxWYWx1ZXMsIGVjKTsKKyAgICBWOFByb3h5OjpzZXRE
T01FeGNlcHRpb24oZWMpOworCiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIApJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRD
dXN0b20uY3BwCShyZXZpc2lvbiA1ODk5MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEwICszMywx
NSBAQAogI2lmIEVOQUJMRShXT1JLRVJTKQogI2luY2x1ZGUgIlY4V29ya2VyQ29udGV4dC5oIgog
CisjaWYgRU5BQkxFKERBVEFCQVNFKQorI2luY2x1ZGUgIlY4RGF0YmFzZUNhbGxiYWNrLmgiCisj
aW5jbHVkZSAiVjhEYXRiYXNlU3luYy5oIgorI2VuZGlmCiAjaW5jbHVkZSAiRE9NVGltZXIuaCIK
ICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiU2NoZWR1bGVkQWN0aW9uLmgi
CiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nTWFjcm9zLmgiCiAj
aW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUgIlY4VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAi
VjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0ZW5lci5oIgpAQCAtMTQwLDcgKzE0NSwyOSBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChXb3JrZXJDb250ZXh0CiB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhXb3JrZXJDb250ZXh0OjpvcGVuRGF0YWJhc2VTeW5jQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5WOFdvcmtlckNvbnRleHQub3Bl
bkRhdGFiYXNlU3luYygpIik7Ci0gICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICBpZiAo
YXJncy5MZW5ndGgoKSA8IDQpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFNZTlRBWF9FUlIp
OworCisgICAgRVhDRVBUSU9OX0JMT0NLKFN0cmluZywgbmFtZSwgdG9XZWJDb3JlU3RyaW5nKGFy
Z3NbMF0pKTsKKyAgICBFWENFUFRJT05fQkxPQ0soU3RyaW5nLCB2ZXJzaW9uLCB0b1dlYkNvcmVT
dHJpbmcoYXJnc1sxXSkpOworICAgIEVYQ0VQVElPTl9CTE9DSyhTdHJpbmcsIGRpc3BsYXlOYW1l
LCB0b1dlYkNvcmVTdHJpbmcoYXJnc1syXSkpOworICAgIEVYQ0VQVElPTl9CTE9DSyh1bnNpZ25l
ZCBsb25nLCBlc3RpbWF0ZWRTaXplLCBhcmdzWzNdLT5VaW50MzJWYWx1ZSgpKTsKKworICAgIFdv
cmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQgPSBWOFdvcmtlckNvbnRleHQ6OnRvTmF0aXZlKGFy
Z3MuSG9sZGVyKCkpOworCisgICAgUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+IGNyZWF0aW9uQ2Fs
bGJhY2s7CisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPj0gNSkgeworICAgICAgICBpZiAoIWFyZ3Nb
NF0tPklzT2JqZWN0KCkpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihUWVBFX01JU01B
VENIX0VSUik7CisKKyAgICAgICAgY3JlYXRpb25DYWxsYmFjayA9IFY4RGF0YWJhc2VDYWxsYmFj
azo6Y3JlYXRlKGFyZ3NbNF0sIDApOworICAgIH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXN1bHQgPSB0b1Y4KHdvcmtlckNvbnRleHQt
Pm9wZW5EYXRhYmFzZVN5bmMobmFtZSwgdmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNp
emUsIGNyZWF0aW9uQ2FsbGJhY2sucmVsZWFzZSgpLCBlYykpOworCisgICAgVjhQcm94eTo6c2V0
RE9NRXhjZXB0aW9uKGVjKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogI2VuZGlmCiAK
</data>
<flag name="commit-queue"
          id="39660"
          type_id="3"
          status="-"
          setter="dumi"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55469</attachid>
            <date>2010-05-08 01:06:00 -0700</date>
            <delta_ts>2010-05-10 15:49:44 -0700</delta_ts>
            <desc>patch #3: JSC bindings implementation</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>6806</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1ODk5MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTAtMDUtMDcgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbXBsZW1lbnQgdGhlIEpTQyBiaW5kaW5ncyBmb3IgdGhlIHN5bmMgREIgQVBJLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQ5OTQKKworICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRGF0YWJhc2VTeW5jQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTRGF0YWJhc2VTeW5jOjpjaGFuZ2VWZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1NRTFRyYW5zYWN0aW9u
U3luY0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1NRTFRyYW5zYWN0aW9uU3luYzo6
ZXhlY3V0ZVNxbCk6CisKIDIwMTAtMDUtMDcgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRGF0YWJhc2VTeW5jQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRGF0YWJhc2VTeW5jQ3VzdG9tLmNwcAkocmV2aXNpb24gNTg5OTMpCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YWJhc2VTeW5jQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDIsMTMgKzQyLDQ1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNw
YWNlIEpTQzsKIAotSlNWYWx1ZSBKU0RhdGFiYXNlU3luYzo6Y2hhbmdlVmVyc2lvbihFeGVjU3Rh
dGUqLCBjb25zdCBBcmdMaXN0JikKK0pTVmFsdWUgSlNEYXRhYmFzZVN5bmM6OmNoYW5nZVZlcnNp
b24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogeworICAgIFN0cmluZyBv
bGRWZXJzaW9uID0gdXN0cmluZ1RvU3RyaW5nKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYykpOwor
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CisKKyAgICBTdHJpbmcgbmV3VmVyc2lvbiA9IHVzdHJpbmdUb1N0cmluZyhhcmdzLmF0KDEp
LnRvU3RyaW5nKGV4ZWMpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOworCisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFyZ3MuYXQo
MikuZ2V0T2JqZWN0KCk7CisgICAgaWYgKCFvYmplY3QpIHsKKyAgICAgICAgc2V0RE9NRXhjZXB0
aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CisgICAgfQorCisgICAgUmVmUHRyPFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrPiBjYWxs
YmFjayhKU1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrOjpjcmVhdGUob2JqZWN0LCBzdGF0aWNf
Y2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKSkpOworCisgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CisgICAgbV9pbXBsLT5jaGFuZ2VWZXJzaW9uKG9sZFZlcnNpb24sIG5l
d1ZlcnNpb24sIGNhbGxiYWNrLnJlbGVhc2UoKSwgZWMpOworICAgIHNldERPTUV4Y2VwdGlvbihl
eGVjLCBlYyk7CisKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIAotc3RhdGljIEpTVmFs
dWUgY3JlYXRlVHJhbnNhY3Rpb24oRXhlY1N0YXRlKiwgY29uc3QgQXJnTGlzdCYsIERhdGFiYXNl
U3luYyosIEpTRE9NR2xvYmFsT2JqZWN0KiwgYm9vbCkKK3N0YXRpYyBKU1ZhbHVlIGNyZWF0ZVRy
YW5zYWN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncywgRGF0YWJhc2VT
eW5jKiBkYXRhYmFzZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgYm9vbCByZWFk
T25seSkKIHsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gYXJncy5hdCgwKS5nZXRPYmplY3QoKTsK
KyAgICBpZiAoIW9iamVjdCkgeworICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQRV9N
SVNNQVRDSF9FUlIpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisKKyAg
ICBSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+IGNhbGxiYWNrKEpTU1FMVHJhbnNh
Y3Rpb25TeW5jQ2FsbGJhY2s6OmNyZWF0ZShvYmplY3QsIGdsb2JhbE9iamVjdCkpOworCisgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgZGF0YWJhc2UtPnRyYW5zYWN0aW9uKGNhbGxiYWNr
LnJlbGVhc2UoKSwgcmVhZE9ubHksIGVjKTsKKyAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMp
OworCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwCShyZXZpc2lvbiA1
ODk5MykKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw5ICs0MSw1NiBAQCB1c2luZyBuYW1lc3BhY2UgSlND
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUpTVmFsdWUgSlNTUUxUcmFuc2FjdGlvblN5bmM6
OmV4ZWN1dGVTcWwoRXhlY1N0YXRlKiwgY29uc3QgQXJnTGlzdCYpCitKU1ZhbHVlIEpTU1FMVHJh
bnNhY3Rpb25TeW5jOjpleGVjdXRlU3FsKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYg
YXJncykKIHsKLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBpZiAoYXJncy5pc0VtcHR5
KCkpIHsKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFNZTlRBWF9FUlIpOworICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisKKyAgICBTdHJpbmcgc3FsU3RhdGVtZW50
ID0gdXN0cmluZ1RvU3RyaW5nKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYykpOworICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAg
ICAvLyBOb3cgYXNzZW1ibGUgdGhlIGxpc3Qgb2YgU1FMIGFyZ3VtZW50cworICAgIFZlY3RvcjxT
UUxWYWx1ZT4gc3FsVmFsdWVzOworICAgIGlmICghYXJncy5hdCgxKS5pc1VuZGVmaW5lZE9yTnVs
bCgpKSB7CisgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhcmdzLmF0KDEpLmdldE9iamVjdCgp
OworICAgICAgICBpZiAoIW9iamVjdCkgeworICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4
ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKKyAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OworICAgICAgICB9CisKKyAgICAgICAgSlNWYWx1ZSBsZW5ndGhWYWx1ZSA9IG9iamVjdC0+Z2V0
KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpOworICAgICAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAg
ICAgdW5zaWduZWQgbGVuZ3RoID0gbGVuZ3RoVmFsdWUudG9VSW50MzIoZXhlYyk7CisgICAgICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOworCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDAgOyBpIDwgbGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBpKTsKKyAgICAg
ICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKKworICAgICAgICAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxs
KCkpCisgICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFwcGVuZChTUUxWYWx1ZSgpKTsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKHZhbHVlLmlzTnVtYmVyKCkpCisgICAgICAgICAgICAgICAgc3FsVmFs
dWVzLmFwcGVuZCh2YWx1ZS51bmNoZWNrZWRHZXROdW1iZXIoKSk7CisgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHRoZSBhcmd1bWVudCB0byBhIHN0cmluZyBh
bmQgYXBwZW5kIGl0CisgICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFwcGVuZCh1c3RyaW5nVG9T
dHJpbmcodmFsdWUudG9TdHJpbmcoZXhlYykpKTsKKyAgICAgICAgICAgICAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBX
VEY6OmdldFB0cihtX2ltcGwtPmV4ZWN1dGVTUUwoc3FsU3RhdGVtZW50LCBzcWxWYWx1ZXMsIGVj
KSkpOworICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisKKyAgICByZXR1cm4gcmVzdWx0
OwogfQogCiB9CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3Rv
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRD
dXN0b20uY3BwCShyZXZpc2lvbiA1ODk5MykKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNXb3Jr
ZXJDb250ZXh0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksMTAgQEAKIAog
I2luY2x1ZGUgIkpTV29ya2VyQ29udGV4dC5oIgogCisjaWYgRU5BQkxFKERBVEFCQVNFKQorI2lu
Y2x1ZGUgIkpTRGF0YWJhc2VDYWxsYmFjay5oIgorI2luY2x1ZGUgIkpTRGF0YWJhc2VTeW5jLmgi
CisjZW5kaWYKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUdsb2Jh
bE9iamVjdC5oIgogI2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgpAQCAtMTQzLDkgKzE0Nyw0
NSBAQCBKU1ZhbHVlIEpTV29ya2VyQ29udGV4dDo6bWVzc2FnZUNoYW5uZWwoCiAjZW5kaWYKIAog
I2lmIEVOQUJMRShEQVRBQkFTRSkKLUpTVmFsdWUgSlNXb3JrZXJDb250ZXh0OjpvcGVuRGF0YWJh
c2VTeW5jKEV4ZWNTdGF0ZSosIGNvbnN0IEFyZ0xpc3QmKQorSlNWYWx1ZSBKU1dvcmtlckNvbnRl
eHQ6Om9wZW5EYXRhYmFzZVN5bmMoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdz
KQogewotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIGlmIChhcmdzLnNpemUoKSA8IDQp
IHsKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFNZTlRBWF9FUlIpOworICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisKKyAgICBTdHJpbmcgbmFtZSA9IHVzdHJpbmdU
b1N0cmluZyhhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworCisgICAgU3RyaW5nIHZl
cnNpb24gPSB1c3RyaW5nVG9TdHJpbmcoYXJncy5hdCgxKS50b1N0cmluZyhleGVjKSk7CisgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
KworICAgIFN0cmluZyBkaXNwbGF5TmFtZSA9IHVzdHJpbmdUb1N0cmluZyhhcmdzLmF0KDIpLnRv
U3RyaW5nKGV4ZWMpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOworCisgICAgLy8gYXJncy5hdCgzKSA9IGVzdGltYXRlZCBzaXpl
CisgICAgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplID0gYXJncy5hdCgzKS50b1VJbnQzMihl
eGVjKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOworCisgICAgUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+IGNyZWF0aW9uQ2FsbGJh
Y2s7CisgICAgaWYgKGFyZ3Muc2l6ZSgpID49IDUpIHsKKyAgICAgICAgaWYgKCFhcmdzLmF0KDQp
LmlzT2JqZWN0KCkpIHsKKyAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBUWVBFX01J
U01BVENIX0VSUik7CisgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAgICAg
fQorCisgICAgICAgIGNyZWF0aW9uQ2FsbGJhY2sgPSBKU0RhdGFiYXNlQ2FsbGJhY2s6OmNyZWF0
ZShhc09iamVjdChhcmdzLmF0KDQpKSwgZ2xvYmFsT2JqZWN0KCkpOworICAgIH0KKworICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhleGVjLCBnbG9i
YWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbCgpLT5vcGVuRGF0YWJhc2VTeW5jKG5hbWUsIHZl
cnNpb24sIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplLCBjcmVhdGlvbkNhbGxiYWNrLnJlbGVh
c2UoKSwgZWMpKSk7CisKKyAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAgIHJldHVy
biByZXN1bHQ7CiB9CiAjZW5kaWYKIAo=
</data>
<flag name="review"
          id="39662"
          type_id="1"
          status="+"
          setter="beidson"
    />
    <flag name="commit-queue"
          id="39663"
          type_id="3"
          status="-"
          setter="dumi"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55470</attachid>
            <date>2010-05-08 01:07:36 -0700</date>
            <delta_ts>2010-05-10 15:51:35 -0700</delta_ts>
            <desc>patch #6: clean up of JSC DB bindings</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>9714</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1ODk5NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTAtMDUtMDcgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDbGVhbmluZyB1cCBhbmQgZml4aW5nIHRoZSBleGlzdGluZyBKU0MgREIgYmluZGluZ3MuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDk5NAorCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01XaW5kb3c6Om9wZW5EYXRhYmFzZSk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNEYXRhYmFzZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RhdGFiYXNlOjpjaGFu
Z2VWZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRGF0YWJhc2U6OnRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTRGF0YWJhc2U6OnJlYWRUcmFuc2FjdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNT
UUxUcmFuc2FjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1NRTFRyYW5zYWN0
aW9uOjpleGVjdXRlU3FsKToKKwogMjAxMC0wNS0wNyAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KSW5kZXg6IFdlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiA1ODk4OSkKKysrIFdl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05NjcsMTggKzk2Nyw0MCBAQCBKU1ZhbHVlIEpTRE9NV2luZG93OjpyZW1vdmVFdmVudExpc3Rl
bmVyCiAjaWYgRU5BQkxFKERBVEFCQVNFKQogSlNWYWx1ZSBKU0RPTVdpbmRvdzo6b3BlbkRhdGFi
YXNlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKIHsKLSAgICBpZiAoIWFs
bG93c0FjY2Vzc0Zyb20oZXhlYykgfHwgKGFyZ3Muc2l6ZSgpIDwgNCkpCisgICAgaWYgKCFhbGxv
d3NBY2Nlc3NGcm9tKGV4ZWMpIHx8IChhcmdzLnNpemUoKSA8IDQpKSB7CisgICAgICAgIHNldERP
TUV4Y2VwdGlvbihleGVjLCBTWU5UQVhfRVJSKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgY29uc3QgVVN0cmluZyYgbmFtZSA9
IGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyk7Ci0gICAgY29uc3QgVVN0cmluZyYgdmVyc2lvbiA9
IGFyZ3MuYXQoMSkudG9TdHJpbmcoZXhlYyk7Ci0gICAgY29uc3QgVVN0cmluZyYgZGlzcGxheU5h
bWUgPSBhcmdzLmF0KDIpLnRvU3RyaW5nKGV4ZWMpOwotICAgIHVuc2lnbmVkIGxvbmcgZXN0aW1h
dGVkU2l6ZSA9IGFyZ3MuYXQoMykudG9JbnQzMihleGVjKTsKKyAgICB9CisKKyAgICBTdHJpbmcg
bmFtZSA9IHVzdHJpbmdUb1N0cmluZyhhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpKTsKKyAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwor
CisgICAgU3RyaW5nIHZlcnNpb24gPSB1c3RyaW5nVG9TdHJpbmcoYXJncy5hdCgxKS50b1N0cmlu
ZyhleGVjKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKKworICAgIFN0cmluZyBkaXNwbGF5TmFtZSA9IHVzdHJpbmdUb1N0cmlu
ZyhhcmdzLmF0KDIpLnRvU3RyaW5nKGV4ZWMpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworCisgICAgLy8gYXJncy5hdCgzKSA9
IGVzdGltYXRlZCBzaXplCisgICAgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplID0gYXJncy5h
dCgzKS50b1VJbnQzMihleGVjKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworCiAgICAgUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+
IGNyZWF0aW9uQ2FsbGJhY2s7Ci0gICAgaWYgKChhcmdzLnNpemUoKSA+PSA1KSAmJiBhcmdzLmF0
KDQpLmlzT2JqZWN0KCkpCisgICAgaWYgKGFyZ3Muc2l6ZSgpID49IDUpIHsKKyAgICAgICAgaWYg
KCFhcmdzLmF0KDQpLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihl
eGVjLCBUWVBFX01JU01BVENIX0VSUik7CisgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKKyAgICAgICAgfQorCiAgICAgICAgIGNyZWF0aW9uQ2FsbGJhY2sgPSBKU0RhdGFiYXNlQ2Fs
bGJhY2s6OmNyZWF0ZShhc09iamVjdChhcmdzLmF0KDQpKSwgZ2xvYmFsT2JqZWN0KCkpOworICAg
IH0KIAotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgV1RG
OjpnZXRQdHIoaW1wbCgpLT5vcGVuRGF0YWJhc2UodXN0cmluZ1RvU3RyaW5nKG5hbWUpLCB1c3Ry
aW5nVG9TdHJpbmcodmVyc2lvbiksIHVzdHJpbmdUb1N0cmluZyhkaXNwbGF5TmFtZSksIGVzdGlt
YXRlZFNpemUsIGNyZWF0aW9uQ2FsbGJhY2sucmVsZWFzZSgpLCBlYykpKTsKKyAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgZ2xvYmFsT2Jq
ZWN0KCksIFdURjo6Z2V0UHRyKGltcGwoKS0+b3BlbkRhdGFiYXNlKG5hbWUsIHZlcnNpb24sIGRp
c3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplLCBjcmVhdGlvbkNhbGxiYWNrLnJlbGVhc2UoKSwgZWMp
KSk7CiAKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwogICAgIHJldHVybiByZXN1bHQ7
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YWJhc2VDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhYmFzZUN1c3RvbS5jcHAJKHJldmlzaW9u
IDU4OTg5KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFiYXNlQ3VzdG9tLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTAsNTQgKzUwLDYyIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiBKU1Zh
bHVlIEpTRGF0YWJhc2U6OmNoYW5nZVZlcnNpb24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdM
aXN0JiBhcmdzKQogewogICAgIFN0cmluZyBvbGRWZXJzaW9uID0gdXN0cmluZ1RvU3RyaW5nKGFy
Z3MuYXQoMCkudG9TdHJpbmcoZXhlYykpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
KyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKICAgICBTdHJpbmcgbmV3VmVyc2lvbiA9
IHVzdHJpbmdUb1N0cmluZyhhcmdzLmF0KDEpLnRvU3RyaW5nKGV4ZWMpKTsKKyAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAg
SlNPYmplY3QqIG9iamVjdDsKLSAgICBpZiAoIShvYmplY3QgPSBhcmdzLmF0KDIpLmdldE9iamVj
dCgpKSkgeworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhcmdzLmF0KDIpLmdldE9iamVjdCgpOwor
ICAgIGlmICghb2JqZWN0KSB7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBUWVBFX01J
U01BVENIX0VSUik7CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KLSAgICAK
LSAgICBSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4gY2FsbGJhY2soSlNTUUxUcmFuc2Fj
dGlvbkNhbGxiYWNrOjpjcmVhdGUob2JqZWN0LCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKSkpKTsKLSAgICAKKworICAgIFJlZlB0cjxT
UUxUcmFuc2FjdGlvbkNhbGxiYWNrPiBjYWxsYmFjayhKU1NRTFRyYW5zYWN0aW9uQ2FsbGJhY2s6
OmNyZWF0ZShvYmplY3QsIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2Jq
ZWN0KCkpKSk7CisKICAgICBSZWZQdHI8U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiBlcnJv
ckNhbGxiYWNrOwogICAgIGlmICghYXJncy5hdCgzKS5pc051bGwoKSkgewotICAgICAgICBpZiAo
IShvYmplY3QgPSBhcmdzLmF0KDMpLmdldE9iamVjdCgpKSkgeworICAgICAgICBvYmplY3QgPSBh
cmdzLmF0KDMpLmdldE9iamVjdCgpOworICAgICAgICBpZiAoIW9iamVjdCkgewogICAgICAgICAg
ICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKICAgICAgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBlcnJv
ckNhbGxiYWNrID0gSlNTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s6OmNyZWF0ZShvYmplY3Qs
IHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVj
dCgpKSk7CisKKyAgICAgICAgZXJyb3JDYWxsYmFjayA9IEpTU1FMVHJhbnNhY3Rpb25FcnJvckNh
bGxiYWNrOjpjcmVhdGUob2JqZWN0LCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGds
b2JhbE9iamVjdCgpKSk7CiAgICAgfQotICAgIAorCiAgICAgUmVmUHRyPFZvaWRDYWxsYmFjaz4g
c3VjY2Vzc0NhbGxiYWNrOwogICAgIGlmICghYXJncy5hdCg0KS5pc051bGwoKSkgewotICAgICAg
ICBpZiAoIShvYmplY3QgPSBhcmdzLmF0KDQpLmdldE9iamVjdCgpKSkgeworICAgICAgICBvYmpl
Y3QgPSBhcmdzLmF0KDQpLmdldE9iamVjdCgpOworICAgICAgICBpZiAoIW9iamVjdCkgewogICAg
ICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKICAgICAg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICB9CiAKLSAgICAgICAgc3VjY2Vz
c0NhbGxiYWNrID0gSlNDdXN0b21Wb2lkQ2FsbGJhY2s6OmNyZWF0ZShvYmplY3QsIHN0YXRpY19j
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpKSk7Cisg
ICAgICAgIHN1Y2Nlc3NDYWxsYmFjayA9IEpTQ3VzdG9tVm9pZENhbGxiYWNrOjpjcmVhdGUob2Jq
ZWN0LCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKSk7CiAg
ICAgfQogCiAgICAgbV9pbXBsLT5jaGFuZ2VWZXJzaW9uKG9sZFZlcnNpb24sIG5ld1ZlcnNpb24s
IGNhbGxiYWNrLnJlbGVhc2UoKSwgZXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIHN1Y2Nlc3NDYWxs
YmFjay5yZWxlYXNlKCkpOwotICAgIAorCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAK
IHN0YXRpYyBKU1ZhbHVlIGNyZWF0ZVRyYW5zYWN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
QXJnTGlzdCYgYXJncywgRGF0YWJhc2UqIGRhdGFiYXNlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBib29sIHJlYWRPbmx5KQogewotICAgIEpTT2JqZWN0KiBvYmplY3Q7Ci0gICAg
Ci0gICAgaWYgKCEob2JqZWN0ID0gYXJncy5hdCgwKS5nZXRPYmplY3QoKSkpIHsKKyAgICBKU09i
amVjdCogb2JqZWN0ID0gYXJncy5hdCgwKS5nZXRPYmplY3QoKTsKKworICAgIGlmICghb2JqZWN0
KSB7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBUWVBFX01JU01BVENIX0VSUik7CiAg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIH0gICAgICAgIAotICAgICAKKyAgICB9
CisKICAgICBSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4gY2FsbGJhY2soSlNTUUxUcmFu
c2FjdGlvbkNhbGxiYWNrOjpjcmVhdGUob2JqZWN0LCBnbG9iYWxPYmplY3QpKTsKICAgICBSZWZQ
dHI8U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrOwogICAgIGlmIChh
cmdzLnNpemUoKSA+IDEgJiYgIWFyZ3MuYXQoMSkuaXNOdWxsKCkpIHsKLSAgICAgICAgaWYgKCEo
b2JqZWN0ID0gYXJncy5hdCgxKS5nZXRPYmplY3QoKSkpIHsKKyAgICAgICAgb2JqZWN0ID0gYXJn
cy5hdCgxKS5nZXRPYmplY3QoKTsKKyAgICAgICAgaWYgKCFvYmplY3QpIHsKICAgICAgICAgICAg
IHNldERPTUV4Y2VwdGlvbihleGVjLCBUWVBFX01JU01BVENIX0VSUik7CiAgICAgICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgfQpAQCAtMTA3LDI2ICsxMTUsMjcgQEAgc3Rh
dGljIEpTVmFsdWUgY3JlYXRlVHJhbnNhY3Rpb24oRXhlY1N0YQogCiAgICAgUmVmUHRyPFZvaWRD
YWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrOwogICAgIGlmIChhcmdzLnNpemUoKSA+IDIgJiYgIWFy
Z3MuYXQoMikuaXNOdWxsKCkpIHsKLSAgICAgICAgaWYgKCEob2JqZWN0ID0gYXJncy5hdCgyKS5n
ZXRPYmplY3QoKSkpIHsKKyAgICAgICAgb2JqZWN0ID0gYXJncy5hdCgyKS5nZXRPYmplY3QoKTsK
KyAgICAgICAgaWYgKCFvYmplY3QpIHsKICAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVj
LCBUWVBFX01JU01BVENIX0VSUik7CiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
ICAgICAgICAgfQogCiAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjayA9IEpTQ3VzdG9tVm9pZENhbGxi
YWNrOjpjcmVhdGUob2JqZWN0LCBnbG9iYWxPYmplY3QpOwogICAgIH0KLSAgICAKKwogICAgIGRh
dGFiYXNlLT50cmFuc2FjdGlvbihjYWxsYmFjay5yZWxlYXNlKCksIGVycm9yQ2FsbGJhY2sucmVs
ZWFzZSgpLCBzdWNjZXNzQ2FsbGJhY2sucmVsZWFzZSgpLCByZWFkT25seSk7CiAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CiB9CiAKIEpTVmFsdWUgSlNEYXRhYmFzZTo6dHJhbnNhY3Rpb24oRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogewotICAgIHJldHVybiBjcmVhdGVU
cmFuc2FjdGlvbihleGVjLCBhcmdzLCBtX2ltcGwuZ2V0KCksIHN0YXRpY19jYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpKSwgZmFsc2UpOworICAgIHJl
dHVybiBjcmVhdGVUcmFuc2FjdGlvbihleGVjLCBhcmdzLCBtX2ltcGwuZ2V0KCksIHN0YXRpY19j
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLCBmYWxzZSk7CiB9Ci0gICAg
CisKIEpTVmFsdWUgSlNEYXRhYmFzZTo6cmVhZFRyYW5zYWN0aW9uKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgQXJnTGlzdCYgYXJncykKIHsKLSAgICByZXR1cm4gY3JlYXRlVHJhbnNhY3Rpb24oZXhl
YywgYXJncywgbV9pbXBsLmdldCgpLCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4
ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKSksIHRydWUpOworICAgIHJldHVybiBjcmVhdGVUcmFu
c2FjdGlvbihleGVjLCBhcmdzLCBtX2ltcGwuZ2V0KCksIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLCB0cnVlKTsKIH0KIAogfQpJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1NRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwCShyZXZpc2lvbiA1ODk4
OSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKKwogSlNWYWx1ZSBKU1NRTFRyYW5zYWN0aW9uOjpleGVj
dXRlU3FsKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKIHsKICAgICBpZiAo
YXJncy5pc0VtcHR5KCkpIHsKQEAgLTY4LDEzICs2OCwxMyBAQCBKU1ZhbHVlIEpTU1FMVHJhbnNh
Y3Rpb246OmV4ZWN1dGVTcWwoRXhlCiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGxlbmd0aFZh
bHVlLnRvVUludDMyKGV4ZWMpOwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICAgICAgCisKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMCA7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICAgICAgSlNWYWx1
ZSB2YWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIGkpOwogICAgICAgICAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAg
ICAgICAgICAgCi0gICAgICAgICAgICBpZiAodmFsdWUuaXNOdWxsKCkpCisKKyAgICAgICAgICAg
IGlmICh2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICAgICAgICAgIHNxbFZhbHVl
cy5hcHBlbmQoU1FMVmFsdWUoKSk7CiAgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZS5pc051bWJl
cigpKQogICAgICAgICAgICAgICAgIHNxbFZhbHVlcy5hcHBlbmQodmFsdWUudW5jaGVja2VkR2V0
TnVtYmVyKCkpOwpAQCAtOTQsMTAgKzk0LDEwIEBAIEpTVmFsdWUgSlNTUUxUcmFuc2FjdGlvbjo6
ZXhlY3V0ZVNxbChFeGUKICAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBUWVBFX01J
U01BVENIX0VSUik7CiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAg
fQotICAgICAgICAKKwogICAgICAgICBjYWxsYmFjayA9IEpTU1FMU3RhdGVtZW50Q2FsbGJhY2s6
OmNyZWF0ZShvYmplY3QsIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+ZHlu
YW1pY0dsb2JhbE9iamVjdCgpKSk7CiAgICAgfQotICAgIAorCiAgICAgUmVmUHRyPFNRTFN0YXRl
bWVudEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2s7CiAgICAgaWYgKCFhcmdzLmF0KDMpLmlz
VW5kZWZpbmVkT3JOdWxsKCkpIHsKICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFyZ3MuYXQo
MykuZ2V0T2JqZWN0KCk7CkBAIC0xMDUsMTQgKzEwNSwxNCBAQCBKU1ZhbHVlIEpTU1FMVHJhbnNh
Y3Rpb246OmV4ZWN1dGVTcWwoRXhlCiAgICAgICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywg
VFlQRV9NSVNNQVRDSF9FUlIpOwogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAg
ICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgZXJyb3JDYWxsYmFjayA9IEpTU1FMU3RhdGVt
ZW50RXJyb3JDYWxsYmFjazo6Y3JlYXRlKG9iamVjdCwgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkpKTsKICAgICB9Ci0gICAgCisKICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBtX2ltcGwtPmV4ZWN1dGVTUUwoc3FsU3RhdGVt
ZW50LCBzcWxWYWx1ZXMsIGNhbGxiYWNrLnJlbGVhc2UoKSwgZXJyb3JDYWxsYmFjay5yZWxlYXNl
KCksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwotICAgIAorCiAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAK
</data>
<flag name="review"
          id="39664"
          type_id="1"
          status="+"
          setter="beidson"
    />
    <flag name="commit-queue"
          id="39665"
          type_id="3"
          status="-"
          setter="dumi"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55471</attachid>
            <date>2010-05-08 01:08:44 -0700</date>
            <delta_ts>2010-05-09 10:55:58 -0700</delta_ts>
            <desc>patch #7: clean up of V8 DB bindings</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>13147</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1OTAwNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTAtMDUtMDggIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDbGVhbiB1cCBhbmQgZml4IHRoZSBleGlzdGluZyBWOCBEQiBiaW5kaW5ncy4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0OTk0CisKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VjhET01XaW5kb3c6Om9wZW5EYXRhYmFzZUNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9jdXN0b20vVjhEYXRhYmFzZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OERhdGFiYXNlOjpjaGFuZ2VWZXJzaW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlVHJhbnNhY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFRyYW5z
YWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4U1FMVHJhbnNhY3Rpb246OmV4
ZWN1dGVTcWxDYWxsYmFjayk6CisKIDIwMTAtMDUtMDggIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJr
aXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGp1c3QgcmV2ZXJ0aW5nIGNvbW1pdC4KSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5j
cHAJKHJldmlzaW9uIDU4OTk1KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01X
aW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVk
ZSAiU3RvcmFnZS5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4QmluZGlu
Z0RPTVdpbmRvdy5oIgorI2luY2x1ZGUgIlY4QmluZGluZ01hY3Jvcy5oIgogI2luY2x1ZGUgIlY4
QmluZGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiVjhDdXN0b21FdmVudExpc3RlbmVyLmgiCiAjaW5j
bHVkZSAiVjhEYXRhYmFzZS5oIgpAQCAtNzE5LDIxICs3MjAsMjYgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4RE9NV2luZG93OjpvcGVuRAogewogICAgIElOQ19TVEFUUygiRE9NLkRPTVdpbmRv
dy5vcGVuRGF0YWJhc2UiKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDQpCi0gICAgICAgIHJl
dHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFNZTlRBWF9F
UlIpOworCisgICAgRVhDRVBUSU9OX0JMT0NLKFN0cmluZywgbmFtZSwgdG9XZWJDb3JlU3RyaW5n
KGFyZ3NbMF0pKTsKKyAgICBFWENFUFRJT05fQkxPQ0soU3RyaW5nLCB2ZXJzaW9uLCB0b1dlYkNv
cmVTdHJpbmcoYXJnc1sxXSkpOworICAgIEVYQ0VQVElPTl9CTE9DSyhTdHJpbmcsIGRpc3BsYXlO
YW1lLCB0b1dlYkNvcmVTdHJpbmcoYXJnc1syXSkpOworICAgIEVYQ0VQVElPTl9CTE9DSyh1bnNp
Z25lZCBsb25nLCBlc3RpbWF0ZWRTaXplLCBhcmdzWzNdLT5VaW50MzJWYWx1ZSgpKTsKIAogICAg
IERPTVdpbmRvdyogaW1wID0gVjhET01XaW5kb3c6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwog
ICAgIGlmICghVjhCaW5kaW5nU2VjdXJpdHk6OmNhbkFjY2Vzc0ZyYW1lKFY4QmluZGluZ1N0YXRl
OjpPbmx5KCksIGltcC0+ZnJhbWUoKSwgdHJ1ZSkpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZp
bmVkKCk7CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBTdHJpbmcgbmFtZSA9IHRv
V2ViQ29yZVN0cmluZyhhcmdzWzBdKTsKLSAgICBTdHJpbmcgdmVyc2lvbiA9IHRvV2ViQ29yZVN0
cmluZyhhcmdzWzFdKTsKLSAgICBTdHJpbmcgZGlzcGxheU5hbWUgPSB0b1dlYkNvcmVTdHJpbmco
YXJnc1syXSk7Ci0gICAgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplID0gYXJnc1szXS0+SW50
ZWdlclZhbHVlKCk7CiAgICAgUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+IGNyZWF0aW9uQ2FsbGJh
Y2s7Ci0gICAgaWYgKChhcmdzLkxlbmd0aCgpID49IDUpICYmIGFyZ3NbNF0tPklzT2JqZWN0KCkp
CisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPj0gNSkgeworICAgICAgICBpZiAoIWFyZ3NbNF0tPklz
T2JqZWN0KCkpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihUWVBFX01JU01BVENIX0VS
Uik7CisKICAgICAgICAgY3JlYXRpb25DYWxsYmFjayA9IFY4RGF0YWJhc2VDYWxsYmFjazo6Y3Jl
YXRlKGFyZ3NbNF0sIGltcC0+ZnJhbWUoKSk7CisgICAgfQogCisgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlc3VsdCA9IHRvVjgoaW1wLT5vcGVu
RGF0YWJhc2UobmFtZSwgdmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUsIGNyZWF0
aW9uQ2FsbGJhY2sucmVsZWFzZSgpLCBlYykpOwogCiAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0
aW9uKGVjKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YWJhc2VDdXN0
b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YWJh
c2VDdXN0b20uY3BwCShyZXZpc2lvbiA1ODk5NSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4RGF0YWJhc2VDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICsxLDEwIEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKiAKKyAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKICAqIG1ldDoKLSAq
IAorICoKICAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCkBAIC0xNCw3ICsxNCw3IEBA
CiAgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCiAgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQogICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqIAorICoKICAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKICAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCiAgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKQEAgLTM1LDYgKzM1LDcgQEAKIAogI2luY2x1ZGUgIkRh
dGFiYXNlLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nTWFj
cm9zLmgiCiAjaW5jbHVkZSAiVjhTUUxUcmFuc2FjdGlvbkNhbGxiYWNrLmgiCiAjaW5jbHVkZSAi
VjhTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suaCIKICNpbmNsdWRlICJWOEN1c3RvbVZvaWRD
YWxsYmFjay5oIgpAQCAtNDcsMTAgKzQ4LDEwIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERh
dGFiYXNlOjpjaGFuZ2UKICAgICBJTkNfU1RBVFMoIkRPTS5EYXRhYmFzZS5jaGFuZ2VWZXJzaW9u
KCkiKTsKIAogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMikKLSAgICAgICAgcmV0dXJuIHRocm93
RXJyb3IoIlRoZSBvbGQgYW5kIG5ldyB2ZXJzaW9uIHN0cmluZ3MgYXJlIHJlcXVpcmVkLiIsIFY4
UHJveHk6OlN5bnRheEVycm9yKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoU1lOVEFYX0VS
Uik7CiAKLSAgICBpZiAoIShhcmdzWzBdLT5Jc1N0cmluZygpICYmIGFyZ3NbMV0tPklzU3RyaW5n
KCkpKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiVGhlIG9sZCBhbmQgbmV3IHZlcnNpb25z
IG11c3QgYmUgc3RyaW5ncy4iKTsKKyAgICBFWENFUFRJT05fQkxPQ0soU3RyaW5nLCBvbGRWZXJz
aW9uLCB0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSkpOworICAgIEVYQ0VQVElPTl9CTE9DSyhTdHJp
bmcsIG5ld1ZlcnNpb24sIHRvV2ViQ29yZVN0cmluZyhhcmdzWzFdKSk7CiAKICAgICBEYXRhYmFz
ZSogZGF0YWJhc2UgPSBWOERhdGFiYXNlOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKIApAQCAt
NjEsNyArNjIsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEYXRhYmFzZTo6Y2hhbmdlCiAg
ICAgUmVmUHRyPFY4U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4gY2FsbGJhY2s7CiAgICAgaWYgKGFy
Z3MuTGVuZ3RoKCkgPiAyKSB7CiAgICAgICAgIGlmICghYXJnc1syXS0+SXNPYmplY3QoKSkKLSAg
ICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJjaGFuZ2VWZXJzaW9uIHRyYW5zYWN0aW9uIGNh
bGxiYWNrIG11c3QgYmUgb2YgdmFsaWQgdHlwZS4iKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJv
d0Vycm9yKFRZUEVfTUlTTUFUQ0hfRVJSKTsKIAogICAgICAgICBjYWxsYmFjayA9IFY4U1FMVHJh
bnNhY3Rpb25DYWxsYmFjazo6Y3JlYXRlKGFyZ3NbMl0sIGZyYW1lKTsKICAgICB9CkBAIC02OSw3
ICs3MCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERhdGFiYXNlOjpjaGFuZ2UKICAgICBS
ZWZQdHI8VjhTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2s7CiAgICAg
aWYgKGFyZ3MuTGVuZ3RoKCkgPiAzKSB7CiAgICAgICAgIGlmICghYXJnc1szXS0+SXNPYmplY3Qo
KSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJjaGFuZ2VWZXJzaW9uIGVycm9yIGNh
bGxiYWNrIG11c3QgYmUgb2YgdmFsaWQgdHlwZS4iKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJv
d0Vycm9yKFRZUEVfTUlTTUFUQ0hfRVJSKTsKIAogICAgICAgICBlcnJvckNhbGxiYWNrID0gVjhT
UUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s6OmNyZWF0ZShhcmdzWzNdLCBmcmFtZSk7CiAgICAg
fQpAQCAtNzcsMTIgKzc4LDEyIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERhdGFiYXNlOjpj
aGFuZ2UKICAgICBSZWZQdHI8VjhDdXN0b21Wb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjazsK
ICAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDQpIHsKICAgICAgICAgaWYgKCFhcmdzWzRdLT5Jc09i
amVjdCgpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoImNoYW5nZVZlcnNpb24gc3Vj
Y2VzcyBjYWxsYmFjayBtdXN0IGJlIG9mIHZhbGlkIHR5cGUuIik7CisgICAgICAgICAgICByZXR1
cm4gdGhyb3dFcnJvcihUWVBFX01JU01BVENIX0VSUik7CiAKICAgICAgICAgc3VjY2Vzc0NhbGxi
YWNrID0gVjhDdXN0b21Wb2lkQ2FsbGJhY2s6OmNyZWF0ZShhcmdzWzRdLCBmcmFtZSk7CiAgICAg
fQogCi0gICAgZGF0YWJhc2UtPmNoYW5nZVZlcnNpb24odG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0p
LCB0b1dlYkNvcmVTdHJpbmcoYXJnc1sxXSksIGNhbGxiYWNrLnJlbGVhc2UoKSwgZXJyb3JDYWxs
YmFjay5yZWxlYXNlKCksIHN1Y2Nlc3NDYWxsYmFjay5yZWxlYXNlKCkpOworICAgIGRhdGFiYXNl
LT5jaGFuZ2VWZXJzaW9uKG9sZFZlcnNpb24sIG5ld1ZlcnNpb24sIGNhbGxiYWNrLnJlbGVhc2Uo
KSwgZXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIHN1Y2Nlc3NDYWxsYmFjay5yZWxlYXNlKCkpOwog
CiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KQEAgLTkwLDEwICs5MSwxMCBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhEYXRhYmFzZTo6Y2hhbmdlCiBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGNyZWF0ZVRyYW5zYWN0aW9uKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MsIGJv
b2wgcmVhZE9ubHkpCiB7CiAgICAgaWYgKCFhcmdzLkxlbmd0aCgpKQotICAgICAgICByZXR1cm4g
dGhyb3dFcnJvcigiVHJhbnNhY3Rpb24gY2FsbGJhY2sgaXMgcmVxdWlyZWQuIiwgVjhQcm94eTo6
U3ludGF4RXJyb3IpOworICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihTWU5UQVhfRVJSKTsKIAog
ICAgIGlmICghYXJnc1swXS0+SXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93RXJyb3Io
IlRyYW5zYWN0aW9uIGNhbGxiYWNrIG11c3QgYmUgb2YgdmFsaWQgdHlwZS4iKTsKKyAgICAgICAg
cmV0dXJuIHRocm93RXJyb3IoVFlQRV9NSVNNQVRDSF9FUlIpOwogCiAgICAgRGF0YWJhc2UqIGRh
dGFiYXNlID0gVjhEYXRhYmFzZTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAKQEAgLTEwNiw3
ICsxMDcsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNyZWF0ZVRyYW5zCiAgICAg
UmVmUHRyPFY4U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrOwogICAg
IGlmIChhcmdzLkxlbmd0aCgpID4gMSAmJiAhaXNVbmRlZmluZWRPck51bGwoYXJnc1sxXSkpIHsK
ICAgICAgICAgaWYgKCFhcmdzWzFdLT5Jc09iamVjdCgpKQotICAgICAgICAgICAgcmV0dXJuIHRo
cm93RXJyb3IoIlRyYW5zYWN0aW9uIGVycm9yIGNhbGxiYWNrIG11c3QgYmUgb2YgdmFsaWQgdHlw
ZS4iKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFRZUEVfTUlTTUFUQ0hfRVJSKTsK
IAogICAgICAgICBlcnJvckNhbGxiYWNrID0gVjhTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s6
OmNyZWF0ZShhcmdzWzFdLCBmcmFtZSk7CiAgICAgfQpAQCAtMTE0LDcgKzExNSw3IEBAIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3JlYXRlVHJhbnMKICAgICBSZWZQdHI8VjhDdXN0b21W
b2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjazsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDIg
JiYgIWlzVW5kZWZpbmVkT3JOdWxsKGFyZ3NbMl0pKSB7CiAgICAgICAgIGlmICghYXJnc1syXS0+
SXNPYmplY3QoKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJUcmFuc2FjdGlvbiBz
dWNjZXNzIGNhbGxiYWNrIG11c3QgYmUgb2YgdmFsaWQgdHlwZS4iKTsKKyAgICAgICAgICAgIHJl
dHVybiB0aHJvd0Vycm9yKFRZUEVfTUlTTUFUQ0hfRVJSKTsKIAogICAgICAgICBzdWNjZXNzQ2Fs
bGJhY2sgPSBWOEN1c3RvbVZvaWRDYWxsYmFjazo6Y3JlYXRlKGFyZ3NbMl0sIGZyYW1lKTsKICAg
ICB9CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9uQ3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFRy
YW5zYWN0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gNTg5OTUpCisrKyBXZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSwxMCArMSwxMCBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogCisgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CiAgKiBtZXQ6Ci0gKiAKKyAqCiAgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgogICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpAQCAt
MTQsNyArMTQsNyBAQAogICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwogICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KICAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKiAKKyAqCiAgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCiAgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAogICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkBAIC0zNyw2ICszNyw3IEBACiAj
aW5jbHVkZSAiRGF0YWJhc2UuaCIKICNpbmNsdWRlICJTUUxWYWx1ZS5oIgogI2luY2x1ZGUgIlY4
QmluZGluZy5oIgorI2luY2x1ZGUgIlY4QmluZGluZ01hY3Jvcy5oIgogI2luY2x1ZGUgIlY4U1FM
U3RhdGVtZW50Q2FsbGJhY2suaCIKICNpbmNsdWRlICJWOFNRTFN0YXRlbWVudEVycm9yQ2FsbGJh
Y2suaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCkBAIC01MSw0OCArNTIsMzkgQEAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4U1FMVHJhbnNhY3Rpb246OgogICAgIElOQ19TVEFUUygiRE9NLlNRTFRy
YW5zYWN0aW9uLmV4ZWN1dGVTcWwoKSIpOwogCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPT0gMCkK
LSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIlNRTCBzdGF0ZW1lbnQgaXMgcmVxdWlyZWQuIiwg
VjhQcm94eTo6U3ludGF4RXJyb3IpOworICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihTWU5UQVhf
RVJSKTsKIAotICAgIFN0cmluZyBzdGF0ZW1lbnQgPSB0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSk7
CisgICAgRVhDRVBUSU9OX0JMT0NLKFN0cmluZywgc3RhdGVtZW50LCB0b1dlYkNvcmVTdHJpbmco
YXJnc1swXSkpOwogCiAgICAgVmVjdG9yPFNRTFZhbHVlPiBzcWxWYWx1ZXM7CiAKICAgICBpZiAo
YXJncy5MZW5ndGgoKSA+IDEgJiYgIWlzVW5kZWZpbmVkT3JOdWxsKGFyZ3NbMV0pKSB7Ci0gICAg
ICAgIGlmIChhcmdzWzFdLT5Jc09iamVjdCgpKSB7Ci0gICAgICAgICAgICB1aW50MzJfdCBzcWxB
cmdzTGVuZ3RoID0gMDsKLSAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBzcWxBcmdz
T2JqZWN0ID0gYXJnc1sxXS0+VG9PYmplY3QoKTsKLSAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6
VmFsdWU+IGxlbmd0aEdldHRlcjsKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB2ODo6
VHJ5Q2F0Y2ggYmxvY2s7Ci0gICAgICAgICAgICAgICAgbGVuZ3RoR2V0dGVyID0gc3FsQXJnc09i
amVjdC0+R2V0KHY4OjpTdHJpbmc6Ok5ldygibGVuZ3RoIikpOwotICAgICAgICAgICAgICAgIGlm
IChibG9jay5IYXNDYXVnaHQoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJy
b3IoYmxvY2suRXhjZXB0aW9uKCkpOwotICAgICAgICAgICAgfQorICAgICAgICBpZiAoIWFyZ3Nb
MV0tPklzT2JqZWN0KCkpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihUWVBFX01JU01B
VENIX0VSUik7CiAKLSAgICAgICAgICAgIGlmIChpc1VuZGVmaW5lZE9yTnVsbChsZW5ndGhHZXR0
ZXIpKQotICAgICAgICAgICAgICAgIHNxbEFyZ3NMZW5ndGggPSBzcWxBcmdzT2JqZWN0LT5HZXRQ
cm9wZXJ0eU5hbWVzKCktPkxlbmd0aCgpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIHNxbEFyZ3NMZW5ndGggPSBsZW5ndGhHZXR0ZXItPlVpbnQzMlZhbHVlKCk7Ci0KLSAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgc3FsQXJnc0xlbmd0aDsgKytpKSB7
Ci0gICAgICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpJbnRlZ2VyPiBrZXkgPSB2ODo6SW50ZWdl
cjo6TmV3KGkpOwotICAgICAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlOwot
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgdjg6OlRyeUNhdGNoIGJsb2Nr
OwotICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHNxbEFyZ3NPYmplY3QtPkdldChrZXkpOwot
ICAgICAgICAgICAgICAgICAgICBpZiAoYmxvY2suSGFzQ2F1Z2h0KCkpCi0gICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihibG9jay5FeGNlcHRpb24oKSk7Ci0gICAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKHZhbHVlLklzRW1wdHkoKSB8fCB2YWx1
ZS0+SXNOdWxsKCkpCi0gICAgICAgICAgICAgICAgICAgIHNxbFZhbHVlcy5hcHBlbmQoU1FMVmFs
dWUoKSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUtPklzTnVtYmVyKCkpCi0gICAg
ICAgICAgICAgICAgICAgIHNxbFZhbHVlcy5hcHBlbmQoU1FMVmFsdWUodmFsdWUtPk51bWJlclZh
bHVlKCkpKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHNxbFZh
bHVlcy5hcHBlbmQoU1FMVmFsdWUodG9XZWJDb3JlU3RyaW5nKHZhbHVlKSkpOworICAgICAgICB1
aW50MzJfdCBzcWxBcmdzTGVuZ3RoID0gMDsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+
IHNxbEFyZ3NPYmplY3QgPSBhcmdzWzFdLT5Ub09iamVjdCgpOworICAgICAgICBFWENFUFRJT05f
QkxPQ0sodjg6OkxvY2FsPHY4OjpWYWx1ZT4sIGxlbmd0aCwgc3FsQXJnc09iamVjdC0+R2V0KHY4
OjpTdHJpbmc6Ok5ldygibGVuZ3RoIikpKTsKKworICAgICAgICBpZiAoaXNVbmRlZmluZWRPck51
bGwobGVuZ3RoKSkKKyAgICAgICAgICAgIHNxbEFyZ3NMZW5ndGggPSBzcWxBcmdzT2JqZWN0LT5H
ZXRQcm9wZXJ0eU5hbWVzKCktPkxlbmd0aCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBz
cWxBcmdzTGVuZ3RoID0gbGVuZ3RoLT5VaW50MzJWYWx1ZSgpOworCisgICAgICAgIGZvciAodW5z
aWduZWQgaW50IGkgPSAwOyBpIDwgc3FsQXJnc0xlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2
ODo6TG9jYWw8djg6OkludGVnZXI+IGtleSA9IHY4OjpJbnRlZ2VyOjpOZXcoaSk7CisgICAgICAg
ICAgICBFWENFUFRJT05fQkxPQ0sodjg6OkxvY2FsPHY4OjpWYWx1ZT4sIHZhbHVlLCBzcWxBcmdz
T2JqZWN0LT5HZXQoa2V5KSk7CisKKyAgICAgICAgICAgIGlmICh2YWx1ZS5Jc0VtcHR5KCkgfHwg
dmFsdWUtPklzTnVsbCgpKQorICAgICAgICAgICAgICAgIHNxbFZhbHVlcy5hcHBlbmQoU1FMVmFs
dWUoKSk7CisgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZS0+SXNOdW1iZXIoKSkgeworICAgICAg
ICAgICAgICAgIEVYQ0VQVElPTl9CTE9DSyhkb3VibGUsIHNxbFZhbHVlLCB2YWx1ZS0+TnVtYmVy
VmFsdWUoKSk7CisgICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFwcGVuZChTUUxWYWx1ZShzcWxW
YWx1ZSkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBFWENFUFRJT05f
QkxPQ0soU3RyaW5nLCBzcWxWYWx1ZSwgdG9XZWJDb3JlU3RyaW5nKHZhbHVlKSk7CisgICAgICAg
ICAgICAgICAgc3FsVmFsdWVzLmFwcGVuZChTUUxWYWx1ZShzcWxWYWx1ZSkpOwogICAgICAgICAg
ICAgfQotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJzcWxB
cmdzIHNob3VsZCBiZSBhcnJheSBvciBvYmplY3QhIiwgVjhQcm94eTo6VHlwZUVycm9yKTsKKyAg
ICAgICAgfQogICAgIH0KIAogICAgIFNRTFRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiA9IFY4U1FM
VHJhbnNhY3Rpb246OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwpAQCAtMTAyLDcgKzk0LDcgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4U1FMVHJhbnNhY3Rpb246OgogICAgIFJlZlB0cjxTUUxT
dGF0ZW1lbnRDYWxsYmFjaz4gY2FsbGJhY2s7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAyICYm
ICFpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzJdKSkgewogICAgICAgICBpZiAoIWFyZ3NbMl0tPklz
T2JqZWN0KCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiU3RhdGVtZW50IGNhbGxi
YWNrIG11c3QgYmUgb2YgdmFsaWQgdHlwZS4iLCBWOFByb3h5OjpUeXBlRXJyb3IpOworICAgICAg
ICAgICAgcmV0dXJuIHRocm93RXJyb3IoVFlQRV9NSVNNQVRDSF9FUlIpOwogCiAgICAgICAgIGlm
IChmcmFtZSkKICAgICAgICAgICAgIGNhbGxiYWNrID0gVjhTUUxTdGF0ZW1lbnRDYWxsYmFjazo6
Y3JlYXRlKGFyZ3NbMl0sIGZyYW1lKTsKQEAgLTExMSw3ICsxMDMsNyBAQCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhTUUxUcmFuc2FjdGlvbjo6CiAgICAgUmVmUHRyPFNRTFN0YXRlbWVudEVycm9y
Q2FsbGJhY2s+IGVycm9yQ2FsbGJhY2s7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAzICYmICFp
c1VuZGVmaW5lZE9yTnVsbChhcmdzWzNdKSkgewogICAgICAgICBpZiAoIWFyZ3NbM10tPklzT2Jq
ZWN0KCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiU3RhdGVtZW50IGVycm9yIGNh
bGxiYWNrIG11c3QgYmUgb2YgdmFsaWQgdHlwZS4iLCBWOFByb3h5OjpUeXBlRXJyb3IpOworICAg
ICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoVFlQRV9NSVNNQVRDSF9FUlIpOwogCiAgICAgICAg
IGlmIChmcmFtZSkKICAgICAgICAgICAgIGVycm9yQ2FsbGJhY2sgPSBWOFNRTFN0YXRlbWVudEVy
cm9yQ2FsbGJhY2s6OmNyZWF0ZShhcmdzWzNdLCBmcmFtZSk7Cg==
</data>
<flag name="review"
          id="39666"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="39667"
          type_id="3"
          status="-"
          setter="dumi"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55472</attachid>
            <date>2010-05-08 01:45:51 -0700</date>
            <delta_ts>2010-05-09 10:58:21 -0700</delta_ts>
            <desc>patch #4: V8 bindings implementation</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>6551</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1ODk5MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTAtMDUtMDcgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbXBsZW1lbnQgdGhlIFY4IGJpbmRpbmdzIGZvciB0aGUgc3luYyBEQiBBUEkuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnLnNob3dfYnVnLmNnaT9pZD0zNDk5NAorCisgICAgICAg
ICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YWJhc2VTeW5jQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlY4RGF0YWJhc2VTeW5jOjpjaGFuZ2VWZXJzaW9uQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlVHJhbnNhY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1
c3RvbS9WOFNRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OFNRTFRyYW5zYWN0aW9uU3luYzo6ZXhlY3V0ZVNxbENhbGxiYWNrKToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4V29ya2VyQ29udGV4dEN1c3RvbTo6b3BlbkRhdGFiYXNlU3luY0NhbGxiYWNrKToKKwog
MjAxMC0wNS0wNyAgRHVtaXRydSBEYW5pbGl1YyAgPGR1bWlAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbi4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RGF0YWJhc2VTeW5jQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFiYXNlU3luY0N1c3RvbS5jcHAJKHJldmlzaW9uIDU4OTkx
KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhYmFzZVN5bmNDdXN0b20uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMSArNDQsNDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGF0YWJhc2VTeW5jOjpjaGFuZ2VWZXJzaW9uQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5EYXRh
YmFzZVN5bmMuY2hhbmdlVmVyc2lvbigpIik7CisKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDIp
CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFNZTlRBWF9FUlIpOworCisgICAgRVhDRVBUSU9O
X0JMT0NLKFN0cmluZywgb2xkVmVyc2lvbiwgdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pKTsKKyAg
ICBFWENFUFRJT05fQkxPQ0soU3RyaW5nLCBuZXdWZXJzaW9uLCB0b1dlYkNvcmVTdHJpbmcoYXJn
c1sxXSkpOworCisgICAgRGF0YWJhc2VTeW5jKiBkYXRhYmFzZSA9IFY4RGF0YWJhc2VTeW5jOjp0
b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKworICAgIFJlZlB0cjxWOFNRTFRyYW5zYWN0aW9uU3lu
Y0NhbGxiYWNrPiBjYWxsYmFjazsKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDIpIHsKKyAgICAg
ICAgaWYgKCFhcmdzWzJdLT5Jc09iamVjdCgpKQorICAgICAgICAgICAgcmV0dXJuIHRocm93RXJy
b3IoVFlQRV9NSVNNQVRDSF9FUlIpOworCisgICAgICAgIGNhbGxiYWNrID0gVjhTUUxUcmFuc2Fj
dGlvblN5bmNDYWxsYmFjazo6Y3JlYXRlKGFyZ3NbMl0sIDApOworICAgIH0KKworICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOworICAgIGRhdGFiYXNlLT5jaGFuZ2VWZXJzaW9uKG9sZFZlcnNpb24s
IG5ld1ZlcnNpb24sIGNhbGxiYWNrLnJlbGVhc2UoKSwgZWMpOworICAgIFY4UHJveHk6OnNldERP
TUV4Y2VwdGlvbihlYyk7CisKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCiBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNyZWF0ZVRyYW5zYWN0aW9uKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MsIGJvb2wgcmVhZE9ubHkpCiB7CisgICAgaWYgKCFhcmdzLkxlbmd0aCgpKQor
ICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihTWU5UQVhfRVJSKTsKKworICAgIGlmICghYXJnc1sw
XS0+SXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoVFlQRV9NSVNNQVRDSF9F
UlIpOworCisgICAgRGF0YWJhc2VTeW5jKiBkYXRhYmFzZSA9IFY4RGF0YWJhc2VTeW5jOjp0b05h
dGl2ZShhcmdzLkhvbGRlcigpKTsKKworICAgIFJlZlB0cjxWOFNRTFRyYW5zYWN0aW9uU3luY0Nh
bGxiYWNrPiBjYWxsYmFjayA9IFY4U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s6OmNyZWF0ZShh
cmdzWzBdLCAwKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGRhdGFiYXNlLT50
cmFuc2FjdGlvbihjYWxsYmFjay5yZWxlYXNlKCksIHJlYWRPbmx5LCBlYyk7CisgICAgVjhQcm94
eTo6c2V0RE9NRXhjZXB0aW9uKGVjKTsKKwogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9
CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25TeW5j
Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNR
TFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHAJKHJldmlzaW9uIDU4OTkxKQorKysgV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00OSw2ICs0OSw0OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhTUUxUcmFuc2FjdGlvblN5bmM6OmV4ZWN1dGVTcWxDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLlNRTFRyYW5zYWN0
aW9uU3luYy5leGVjdXRlU3FsKCkiKTsKKworICAgIGlmICghYXJncy5MZW5ndGgoKSkKKyAgICAg
ICAgcmV0dXJuIHRocm93RXJyb3IoU1lOVEFYX0VSUik7CisKKyAgICBFWENFUFRJT05fQkxPQ0so
U3RyaW5nLCBzdGF0ZW1lbnQsIHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKSk7CisKKyAgICBWZWN0
b3I8U1FMVmFsdWU+IHNxbFZhbHVlczsKKworICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMSAmJiAh
aXNVbmRlZmluZWRPck51bGwoYXJnc1sxXSkpIHsKKyAgICAgICAgaWYgKCFhcmdzWzFdLT5Jc09i
amVjdCgpKQorICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoVFlQRV9NSVNNQVRDSF9FUlIp
OworCisgICAgICAgIHVpbnQzMl90IHNxbEFyZ3NMZW5ndGggPSAwOworICAgICAgICB2ODo6TG9j
YWw8djg6Ok9iamVjdD4gc3FsQXJnc09iamVjdCA9IGFyZ3NbMV0tPlRvT2JqZWN0KCk7CisgICAg
ICAgIEVYQ0VQVElPTl9CTE9DSyh2ODo6TG9jYWw8djg6OlZhbHVlPiwgbGVuZ3RoLCBzcWxBcmdz
T2JqZWN0LT5HZXQodjg6OlN0cmluZzo6TmV3KCJsZW5ndGgiKSkpOworCisgICAgICAgIGlmIChp
c1VuZGVmaW5lZE9yTnVsbChsZW5ndGgpKQorICAgICAgICAgICAgc3FsQXJnc0xlbmd0aCA9IHNx
bEFyZ3NPYmplY3QtPkdldFByb3BlcnR5TmFtZXMoKS0+TGVuZ3RoKCk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHNxbEFyZ3NMZW5ndGggPSBsZW5ndGgtPlVpbnQzMlZhbHVlKCk7CisKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBzcWxBcmdzTGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6SW50ZWdlcj4ga2V5ID0gdjg6OkludGVnZXI6Ok5l
dyhpKTsKKyAgICAgICAgICAgIEVYQ0VQVElPTl9CTE9DSyh2ODo6TG9jYWw8djg6OlZhbHVlPiwg
dmFsdWUsIHNxbEFyZ3NPYmplY3QtPkdldChrZXkpKTsKKworICAgICAgICAgICAgaWYgKHZhbHVl
LklzRW1wdHkoKSB8fCB2YWx1ZS0+SXNOdWxsKCkpCisgICAgICAgICAgICAgICAgc3FsVmFsdWVz
LmFwcGVuZChTUUxWYWx1ZSgpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlLT5Jc051bWJl
cigpKSB7CisgICAgICAgICAgICAgICAgRVhDRVBUSU9OX0JMT0NLKGRvdWJsZSwgc3FsVmFsdWUs
IHZhbHVlLT5OdW1iZXJWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBzcWxWYWx1ZXMuYXBwZW5k
KFNRTFZhbHVlKHNxbFZhbHVlKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIEVYQ0VQVElPTl9CTE9DSyhTdHJpbmcsIHNxbFZhbHVlLCB0b1dlYkNvcmVTdHJpbmcodmFs
dWUpKTsKKyAgICAgICAgICAgICAgICBzcWxWYWx1ZXMuYXBwZW5kKFNRTFZhbHVlKHNxbFZhbHVl
KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBTUUxUcmFuc2FjdGlv
blN5bmMqIHRyYW5zYWN0aW9uID0gVjhTUUxUcmFuc2FjdGlvblN5bmM6OnRvTmF0aXZlKGFyZ3Mu
SG9sZGVyKCkpOworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgdHJhbnNhY3Rpb24t
PmV4ZWN1dGVTUUwoc3RhdGVtZW50LCBzcWxWYWx1ZXMsIGVjKTsKKyAgICBWOFByb3h5OjpzZXRE
T01FeGNlcHRpb24oZWMpOworCiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIApJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRD
dXN0b20uY3BwCShyZXZpc2lvbiA1ODk5MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEwICszMywx
NSBAQAogI2lmIEVOQUJMRShXT1JLRVJTKQogI2luY2x1ZGUgIlY4V29ya2VyQ29udGV4dC5oIgog
CisjaWYgRU5BQkxFKERBVEFCQVNFKQorI2luY2x1ZGUgIlY4RGF0YWJhc2VDYWxsYmFjay5oIgor
I2luY2x1ZGUgIlY4RGF0YWJhc2VTeW5jLmgiCisjZW5kaWYKICNpbmNsdWRlICJET01UaW1lci5o
IgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJTY2hlZHVsZWRBY3Rpb24u
aCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmdNYWNyb3MuaCIK
ICNpbmNsdWRlICJWOFByb3h5LmgiCiAjaW5jbHVkZSAiVjhVdGlsaXRpZXMuaCIKICNpbmNsdWRl
ICJWOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmgiCkBAIC0xNDAsNyArMTQ1LDI5IEBAIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFdvcmtlckNvbnRleHQKIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOFdvcmtlckNvbnRleHQ6Om9wZW5EYXRhYmFzZVN5bmNDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLlY4V29ya2VyQ29udGV4dC5v
cGVuRGF0YWJhc2VTeW5jKCkiKTsKLSAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgIGlm
IChhcmdzLkxlbmd0aCgpIDwgNCkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoU1lOVEFYX0VS
Uik7CisKKyAgICBFWENFUFRJT05fQkxPQ0soU3RyaW5nLCBuYW1lLCB0b1dlYkNvcmVTdHJpbmco
YXJnc1swXSkpOworICAgIEVYQ0VQVElPTl9CTE9DSyhTdHJpbmcsIHZlcnNpb24sIHRvV2ViQ29y
ZVN0cmluZyhhcmdzWzFdKSk7CisgICAgRVhDRVBUSU9OX0JMT0NLKFN0cmluZywgZGlzcGxheU5h
bWUsIHRvV2ViQ29yZVN0cmluZyhhcmdzWzJdKSk7CisgICAgRVhDRVBUSU9OX0JMT0NLKHVuc2ln
bmVkIGxvbmcsIGVzdGltYXRlZFNpemUsIGFyZ3NbM10tPlVpbnQzMlZhbHVlKCkpOworCisgICAg
V29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9IFY4V29ya2VyQ29udGV4dDo6dG9OYXRpdmUo
YXJncy5Ib2xkZXIoKSk7CisKKyAgICBSZWZQdHI8RGF0YWJhc2VDYWxsYmFjaz4gY3JlYXRpb25D
YWxsYmFjazsKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA+PSA1KSB7CisgICAgICAgIGlmICghYXJn
c1s0XS0+SXNPYmplY3QoKSkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFRZUEVfTUlT
TUFUQ0hfRVJSKTsKKworICAgICAgICBjcmVhdGlvbkNhbGxiYWNrID0gVjhEYXRhYmFzZUNhbGxi
YWNrOjpjcmVhdGUoYXJnc1s0XSwgMCk7CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlc3VsdCA9IHRvVjgod29ya2VyQ29udGV4
dC0+b3BlbkRhdGFiYXNlU3luYyhuYW1lLCB2ZXJzaW9uLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVk
U2l6ZSwgY3JlYXRpb25DYWxsYmFjay5yZWxlYXNlKCksIGVjKSk7CisKKyAgICBWOFByb3h5Ojpz
ZXRET01FeGNlcHRpb24oZWMpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAjZW5kaWYKIAo=
</data>
<flag name="review"
          id="39668"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="39669"
          type_id="3"
          status="-"
          setter="dumi"
    />
          </attachment>
      

    </bug>

</bugzilla>